@ethang/eslint-config 22.0.1 → 22.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -31,10 +31,11 @@
31
31
  * 52 rules for **Astro**
32
32
  * `import astroConfig from "@ethang/eslint-config/config.astro.js";`
33
33
  * 52 rules from [eslint-plugin-astro](https://github.com/ota-meshi/eslint-plugin-astro)
34
- * 99 rules for **React**
34
+ * 100 rules for **React**
35
35
  * `import reactConfig from "@ethang/eslint-config/config.react.js";`
36
36
  * 97 rules from [@eslint-react/eslint-plugin](https://eslint-react.xyz/)
37
37
  * 2 rules from [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/main/packages/eslint-plugin-react-hooks)
38
+ * 1 rules from [react-you-might-not-need-an-effect](https://github.com/NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect)
38
39
  * 18 rules for **Solid**
39
40
  * `import solidConfig from "@ethang/eslint-config/config.solid.js";`
40
41
  * 18 rules from [eslint-plugin-solid](https://github.com/solidjs-community/eslint-plugin-solid)
@@ -0,0 +1,2 @@
1
+ var a=Object.create;var s=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var d=(o,r)=>()=>(r||o((r={exports:{}}).exports,r),r.exports);var c=(o,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of i(r))!m.call(o,e)&&e!==t&&s(o,e,{get:()=>r[e],enumerable:!(n=p(r,e))||n.enumerable});return o};var f=(o,r,t)=>(t=o!=null?a(g(o)):{},c(r||!o||!o.__esModule?s(t,"default",{value:o,enumerable:!0}):t,o));import l from"@angular-eslint/template-parser";import{parser as u}from"typescript-eslint";var D=["eslint.config.js","node_modules","dist"],L={parser:u,parserOptions:{project:!0,tsconfigRootDir:import.meta.dirname}},P={parser:l};export{d as a,f as b,D as c,L as d,P as e};
2
+ //# sourceMappingURL=chunk-BCW6UQO7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.js"],"sourcesContent":["import angularTemplateParser from \"@angular-eslint/template-parser\";\nimport { parser } from \"typescript-eslint\";\n\nexport const ignores = [\"eslint.config.js\", \"node_modules\", \"dist\"];\n\nexport const languageOptions = {\n parser,\n parserOptions: {\n project: true,\n tsconfigRootDir: import.meta.dirname,\n },\n};\n\nexport const angularLanguageOptions = {\n parser: angularTemplateParser,\n};\n"],"mappings":"AAAA,OAAOA,MAA2B,kCAClC,OAAS,UAAAC,MAAc,oBAEhB,IAAMC,EAAU,CAAC,mBAAoB,eAAgB,MAAM,EAErDC,EAAkB,CAC7B,OAAAF,EACA,cAAe,CACb,QAAS,GACT,gBAAiB,YAAY,OAC/B,CACF,EAEaG,EAAyB,CACpC,OAAQJ,CACV","names":["angularTemplateParser","parser","ignores","languageOptions","angularLanguageOptions"]}
1
+ {"version":3,"sources":["../src/constants.js"],"sourcesContent":["import angularTemplateParser from \"@angular-eslint/template-parser\";\nimport { parser } from \"typescript-eslint\";\n\nexport const ignores = [\"eslint.config.js\", \"node_modules\", \"dist\"];\n\nexport const languageOptions = {\n parser,\n parserOptions: {\n project: true,\n tsconfigRootDir: import.meta.dirname,\n },\n};\n\nexport const angularLanguageOptions = {\n parser: angularTemplateParser,\n};\n"],"mappings":"ygBAAA,OAAOA,MAA2B,kCAClC,OAAS,UAAAC,MAAc,oBAEhB,IAAMC,EAAU,CAAC,mBAAoB,eAAgB,MAAM,EAErDC,EAAkB,CAC7B,OAAAF,EACA,cAAe,CACb,QAAS,GACT,gBAAiB,YAAY,OAC/B,CACF,EAEaG,EAAyB,CACpC,OAAQJ,CACV","names":["angularTemplateParser","parser","ignores","languageOptions","angularLanguageOptions"]}
package/config.angular.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,b as r,c as t}from"./chunk-WK3YS7OG.js";import a from"angular-eslint";import n from"@angular-eslint/eslint-plugin-template";import l from"@angular-eslint/eslint-plugin";import o from"typescript-eslint";var m=o.config({ignores:["**/*.spec.ts","src/main.server.ts"]},{files:["**/*.ts"],ignores:e,languageOptions:r,processor:a.processInlineTemplates,plugins:{"@angular-eslint":l},rules:{"@angular-eslint/component-class-suffix":"error","@angular-eslint/component-max-inline-declarations":"error","@angular-eslint/component-selector":["error",{prefix:"app",style:"kebab-case",type:"element"}],"@angular-eslint/consistent-component-styles":"error","@angular-eslint/contextual-decorator":"error","@angular-eslint/contextual-lifecycle":"error","@angular-eslint/directive-class-suffix":"error","@angular-eslint/directive-selector":["error",{prefix:"app",style:"camelCase",type:"attribute"}],"@angular-eslint/no-async-lifecycle-method":"error","@angular-eslint/no-attribute-decorator":"error","@angular-eslint/no-conflicting-lifecycle":"error","@angular-eslint/no-duplicates-in-metadata-arrays":"error","@angular-eslint/no-empty-lifecycle-method":"error","@angular-eslint/no-forward-ref":"error","@angular-eslint/no-input-prefix":"error","@angular-eslint/no-input-rename":"error","@angular-eslint/no-inputs-metadata-property":"error","@angular-eslint/no-lifecycle-call":"error","@angular-eslint/no-output-native":"error","@angular-eslint/no-output-on-prefix":"error","@angular-eslint/no-output-rename":"error","@angular-eslint/no-outputs-metadata-property":"error","@angular-eslint/no-pipe-impure":"error","@angular-eslint/no-queries-metadata-property":"error","@angular-eslint/pipe-prefix":"error","@angular-eslint/prefer-on-push-component-change-detection":"error","@angular-eslint/prefer-output-emitter-ref":"error","@angular-eslint/prefer-output-readonly":"error","@angular-eslint/prefer-signals":"error","@angular-eslint/prefer-standalone":"error","@angular-eslint/relative-url-prefix":"error","@angular-eslint/require-lifecycle-on-prototype":"error","@angular-eslint/require-localize-metadata":"error","@angular-eslint/runtime-localize":"error","@angular-eslint/sort-lifecycle-methods":"error","@angular-eslint/use-component-selector":"error","@angular-eslint/use-component-view-encapsulation":"error","@angular-eslint/use-injectable-provided-in":"error","@angular-eslint/use-lifecycle-interface":"error","@angular-eslint/use-pipe-transform-interface":"error"}},{files:["**/*.html"],languageOptions:t,plugins:{"@angular-eslint/template":n},rules:{"@angular-eslint/template/alt-text":"error","@angular-eslint/template/attributes-order":"error","@angular-eslint/template/banana-in-box":"error","@angular-eslint/template/button-has-type":"error","@angular-eslint/template/click-events-have-key-events":"error","@angular-eslint/template/conditional-complexity":"error","@angular-eslint/template/cyclomatic-complexity":"error","@angular-eslint/template/elements-content":"error","@angular-eslint/template/eqeqeq":"error","@angular-eslint/template/i18n":"off","@angular-eslint/template/interactive-supports-focus":"error","@angular-eslint/template/label-has-associated-control":"error","@angular-eslint/template/mouse-events-have-key-events":"error","@angular-eslint/template/no-any":"error","@angular-eslint/template/no-autofocus":"error","@angular-eslint/template/no-call-expression":"off","@angular-eslint/template/no-distracting-elements":"error","@angular-eslint/template/no-duplicate-attributes":"error","@angular-eslint/template/no-inline-styles":"error","@angular-eslint/template/no-interpolation-in-attributes":"error","@angular-eslint/template/no-negated-async":"error","@angular-eslint/template/no-positive-tabindex":"error","@angular-eslint/template/prefer-contextual-for-variables":"error","@angular-eslint/template/prefer-control-flow":"error","@angular-eslint/template/prefer-ngsrc":"warn","@angular-eslint/template/prefer-self-closing-tags":"error","@angular-eslint/template/prefer-static-string-properties":"error","@angular-eslint/template/prefer-template-literal":"error","@angular-eslint/template/role-has-required-aria":"error","@angular-eslint/template/table-scope":"error","@angular-eslint/template/use-track-by-function":"error","@angular-eslint/template/valid-aria":"error"}});export{m as default};
1
+ import{c as e,d as r,e as t}from"./chunk-BCW6UQO7.js";import a from"angular-eslint";import n from"@angular-eslint/eslint-plugin-template";import l from"@angular-eslint/eslint-plugin";import o from"typescript-eslint";var m=o.config({ignores:["**/*.spec.ts","src/main.server.ts"]},{files:["**/*.ts"],ignores:e,languageOptions:r,processor:a.processInlineTemplates,plugins:{"@angular-eslint":l},rules:{"@angular-eslint/component-class-suffix":"error","@angular-eslint/component-max-inline-declarations":"error","@angular-eslint/component-selector":["error",{prefix:"app",style:"kebab-case",type:"element"}],"@angular-eslint/consistent-component-styles":"error","@angular-eslint/contextual-decorator":"error","@angular-eslint/contextual-lifecycle":"error","@angular-eslint/directive-class-suffix":"error","@angular-eslint/directive-selector":["error",{prefix:"app",style:"camelCase",type:"attribute"}],"@angular-eslint/no-async-lifecycle-method":"error","@angular-eslint/no-attribute-decorator":"error","@angular-eslint/no-conflicting-lifecycle":"error","@angular-eslint/no-duplicates-in-metadata-arrays":"error","@angular-eslint/no-empty-lifecycle-method":"error","@angular-eslint/no-forward-ref":"error","@angular-eslint/no-input-prefix":"error","@angular-eslint/no-input-rename":"error","@angular-eslint/no-inputs-metadata-property":"error","@angular-eslint/no-lifecycle-call":"error","@angular-eslint/no-output-native":"error","@angular-eslint/no-output-on-prefix":"error","@angular-eslint/no-output-rename":"error","@angular-eslint/no-outputs-metadata-property":"error","@angular-eslint/no-pipe-impure":"error","@angular-eslint/no-queries-metadata-property":"error","@angular-eslint/pipe-prefix":"error","@angular-eslint/prefer-on-push-component-change-detection":"error","@angular-eslint/prefer-output-emitter-ref":"error","@angular-eslint/prefer-output-readonly":"error","@angular-eslint/prefer-signals":"error","@angular-eslint/prefer-standalone":"error","@angular-eslint/relative-url-prefix":"error","@angular-eslint/require-lifecycle-on-prototype":"error","@angular-eslint/require-localize-metadata":"error","@angular-eslint/runtime-localize":"error","@angular-eslint/sort-lifecycle-methods":"error","@angular-eslint/use-component-selector":"error","@angular-eslint/use-component-view-encapsulation":"error","@angular-eslint/use-injectable-provided-in":"error","@angular-eslint/use-lifecycle-interface":"error","@angular-eslint/use-pipe-transform-interface":"error"}},{files:["**/*.html"],languageOptions:t,plugins:{"@angular-eslint/template":n},rules:{"@angular-eslint/template/alt-text":"error","@angular-eslint/template/attributes-order":"error","@angular-eslint/template/banana-in-box":"error","@angular-eslint/template/button-has-type":"error","@angular-eslint/template/click-events-have-key-events":"error","@angular-eslint/template/conditional-complexity":"error","@angular-eslint/template/cyclomatic-complexity":"error","@angular-eslint/template/elements-content":"error","@angular-eslint/template/eqeqeq":"error","@angular-eslint/template/i18n":"off","@angular-eslint/template/interactive-supports-focus":"error","@angular-eslint/template/label-has-associated-control":"error","@angular-eslint/template/mouse-events-have-key-events":"error","@angular-eslint/template/no-any":"error","@angular-eslint/template/no-autofocus":"error","@angular-eslint/template/no-call-expression":"off","@angular-eslint/template/no-distracting-elements":"error","@angular-eslint/template/no-duplicate-attributes":"error","@angular-eslint/template/no-inline-styles":"error","@angular-eslint/template/no-interpolation-in-attributes":"error","@angular-eslint/template/no-negated-async":"error","@angular-eslint/template/no-positive-tabindex":"error","@angular-eslint/template/prefer-contextual-for-variables":"error","@angular-eslint/template/prefer-control-flow":"error","@angular-eslint/template/prefer-ngsrc":"warn","@angular-eslint/template/prefer-self-closing-tags":"error","@angular-eslint/template/prefer-static-string-properties":"error","@angular-eslint/template/prefer-template-literal":"error","@angular-eslint/template/role-has-required-aria":"error","@angular-eslint/template/table-scope":"error","@angular-eslint/template/use-track-by-function":"error","@angular-eslint/template/valid-aria":"error"}});export{m as default};
2
2
  //# sourceMappingURL=config.angular.js.map
package/config.astro.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as r,b as o}from"./chunk-WK3YS7OG.js";import e from"eslint-plugin-astro";import a from"typescript-eslint";var i=a.config({files:["**/*.{astro}"],ignores:r,languageOptions:o,plugins:{astro:e},rules:{"astro/jsx-a11y/alt-text":"error","astro/jsx-a11y/anchor-ambiguous-text":"error","astro/jsx-a11y/anchor-has-content":"error","astro/jsx-a11y/anchor-is-valid":"error","astro/jsx-a11y/aria-activedescendant-has-tabindex":"error","astro/jsx-a11y/aria-props":"error","astro/jsx-a11y/aria-proptypes":"error","astro/jsx-a11y/aria-role":"error","astro/jsx-a11y/aria-unsupported-elements":"error","astro/jsx-a11y/autocomplete-valid":"error","astro/jsx-a11y/click-events-have-key-events":"error","astro/jsx-a11y/control-has-associated-label":"error","astro/jsx-a11y/heading-has-content":"error","astro/jsx-a11y/html-has-lang":"error","astro/jsx-a11y/iframe-has-title":"error","astro/jsx-a11y/img-redundant-alt":"error","astro/jsx-a11y/interactive-supports-focus":"error","astro/jsx-a11y/label-has-associated-control":"error","astro/jsx-a11y/lang":"error","astro/jsx-a11y/media-has-caption":"error","astro/jsx-a11y/mouse-events-have-key-events":"error","astro/jsx-a11y/no-access-key":"error","astro/jsx-a11y/no-aria-hidden-on-focusable":"error","astro/jsx-a11y/no-autofocus":"error","astro/jsx-a11y/no-distracting-elements":"error","astro/jsx-a11y/no-interactive-element-to-noninteractive-role":"error","astro/jsx-a11y/no-noninteractive-element-interactions":"error","astro/jsx-a11y/no-noninteractive-element-to-interactive-role":"error","astro/jsx-a11y/no-noninteractive-tabindex":"error","astro/jsx-a11y/no-redundant-roles":"error","astro/jsx-a11y/no-static-element-interactions":"error","astro/jsx-a11y/prefer-tag-over-role":"error","astro/jsx-a11y/role-has-required-aria-props":"error","astro/jsx-a11y/role-supports-aria-props":"error","astro/jsx-a11y/scope":"error","astro/jsx-a11y/tabindex-no-positive":"error","astro/missing-client-only-directive-value":"error","astro/no-conflict-set-directives":"error","astro/no-deprecated-astro-canonicalurl":"error","astro/no-deprecated-astro-fetchcontent":"error","astro/no-deprecated-astro-resolve":"error","astro/no-deprecated-getentrybyslug":"error","astro/no-exports-from-components":"error","astro/no-set-html-directive":"off","astro/no-set-text-directive":"error","astro/no-unused-css-selector":"error","astro/no-unused-define-vars-in-style":"error","astro/prefer-class-list-directive":"error","astro/prefer-object-class-list":"error","astro/prefer-split-class-list":"error","astro/semi":"error","astro/sort-attributes":"error","astro/valid-compile":"error"}});export{i as default};
1
+ import{c as r,d as o}from"./chunk-BCW6UQO7.js";import e from"eslint-plugin-astro";import a from"typescript-eslint";var i=a.config({files:["**/*.{astro}"],ignores:r,languageOptions:o,plugins:{astro:e},rules:{"astro/jsx-a11y/alt-text":"error","astro/jsx-a11y/anchor-ambiguous-text":"error","astro/jsx-a11y/anchor-has-content":"error","astro/jsx-a11y/anchor-is-valid":"error","astro/jsx-a11y/aria-activedescendant-has-tabindex":"error","astro/jsx-a11y/aria-props":"error","astro/jsx-a11y/aria-proptypes":"error","astro/jsx-a11y/aria-role":"error","astro/jsx-a11y/aria-unsupported-elements":"error","astro/jsx-a11y/autocomplete-valid":"error","astro/jsx-a11y/click-events-have-key-events":"error","astro/jsx-a11y/control-has-associated-label":"error","astro/jsx-a11y/heading-has-content":"error","astro/jsx-a11y/html-has-lang":"error","astro/jsx-a11y/iframe-has-title":"error","astro/jsx-a11y/img-redundant-alt":"error","astro/jsx-a11y/interactive-supports-focus":"error","astro/jsx-a11y/label-has-associated-control":"error","astro/jsx-a11y/lang":"error","astro/jsx-a11y/media-has-caption":"error","astro/jsx-a11y/mouse-events-have-key-events":"error","astro/jsx-a11y/no-access-key":"error","astro/jsx-a11y/no-aria-hidden-on-focusable":"error","astro/jsx-a11y/no-autofocus":"error","astro/jsx-a11y/no-distracting-elements":"error","astro/jsx-a11y/no-interactive-element-to-noninteractive-role":"error","astro/jsx-a11y/no-noninteractive-element-interactions":"error","astro/jsx-a11y/no-noninteractive-element-to-interactive-role":"error","astro/jsx-a11y/no-noninteractive-tabindex":"error","astro/jsx-a11y/no-redundant-roles":"error","astro/jsx-a11y/no-static-element-interactions":"error","astro/jsx-a11y/prefer-tag-over-role":"error","astro/jsx-a11y/role-has-required-aria-props":"error","astro/jsx-a11y/role-supports-aria-props":"error","astro/jsx-a11y/scope":"error","astro/jsx-a11y/tabindex-no-positive":"error","astro/missing-client-only-directive-value":"error","astro/no-conflict-set-directives":"error","astro/no-deprecated-astro-canonicalurl":"error","astro/no-deprecated-astro-fetchcontent":"error","astro/no-deprecated-astro-resolve":"error","astro/no-deprecated-getentrybyslug":"error","astro/no-exports-from-components":"error","astro/no-set-html-directive":"off","astro/no-set-text-directive":"error","astro/no-unused-css-selector":"error","astro/no-unused-define-vars-in-style":"error","astro/prefer-class-list-directive":"error","astro/prefer-object-class-list":"error","astro/prefer-split-class-list":"error","astro/semi":"error","astro/sort-attributes":"error","astro/valid-compile":"error"}});export{i as default};
2
2
  //# sourceMappingURL=config.astro.js.map
package/config.react.js CHANGED
@@ -1,2 +1,7 @@
1
- import{a as r,b as e}from"./chunk-WK3YS7OG.js";import o from"@eslint-react/eslint-plugin";import t from"eslint-plugin-react-hooks";import n from"typescript-eslint";var d=n.config({files:["**/*.{jsx,tsx}"],ignores:r,languageOptions:e,settings:{react:{version:"19.1.0"}},plugins:{react:o,"react-hooks":t},rules:{"react/avoid-shorthand-boolean":"off","react/avoid-shorthand-fragment":"off","react/debug/class-component":"off","react/debug/function-component":"off","react/debug/hook":"off","react/debug/is-from-react":"off","react/debug/jsx":"off","react/debug/react-hooks":"off","react/dom/no-children-in-void-dom-elements":"error","react/dom/no-dangerously-set-innerhtml":"error","react/dom/no-dangerously-set-innerhtml-with-children":"error","react/dom/no-find-dom-node":"error","react/dom/no-flush-sync":"error","react/dom/no-hydrate":"error","react/dom/no-missing-button-type":"error","react/dom/no-missing-iframe-sandbox":"error","react/dom/no-namespace":"error","react/dom/no-render":"error","react/dom/no-render-return-value":"error","react/dom/no-script-url":"error","react/dom/no-unknown-property":"error","react/dom/no-unsafe-iframe-sandbox":"error","react/dom/no-unsafe-target-blank":"error","react/dom/no-use-form-state":"error","react/dom/no-void-elements-with-children":"error","react/ensure-forward-ref-using-ref":"error","react/hooks-extra/ensure-custom-hooks-using-other-hooks":"error","react/hooks-extra/ensure-use-callback-has-non-empty-deps":"error","react/hooks-extra/ensure-use-memo-has-non-empty-deps":"error","react/hooks-extra/no-direct-set-state-in-use-effect":"error","react/hooks-extra/no-direct-set-state-in-use-layout-effect":"error","react/hooks-extra/no-redundant-custom-hook":"error","react/hooks-extra/no-unnecessary-use-callback":"error","react/hooks-extra/no-unnecessary-use-memo":"error","react/hooks-extra/no-unnecessary-use-prefix":"error","react/hooks-extra/no-useless-custom-hooks":"error","react/hooks-extra/prefer-use-state-lazy-initialization":"error","react/jsx-key-before-spread":"error","react/jsx-no-duplicate-props":"error","react/jsx-no-undef":"error","react/jsx-uses-react":"error","react/jsx-uses-vars":"error","react/naming-convention/component-name":"error","react/naming-convention/context-name":"error","react/naming-convention/filename":["error",{rule:"kebab-case"}],"react/naming-convention/filename-extension":"error","react/naming-convention/use-state":"error","react/no-access-state-in-setstate":"error","react/no-array-index-key":"error","react/no-children-count":"error","react/no-children-for-each":"error","react/no-children-map":"error","react/no-children-only":"error","react/no-children-prop":"error","react/no-children-to-array":"error","react/no-class-component":"error","react/no-clone-element":"error","react/no-comment-textnodes":"error","react/no-complex-conditional-rendering":"error","react/no-complicated-conditional-rendering":"error","react/no-component-will-mount":"error","react/no-component-will-receive-props":"error","react/no-component-will-update":"error","react/no-context-provider":"error","react/no-create-ref":"error","react/no-default-props":"error","react/no-direct-mutation-state":"error","react/no-duplicate-jsx-props":"error","react/no-duplicate-key":"error","react/no-forward-ref":"error","react/no-implicit-key":"error","react/no-leaked-conditional-rendering":"error","react/no-missing-component-display-name":"error","react/no-missing-context-display-name":"error","react/no-missing-key":"error","react/no-misused-capture-owner-stack":"error","react/no-nested-component-definitions":"error","react/no-nested-components":"error","react/no-nested-lazy-component-declarations":"error","react/no-prop-types":"error","react/no-redundant-should-component-update":"error","react/no-set-state-in-component-did-mount":"error","react/no-set-state-in-component-did-update":"error","react/no-set-state-in-component-will-update":"error","react/no-string-refs":"error","react/no-unsafe-component-will-mount":"error","react/no-unsafe-component-will-receive-props":"error","react/no-unsafe-component-will-update":"error","react/no-unstable-context-value":"error","react/no-unstable-default-props":"error","react/no-unused-class-component-members":"error","react/no-unused-state":"error","react/no-use-context":"error","react/no-useless-forward-ref":"error","react/no-useless-fragment":"error","react/prefer-destructuring-assignment":"error","react/prefer-react-namespace-import":"error","react/prefer-read-only-props":"error","react/prefer-shorthand-boolean":"error","react/prefer-shorthand-fragment":"error","react/use-jsx-vars":"error","react/web-api/no-leaked-event-listener":"error","react/web-api/no-leaked-interval":"error","react/web-api/no-leaked-resize-observer":"error","react/web-api/no-leaked-timeout":"error","react-hooks/exhaustive-deps":"error","react-hooks/rules-of-hooks":"error"}});export{d as default};
1
+ import{a as D,b as ie,c as N,d as L}from"./chunk-BCW6UQO7.js";var B=D((Be,se)=>{se.exports={AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AwaitExpression:["argument"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["exported","source"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source"],ExportSpecifier:["exported","local"],ExpressionStatement:["expression"],ExperimentalRestProperty:["argument"],ExperimentalSpreadProperty:["argument"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportDeclaration:["specifiers","source"],ImportDefaultSpecifier:["local"],ImportExpression:["source"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],JSXAttribute:["name","value"],JSXClosingElement:["name"],JSXElement:["openingElement","children","closingElement"],JSXEmptyExpression:[],JSXExpressionContainer:["expression"],JSXIdentifier:[],JSXMemberExpression:["object","property"],JSXNamespacedName:["namespace","name"],JSXOpeningElement:["name","attributes"],JSXSpreadAttribute:["argument"],JSXText:[],JSXFragment:["openingFragment","children","closingFragment"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],Super:[],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]}});var $=D((Ue,U)=>{"use strict";var b=B(),ae=Object.freeze(Object.keys(b));for(let e of ae)Object.freeze(b[e]);Object.freeze(b);var le=new Set(["parent","leadingComments","trailingComments"]);function ue(e){return!le.has(e)&&e[0]!=="_"}U.exports=Object.freeze({KEYS:b,getKeys(e){return Object.keys(e).filter(ue)},unionWith(e){let r=Object.assign({},b);for(let t of Object.keys(e))if(r.hasOwnProperty(t)){let n=new Set(e[t]);for(let o of r[t])n.add(o);r[t]=Object.freeze(Array.from(n))}else r[t]=Object.freeze(Array.from(e[t]));return Object.freeze(r)}})});import De from"@eslint-react/eslint-plugin";var J=ie($(),1);function ce(e,r){let t=r.range[0],n=e,o=!1;do{o=!1;for(let i of n.childScopes){let s=i.block.range;if(s[0]<=t&&t<s[1]){n=i,o=!0;break}}}while(o);return n}function g(e,r){let t="",n=e;for(typeof r=="string"?t=r:(t=r.name,n=ce(n,r));n!=null;){let o=n.set.get(t);if(o!=null)return o;n=n.upper}return null}function fe(e){return!this(e)}function p(e){return fe.bind(e)}function m(e,r){return e.type==="Punctuator"&&e.value===r}function pe(e){return m(e,"=>")}function me(e){return m(e,",")}function ye(e){return m(e,";")}function de(e){return m(e,":")}function ge(e){return m(e,"(")}function he(e){return m(e,")")}function ve(e){return m(e,"[")}function be(e){return m(e,"]")}function xe(e){return m(e,"{")}function Ee(e){return m(e,"}")}function ke(e){return["Block","Line","Shebang"].includes(e.type)}var $e=p(pe),Ve=p(me),_e=p(ye),ze=p(de),qe=p(ge),Me=p(he),We=p(ve),Je=p(be),Xe=p(xe),Ye=p(Ee),Ge=p(ke);var V=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},Se=Object.freeze(new Set(["Array","ArrayBuffer","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","Float32Array","Float64Array","Function","Infinity","Int16Array","Int32Array","Int8Array","isFinite","isNaN","isPrototypeOf","JSON","Map","Math","NaN","Number","Object","parseFloat","parseInt","Promise","Proxy","Reflect","RegExp","Set","String","Symbol","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","undefined","unescape","WeakMap","WeakSet"])),C=new Set([Array.isArray,typeof BigInt=="function"?BigInt:void 0,Boolean,Date,Date.parse,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,escape,isFinite,isNaN,isPrototypeOf,...Object.getOwnPropertyNames(Math).map(e=>Math[e]).filter(e=>typeof e=="function"),Number,Number.isFinite,Number.isNaN,Number.parseFloat,Number.parseInt,Object,Object.entries,Object.is,Object.isExtensible,Object.isFrozen,Object.isSealed,Object.keys,Object.values,parseFloat,parseInt,RegExp,String,String.fromCharCode,String.fromCodePoint,String.raw,Symbol.for,Symbol.keyFor,unescape].filter(e=>typeof e=="function")),_=new Set([Object.freeze,Object.preventExtensions,Object.seal]);function we(e,r){let t=e;for(;(typeof t=="object"||typeof t=="function")&&t!==null;){let n=Object.getOwnPropertyDescriptor(t,r);if(n)return n;t=Object.getPrototypeOf(t)}return null}function Ie(e,r){let t=we(e,r);return t!=null&&t.get!=null}function x(e,r){let t=[];for(let n=0;n<e.length;++n){let o=e[n];if(o==null)t.length=n+1;else if(o.type==="SpreadElement"){let i=c(o.argument,r);if(i==null)return null;t.push(...i.value)}else{let i=c(o,r);if(i==null)return null;t.push(i.value)}}return t}var z=Object.freeze({ArrayExpression(e,r){let t=x(e.elements,r);return t!=null?{value:t}:null},AssignmentExpression(e,r){return e.operator==="="?c(e.right,r):null},BinaryExpression(e,r){if(e.operator==="in"||e.operator==="instanceof")return null;let t=c(e.left,r),n=c(e.right,r);if(t!=null&&n!=null)switch(e.operator){case"==":return{value:t.value==n.value};case"!=":return{value:t.value!=n.value};case"===":return{value:t.value===n.value};case"!==":return{value:t.value!==n.value};case"<":return{value:t.value<n.value};case"<=":return{value:t.value<=n.value};case">":return{value:t.value>n.value};case">=":return{value:t.value>=n.value};case"<<":return{value:t.value<<n.value};case">>":return{value:t.value>>n.value};case">>>":return{value:t.value>>>n.value};case"+":return{value:t.value+n.value};case"-":return{value:t.value-n.value};case"*":return{value:t.value*n.value};case"/":return{value:t.value/n.value};case"%":return{value:t.value%n.value};case"**":return{value:Math.pow(t.value,n.value)};case"|":return{value:t.value|n.value};case"^":return{value:t.value^n.value};case"&":return{value:t.value&n.value}}return null},CallExpression(e,r){let t=e.callee,n=x(e.arguments,r);if(n!=null)if(t.type==="MemberExpression"){if(t.property.type==="PrivateIdentifier")return null;let o=c(t.object,r);if(o!=null){if(o.value==null&&(o.optional||e.optional))return{value:void 0,optional:!0};let i=P(t,r);if(i!=null){let s=o.value,u=i.value;if(C.has(s[u]))return{value:s[u](...n)};if(_.has(s[u]))return{value:n[0]}}}}else{let o=c(t,r);if(o!=null){if(o.value==null&&e.optional)return{value:void 0,optional:!0};let i=o.value;if(C.has(i))return{value:i(...n)};if(_.has(i))return{value:n[0]}}}return null},ConditionalExpression(e,r){let t=c(e.test,r);return t!=null?t.value?c(e.consequent,r):c(e.alternate,r):null},ExpressionStatement(e,r){return c(e.expression,r)},Identifier(e,r){if(r!=null){let t=g(r,e);if(t!=null&&t.defs.length===0&&Se.has(t.name)&&t.name in V)return{value:V[t.name]};if(t!=null&&t.defs.length===1){let n=t.defs[0];if(n.parent&&n.parent.kind==="const"&&n.node.id.type==="Identifier")return c(n.node.init,r)}}return null},Literal(e){return(e.regex!=null||e.bigint!=null)&&e.value==null?null:{value:e.value}},LogicalExpression(e,r){let t=c(e.left,r);if(t!=null){if(e.operator==="||"&&t.value||e.operator==="&&"&&!t.value||e.operator==="??"&&t.value!=null)return t;let n=c(e.right,r);if(n!=null)return n}return null},MemberExpression(e,r){if(e.property.type==="PrivateIdentifier")return null;let t=c(e.object,r);if(t!=null){if(t.value==null&&(t.optional||e.optional))return{value:void 0,optional:!0};let n=P(e,r);if(n!=null&&!Ie(t.value,n.value))return{value:t.value[n.value]}}return null},ChainExpression(e,r){let t=c(e.expression,r);return t!=null?{value:t.value}:null},NewExpression(e,r){let t=c(e.callee,r),n=x(e.arguments,r);if(t!=null&&n!=null){let o=t.value;if(C.has(o))return{value:new o(...n)}}return null},ObjectExpression(e,r){let t={};for(let n of e.properties)if(n.type==="Property"){if(n.kind!=="init")return null;let o=P(n,r),i=c(n.value,r);if(o==null||i==null)return null;t[o.value]=i.value}else if(n.type==="SpreadElement"||n.type==="ExperimentalSpreadProperty"){let o=c(n.argument,r);if(o==null)return null;Object.assign(t,o.value)}else return null;return{value:t}},SequenceExpression(e,r){let t=e.expressions[e.expressions.length-1];return c(t,r)},TaggedTemplateExpression(e,r){let t=c(e.tag,r),n=x(e.quasi.expressions,r);if(t!=null&&n!=null){let o=t.value,i=e.quasi.quasis.map(s=>s.value.cooked);if(i.raw=e.quasi.quasis.map(s=>s.value.raw),o===String.raw)return{value:o(i,...n)}}return null},TemplateLiteral(e,r){let t=x(e.expressions,r);if(t!=null){let n=e.quasis[0].value.cooked;for(let o=0;o<t.length;++o)n+=t[o],n+=e.quasis[o+1].value.cooked;return{value:n}}return null},UnaryExpression(e,r){if(e.operator==="delete")return null;if(e.operator==="void")return{value:void 0};let t=c(e.argument,r);if(t!=null)switch(e.operator){case"-":return{value:-t.value};case"+":return{value:+t.value};case"!":return{value:!t.value};case"~":return{value:~t.value};case"typeof":return{value:typeof t.value}}return null}});function c(e,r){return e!=null&&Object.hasOwnProperty.call(z,e.type)?z[e.type](e,r):null}function P(e,r){let t=e.type==="Property"?e.key:e.property;return e.computed?c(t,r):t.type==="Identifier"?{value:t.name}:t.type==="Literal"?t.bigint?{value:t.bigint}:{value:String(t.value)}:null}function Ce(e,r=null){try{return c(e,r)}catch{return null}}function T(e,r=null){if(e&&e.type==="Literal"&&e.value===null){if(e.regex)return`/${e.regex.pattern}/${e.regex.flags}`;if(e.bigint)return e.bigint}let t=Ce(e,r);return t&&String(t.value)}function q(e,r){switch(e.type){case"MemberExpression":return e.computed?T(e.property,r):e.property.type==="PrivateIdentifier"?null:e.property.name;case"Property":case"MethodDefinition":case"PropertyDefinition":return e.computed?T(e.key,r):e.key.type==="Literal"?String(e.key.value):e.key.type==="PrivateIdentifier"?null:e.key.name}return null}var Pe=Object.freeze(new Set(["==","!=","<","<=",">",">=","<<",">>",">>>","+","-","*","/","%","|","^","&","in"])),Te=Object.freeze(new Set(["-","+","!","~"]));function M(e){return e!==null&&typeof e=="object"&&typeof e.type=="string"}var Ke=Object.freeze(Object.assign(Object.create(null),{$visit(e,r,t){let{type:n}=e;return typeof this[n]=="function"?this[n](e,r,t):this.$visitChildren(e,r,t)},$visitChildren(e,r,t){let{type:n}=e;for(let o of t[n]||J.default.getKeys(e)){let i=e[o];if(Array.isArray(i)){for(let s of i)if(M(s)&&this.$visit(s,r,t))return!0}else if(M(i)&&this.$visit(i,r,t))return!0}return!1},ArrowFunctionExpression(){return!1},AssignmentExpression(){return!0},AwaitExpression(){return!0},BinaryExpression(e,r,t){return r.considerImplicitTypeConversion&&Pe.has(e.operator)&&(e.left.type!=="Literal"||e.right.type!=="Literal")?!0:this.$visitChildren(e,r,t)},CallExpression(){return!0},FunctionExpression(){return!1},ImportExpression(){return!0},MemberExpression(e,r,t){return r.considerGetters||r.considerImplicitTypeConversion&&e.computed&&e.property.type!=="Literal"?!0:this.$visitChildren(e,r,t)},MethodDefinition(e,r,t){return r.considerImplicitTypeConversion&&e.computed&&e.key.type!=="Literal"?!0:this.$visitChildren(e,r,t)},NewExpression(){return!0},Property(e,r,t){return r.considerImplicitTypeConversion&&e.computed&&e.key.type!=="Literal"?!0:this.$visitChildren(e,r,t)},PropertyDefinition(e,r,t){return r.considerImplicitTypeConversion&&e.computed&&e.key.type!=="Literal"?!0:this.$visitChildren(e,r,t)},UnaryExpression(e,r,t){return e.operator==="delete"||r.considerImplicitTypeConversion&&Te.has(e.operator)&&e.argument.type!=="Literal"?!0:this.$visitChildren(e,r,t)},UpdateExpression(){return!0},YieldExpression(){return!0}}));var Ae=/^(?:Import|Export(?:All|Default|Named))Declaration$/u,d=Function.call.bind(Object.hasOwnProperty),a=Symbol("read"),E=Symbol("call"),S=Symbol("construct"),X=Symbol("esm"),je={require:{[E]:!0}};function W(e){return e==null||e.defs.length!==0||e.references.some(r=>r.isWrite())}function Re(e){let r=e.parent;switch(r&&r.type){case"ConditionalExpression":return r.consequent===e||r.alternate===e;case"LogicalExpression":return!0;case"SequenceExpression":return r.expressions[r.expressions.length-1]===e;case"ChainExpression":return!0;default:return!1}}var h=class{constructor(r,{mode:t="strict",globalObjectNames:n=["global","globalThis","self","window"]}={}){this.variableStack=[],this.globalScope=r,this.mode=t,this.globalObjectNames=n.slice(0)}*iterateGlobalReferences(r){for(let t of Object.keys(r)){let n=r[t],o=[t],i=this.globalScope.set.get(t);W(i)||(yield*this._iterateVariableReferences(i,o,n,!0))}for(let t of this.globalObjectNames){let n=[],o=this.globalScope.set.get(t);W(o)||(yield*this._iterateVariableReferences(o,n,r,!1))}}*iterateCjsReferences(r){for(let{node:t}of this.iterateGlobalReferences(je)){let n=T(t.arguments[0]);if(n==null||!d(r,n))continue;let o=r[n],i=[n];o[a]&&(yield{node:t,path:i,type:a,info:o[a]}),yield*this._iteratePropertyReferences(t,i,o)}}*iterateEsmReferences(r){let t=this.globalScope.block;for(let n of t.body){if(!Ae.test(n.type)||n.source==null)continue;let o=n.source.value;if(!d(r,o))continue;let i=r[o],s=[o];if(i[a]&&(yield{node:n,path:s,type:a,info:i[a]}),n.type==="ExportAllDeclaration")for(let u of Object.keys(i)){let y=i[u];y[a]&&(yield{node:n,path:s.concat(u),type:a,info:y[a]})}else for(let u of n.specifiers){let y=d(i,X),l=this._iterateImportReferences(u,s,y?i:this.mode==="legacy"?{default:i,...i}:{default:i});if(y)yield*l;else for(let f of l)f.path=f.path.filter(Oe),(f.path.length>=2||f.type!==a)&&(yield f)}}}*_iterateVariableReferences(r,t,n,o){if(!this.variableStack.includes(r)){this.variableStack.push(r);try{for(let i of r.references){if(!i.isRead())continue;let s=i.identifier;o&&n[a]&&(yield{node:s,path:t,type:a,info:n[a]}),yield*this._iteratePropertyReferences(s,t,n)}}finally{this.variableStack.pop()}}}*_iteratePropertyReferences(r,t,n){let o=r;for(;Re(o);)o=o.parent;let i=o.parent;if(i.type==="MemberExpression"){if(i.object===o){let s=q(i);if(s==null||!d(n,s))return;t=t.concat(s);let u=n[s];u[a]&&(yield{node:i,path:t,type:a,info:u[a]}),yield*this._iteratePropertyReferences(i,t,u)}return}if(i.type==="CallExpression"){i.callee===o&&n[E]&&(yield{node:i,path:t,type:E,info:n[E]});return}if(i.type==="NewExpression"){i.callee===o&&n[S]&&(yield{node:i,path:t,type:S,info:n[S]});return}if(i.type==="AssignmentExpression"){i.right===o&&(yield*this._iterateLhsReferences(i.left,t,n),yield*this._iteratePropertyReferences(i,t,n));return}if(i.type==="AssignmentPattern"){i.right===o&&(yield*this._iterateLhsReferences(i.left,t,n));return}i.type==="VariableDeclarator"&&i.init===o&&(yield*this._iterateLhsReferences(i.id,t,n))}*_iterateLhsReferences(r,t,n){if(r.type==="Identifier"){let o=g(this.globalScope,r);o!=null&&(yield*this._iterateVariableReferences(o,t,n,!1));return}if(r.type==="ObjectPattern"){for(let o of r.properties){let i=q(o);if(i==null||!d(n,i))continue;let s=t.concat(i),u=n[i];u[a]&&(yield{node:o,path:s,type:a,info:u[a]}),yield*this._iterateLhsReferences(o.value,s,u)}return}r.type==="AssignmentPattern"&&(yield*this._iterateLhsReferences(r.left,t,n))}*_iterateImportReferences(r,t,n){let o=r.type;if(o==="ImportSpecifier"||o==="ImportDefaultSpecifier"){let i=o==="ImportDefaultSpecifier"?"default":r.imported.name;if(!d(n,i))return;t=t.concat(i);let s=n[i];s[a]&&(yield{node:r,path:t,type:a,info:s[a]}),yield*this._iterateVariableReferences(g(this.globalScope,r.local),t,s,!1);return}if(o==="ImportNamespaceSpecifier"){yield*this._iterateVariableReferences(g(this.globalScope,r.local),t,n,!1);return}if(o==="ExportSpecifier"){let i=r.local.name;if(!d(n,i))return;t=t.concat(i);let s=n[i];s[a]&&(yield{node:r,path:t,type:a,info:s[a]})}}};h.READ=a;h.CALL=E;h.CONSTRUCT=S;h.ESM=X;function Oe(e,r){return!(r===1&&e==="default")}var Y=(e,r,t,n=new Set)=>{n.has(r)||(n.add(r),t(r),(e.sourceCode.visitorKeys[r.type]||[]).map(o=>r[o]).filter(o=>o).flatMap(o=>Array.isArray(o)?o:[o]).filter(o=>typeof o?.type=="string").forEach(o=>Y(e,o,t,n)))},G=(e,r)=>{let t=[];return Y(e,r,n=>{n.type==="Identifier"&&t.push(n)}),t},A=(e,r,t,n,o=new Set)=>{if(!r||typeof r!="object"||o.has(r))return!1;o.add(r);let i=G(t,r);return i.some(s=>s.name===e.name)?!0:i.map(s=>g(n,s)).filter(s=>s).some(s=>s.defs.filter(u=>u.type==="Variable").some(u=>A(e,u.node.init,t,n,o)))},Fe=e=>{let r=e.type==="FunctionDeclaration",t=e.type==="VariableDeclarator"&&e.init.type==="ArrowFunctionExpression";return(r||t)&&e.id.type==="Identifier"&&e.id.name[0].toUpperCase()===e.id.name[0]},K=e=>e.init&&e.init.type==="CallExpression"&&e.init.callee.name==="useState"&&e.id.type==="ArrayPattern"&&e.id.elements.length===2&&e.id.elements.every(r=>r.type==="Identifier"),k=e=>e.type==="CallExpression"&&e.callee.type==="Identifier"&&e.callee.name==="useEffect"||e.callee.type==="MemberExpression"&&e.callee.object.name==="React"&&e.callee.property.name==="useEffect",j=e=>{if(!k(e)||e.arguments.length<1)return null;let r=e.arguments[0];return r.type!=="ArrowFunctionExpression"&&r.type!=="FunctionExpression"?null:r},H=(e,r)=>{if(!k(r)||r.arguments.length<1)return null;let t=j(r);if(!t)return null;let n=o=>o.references.concat(o.childScopes.flatMap(i=>n(i)));return n(e.sourceCode.getScope(t))};function Q(e,r){if(!k(r)||r.arguments.length<2)return null;let t=r.arguments[1];if(t.type!=="ArrayExpression")return null;let n=G(e,t),o=e.sourceCode.getScope(r);return n.map(i=>[i,g(o,i)]).filter(([i,s])=>s).flatMap(([i,s])=>s.references.filter(u=>u.identifier===i))}var R=e=>e.identifier.parent.type==="CallExpression"&&e.identifier.parent.callee===e.identifier,w=e=>e.resolved?.defs.some(r=>r.type==="Variable"&&K(r.node)),v=e=>e.resolved?.defs.some(r=>r.type==="Parameter"&&Fe(r.node.type==="ArrowFunctionExpression"?r.node.parent:r.node)),Z=(e,r)=>r.variables.some(t=>t.defs===e.resolved?.defs),O=e=>e.resolved.defs.find(r=>r.type==="Variable"&&K(r.node))?.node,ee=(e,r)=>{let t=e.identifier.parent,n=O(e).init.arguments?.[0];return r.sourceCode.getText(t.arguments[0])===r.sourceCode.getText(n)};var te="you-might-not-need-an-effect",re={meta:{type:"suggestion",docs:{description:"Warn against unnecessary React useEffect hooks.",url:"https://react.dev/learn/you-might-not-need-an-effect"},schema:[],messages:{avoidInternalEffect:"This effect operates entirely on internal React state, with no external dependencies. It is likely unnecessary.",avoidDerivedState:'Avoid storing derived state. Compute "{{state}}" directly during render, optionally with `useMemo` if it\'s expensive.',avoidInitializingState:"Avoid initializing state in an effect. Instead, pass the initial value to `useState`.",avoidChainingState:"Avoid chaining state changes. When possible, update all relevant state simultaneously.",avoidManagingParentBehavior:"Avoid managing parent behavior. Instead, lift this logic up to the parent component.",avoidPassingStateToParent:"Avoid making parent components depend on a child's intermediate state. If the parent needs live updates, consider lifting state up.",avoidResettingStateFromProps:"Avoid resetting state from props. If the prop is a key, pass it as `key` instead so React will reset the component."}},create:e=>({CallExpression:r=>{if(!k(r))return;let t=j(r),n=H(e,r),o=Q(e,r);if(!t||!n||!o||n.length===0)return;let i=n.concat(o).every(l=>w(l)||v(l)||Z(l,e.sourceCode.getScope(t)));i&&e.report({node:r,messageId:"avoidInternalEffect"});let s=n.filter(l=>R(l)).filter(l=>w(l)),u=o.some(l=>v(l)),y=s.length>0&&s.every(l=>ee(l,e));u&&y&&e.report({node:r,messageId:"avoidResettingStateFromProps"}),n.every(l=>v(l))&&o.every(l=>v(l))&&e.report({node:r,messageId:"avoidManagingParentBehavior"}),n.filter(l=>R(l)).forEach(l=>{let f=l.identifier.parent,F=f.arguments.some(I=>o.some(oe=>A(oe.identifier,I,e,e.sourceCode.getScope(t))));if(i&&w(l)){let I=O(l);F?e.report({node:f.callee,messageId:"avoidDerivedState",data:{state:I.id.elements[0].name}}):o.length>0?e.report({node:f.callee,messageId:"avoidChainingState"}):e.report({node:f.callee,messageId:"avoidInitializingState"})}v(l)&&F&&e.report({node:f.callee,messageId:"avoidPassingStateToParent"})})}})};var ne={rules:{[te]:re}};import Ne from"eslint-plugin-react-hooks";import Le from"typescript-eslint";var ut=Le.config({files:["**/*.{jsx,tsx}"],ignores:N,languageOptions:L,settings:{react:{version:"19.1.0"}},plugins:{react:De,"react-hooks":Ne,"react-you-might-not-need-an-effect":ne},rules:{"react/avoid-shorthand-boolean":"off","react/avoid-shorthand-fragment":"off","react/debug/class-component":"off","react/debug/function-component":"off","react/debug/hook":"off","react/debug/is-from-react":"off","react/debug/jsx":"off","react/debug/react-hooks":"off","react/dom/no-children-in-void-dom-elements":"error","react/dom/no-dangerously-set-innerhtml":"error","react/dom/no-dangerously-set-innerhtml-with-children":"error","react/dom/no-find-dom-node":"error","react/dom/no-flush-sync":"error","react/dom/no-hydrate":"error","react/dom/no-missing-button-type":"error","react/dom/no-missing-iframe-sandbox":"error","react/dom/no-namespace":"error","react/dom/no-render":"error","react/dom/no-render-return-value":"error","react/dom/no-script-url":"error","react/dom/no-unknown-property":"error","react/dom/no-unsafe-iframe-sandbox":"error","react/dom/no-unsafe-target-blank":"error","react/dom/no-use-form-state":"error","react/dom/no-void-elements-with-children":"error","react/ensure-forward-ref-using-ref":"error","react/hooks-extra/ensure-custom-hooks-using-other-hooks":"error","react/hooks-extra/ensure-use-callback-has-non-empty-deps":"error","react/hooks-extra/ensure-use-memo-has-non-empty-deps":"error","react/hooks-extra/no-direct-set-state-in-use-effect":"error","react/hooks-extra/no-direct-set-state-in-use-layout-effect":"error","react/hooks-extra/no-redundant-custom-hook":"error","react/hooks-extra/no-unnecessary-use-callback":"error","react/hooks-extra/no-unnecessary-use-memo":"error","react/hooks-extra/no-unnecessary-use-prefix":"error","react/hooks-extra/no-useless-custom-hooks":"error","react/hooks-extra/prefer-use-state-lazy-initialization":"error","react/jsx-key-before-spread":"error","react/jsx-no-duplicate-props":"error","react/jsx-no-undef":"error","react/jsx-uses-react":"error","react/jsx-uses-vars":"error","react/naming-convention/component-name":"error","react/naming-convention/context-name":"error","react/naming-convention/filename":["error",{rule:"kebab-case"}],"react/naming-convention/filename-extension":"error","react/naming-convention/use-state":"error","react/no-access-state-in-setstate":"error","react/no-array-index-key":"error","react/no-children-count":"error","react/no-children-for-each":"error","react/no-children-map":"error","react/no-children-only":"error","react/no-children-prop":"error","react/no-children-to-array":"error","react/no-class-component":"error","react/no-clone-element":"error","react/no-comment-textnodes":"error","react/no-complex-conditional-rendering":"error","react/no-complicated-conditional-rendering":"error","react/no-component-will-mount":"error","react/no-component-will-receive-props":"error","react/no-component-will-update":"error","react/no-context-provider":"error","react/no-create-ref":"error","react/no-default-props":"error","react/no-direct-mutation-state":"error","react/no-duplicate-jsx-props":"error","react/no-duplicate-key":"error","react/no-forward-ref":"error","react/no-implicit-key":"error","react/no-leaked-conditional-rendering":"error","react/no-missing-component-display-name":"error","react/no-missing-context-display-name":"error","react/no-missing-key":"error","react/no-misused-capture-owner-stack":"error","react/no-nested-component-definitions":"error","react/no-nested-components":"error","react/no-nested-lazy-component-declarations":"error","react/no-prop-types":"error","react/no-redundant-should-component-update":"error","react/no-set-state-in-component-did-mount":"error","react/no-set-state-in-component-did-update":"error","react/no-set-state-in-component-will-update":"error","react/no-string-refs":"error","react/no-unsafe-component-will-mount":"error","react/no-unsafe-component-will-receive-props":"error","react/no-unsafe-component-will-update":"error","react/no-unstable-context-value":"error","react/no-unstable-default-props":"error","react/no-unused-class-component-members":"error","react/no-unused-state":"error","react/no-use-context":"error","react/no-useless-forward-ref":"error","react/no-useless-fragment":"error","react/prefer-destructuring-assignment":"error","react/prefer-react-namespace-import":"error","react/prefer-read-only-props":"error","react/prefer-shorthand-boolean":"error","react/prefer-shorthand-fragment":"error","react/use-jsx-vars":"error","react/web-api/no-leaked-event-listener":"error","react/web-api/no-leaked-interval":"error","react/web-api/no-leaked-resize-observer":"error","react/web-api/no-leaked-timeout":"error","react-hooks/exhaustive-deps":"error","react-hooks/rules-of-hooks":"error","react-you-might-not-need-an-effect/you-might-not-need-an-effect":"error"}});export{ut as default};
2
+ /*! Bundled license information:
3
+
4
+ eslint-utils/index.mjs:
5
+ (*! @author Toru Nagashima <https://github.com/mysticatea> *)
6
+ */
2
7
  //# sourceMappingURL=config.react.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.react.js"],"sourcesContent":["// @ts-nocheck\nimport { ignores, languageOptions } from \"./constants.js\";\nimport react from \"@eslint-react/eslint-plugin\";\nimport reactHooks from \"eslint-plugin-react-hooks\";\nimport tseslint from \"typescript-eslint\";\n\nexport default tseslint.config(\n {\n files: [\"**/*.{jsx,tsx}\"],\nignores,\nlanguageOptions,\nsettings: {\n \"react\":{\"version\":\"19.1.0\"}\n},\n plugins: {\n \"react\": react,\"react-hooks\": reactHooks,\n },\n rules: {\n \"react/avoid-shorthand-boolean\":\"off\",\"react/avoid-shorthand-fragment\":\"off\",\"react/debug/class-component\":\"off\",\"react/debug/function-component\":\"off\",\"react/debug/hook\":\"off\",\"react/debug/is-from-react\":\"off\",\"react/debug/jsx\":\"off\",\"react/debug/react-hooks\":\"off\",\"react/dom/no-children-in-void-dom-elements\":\"error\",\"react/dom/no-dangerously-set-innerhtml\":\"error\",\"react/dom/no-dangerously-set-innerhtml-with-children\":\"error\",\"react/dom/no-find-dom-node\":\"error\",\"react/dom/no-flush-sync\":\"error\",\"react/dom/no-hydrate\":\"error\",\"react/dom/no-missing-button-type\":\"error\",\"react/dom/no-missing-iframe-sandbox\":\"error\",\"react/dom/no-namespace\":\"error\",\"react/dom/no-render\":\"error\",\"react/dom/no-render-return-value\":\"error\",\"react/dom/no-script-url\":\"error\",\"react/dom/no-unknown-property\":\"error\",\"react/dom/no-unsafe-iframe-sandbox\":\"error\",\"react/dom/no-unsafe-target-blank\":\"error\",\"react/dom/no-use-form-state\":\"error\",\"react/dom/no-void-elements-with-children\":\"error\",\"react/ensure-forward-ref-using-ref\":\"error\",\"react/hooks-extra/ensure-custom-hooks-using-other-hooks\":\"error\",\"react/hooks-extra/ensure-use-callback-has-non-empty-deps\":\"error\",\"react/hooks-extra/ensure-use-memo-has-non-empty-deps\":\"error\",\"react/hooks-extra/no-direct-set-state-in-use-effect\":\"error\",\"react/hooks-extra/no-direct-set-state-in-use-layout-effect\":\"error\",\"react/hooks-extra/no-redundant-custom-hook\":\"error\",\"react/hooks-extra/no-unnecessary-use-callback\":\"error\",\"react/hooks-extra/no-unnecessary-use-memo\":\"error\",\"react/hooks-extra/no-unnecessary-use-prefix\":\"error\",\"react/hooks-extra/no-useless-custom-hooks\":\"error\",\"react/hooks-extra/prefer-use-state-lazy-initialization\":\"error\",\"react/jsx-key-before-spread\":\"error\",\"react/jsx-no-duplicate-props\":\"error\",\"react/jsx-no-undef\":\"error\",\"react/jsx-uses-react\":\"error\",\"react/jsx-uses-vars\":\"error\",\"react/naming-convention/component-name\":\"error\",\"react/naming-convention/context-name\":\"error\",\"react/naming-convention/filename\":[\"error\",{\"rule\":\"kebab-case\"}],\"react/naming-convention/filename-extension\":\"error\",\"react/naming-convention/use-state\":\"error\",\"react/no-access-state-in-setstate\":\"error\",\"react/no-array-index-key\":\"error\",\"react/no-children-count\":\"error\",\"react/no-children-for-each\":\"error\",\"react/no-children-map\":\"error\",\"react/no-children-only\":\"error\",\"react/no-children-prop\":\"error\",\"react/no-children-to-array\":\"error\",\"react/no-class-component\":\"error\",\"react/no-clone-element\":\"error\",\"react/no-comment-textnodes\":\"error\",\"react/no-complex-conditional-rendering\":\"error\",\"react/no-complicated-conditional-rendering\":\"error\",\"react/no-component-will-mount\":\"error\",\"react/no-component-will-receive-props\":\"error\",\"react/no-component-will-update\":\"error\",\"react/no-context-provider\":\"error\",\"react/no-create-ref\":\"error\",\"react/no-default-props\":\"error\",\"react/no-direct-mutation-state\":\"error\",\"react/no-duplicate-jsx-props\":\"error\",\"react/no-duplicate-key\":\"error\",\"react/no-forward-ref\":\"error\",\"react/no-implicit-key\":\"error\",\"react/no-leaked-conditional-rendering\":\"error\",\"react/no-missing-component-display-name\":\"error\",\"react/no-missing-context-display-name\":\"error\",\"react/no-missing-key\":\"error\",\"react/no-misused-capture-owner-stack\":\"error\",\"react/no-nested-component-definitions\":\"error\",\"react/no-nested-components\":\"error\",\"react/no-nested-lazy-component-declarations\":\"error\",\"react/no-prop-types\":\"error\",\"react/no-redundant-should-component-update\":\"error\",\"react/no-set-state-in-component-did-mount\":\"error\",\"react/no-set-state-in-component-did-update\":\"error\",\"react/no-set-state-in-component-will-update\":\"error\",\"react/no-string-refs\":\"error\",\"react/no-unsafe-component-will-mount\":\"error\",\"react/no-unsafe-component-will-receive-props\":\"error\",\"react/no-unsafe-component-will-update\":\"error\",\"react/no-unstable-context-value\":\"error\",\"react/no-unstable-default-props\":\"error\",\"react/no-unused-class-component-members\":\"error\",\"react/no-unused-state\":\"error\",\"react/no-use-context\":\"error\",\"react/no-useless-forward-ref\":\"error\",\"react/no-useless-fragment\":\"error\",\"react/prefer-destructuring-assignment\":\"error\",\"react/prefer-react-namespace-import\":\"error\",\"react/prefer-read-only-props\":\"error\",\"react/prefer-shorthand-boolean\":\"error\",\"react/prefer-shorthand-fragment\":\"error\",\"react/use-jsx-vars\":\"error\",\"react/web-api/no-leaked-event-listener\":\"error\",\"react/web-api/no-leaked-interval\":\"error\",\"react/web-api/no-leaked-resize-observer\":\"error\",\"react/web-api/no-leaked-timeout\":\"error\",\"react-hooks/exhaustive-deps\":\"error\",\"react-hooks/rules-of-hooks\":\"error\"\n },\n },\n \n \n );\n"],"mappings":"+CAEA,OAAOA,MAAW,8BAClB,OAAOC,MAAgB,4BACvB,OAAOC,MAAc,oBAErB,IAAOC,EAAQD,EAAS,OACpB,CACA,MAAO,CAAC,gBAAgB,EAC5B,QAAAE,EACA,gBAAAC,EACA,SAAU,CACR,MAAQ,CAAC,QAAU,QAAQ,CAC7B,EACI,QAAS,CACP,MAASL,EAAM,cAAeC,CAChC,EACA,MAAO,CACL,gCAAgC,MAAM,iCAAiC,MAAM,8BAA8B,MAAM,iCAAiC,MAAM,mBAAmB,MAAM,4BAA4B,MAAM,kBAAkB,MAAM,0BAA0B,MAAM,6CAA6C,QAAQ,yCAAyC,QAAQ,uDAAuD,QAAQ,6BAA6B,QAAQ,0BAA0B,QAAQ,uBAAuB,QAAQ,mCAAmC,QAAQ,sCAAsC,QAAQ,yBAAyB,QAAQ,sBAAsB,QAAQ,mCAAmC,QAAQ,0BAA0B,QAAQ,gCAAgC,QAAQ,qCAAqC,QAAQ,mCAAmC,QAAQ,8BAA8B,QAAQ,2CAA2C,QAAQ,qCAAqC,QAAQ,0DAA0D,QAAQ,2DAA2D,QAAQ,uDAAuD,QAAQ,sDAAsD,QAAQ,6DAA6D,QAAQ,6CAA6C,QAAQ,gDAAgD,QAAQ,4CAA4C,QAAQ,8CAA8C,QAAQ,4CAA4C,QAAQ,yDAAyD,QAAQ,8BAA8B,QAAQ,+BAA+B,QAAQ,qBAAqB,QAAQ,uBAAuB,QAAQ,sBAAsB,QAAQ,yCAAyC,QAAQ,uCAAuC,QAAQ,mCAAmC,CAAC,QAAQ,CAAC,KAAO,YAAY,CAAC,EAAE,6CAA6C,QAAQ,oCAAoC,QAAQ,oCAAoC,QAAQ,2BAA2B,QAAQ,0BAA0B,QAAQ,6BAA6B,QAAQ,wBAAwB,QAAQ,yBAAyB,QAAQ,yBAAyB,QAAQ,6BAA6B,QAAQ,2BAA2B,QAAQ,yBAAyB,QAAQ,6BAA6B,QAAQ,yCAAyC,QAAQ,6CAA6C,QAAQ,gCAAgC,QAAQ,wCAAwC,QAAQ,iCAAiC,QAAQ,4BAA4B,QAAQ,sBAAsB,QAAQ,yBAAyB,QAAQ,iCAAiC,QAAQ,+BAA+B,QAAQ,yBAAyB,QAAQ,uBAAuB,QAAQ,wBAAwB,QAAQ,wCAAwC,QAAQ,0CAA0C,QAAQ,wCAAwC,QAAQ,uBAAuB,QAAQ,uCAAuC,QAAQ,wCAAwC,QAAQ,6BAA6B,QAAQ,8CAA8C,QAAQ,sBAAsB,QAAQ,6CAA6C,QAAQ,4CAA4C,QAAQ,6CAA6C,QAAQ,8CAA8C,QAAQ,uBAAuB,QAAQ,uCAAuC,QAAQ,+CAA+C,QAAQ,wCAAwC,QAAQ,kCAAkC,QAAQ,kCAAkC,QAAQ,0CAA0C,QAAQ,wBAAwB,QAAQ,uBAAuB,QAAQ,+BAA+B,QAAQ,4BAA4B,QAAQ,wCAAwC,QAAQ,sCAAsC,QAAQ,+BAA+B,QAAQ,iCAAiC,QAAQ,kCAAkC,QAAQ,qBAAqB,QAAQ,yCAAyC,QAAQ,mCAAmC,QAAQ,0CAA0C,QAAQ,kCAAkC,QAAQ,8BAA8B,QAAQ,6BAA6B,OACn9I,CACF,CAGA","names":["react","reactHooks","tseslint","config_react_default","ignores","languageOptions"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/eslint-visitor-keys@2.1.0/node_modules/eslint-visitor-keys/lib/visitor-keys.json","../../../node_modules/.pnpm/eslint-visitor-keys@2.1.0/node_modules/eslint-visitor-keys/lib/index.js","../src/config.react.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/get-innermost-scope.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/find-variable.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/token-predicate.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/get-function-head-location.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/get-static-value.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/get-string-if-constant.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/get-property-name.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/get-function-name-with-kind.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/has-side-effect.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/is-parenthesized.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/pattern-matcher.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/reference-tracker.js","../../../node_modules/.pnpm/eslint-utils@3.0.0_eslint@9.26.0_jiti@2.4.2_/node_modules/eslint-utils/src/index.js","../../../node_modules/.pnpm/eslint-plugin-react-you-mig_e65400c2c364db1b0ebdb160c8232358/node_modules/eslint-plugin-react-you-might-not-need-an-effect/src/util.js","../../../node_modules/.pnpm/eslint-plugin-react-you-mig_e65400c2c364db1b0ebdb160c8232358/node_modules/eslint-plugin-react-you-might-not-need-an-effect/src/rule.js","../../../node_modules/.pnpm/eslint-plugin-react-you-mig_e65400c2c364db1b0ebdb160c8232358/node_modules/eslint-plugin-react-you-might-not-need-an-effect/src/index.js"],"sourcesContent":["{\n \"AssignmentExpression\": [\n \"left\",\n \"right\"\n ],\n \"AssignmentPattern\": [\n \"left\",\n \"right\"\n ],\n \"ArrayExpression\": [\n \"elements\"\n ],\n \"ArrayPattern\": [\n \"elements\"\n ],\n \"ArrowFunctionExpression\": [\n \"params\",\n \"body\"\n ],\n \"AwaitExpression\": [\n \"argument\"\n ],\n \"BlockStatement\": [\n \"body\"\n ],\n \"BinaryExpression\": [\n \"left\",\n \"right\"\n ],\n \"BreakStatement\": [\n \"label\"\n ],\n \"CallExpression\": [\n \"callee\",\n \"arguments\"\n ],\n \"CatchClause\": [\n \"param\",\n \"body\"\n ],\n \"ChainExpression\": [\n \"expression\"\n ],\n \"ClassBody\": [\n \"body\"\n ],\n \"ClassDeclaration\": [\n \"id\",\n \"superClass\",\n \"body\"\n ],\n \"ClassExpression\": [\n \"id\",\n \"superClass\",\n \"body\"\n ],\n \"ConditionalExpression\": [\n \"test\",\n \"consequent\",\n \"alternate\"\n ],\n \"ContinueStatement\": [\n \"label\"\n ],\n \"DebuggerStatement\": [],\n \"DoWhileStatement\": [\n \"body\",\n \"test\"\n ],\n \"EmptyStatement\": [],\n \"ExportAllDeclaration\": [\n \"exported\",\n \"source\"\n ],\n \"ExportDefaultDeclaration\": [\n \"declaration\"\n ],\n \"ExportNamedDeclaration\": [\n \"declaration\",\n \"specifiers\",\n \"source\"\n ],\n \"ExportSpecifier\": [\n \"exported\",\n \"local\"\n ],\n \"ExpressionStatement\": [\n \"expression\"\n ],\n \"ExperimentalRestProperty\": [\n \"argument\"\n ],\n \"ExperimentalSpreadProperty\": [\n \"argument\"\n ],\n \"ForStatement\": [\n \"init\",\n \"test\",\n \"update\",\n \"body\"\n ],\n \"ForInStatement\": [\n \"left\",\n \"right\",\n \"body\"\n ],\n \"ForOfStatement\": [\n \"left\",\n \"right\",\n \"body\"\n ],\n \"FunctionDeclaration\": [\n \"id\",\n \"params\",\n \"body\"\n ],\n \"FunctionExpression\": [\n \"id\",\n \"params\",\n \"body\"\n ],\n \"Identifier\": [],\n \"IfStatement\": [\n \"test\",\n \"consequent\",\n \"alternate\"\n ],\n \"ImportDeclaration\": [\n \"specifiers\",\n \"source\"\n ],\n \"ImportDefaultSpecifier\": [\n \"local\"\n ],\n \"ImportExpression\": [\n \"source\"\n ],\n \"ImportNamespaceSpecifier\": [\n \"local\"\n ],\n \"ImportSpecifier\": [\n \"imported\",\n \"local\"\n ],\n \"JSXAttribute\": [\n \"name\",\n \"value\"\n ],\n \"JSXClosingElement\": [\n \"name\"\n ],\n \"JSXElement\": [\n \"openingElement\",\n \"children\",\n \"closingElement\"\n ],\n \"JSXEmptyExpression\": [],\n \"JSXExpressionContainer\": [\n \"expression\"\n ],\n \"JSXIdentifier\": [],\n \"JSXMemberExpression\": [\n \"object\",\n \"property\"\n ],\n \"JSXNamespacedName\": [\n \"namespace\",\n \"name\"\n ],\n \"JSXOpeningElement\": [\n \"name\",\n \"attributes\"\n ],\n \"JSXSpreadAttribute\": [\n \"argument\"\n ],\n \"JSXText\": [],\n \"JSXFragment\": [\n \"openingFragment\",\n \"children\",\n \"closingFragment\"\n ],\n \"Literal\": [],\n \"LabeledStatement\": [\n \"label\",\n \"body\"\n ],\n \"LogicalExpression\": [\n \"left\",\n \"right\"\n ],\n \"MemberExpression\": [\n \"object\",\n \"property\"\n ],\n \"MetaProperty\": [\n \"meta\",\n \"property\"\n ],\n \"MethodDefinition\": [\n \"key\",\n \"value\"\n ],\n \"NewExpression\": [\n \"callee\",\n \"arguments\"\n ],\n \"ObjectExpression\": [\n \"properties\"\n ],\n \"ObjectPattern\": [\n \"properties\"\n ],\n \"PrivateIdentifier\": [],\n \"Program\": [\n \"body\"\n ],\n \"Property\": [\n \"key\",\n \"value\"\n ],\n \"PropertyDefinition\": [\n \"key\",\n \"value\"\n ],\n \"RestElement\": [\n \"argument\"\n ],\n \"ReturnStatement\": [\n \"argument\"\n ],\n \"SequenceExpression\": [\n \"expressions\"\n ],\n \"SpreadElement\": [\n \"argument\"\n ],\n \"Super\": [],\n \"SwitchStatement\": [\n \"discriminant\",\n \"cases\"\n ],\n \"SwitchCase\": [\n \"test\",\n \"consequent\"\n ],\n \"TaggedTemplateExpression\": [\n \"tag\",\n \"quasi\"\n ],\n \"TemplateElement\": [],\n \"TemplateLiteral\": [\n \"quasis\",\n \"expressions\"\n ],\n \"ThisExpression\": [],\n \"ThrowStatement\": [\n \"argument\"\n ],\n \"TryStatement\": [\n \"block\",\n \"handler\",\n \"finalizer\"\n ],\n \"UnaryExpression\": [\n \"argument\"\n ],\n \"UpdateExpression\": [\n \"argument\"\n ],\n \"VariableDeclaration\": [\n \"declarations\"\n ],\n \"VariableDeclarator\": [\n \"id\",\n \"init\"\n ],\n \"WhileStatement\": [\n \"test\",\n \"body\"\n ],\n \"WithStatement\": [\n \"object\",\n \"body\"\n ],\n \"YieldExpression\": [\n \"argument\"\n ]\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\"use strict\";\n\nconst KEYS = require(\"./visitor-keys.json\");\n\n// Types.\nconst NODE_TYPES = Object.freeze(Object.keys(KEYS));\n\n// Freeze the keys.\nfor (const type of NODE_TYPES) {\n Object.freeze(KEYS[type]);\n}\nObject.freeze(KEYS);\n\n// List to ignore keys.\nconst KEY_BLACKLIST = new Set([\n \"parent\",\n \"leadingComments\",\n \"trailingComments\"\n]);\n\n/**\n * Check whether a given key should be used or not.\n * @param {string} key The key to check.\n * @returns {boolean} `true` if the key should be used.\n */\nfunction filterKey(key) {\n return !KEY_BLACKLIST.has(key) && key[0] !== \"_\";\n}\n\n//------------------------------------------------------------------------------\n// Public interfaces\n//------------------------------------------------------------------------------\n\nmodule.exports = Object.freeze({\n\n /**\n * Visitor keys.\n * @type {{ [type: string]: string[] | undefined }}\n */\n KEYS,\n\n /**\n * Get visitor keys of a given node.\n * @param {Object} node The AST node to get keys.\n * @returns {string[]} Visitor keys of the node.\n */\n getKeys(node) {\n return Object.keys(node).filter(filterKey);\n },\n\n // Disable valid-jsdoc rule because it reports syntax error on the type of @returns.\n // eslint-disable-next-line valid-jsdoc\n /**\n * Make the union set with `KEYS` and given keys.\n * @param {Object} additionalKeys The additional keys.\n * @returns {{ [type: string]: string[] | undefined }} The union set.\n */\n unionWith(additionalKeys) {\n const retv = Object.assign({}, KEYS);\n\n for (const type of Object.keys(additionalKeys)) {\n if (retv.hasOwnProperty(type)) {\n const keys = new Set(additionalKeys[type]);\n\n for (const key of retv[type]) {\n keys.add(key);\n }\n\n retv[type] = Object.freeze(Array.from(keys));\n } else {\n retv[type] = Object.freeze(Array.from(additionalKeys[type]));\n }\n }\n\n return Object.freeze(retv);\n }\n});\n","// @ts-nocheck\nimport { ignores, languageOptions } from \"./constants.js\";\nimport react from \"@eslint-react/eslint-plugin\";\nimport reactEffect from \"eslint-plugin-react-you-might-not-need-an-effect\";\nimport reactHooks from \"eslint-plugin-react-hooks\";\nimport tseslint from \"typescript-eslint\";\n\nexport default tseslint.config(\n {\n files: [\"**/*.{jsx,tsx}\"],\nignores,\nlanguageOptions,\nsettings: {\n \"react\":{\"version\":\"19.1.0\"}\n},\n plugins: {\n \"react\": react,\"react-hooks\": reactHooks,\"react-you-might-not-need-an-effect\": reactEffect,\n },\n rules: {\n \"react/avoid-shorthand-boolean\":\"off\",\"react/avoid-shorthand-fragment\":\"off\",\"react/debug/class-component\":\"off\",\"react/debug/function-component\":\"off\",\"react/debug/hook\":\"off\",\"react/debug/is-from-react\":\"off\",\"react/debug/jsx\":\"off\",\"react/debug/react-hooks\":\"off\",\"react/dom/no-children-in-void-dom-elements\":\"error\",\"react/dom/no-dangerously-set-innerhtml\":\"error\",\"react/dom/no-dangerously-set-innerhtml-with-children\":\"error\",\"react/dom/no-find-dom-node\":\"error\",\"react/dom/no-flush-sync\":\"error\",\"react/dom/no-hydrate\":\"error\",\"react/dom/no-missing-button-type\":\"error\",\"react/dom/no-missing-iframe-sandbox\":\"error\",\"react/dom/no-namespace\":\"error\",\"react/dom/no-render\":\"error\",\"react/dom/no-render-return-value\":\"error\",\"react/dom/no-script-url\":\"error\",\"react/dom/no-unknown-property\":\"error\",\"react/dom/no-unsafe-iframe-sandbox\":\"error\",\"react/dom/no-unsafe-target-blank\":\"error\",\"react/dom/no-use-form-state\":\"error\",\"react/dom/no-void-elements-with-children\":\"error\",\"react/ensure-forward-ref-using-ref\":\"error\",\"react/hooks-extra/ensure-custom-hooks-using-other-hooks\":\"error\",\"react/hooks-extra/ensure-use-callback-has-non-empty-deps\":\"error\",\"react/hooks-extra/ensure-use-memo-has-non-empty-deps\":\"error\",\"react/hooks-extra/no-direct-set-state-in-use-effect\":\"error\",\"react/hooks-extra/no-direct-set-state-in-use-layout-effect\":\"error\",\"react/hooks-extra/no-redundant-custom-hook\":\"error\",\"react/hooks-extra/no-unnecessary-use-callback\":\"error\",\"react/hooks-extra/no-unnecessary-use-memo\":\"error\",\"react/hooks-extra/no-unnecessary-use-prefix\":\"error\",\"react/hooks-extra/no-useless-custom-hooks\":\"error\",\"react/hooks-extra/prefer-use-state-lazy-initialization\":\"error\",\"react/jsx-key-before-spread\":\"error\",\"react/jsx-no-duplicate-props\":\"error\",\"react/jsx-no-undef\":\"error\",\"react/jsx-uses-react\":\"error\",\"react/jsx-uses-vars\":\"error\",\"react/naming-convention/component-name\":\"error\",\"react/naming-convention/context-name\":\"error\",\"react/naming-convention/filename\":[\"error\",{\"rule\":\"kebab-case\"}],\"react/naming-convention/filename-extension\":\"error\",\"react/naming-convention/use-state\":\"error\",\"react/no-access-state-in-setstate\":\"error\",\"react/no-array-index-key\":\"error\",\"react/no-children-count\":\"error\",\"react/no-children-for-each\":\"error\",\"react/no-children-map\":\"error\",\"react/no-children-only\":\"error\",\"react/no-children-prop\":\"error\",\"react/no-children-to-array\":\"error\",\"react/no-class-component\":\"error\",\"react/no-clone-element\":\"error\",\"react/no-comment-textnodes\":\"error\",\"react/no-complex-conditional-rendering\":\"error\",\"react/no-complicated-conditional-rendering\":\"error\",\"react/no-component-will-mount\":\"error\",\"react/no-component-will-receive-props\":\"error\",\"react/no-component-will-update\":\"error\",\"react/no-context-provider\":\"error\",\"react/no-create-ref\":\"error\",\"react/no-default-props\":\"error\",\"react/no-direct-mutation-state\":\"error\",\"react/no-duplicate-jsx-props\":\"error\",\"react/no-duplicate-key\":\"error\",\"react/no-forward-ref\":\"error\",\"react/no-implicit-key\":\"error\",\"react/no-leaked-conditional-rendering\":\"error\",\"react/no-missing-component-display-name\":\"error\",\"react/no-missing-context-display-name\":\"error\",\"react/no-missing-key\":\"error\",\"react/no-misused-capture-owner-stack\":\"error\",\"react/no-nested-component-definitions\":\"error\",\"react/no-nested-components\":\"error\",\"react/no-nested-lazy-component-declarations\":\"error\",\"react/no-prop-types\":\"error\",\"react/no-redundant-should-component-update\":\"error\",\"react/no-set-state-in-component-did-mount\":\"error\",\"react/no-set-state-in-component-did-update\":\"error\",\"react/no-set-state-in-component-will-update\":\"error\",\"react/no-string-refs\":\"error\",\"react/no-unsafe-component-will-mount\":\"error\",\"react/no-unsafe-component-will-receive-props\":\"error\",\"react/no-unsafe-component-will-update\":\"error\",\"react/no-unstable-context-value\":\"error\",\"react/no-unstable-default-props\":\"error\",\"react/no-unused-class-component-members\":\"error\",\"react/no-unused-state\":\"error\",\"react/no-use-context\":\"error\",\"react/no-useless-forward-ref\":\"error\",\"react/no-useless-fragment\":\"error\",\"react/prefer-destructuring-assignment\":\"error\",\"react/prefer-react-namespace-import\":\"error\",\"react/prefer-read-only-props\":\"error\",\"react/prefer-shorthand-boolean\":\"error\",\"react/prefer-shorthand-fragment\":\"error\",\"react/use-jsx-vars\":\"error\",\"react/web-api/no-leaked-event-listener\":\"error\",\"react/web-api/no-leaked-interval\":\"error\",\"react/web-api/no-leaked-resize-observer\":\"error\",\"react/web-api/no-leaked-timeout\":\"error\",\"react-hooks/exhaustive-deps\":\"error\",\"react-hooks/rules-of-hooks\":\"error\",\"react-you-might-not-need-an-effect/you-might-not-need-an-effect\":\"error\"\n },\n },\n \n \n );\n","/**\n * Get the innermost scope which contains a given location.\n * @param {Scope} initialScope The initial scope to search.\n * @param {Node} node The location to search.\n * @returns {Scope} The innermost scope.\n */\nexport function getInnermostScope(initialScope, node) {\n const location = node.range[0]\n\n let scope = initialScope\n let found = false\n do {\n found = false\n for (const childScope of scope.childScopes) {\n const range = childScope.block.range\n\n if (range[0] <= location && location < range[1]) {\n scope = childScope\n found = true\n break\n }\n }\n } while (found)\n\n return scope\n}\n","import { getInnermostScope } from \"./get-innermost-scope\"\n\n/**\n * Find the variable of a given name.\n * @param {Scope} initialScope The scope to start finding.\n * @param {string|Node} nameOrNode The variable name to find. If this is a Node object then it should be an Identifier node.\n * @returns {Variable|null} The found variable or null.\n */\nexport function findVariable(initialScope, nameOrNode) {\n let name = \"\"\n let scope = initialScope\n\n if (typeof nameOrNode === \"string\") {\n name = nameOrNode\n } else {\n name = nameOrNode.name\n scope = getInnermostScope(scope, nameOrNode)\n }\n\n while (scope != null) {\n const variable = scope.set.get(name)\n if (variable != null) {\n return variable\n }\n scope = scope.upper\n }\n\n return null\n}\n","/**\n * Negate the result of `this` calling.\n * @param {Token} token The token to check.\n * @returns {boolean} `true` if the result of `this(token)` is `false`.\n */\nfunction negate0(token) {\n return !this(token) //eslint-disable-line no-invalid-this\n}\n\n/**\n * Creates the negate function of the given function.\n * @param {function(Token):boolean} f - The function to negate.\n * @returns {function(Token):boolean} Negated function.\n */\nfunction negate(f) {\n return negate0.bind(f)\n}\n\n/**\n * Checks if the given token is a PunctuatorToken with the given value\n * @param {Token} token - The token to check.\n * @param {string} value - The value to check.\n * @returns {boolean} `true` if the token is a PunctuatorToken with the given value.\n */\nfunction isPunctuatorTokenWithValue(token, value) {\n return token.type === \"Punctuator\" && token.value === value\n}\n\n/**\n * Checks if the given token is an arrow token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an arrow token.\n */\nexport function isArrowToken(token) {\n return isPunctuatorTokenWithValue(token, \"=>\")\n}\n\n/**\n * Checks if the given token is a comma token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comma token.\n */\nexport function isCommaToken(token) {\n return isPunctuatorTokenWithValue(token, \",\")\n}\n\n/**\n * Checks if the given token is a semicolon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a semicolon token.\n */\nexport function isSemicolonToken(token) {\n return isPunctuatorTokenWithValue(token, \";\")\n}\n\n/**\n * Checks if the given token is a colon token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a colon token.\n */\nexport function isColonToken(token) {\n return isPunctuatorTokenWithValue(token, \":\")\n}\n\n/**\n * Checks if the given token is an opening parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening parenthesis token.\n */\nexport function isOpeningParenToken(token) {\n return isPunctuatorTokenWithValue(token, \"(\")\n}\n\n/**\n * Checks if the given token is a closing parenthesis token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing parenthesis token.\n */\nexport function isClosingParenToken(token) {\n return isPunctuatorTokenWithValue(token, \")\")\n}\n\n/**\n * Checks if the given token is an opening square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening square bracket token.\n */\nexport function isOpeningBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"[\")\n}\n\n/**\n * Checks if the given token is a closing square bracket token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing square bracket token.\n */\nexport function isClosingBracketToken(token) {\n return isPunctuatorTokenWithValue(token, \"]\")\n}\n\n/**\n * Checks if the given token is an opening brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is an opening brace token.\n */\nexport function isOpeningBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"{\")\n}\n\n/**\n * Checks if the given token is a closing brace token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a closing brace token.\n */\nexport function isClosingBraceToken(token) {\n return isPunctuatorTokenWithValue(token, \"}\")\n}\n\n/**\n * Checks if the given token is a comment token or not.\n * @param {Token} token - The token to check.\n * @returns {boolean} `true` if the token is a comment token.\n */\nexport function isCommentToken(token) {\n return [\"Block\", \"Line\", \"Shebang\"].includes(token.type)\n}\n\nexport const isNotArrowToken = negate(isArrowToken)\nexport const isNotCommaToken = negate(isCommaToken)\nexport const isNotSemicolonToken = negate(isSemicolonToken)\nexport const isNotColonToken = negate(isColonToken)\nexport const isNotOpeningParenToken = negate(isOpeningParenToken)\nexport const isNotClosingParenToken = negate(isClosingParenToken)\nexport const isNotOpeningBracketToken = negate(isOpeningBracketToken)\nexport const isNotClosingBracketToken = negate(isClosingBracketToken)\nexport const isNotOpeningBraceToken = negate(isOpeningBraceToken)\nexport const isNotClosingBraceToken = negate(isClosingBraceToken)\nexport const isNotCommentToken = negate(isCommentToken)\n","import { isArrowToken, isOpeningParenToken } from \"./token-predicate\"\n\n/**\n * Get the `(` token of the given function node.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {Token} `(` token.\n */\nfunction getOpeningParenOfParams(node, sourceCode) {\n return node.id\n ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)\n : sourceCode.getFirstToken(node, isOpeningParenToken)\n}\n\n/**\n * Get the location of the given function node for reporting.\n * @param {Node} node - The function node to get.\n * @param {SourceCode} sourceCode - The source code object to get tokens.\n * @returns {string} The location of the function node for reporting.\n */\nexport function getFunctionHeadLocation(node, sourceCode) {\n const parent = node.parent\n let start = null\n let end = null\n\n if (node.type === \"ArrowFunctionExpression\") {\n const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken)\n\n start = arrowToken.loc.start\n end = arrowToken.loc.end\n } else if (\n parent.type === \"Property\" ||\n parent.type === \"MethodDefinition\" ||\n parent.type === \"PropertyDefinition\"\n ) {\n start = parent.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n } else {\n start = node.loc.start\n end = getOpeningParenOfParams(node, sourceCode).loc.start\n }\n\n return {\n start: { ...start },\n end: { ...end },\n }\n}\n","/* globals globalThis, global, self, window */\n\nimport { findVariable } from \"./find-variable\"\n\nconst globalObject =\n typeof globalThis !== \"undefined\"\n ? globalThis\n : typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : typeof global !== \"undefined\"\n ? global\n : {}\n\nconst builtinNames = Object.freeze(\n new Set([\n \"Array\",\n \"ArrayBuffer\",\n \"BigInt\",\n \"BigInt64Array\",\n \"BigUint64Array\",\n \"Boolean\",\n \"DataView\",\n \"Date\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"escape\",\n \"Float32Array\",\n \"Float64Array\",\n \"Function\",\n \"Infinity\",\n \"Int16Array\",\n \"Int32Array\",\n \"Int8Array\",\n \"isFinite\",\n \"isNaN\",\n \"isPrototypeOf\",\n \"JSON\",\n \"Map\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"Object\",\n \"parseFloat\",\n \"parseInt\",\n \"Promise\",\n \"Proxy\",\n \"Reflect\",\n \"RegExp\",\n \"Set\",\n \"String\",\n \"Symbol\",\n \"Uint16Array\",\n \"Uint32Array\",\n \"Uint8Array\",\n \"Uint8ClampedArray\",\n \"undefined\",\n \"unescape\",\n \"WeakMap\",\n \"WeakSet\",\n ]),\n)\nconst callAllowed = new Set(\n [\n Array.isArray,\n typeof BigInt === \"function\" ? BigInt : undefined,\n Boolean,\n Date,\n Date.parse,\n decodeURI,\n decodeURIComponent,\n encodeURI,\n encodeURIComponent,\n escape,\n isFinite,\n isNaN,\n isPrototypeOf,\n ...Object.getOwnPropertyNames(Math)\n .map((k) => Math[k])\n .filter((f) => typeof f === \"function\"),\n Number,\n Number.isFinite,\n Number.isNaN,\n Number.parseFloat,\n Number.parseInt,\n Object,\n Object.entries,\n Object.is,\n Object.isExtensible,\n Object.isFrozen,\n Object.isSealed,\n Object.keys,\n Object.values,\n parseFloat,\n parseInt,\n RegExp,\n String,\n String.fromCharCode,\n String.fromCodePoint,\n String.raw,\n Symbol.for,\n Symbol.keyFor,\n unescape,\n ].filter((f) => typeof f === \"function\"),\n)\nconst callPassThrough = new Set([\n Object.freeze,\n Object.preventExtensions,\n Object.seal,\n])\n\n/**\n * Get the property descriptor.\n * @param {object} object The object to get.\n * @param {string|number|symbol} name The property name to get.\n */\nfunction getPropertyDescriptor(object, name) {\n let x = object\n while ((typeof x === \"object\" || typeof x === \"function\") && x !== null) {\n const d = Object.getOwnPropertyDescriptor(x, name)\n if (d) {\n return d\n }\n x = Object.getPrototypeOf(x)\n }\n return null\n}\n\n/**\n * Check if a property is getter or not.\n * @param {object} object The object to check.\n * @param {string|number|symbol} name The property name to check.\n */\nfunction isGetter(object, name) {\n const d = getPropertyDescriptor(object, name)\n return d != null && d.get != null\n}\n\n/**\n * Get the element values of a given node list.\n * @param {Node[]} nodeList The node list to get values.\n * @param {Scope|undefined} initialScope The initial scope to find variables.\n * @returns {any[]|null} The value list if all nodes are constant. Otherwise, null.\n */\nfunction getElementValues(nodeList, initialScope) {\n const valueList = []\n\n for (let i = 0; i < nodeList.length; ++i) {\n const elementNode = nodeList[i]\n\n if (elementNode == null) {\n valueList.length = i + 1\n } else if (elementNode.type === \"SpreadElement\") {\n const argument = getStaticValueR(elementNode.argument, initialScope)\n if (argument == null) {\n return null\n }\n valueList.push(...argument.value)\n } else {\n const element = getStaticValueR(elementNode, initialScope)\n if (element == null) {\n return null\n }\n valueList.push(element.value)\n }\n }\n\n return valueList\n}\n\nconst operations = Object.freeze({\n ArrayExpression(node, initialScope) {\n const elements = getElementValues(node.elements, initialScope)\n return elements != null ? { value: elements } : null\n },\n\n AssignmentExpression(node, initialScope) {\n if (node.operator === \"=\") {\n return getStaticValueR(node.right, initialScope)\n }\n return null\n },\n\n //eslint-disable-next-line complexity\n BinaryExpression(node, initialScope) {\n if (node.operator === \"in\" || node.operator === \"instanceof\") {\n // Not supported.\n return null\n }\n\n const left = getStaticValueR(node.left, initialScope)\n const right = getStaticValueR(node.right, initialScope)\n if (left != null && right != null) {\n switch (node.operator) {\n case \"==\":\n return { value: left.value == right.value } //eslint-disable-line eqeqeq\n case \"!=\":\n return { value: left.value != right.value } //eslint-disable-line eqeqeq\n case \"===\":\n return { value: left.value === right.value }\n case \"!==\":\n return { value: left.value !== right.value }\n case \"<\":\n return { value: left.value < right.value }\n case \"<=\":\n return { value: left.value <= right.value }\n case \">\":\n return { value: left.value > right.value }\n case \">=\":\n return { value: left.value >= right.value }\n case \"<<\":\n return { value: left.value << right.value }\n case \">>\":\n return { value: left.value >> right.value }\n case \">>>\":\n return { value: left.value >>> right.value }\n case \"+\":\n return { value: left.value + right.value }\n case \"-\":\n return { value: left.value - right.value }\n case \"*\":\n return { value: left.value * right.value }\n case \"/\":\n return { value: left.value / right.value }\n case \"%\":\n return { value: left.value % right.value }\n case \"**\":\n return { value: Math.pow(left.value, right.value) }\n case \"|\":\n return { value: left.value | right.value }\n case \"^\":\n return { value: left.value ^ right.value }\n case \"&\":\n return { value: left.value & right.value }\n\n // no default\n }\n }\n\n return null\n },\n\n CallExpression(node, initialScope) {\n const calleeNode = node.callee\n const args = getElementValues(node.arguments, initialScope)\n\n if (args != null) {\n if (calleeNode.type === \"MemberExpression\") {\n if (calleeNode.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(calleeNode.object, initialScope)\n if (object != null) {\n if (\n object.value == null &&\n (object.optional || node.optional)\n ) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(\n calleeNode,\n initialScope,\n )\n\n if (property != null) {\n const receiver = object.value\n const methodName = property.value\n if (callAllowed.has(receiver[methodName])) {\n return { value: receiver[methodName](...args) }\n }\n if (callPassThrough.has(receiver[methodName])) {\n return { value: args[0] }\n }\n }\n }\n } else {\n const callee = getStaticValueR(calleeNode, initialScope)\n if (callee != null) {\n if (callee.value == null && node.optional) {\n return { value: undefined, optional: true }\n }\n const func = callee.value\n if (callAllowed.has(func)) {\n return { value: func(...args) }\n }\n if (callPassThrough.has(func)) {\n return { value: args[0] }\n }\n }\n }\n }\n\n return null\n },\n\n ConditionalExpression(node, initialScope) {\n const test = getStaticValueR(node.test, initialScope)\n if (test != null) {\n return test.value\n ? getStaticValueR(node.consequent, initialScope)\n : getStaticValueR(node.alternate, initialScope)\n }\n return null\n },\n\n ExpressionStatement(node, initialScope) {\n return getStaticValueR(node.expression, initialScope)\n },\n\n Identifier(node, initialScope) {\n if (initialScope != null) {\n const variable = findVariable(initialScope, node)\n\n // Built-in globals.\n if (\n variable != null &&\n variable.defs.length === 0 &&\n builtinNames.has(variable.name) &&\n variable.name in globalObject\n ) {\n return { value: globalObject[variable.name] }\n }\n\n // Constants.\n if (variable != null && variable.defs.length === 1) {\n const def = variable.defs[0]\n if (\n def.parent &&\n def.parent.kind === \"const\" &&\n // TODO(mysticatea): don't support destructuring here.\n def.node.id.type === \"Identifier\"\n ) {\n return getStaticValueR(def.node.init, initialScope)\n }\n }\n }\n return null\n },\n\n Literal(node) {\n //istanbul ignore if : this is implementation-specific behavior.\n if ((node.regex != null || node.bigint != null) && node.value == null) {\n // It was a RegExp/BigInt literal, but Node.js didn't support it.\n return null\n }\n return { value: node.value }\n },\n\n LogicalExpression(node, initialScope) {\n const left = getStaticValueR(node.left, initialScope)\n if (left != null) {\n if (\n (node.operator === \"||\" && Boolean(left.value) === true) ||\n (node.operator === \"&&\" && Boolean(left.value) === false) ||\n (node.operator === \"??\" && left.value != null)\n ) {\n return left\n }\n\n const right = getStaticValueR(node.right, initialScope)\n if (right != null) {\n return right\n }\n }\n\n return null\n },\n\n MemberExpression(node, initialScope) {\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n const object = getStaticValueR(node.object, initialScope)\n if (object != null) {\n if (object.value == null && (object.optional || node.optional)) {\n return { value: undefined, optional: true }\n }\n const property = getStaticPropertyNameValue(node, initialScope)\n\n if (property != null && !isGetter(object.value, property.value)) {\n return { value: object.value[property.value] }\n }\n }\n return null\n },\n\n ChainExpression(node, initialScope) {\n const expression = getStaticValueR(node.expression, initialScope)\n if (expression != null) {\n return { value: expression.value }\n }\n return null\n },\n\n NewExpression(node, initialScope) {\n const callee = getStaticValueR(node.callee, initialScope)\n const args = getElementValues(node.arguments, initialScope)\n\n if (callee != null && args != null) {\n const Func = callee.value\n if (callAllowed.has(Func)) {\n return { value: new Func(...args) }\n }\n }\n\n return null\n },\n\n ObjectExpression(node, initialScope) {\n const object = {}\n\n for (const propertyNode of node.properties) {\n if (propertyNode.type === \"Property\") {\n if (propertyNode.kind !== \"init\") {\n return null\n }\n const key = getStaticPropertyNameValue(\n propertyNode,\n initialScope,\n )\n const value = getStaticValueR(propertyNode.value, initialScope)\n if (key == null || value == null) {\n return null\n }\n object[key.value] = value.value\n } else if (\n propertyNode.type === \"SpreadElement\" ||\n propertyNode.type === \"ExperimentalSpreadProperty\"\n ) {\n const argument = getStaticValueR(\n propertyNode.argument,\n initialScope,\n )\n if (argument == null) {\n return null\n }\n Object.assign(object, argument.value)\n } else {\n return null\n }\n }\n\n return { value: object }\n },\n\n SequenceExpression(node, initialScope) {\n const last = node.expressions[node.expressions.length - 1]\n return getStaticValueR(last, initialScope)\n },\n\n TaggedTemplateExpression(node, initialScope) {\n const tag = getStaticValueR(node.tag, initialScope)\n const expressions = getElementValues(\n node.quasi.expressions,\n initialScope,\n )\n\n if (tag != null && expressions != null) {\n const func = tag.value\n const strings = node.quasi.quasis.map((q) => q.value.cooked)\n strings.raw = node.quasi.quasis.map((q) => q.value.raw)\n\n if (func === String.raw) {\n return { value: func(strings, ...expressions) }\n }\n }\n\n return null\n },\n\n TemplateLiteral(node, initialScope) {\n const expressions = getElementValues(node.expressions, initialScope)\n if (expressions != null) {\n let value = node.quasis[0].value.cooked\n for (let i = 0; i < expressions.length; ++i) {\n value += expressions[i]\n value += node.quasis[i + 1].value.cooked\n }\n return { value }\n }\n return null\n },\n\n UnaryExpression(node, initialScope) {\n if (node.operator === \"delete\") {\n // Not supported.\n return null\n }\n if (node.operator === \"void\") {\n return { value: undefined }\n }\n\n const arg = getStaticValueR(node.argument, initialScope)\n if (arg != null) {\n switch (node.operator) {\n case \"-\":\n return { value: -arg.value }\n case \"+\":\n return { value: +arg.value } //eslint-disable-line no-implicit-coercion\n case \"!\":\n return { value: !arg.value }\n case \"~\":\n return { value: ~arg.value }\n case \"typeof\":\n return { value: typeof arg.value }\n\n // no default\n }\n }\n\n return null\n },\n})\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope|undefined} initialScope The scope to start finding variable.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nfunction getStaticValueR(node, initialScope) {\n if (node != null && Object.hasOwnProperty.call(operations, node.type)) {\n return operations[node.type](node, initialScope)\n }\n return null\n}\n\n/**\n * Get the static value of property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the property name of the node, or `null`.\n */\nfunction getStaticPropertyNameValue(node, initialScope) {\n const nameNode = node.type === \"Property\" ? node.key : node.property\n\n if (node.computed) {\n return getStaticValueR(nameNode, initialScope)\n }\n\n if (nameNode.type === \"Identifier\") {\n return { value: nameNode.name }\n }\n\n if (nameNode.type === \"Literal\") {\n if (nameNode.bigint) {\n return { value: nameNode.bigint }\n }\n return { value: String(nameNode.value) }\n }\n\n return null\n}\n\n/**\n * Get the value of a given node if it's a static value.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If this scope was given, this tries to resolve identifier references which are in the given node as much as possible.\n * @returns {{value:any}|{value:undefined,optional?:true}|null} The static value of the node, or `null`.\n */\nexport function getStaticValue(node, initialScope = null) {\n try {\n return getStaticValueR(node, initialScope)\n } catch (_error) {\n return null\n }\n}\n","import { getStaticValue } from \"./get-static-value\"\n\n/**\n * Get the value of a given node if it's a literal or a template literal.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is an Identifier node and this scope was given, this checks the variable of the identifier, and returns the value of it if the variable is a constant.\n * @returns {string|null} The value of the node, or `null`.\n */\nexport function getStringIfConstant(node, initialScope = null) {\n // Handle the literals that the platform doesn't support natively.\n if (node && node.type === \"Literal\" && node.value === null) {\n if (node.regex) {\n return `/${node.regex.pattern}/${node.regex.flags}`\n }\n if (node.bigint) {\n return node.bigint\n }\n }\n\n const evaluated = getStaticValue(node, initialScope)\n return evaluated && String(evaluated.value)\n}\n","import { getStringIfConstant } from \"./get-string-if-constant\"\n\n/**\n * Get the property name from a MemberExpression node or a Property node.\n * @param {Node} node The node to get.\n * @param {Scope} [initialScope] The scope to start finding variable. Optional. If the node is a computed property node and this scope was given, this checks the computed property name by the `getStringIfConstant` function with the scope, and returns the value of it.\n * @returns {string|null} The property name of the node.\n */\nexport function getPropertyName(node, initialScope) {\n switch (node.type) {\n case \"MemberExpression\":\n if (node.computed) {\n return getStringIfConstant(node.property, initialScope)\n }\n if (node.property.type === \"PrivateIdentifier\") {\n return null\n }\n return node.property.name\n\n case \"Property\":\n case \"MethodDefinition\":\n case \"PropertyDefinition\":\n if (node.computed) {\n return getStringIfConstant(node.key, initialScope)\n }\n if (node.key.type === \"Literal\") {\n return String(node.key.value)\n }\n if (node.key.type === \"PrivateIdentifier\") {\n return null\n }\n return node.key.name\n\n // no default\n }\n\n return null\n}\n","import { getPropertyName } from \"./get-property-name\"\n\n/**\n * Get the name and kind of the given function node.\n * @param {ASTNode} node - The function node to get.\n * @param {SourceCode} [sourceCode] The source code object to get the code of computed property keys.\n * @returns {string} The name and kind of the function node.\n */\n// eslint-disable-next-line complexity\nexport function getFunctionNameWithKind(node, sourceCode) {\n const parent = node.parent\n const tokens = []\n const isObjectMethod = parent.type === \"Property\" && parent.value === node\n const isClassMethod =\n parent.type === \"MethodDefinition\" && parent.value === node\n const isClassFieldMethod =\n parent.type === \"PropertyDefinition\" && parent.value === node\n\n // Modifiers.\n if (isClassMethod || isClassFieldMethod) {\n if (parent.static) {\n tokens.push(\"static\")\n }\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(\"private\")\n }\n }\n if (node.async) {\n tokens.push(\"async\")\n }\n if (node.generator) {\n tokens.push(\"generator\")\n }\n\n // Kinds.\n if (isObjectMethod || isClassMethod) {\n if (parent.kind === \"constructor\") {\n return \"constructor\"\n }\n if (parent.kind === \"get\") {\n tokens.push(\"getter\")\n } else if (parent.kind === \"set\") {\n tokens.push(\"setter\")\n } else {\n tokens.push(\"method\")\n }\n } else if (isClassFieldMethod) {\n tokens.push(\"method\")\n } else {\n if (node.type === \"ArrowFunctionExpression\") {\n tokens.push(\"arrow\")\n }\n tokens.push(\"function\")\n }\n\n // Names.\n if (isObjectMethod || isClassMethod || isClassFieldMethod) {\n if (parent.key.type === \"PrivateIdentifier\") {\n tokens.push(`#${parent.key.name}`)\n } else {\n const name = getPropertyName(parent)\n if (name) {\n tokens.push(`'${name}'`)\n } else if (sourceCode) {\n const keyText = sourceCode.getText(parent.key)\n if (!keyText.includes(\"\\n\")) {\n tokens.push(`[${keyText}]`)\n }\n }\n }\n } else if (node.id) {\n tokens.push(`'${node.id.name}'`)\n } else if (\n parent.type === \"VariableDeclarator\" &&\n parent.id &&\n parent.id.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.id.name}'`)\n } else if (\n (parent.type === \"AssignmentExpression\" ||\n parent.type === \"AssignmentPattern\") &&\n parent.left &&\n parent.left.type === \"Identifier\"\n ) {\n tokens.push(`'${parent.left.name}'`)\n }\n\n return tokens.join(\" \")\n}\n","import evk from \"eslint-visitor-keys\"\n\nconst typeConversionBinaryOps = Object.freeze(\n new Set([\n \"==\",\n \"!=\",\n \"<\",\n \"<=\",\n \">\",\n \">=\",\n \"<<\",\n \">>\",\n \">>>\",\n \"+\",\n \"-\",\n \"*\",\n \"/\",\n \"%\",\n \"|\",\n \"^\",\n \"&\",\n \"in\",\n ]),\n)\nconst typeConversionUnaryOps = Object.freeze(new Set([\"-\", \"+\", \"!\", \"~\"]))\n\n/**\n * Check whether the given value is an ASTNode or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an ASTNode.\n */\nfunction isNode(x) {\n return x !== null && typeof x === \"object\" && typeof x.type === \"string\"\n}\n\nconst visitor = Object.freeze(\n Object.assign(Object.create(null), {\n $visit(node, options, visitorKeys) {\n const { type } = node\n\n if (typeof this[type] === \"function\") {\n return this[type](node, options, visitorKeys)\n }\n\n return this.$visitChildren(node, options, visitorKeys)\n },\n\n $visitChildren(node, options, visitorKeys) {\n const { type } = node\n\n for (const key of visitorKeys[type] || evk.getKeys(node)) {\n const value = node[key]\n\n if (Array.isArray(value)) {\n for (const element of value) {\n if (\n isNode(element) &&\n this.$visit(element, options, visitorKeys)\n ) {\n return true\n }\n }\n } else if (\n isNode(value) &&\n this.$visit(value, options, visitorKeys)\n ) {\n return true\n }\n }\n\n return false\n },\n\n ArrowFunctionExpression() {\n return false\n },\n AssignmentExpression() {\n return true\n },\n AwaitExpression() {\n return true\n },\n BinaryExpression(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n typeConversionBinaryOps.has(node.operator) &&\n (node.left.type !== \"Literal\" || node.right.type !== \"Literal\")\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n CallExpression() {\n return true\n },\n FunctionExpression() {\n return false\n },\n ImportExpression() {\n return true\n },\n MemberExpression(node, options, visitorKeys) {\n if (options.considerGetters) {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.property.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n MethodDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n NewExpression() {\n return true\n },\n Property(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n PropertyDefinition(node, options, visitorKeys) {\n if (\n options.considerImplicitTypeConversion &&\n node.computed &&\n node.key.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UnaryExpression(node, options, visitorKeys) {\n if (node.operator === \"delete\") {\n return true\n }\n if (\n options.considerImplicitTypeConversion &&\n typeConversionUnaryOps.has(node.operator) &&\n node.argument.type !== \"Literal\"\n ) {\n return true\n }\n return this.$visitChildren(node, options, visitorKeys)\n },\n UpdateExpression() {\n return true\n },\n YieldExpression() {\n return true\n },\n }),\n)\n\n/**\n * Check whether a given node has any side effect or not.\n * @param {Node} node The node to get.\n * @param {SourceCode} sourceCode The source code object.\n * @param {object} [options] The option object.\n * @param {boolean} [options.considerGetters=false] If `true` then it considers member accesses as the node which has side effects.\n * @param {boolean} [options.considerImplicitTypeConversion=false] If `true` then it considers implicit type conversion as the node which has side effects.\n * @param {object} [options.visitorKeys=evk.KEYS] The keys to traverse nodes. Use `context.getSourceCode().visitorKeys`.\n * @returns {boolean} `true` if the node has a certain side effect.\n */\nexport function hasSideEffect(\n node,\n sourceCode,\n { considerGetters = false, considerImplicitTypeConversion = false } = {},\n) {\n return visitor.$visit(\n node,\n { considerGetters, considerImplicitTypeConversion },\n sourceCode.visitorKeys || evk.KEYS,\n )\n}\n","import { isClosingParenToken, isOpeningParenToken } from \"./token-predicate\"\n\n/**\n * Get the left parenthesis of the parent node syntax if it exists.\n * E.g., `if (a) {}` then the `(`.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {Token|null} The left parenthesis of the parent node syntax\n */\nfunction getParentSyntaxParen(node, sourceCode) {\n const parent = node.parent\n\n switch (parent.type) {\n case \"CallExpression\":\n case \"NewExpression\":\n if (parent.arguments.length === 1 && parent.arguments[0] === node) {\n return sourceCode.getTokenAfter(\n parent.callee,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"DoWhileStatement\":\n if (parent.test === node) {\n return sourceCode.getTokenAfter(\n parent.body,\n isOpeningParenToken,\n )\n }\n return null\n\n case \"IfStatement\":\n case \"WhileStatement\":\n if (parent.test === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"ImportExpression\":\n if (parent.source === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"SwitchStatement\":\n if (parent.discriminant === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n case \"WithStatement\":\n if (parent.object === node) {\n return sourceCode.getFirstToken(parent, 1)\n }\n return null\n\n default:\n return null\n }\n}\n\n/**\n * Check whether a given node is parenthesized or not.\n * @param {number} times The number of parantheses.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized the given times.\n */\n/**\n * Check whether a given node is parenthesized or not.\n * @param {Node} node The AST node to check.\n * @param {SourceCode} sourceCode The source code object to get tokens.\n * @returns {boolean} `true` if the node is parenthesized.\n */\nexport function isParenthesized(\n timesOrNode,\n nodeOrSourceCode,\n optionalSourceCode,\n) {\n let times, node, sourceCode, maybeLeftParen, maybeRightParen\n if (typeof timesOrNode === \"number\") {\n times = timesOrNode | 0\n node = nodeOrSourceCode\n sourceCode = optionalSourceCode\n if (!(times >= 1)) {\n throw new TypeError(\"'times' should be a positive integer.\")\n }\n } else {\n times = 1\n node = timesOrNode\n sourceCode = nodeOrSourceCode\n }\n\n if (\n node == null ||\n // `CatchClause.param` can't be parenthesized, example `try {} catch (error) {}`\n (node.parent.type === \"CatchClause\" && node.parent.param === node)\n ) {\n return false\n }\n\n maybeLeftParen = maybeRightParen = node\n do {\n maybeLeftParen = sourceCode.getTokenBefore(maybeLeftParen)\n maybeRightParen = sourceCode.getTokenAfter(maybeRightParen)\n } while (\n maybeLeftParen != null &&\n maybeRightParen != null &&\n isOpeningParenToken(maybeLeftParen) &&\n isClosingParenToken(maybeRightParen) &&\n // Avoid false positive such as `if (a) {}`\n maybeLeftParen !== getParentSyntaxParen(node, sourceCode) &&\n --times > 0\n )\n\n return times === 0\n}\n","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * See LICENSE file in root directory for full license.\n */\n\nconst placeholder = /\\$(?:[$&`']|[1-9][0-9]?)/gu\n\n/** @type {WeakMap<PatternMatcher, {pattern:RegExp,escaped:boolean}>} */\nconst internal = new WeakMap()\n\n/**\n * Check whether a given character is escaped or not.\n * @param {string} str The string to check.\n * @param {number} index The location of the character to check.\n * @returns {boolean} `true` if the character is escaped.\n */\nfunction isEscaped(str, index) {\n let escaped = false\n for (let i = index - 1; i >= 0 && str.charCodeAt(i) === 0x5c; --i) {\n escaped = !escaped\n }\n return escaped\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {string} replacement The new substring to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceS(matcher, str, replacement) {\n const chunks = []\n let index = 0\n\n /** @type {RegExpExecArray} */\n let match = null\n\n /**\n * @param {string} key The placeholder.\n * @returns {string} The replaced string.\n */\n function replacer(key) {\n switch (key) {\n case \"$$\":\n return \"$\"\n case \"$&\":\n return match[0]\n case \"$`\":\n return str.slice(0, match.index)\n case \"$'\":\n return str.slice(match.index + match[0].length)\n default: {\n const i = key.slice(1)\n if (i in match) {\n return match[i]\n }\n return key\n }\n }\n }\n\n for (match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(replacement.replace(placeholder, replacer))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * Replace a given string by a given matcher.\n * @param {PatternMatcher} matcher The pattern matcher.\n * @param {string} str The string to be replaced.\n * @param {(...strs[])=>string} replace The function to replace each matched part.\n * @returns {string} The replaced string.\n */\nfunction replaceF(matcher, str, replace) {\n const chunks = []\n let index = 0\n\n for (const match of matcher.execAll(str)) {\n chunks.push(str.slice(index, match.index))\n chunks.push(String(replace(...match, match.index, match.input)))\n index = match.index + match[0].length\n }\n chunks.push(str.slice(index))\n\n return chunks.join(\"\")\n}\n\n/**\n * The class to find patterns as considering escape sequences.\n */\nexport class PatternMatcher {\n /**\n * Initialize this matcher.\n * @param {RegExp} pattern The pattern to match.\n * @param {{escaped:boolean}} options The options.\n */\n constructor(pattern, { escaped = false } = {}) {\n if (!(pattern instanceof RegExp)) {\n throw new TypeError(\"'pattern' should be a RegExp instance.\")\n }\n if (!pattern.flags.includes(\"g\")) {\n throw new Error(\"'pattern' should contains 'g' flag.\")\n }\n\n internal.set(this, {\n pattern: new RegExp(pattern.source, pattern.flags),\n escaped: Boolean(escaped),\n })\n }\n\n /**\n * Find the pattern in a given string.\n * @param {string} str The string to find.\n * @returns {IterableIterator<RegExpExecArray>} The iterator which iterate the matched information.\n */\n *execAll(str) {\n const { pattern, escaped } = internal.get(this)\n let match = null\n let lastIndex = 0\n\n pattern.lastIndex = 0\n while ((match = pattern.exec(str)) != null) {\n if (escaped || !isEscaped(str, match.index)) {\n lastIndex = pattern.lastIndex\n yield match\n pattern.lastIndex = lastIndex\n }\n }\n }\n\n /**\n * Check whether the pattern is found in a given string.\n * @param {string} str The string to check.\n * @returns {boolean} `true` if the pattern was found in the string.\n */\n test(str) {\n const it = this.execAll(str)\n const ret = it.next()\n return !ret.done\n }\n\n /**\n * Replace a given string.\n * @param {string} str The string to be replaced.\n * @param {(string|((...strs:string[])=>string))} replacer The string or function to replace. This is the same as the 2nd argument of `String.prototype.replace`.\n * @returns {string} The replaced string.\n */\n [Symbol.replace](str, replacer) {\n return typeof replacer === \"function\"\n ? replaceF(this, String(str), replacer)\n : replaceS(this, String(str), String(replacer))\n }\n}\n","import { findVariable } from \"./find-variable\"\nimport { getPropertyName } from \"./get-property-name\"\nimport { getStringIfConstant } from \"./get-string-if-constant\"\n\nconst IMPORT_TYPE = /^(?:Import|Export(?:All|Default|Named))Declaration$/u\nconst has = Function.call.bind(Object.hasOwnProperty)\n\nexport const READ = Symbol(\"read\")\nexport const CALL = Symbol(\"call\")\nexport const CONSTRUCT = Symbol(\"construct\")\nexport const ESM = Symbol(\"esm\")\n\nconst requireCall = { require: { [CALL]: true } }\n\n/**\n * Check whether a given variable is modified or not.\n * @param {Variable} variable The variable to check.\n * @returns {boolean} `true` if the variable is modified.\n */\nfunction isModifiedGlobal(variable) {\n return (\n variable == null ||\n variable.defs.length !== 0 ||\n variable.references.some((r) => r.isWrite())\n )\n}\n\n/**\n * Check if the value of a given node is passed through to the parent syntax as-is.\n * For example, `a` and `b` in (`a || b` and `c ? a : b`) are passed through.\n * @param {Node} node A node to check.\n * @returns {boolean} `true` if the node is passed through.\n */\nfunction isPassThrough(node) {\n const parent = node.parent\n\n switch (parent && parent.type) {\n case \"ConditionalExpression\":\n return parent.consequent === node || parent.alternate === node\n case \"LogicalExpression\":\n return true\n case \"SequenceExpression\":\n return parent.expressions[parent.expressions.length - 1] === node\n case \"ChainExpression\":\n return true\n\n default:\n return false\n }\n}\n\n/**\n * The reference tracker.\n */\nexport class ReferenceTracker {\n /**\n * Initialize this tracker.\n * @param {Scope} globalScope The global scope.\n * @param {object} [options] The options.\n * @param {\"legacy\"|\"strict\"} [options.mode=\"strict\"] The mode to determine the ImportDeclaration's behavior for CJS modules.\n * @param {string[]} [options.globalObjectNames=[\"global\",\"globalThis\",\"self\",\"window\"]] The variable names for Global Object.\n */\n constructor(\n globalScope,\n {\n mode = \"strict\",\n globalObjectNames = [\"global\", \"globalThis\", \"self\", \"window\"],\n } = {},\n ) {\n this.variableStack = []\n this.globalScope = globalScope\n this.mode = mode\n this.globalObjectNames = globalObjectNames.slice(0)\n }\n\n /**\n * Iterate the references of global variables.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateGlobalReferences(traceMap) {\n for (const key of Object.keys(traceMap)) {\n const nextTraceMap = traceMap[key]\n const path = [key]\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n nextTraceMap,\n true,\n )\n }\n\n for (const key of this.globalObjectNames) {\n const path = []\n const variable = this.globalScope.set.get(key)\n\n if (isModifiedGlobal(variable)) {\n continue\n }\n\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n }\n\n /**\n * Iterate the references of CommonJS modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateCjsReferences(traceMap) {\n for (const { node } of this.iterateGlobalReferences(requireCall)) {\n const key = getStringIfConstant(node.arguments[0])\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextTraceMap = traceMap[key]\n const path = [key]\n\n if (nextTraceMap[READ]) {\n yield {\n node,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(node, path, nextTraceMap)\n }\n }\n\n /**\n * Iterate the references of ES modules.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *iterateEsmReferences(traceMap) {\n const programNode = this.globalScope.block\n\n for (const node of programNode.body) {\n if (!IMPORT_TYPE.test(node.type) || node.source == null) {\n continue\n }\n const moduleId = node.source.value\n\n if (!has(traceMap, moduleId)) {\n continue\n }\n const nextTraceMap = traceMap[moduleId]\n const path = [moduleId]\n\n if (nextTraceMap[READ]) {\n yield { node, path, type: READ, info: nextTraceMap[READ] }\n }\n\n if (node.type === \"ExportAllDeclaration\") {\n for (const key of Object.keys(nextTraceMap)) {\n const exportTraceMap = nextTraceMap[key]\n if (exportTraceMap[READ]) {\n yield {\n node,\n path: path.concat(key),\n type: READ,\n info: exportTraceMap[READ],\n }\n }\n }\n } else {\n for (const specifier of node.specifiers) {\n const esm = has(nextTraceMap, ESM)\n const it = this._iterateImportReferences(\n specifier,\n path,\n esm\n ? nextTraceMap\n : this.mode === \"legacy\"\n ? { default: nextTraceMap, ...nextTraceMap }\n : { default: nextTraceMap },\n )\n\n if (esm) {\n yield* it\n } else {\n for (const report of it) {\n report.path = report.path.filter(exceptDefault)\n if (\n report.path.length >= 2 ||\n report.type !== READ\n ) {\n yield report\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Iterate the references for a given variable.\n * @param {Variable} variable The variable to iterate that references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @param {boolean} shouldReport = The flag to report those references.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateVariableReferences(variable, path, traceMap, shouldReport) {\n if (this.variableStack.includes(variable)) {\n return\n }\n this.variableStack.push(variable)\n try {\n for (const reference of variable.references) {\n if (!reference.isRead()) {\n continue\n }\n const node = reference.identifier\n\n if (shouldReport && traceMap[READ]) {\n yield { node, path, type: READ, info: traceMap[READ] }\n }\n yield* this._iteratePropertyReferences(node, path, traceMap)\n }\n } finally {\n this.variableStack.pop()\n }\n }\n\n /**\n * Iterate the references for a given AST node.\n * @param rootNode The AST node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n //eslint-disable-next-line complexity\n *_iteratePropertyReferences(rootNode, path, traceMap) {\n let node = rootNode\n while (isPassThrough(node)) {\n node = node.parent\n }\n\n const parent = node.parent\n if (parent.type === \"MemberExpression\") {\n if (parent.object === node) {\n const key = getPropertyName(parent)\n if (key == null || !has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: parent,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iteratePropertyReferences(\n parent,\n path,\n nextTraceMap,\n )\n }\n return\n }\n if (parent.type === \"CallExpression\") {\n if (parent.callee === node && traceMap[CALL]) {\n yield { node: parent, path, type: CALL, info: traceMap[CALL] }\n }\n return\n }\n if (parent.type === \"NewExpression\") {\n if (parent.callee === node && traceMap[CONSTRUCT]) {\n yield {\n node: parent,\n path,\n type: CONSTRUCT,\n info: traceMap[CONSTRUCT],\n }\n }\n return\n }\n if (parent.type === \"AssignmentExpression\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n yield* this._iteratePropertyReferences(parent, path, traceMap)\n }\n return\n }\n if (parent.type === \"AssignmentPattern\") {\n if (parent.right === node) {\n yield* this._iterateLhsReferences(parent.left, path, traceMap)\n }\n return\n }\n if (parent.type === \"VariableDeclarator\") {\n if (parent.init === node) {\n yield* this._iterateLhsReferences(parent.id, path, traceMap)\n }\n }\n }\n\n /**\n * Iterate the references for a given Pattern node.\n * @param {Node} patternNode The Pattern node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateLhsReferences(patternNode, path, traceMap) {\n if (patternNode.type === \"Identifier\") {\n const variable = findVariable(this.globalScope, patternNode)\n if (variable != null) {\n yield* this._iterateVariableReferences(\n variable,\n path,\n traceMap,\n false,\n )\n }\n return\n }\n if (patternNode.type === \"ObjectPattern\") {\n for (const property of patternNode.properties) {\n const key = getPropertyName(property)\n\n if (key == null || !has(traceMap, key)) {\n continue\n }\n\n const nextPath = path.concat(key)\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: property,\n path: nextPath,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateLhsReferences(\n property.value,\n nextPath,\n nextTraceMap,\n )\n }\n return\n }\n if (patternNode.type === \"AssignmentPattern\") {\n yield* this._iterateLhsReferences(patternNode.left, path, traceMap)\n }\n }\n\n /**\n * Iterate the references for a given ModuleSpecifier node.\n * @param {Node} specifierNode The ModuleSpecifier node to iterate references.\n * @param {string[]} path The current path.\n * @param {object} traceMap The trace map.\n * @returns {IterableIterator<{node:Node,path:string[],type:symbol,info:any}>} The iterator to iterate references.\n */\n *_iterateImportReferences(specifierNode, path, traceMap) {\n const type = specifierNode.type\n\n if (type === \"ImportSpecifier\" || type === \"ImportDefaultSpecifier\") {\n const key =\n type === \"ImportDefaultSpecifier\"\n ? \"default\"\n : specifierNode.imported.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n nextTraceMap,\n false,\n )\n\n return\n }\n\n if (type === \"ImportNamespaceSpecifier\") {\n yield* this._iterateVariableReferences(\n findVariable(this.globalScope, specifierNode.local),\n path,\n traceMap,\n false,\n )\n return\n }\n\n if (type === \"ExportSpecifier\") {\n const key = specifierNode.local.name\n if (!has(traceMap, key)) {\n return\n }\n\n path = path.concat(key) //eslint-disable-line no-param-reassign\n const nextTraceMap = traceMap[key]\n if (nextTraceMap[READ]) {\n yield {\n node: specifierNode,\n path,\n type: READ,\n info: nextTraceMap[READ],\n }\n }\n }\n }\n}\n\nReferenceTracker.READ = READ\nReferenceTracker.CALL = CALL\nReferenceTracker.CONSTRUCT = CONSTRUCT\nReferenceTracker.ESM = ESM\n\n/**\n * This is a predicate function for Array#filter.\n * @param {string} name A name part.\n * @param {number} index The index of the name.\n * @returns {boolean} `false` if it's default.\n */\nfunction exceptDefault(name, index) {\n return !(index === 1 && name === \"default\")\n}\n","import { findVariable } from \"./find-variable\"\nimport { getFunctionHeadLocation } from \"./get-function-head-location\"\nimport { getFunctionNameWithKind } from \"./get-function-name-with-kind\"\nimport { getInnermostScope } from \"./get-innermost-scope\"\nimport { getPropertyName } from \"./get-property-name\"\nimport { getStaticValue } from \"./get-static-value\"\nimport { getStringIfConstant } from \"./get-string-if-constant\"\nimport { hasSideEffect } from \"./has-side-effect\"\nimport { isParenthesized } from \"./is-parenthesized\"\nimport { PatternMatcher } from \"./pattern-matcher\"\nimport {\n CALL,\n CONSTRUCT,\n ESM,\n READ,\n ReferenceTracker,\n} from \"./reference-tracker\"\nimport {\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isSemicolonToken,\n} from \"./token-predicate\"\n\nexport default {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\nexport {\n CALL,\n CONSTRUCT,\n ESM,\n findVariable,\n getFunctionHeadLocation,\n getFunctionNameWithKind,\n getInnermostScope,\n getPropertyName,\n getStaticValue,\n getStringIfConstant,\n hasSideEffect,\n isArrowToken,\n isClosingBraceToken,\n isClosingBracketToken,\n isClosingParenToken,\n isColonToken,\n isCommaToken,\n isCommentToken,\n isNotArrowToken,\n isNotClosingBraceToken,\n isNotClosingBracketToken,\n isNotClosingParenToken,\n isNotColonToken,\n isNotCommaToken,\n isNotCommentToken,\n isNotOpeningBraceToken,\n isNotOpeningBracketToken,\n isNotOpeningParenToken,\n isNotSemicolonToken,\n isOpeningBraceToken,\n isOpeningBracketToken,\n isOpeningParenToken,\n isParenthesized,\n isSemicolonToken,\n PatternMatcher,\n READ,\n ReferenceTracker,\n}\n","import { findVariable } from \"eslint-utils\";\n\n// Lightweight AST traversal\nconst traverse = (context, node, visit, visited = new Set()) => {\n if (visited.has(node)) {\n return;\n }\n\n visited.add(node);\n visit(node);\n\n (context.sourceCode.visitorKeys[node.type] || [])\n .map((key) => node[key])\n // Some `visitorKeys` are optional, e.g. `IfStatement.alternate`.\n .filter((child) => child)\n // `child` can be an array, like `CallExpression.arguments`\n .flatMap((child) => (Array.isArray(child) ? child : [child]))\n // Confirm it's a valid AST node\n // TODO: Not sure why it wouldn't be? But it does happen.\n // https://github.com/NickvanDyke/eslint-plugin-react-you-might-not-need-an-effect/issues/1\n .filter((child) => typeof child?.type === \"string\")\n .forEach((child) => traverse(context, child, visit, visited));\n};\n\nconst collectIdentifiers = (context, rootNode) => {\n const identifiers = [];\n traverse(context, rootNode, (node) => {\n if (node.type === \"Identifier\") {\n identifiers.push(node);\n }\n });\n return identifiers;\n};\n\n// TODO: Could I use this for `isStateRef` and `isPropsRef`?\n// To catch intermediate variables there too and simplify the interface.\n// I would need to collect the states and props separately to pass to this.\n// Or maybe not. Maybe I walk up the derivation path and *also* check if the def is a useState or prop.\n// NOTE:: Still returns true if there's an impure def on the path.\nexport const isPathBetween = (\n src,\n dest,\n context,\n scope,\n visited = new Set(),\n) => {\n if (!dest || typeof dest !== \"object\" || visited.has(dest)) {\n return false;\n }\n\n visited.add(dest);\n\n const identifiers = collectIdentifiers(context, dest);\n if (identifiers.some((identifier) => identifier.name === src.name)) {\n return true;\n }\n\n return identifiers\n .map((identifier) => findVariable(scope, identifier))\n .filter((variable) => variable)\n .some((variable) =>\n variable.defs\n .filter((def) => def.type === \"Variable\") // Could be e.g. `Parameter` if it's a function parameter in a Promise chain\n .some((def) =>\n isPathBetween(src, def.node.init, context, scope, visited),\n ),\n );\n};\n\nexport const isReactFunctionalComponent = (node) => {\n const isFunctionComponent = node.type === \"FunctionDeclaration\";\n const isArrowFunctionComponent =\n node.type === \"VariableDeclarator\" &&\n node.init.type === \"ArrowFunctionExpression\";\n return (\n (isFunctionComponent || isArrowFunctionComponent) &&\n node.id.type === \"Identifier\" &&\n node.id.name[0].toUpperCase() === node.id.name[0]\n );\n};\n\nexport const isUseState = (node) => {\n return (\n node.init &&\n node.init.type === \"CallExpression\" &&\n node.init.callee.name === \"useState\" &&\n node.id.type === \"ArrayPattern\" &&\n node.id.elements.length === 2 &&\n node.id.elements.every((el) => el.type === \"Identifier\")\n );\n};\n\nexport const isUseEffect = (node) => {\n return (\n (node.type === \"CallExpression\" &&\n node.callee.type === \"Identifier\" &&\n node.callee.name === \"useEffect\") ||\n (node.callee.type === \"MemberExpression\" &&\n node.callee.object.name === \"React\" &&\n node.callee.property.name === \"useEffect\")\n );\n};\n\nexport const getEffectFn = (node) => {\n if (!isUseEffect(node) || node.arguments.length < 1) {\n return null;\n }\n\n const effectFn = node.arguments[0];\n if (\n effectFn.type !== \"ArrowFunctionExpression\" &&\n effectFn.type !== \"FunctionExpression\"\n ) {\n return null;\n }\n\n return effectFn;\n};\n\nexport const getEffectFnRefs = (context, node) => {\n if (!isUseEffect(node) || node.arguments.length < 1) {\n return null;\n }\n\n const effectFn = getEffectFn(node);\n if (!effectFn) {\n return null;\n }\n\n const getRefs = (scope) =>\n scope.references.concat(\n scope.childScopes.flatMap((childScope) => getRefs(childScope)),\n );\n\n return getRefs(context.sourceCode.getScope(effectFn));\n};\n\n// Dependency array doesn't have its own scope, so collecting refs is trickier\nexport function getDepArrRefs(context, node) {\n if (!isUseEffect(node) || node.arguments.length < 2) {\n return null;\n }\n\n const depsArr = node.arguments[1];\n if (depsArr.type !== \"ArrayExpression\") {\n return null;\n }\n\n const identifiers = collectIdentifiers(context, depsArr);\n\n const scope = context.sourceCode.getScope(node);\n return identifiers\n .map((node) => [node, findVariable(scope, node)])\n .filter(([_node, variable]) => variable)\n .flatMap(([node, variable]) =>\n variable.references.filter((ref) => ref.identifier === node),\n );\n}\n\nexport const isFnRef = (ref) =>\n ref.identifier.parent.type === \"CallExpression\" &&\n // ref.identifier.parent will also be CallExpression when the ref is an argument, which we don't want\n ref.identifier.parent.callee === ref.identifier;\n\nexport const isStateRef = (ref) =>\n ref.resolved?.defs.some(\n (def) => def.type === \"Variable\" && isUseState(def.node),\n );\n\nexport const isPropRef = (ref) =>\n ref.resolved?.defs.some(\n (def) =>\n def.type === \"Parameter\" &&\n isReactFunctionalComponent(\n def.node.type === \"ArrowFunctionExpression\"\n ? def.node.parent\n : def.node,\n ),\n );\n\n// TODO: If I adapt isPathBetween to detect state and prop derived refs,\n// that would cover this case (because the local variable would be on the derivation path)\nexport const isLocalRef = (ref, effectFnScope) => {\n return effectFnScope.variables.some(\n (variable) => variable.defs === ref.resolved?.defs,\n );\n};\n\nexport const getUseStateNode = (stateRef) =>\n stateRef.resolved.defs.find(\n (def) => def.type === \"Variable\" && isUseState(def.node),\n )?.node;\n\nexport const isStateSetterCalledWithDefaultValue = (setterRef, context) => {\n const callExpr = setterRef.identifier.parent;\n const useStateDefaultValue = getUseStateNode(setterRef).init.arguments?.[0];\n return (\n context.sourceCode.getText(callExpr.arguments[0]) ===\n context.sourceCode.getText(useStateDefaultValue)\n );\n};\n","import {\n isUseEffect,\n getEffectFnRefs,\n getDepArrRefs,\n isStateSetterCalledWithDefaultValue,\n isPropRef,\n isStateRef,\n isFnRef,\n getUseStateNode,\n isPathBetween,\n isLocalRef,\n getEffectFn,\n} from \"./util.js\";\n\nexport const name = \"you-might-not-need-an-effect\";\n\nexport const rule = {\n meta: {\n type: \"suggestion\",\n docs: {\n description: \"Warn against unnecessary React useEffect hooks.\",\n url: \"https://react.dev/learn/you-might-not-need-an-effect\",\n },\n schema: [],\n // TODO: Could include more info in messages, like the relevant node\n // TODO: Possible to detect and warn when `useSyncExternalStore` should be preferred?\n messages: {\n // Overall warning\n avoidInternalEffect:\n \"This effect operates entirely on internal React state, with no external dependencies. It is likely unnecessary.\",\n\n // State setter warnings\n avoidDerivedState:\n 'Avoid storing derived state. Compute \"{{state}}\" directly during render, optionally with `useMemo` if it\\'s expensive.',\n avoidInitializingState:\n \"Avoid initializing state in an effect. Instead, pass the initial value to `useState`.\",\n avoidChainingState:\n \"Avoid chaining state changes. When possible, update all relevant state simultaneously.\",\n\n // Prop warnings\n avoidManagingParentBehavior:\n \"Avoid managing parent behavior. Instead, lift this logic up to the parent component.\",\n avoidPassingStateToParent:\n \"Avoid making parent components depend on a child's intermediate state. If the parent needs live updates, consider lifting state up.\",\n avoidResettingStateFromProps:\n \"Avoid resetting state from props. If the prop is a key, pass it as `key` instead so React will reset the component.\",\n\n // TODO: This would be nice, but I'm not sure it can be done accurately\n // Maybe we can accurately warn about this when the state being reacted to is one of our own `useState`s?\n // Because if we have a setter then we have a callback.\n // But, I think that would also warn about valid uses that synchronize internal state to external state.\n // avoidEventHandler:\n // \"Avoid using state as an event handler. Instead, call the event handler directly.\",\n },\n },\n create: (context) => ({\n CallExpression: (node) => {\n if (!isUseEffect(node)) {\n return;\n }\n\n const effectFn = getEffectFn(node);\n const effectFnRefs = getEffectFnRefs(context, node);\n const depsRefs = getDepArrRefs(context, node);\n\n if (\n !effectFn ||\n !effectFnRefs ||\n !depsRefs ||\n effectFnRefs.length === 0\n ) {\n return;\n }\n\n // TODO: Could include when we reference our own local functions that are themselves pure/internal.\n const isInternalEffect = effectFnRefs\n .concat(depsRefs)\n .every(\n (ref) =>\n isStateRef(ref) ||\n isPropRef(ref) ||\n isLocalRef(ref, context.sourceCode.getScope(effectFn)),\n );\n\n if (isInternalEffect) {\n context.report({\n node,\n messageId: \"avoidInternalEffect\",\n });\n }\n\n const stateSetterRefs = effectFnRefs\n .filter((ref) => isFnRef(ref))\n .filter((ref) => isStateRef(ref));\n const isPropUsedInDeps = depsRefs.some((ref) => isPropRef(ref));\n const isEveryStateSetterCalledWithDefaultValue =\n stateSetterRefs.length > 0 &&\n stateSetterRefs.every((ref) =>\n isStateSetterCalledWithDefaultValue(ref, context),\n );\n if (isPropUsedInDeps && isEveryStateSetterCalledWithDefaultValue) {\n context.report({\n node: node,\n messageId: \"avoidResettingStateFromProps\",\n });\n }\n\n if (\n effectFnRefs.every((ref) => isPropRef(ref)) &&\n depsRefs.every((ref) => isPropRef(ref))\n ) {\n context.report({\n node: node,\n messageId: \"avoidManagingParentBehavior\",\n });\n }\n\n effectFnRefs\n .filter((ref) => isFnRef(ref))\n .forEach((ref) => {\n const callExpr = ref.identifier.parent;\n const isDepUsedInArgs = callExpr.arguments.some((arg) =>\n depsRefs.some((depRef) =>\n isPathBetween(\n depRef.identifier,\n arg,\n context,\n context.sourceCode.getScope(effectFn),\n ),\n ),\n );\n\n if (isInternalEffect) {\n if (isStateRef(ref)) {\n const useStateNode = getUseStateNode(ref);\n if (isDepUsedInArgs) {\n context.report({\n node: callExpr.callee,\n messageId: \"avoidDerivedState\",\n data: { state: useStateNode.id.elements[0].name },\n });\n } else if (depsRefs.length > 0) {\n // TODO: Is this a correct assumption by now?\n // Should I flag this whenever the call expr argument is *only* the state?\n // Like this seems more appropriate than \"derived\" state.\n context.report({\n node: callExpr.callee,\n messageId: \"avoidChainingState\",\n });\n } else {\n context.report({\n node: callExpr.callee,\n messageId: \"avoidInitializingState\",\n });\n }\n }\n }\n\n // I think this is the only !isInternalEffect case we can reasonably warn about\n if (isPropRef(ref) && isDepUsedInArgs) {\n context.report({\n node: callExpr.callee,\n messageId: \"avoidPassingStateToParent\",\n });\n }\n });\n },\n }),\n};\n","import { name, rule } from \"./rule.js\";\n\nexport default {\n rules: {\n [name]: rule,\n },\n};\n"],"mappings":"8DAAA,IAAAA,EAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACI,qBAAwB,CACpB,OACA,OACJ,EACA,kBAAqB,CACjB,OACA,OACJ,EACA,gBAAmB,CACf,UACJ,EACA,aAAgB,CACZ,UACJ,EACA,wBAA2B,CACvB,SACA,MACJ,EACA,gBAAmB,CACf,UACJ,EACA,eAAkB,CACd,MACJ,EACA,iBAAoB,CAChB,OACA,OACJ,EACA,eAAkB,CACd,OACJ,EACA,eAAkB,CACd,SACA,WACJ,EACA,YAAe,CACX,QACA,MACJ,EACA,gBAAmB,CACf,YACJ,EACA,UAAa,CACT,MACJ,EACA,iBAAoB,CAChB,KACA,aACA,MACJ,EACA,gBAAmB,CACf,KACA,aACA,MACJ,EACA,sBAAyB,CACrB,OACA,aACA,WACJ,EACA,kBAAqB,CACjB,OACJ,EACA,kBAAqB,CAAC,EACtB,iBAAoB,CAChB,OACA,MACJ,EACA,eAAkB,CAAC,EACnB,qBAAwB,CACpB,WACA,QACJ,EACA,yBAA4B,CACxB,aACJ,EACA,uBAA0B,CACtB,cACA,aACA,QACJ,EACA,gBAAmB,CACf,WACA,OACJ,EACA,oBAAuB,CACnB,YACJ,EACA,yBAA4B,CACxB,UACJ,EACA,2BAA8B,CAC1B,UACJ,EACA,aAAgB,CACZ,OACA,OACA,SACA,MACJ,EACA,eAAkB,CACd,OACA,QACA,MACJ,EACA,eAAkB,CACd,OACA,QACA,MACJ,EACA,oBAAuB,CACnB,KACA,SACA,MACJ,EACA,mBAAsB,CAClB,KACA,SACA,MACJ,EACA,WAAc,CAAC,EACf,YAAe,CACX,OACA,aACA,WACJ,EACA,kBAAqB,CACjB,aACA,QACJ,EACA,uBAA0B,CACtB,OACJ,EACA,iBAAoB,CAChB,QACJ,EACA,yBAA4B,CACxB,OACJ,EACA,gBAAmB,CACf,WACA,OACJ,EACA,aAAgB,CACZ,OACA,OACJ,EACA,kBAAqB,CACjB,MACJ,EACA,WAAc,CACV,iBACA,WACA,gBACJ,EACA,mBAAsB,CAAC,EACvB,uBAA0B,CACtB,YACJ,EACA,cAAiB,CAAC,EA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","names":["require_visitor_keys","__commonJSMin","exports","module","require_lib","__commonJSMin","exports","module","KEYS","NODE_TYPES","type","KEY_BLACKLIST","filterKey","key","node","additionalKeys","retv","keys","react","getInnermostScope","initialScope","node","location","scope","found","childScope","range","findVariable","nameOrNode","name","variable","negate0","token","negate","f","isPunctuatorTokenWithValue","value","isArrowToken","isCommaToken","isSemicolonToken","isColonToken","isOpeningParenToken","isClosingParenToken","isOpeningBracketToken","isClosingBracketToken","isOpeningBraceToken","isClosingBraceToken","isCommentToken","isNotArrowToken","isNotCommaToken","isNotSemicolonToken","isNotColonToken","isNotOpeningParenToken","isNotClosingParenToken","isNotOpeningBracketToken","isNotClosingBracketToken","isNotOpeningBraceToken","isNotClosingBraceToken","isNotCommentToken","globalObject","builtinNames","callAllowed","k","f","callPassThrough","getPropertyDescriptor","object","name","x","d","isGetter","getElementValues","nodeList","initialScope","valueList","i","elementNode","argument","getStaticValueR","element","operations","node","elements","left","right","calleeNode","args","property","getStaticPropertyNameValue","receiver","methodName","callee","func","test","variable","findVariable","def","expression","Func","propertyNode","key","value","last","tag","expressions","strings","q","arg","nameNode","getStaticValue","getStringIfConstant","evaluated","getPropertyName","typeConversionBinaryOps","typeConversionUnaryOps","isNode","x","visitor","node","options","visitorKeys","type","key","evk","value","element","IMPORT_TYPE","has","READ","CALL","CONSTRUCT","ESM","requireCall","isModifiedGlobal","variable","isPassThrough","node","parent","ReferenceTracker","globalScope","mode","globalObjectNames","traceMap","key","nextTraceMap","path","getStringIfConstant","programNode","moduleId","exportTraceMap","specifier","esm","it","report","exceptDefault","shouldReport","reference","rootNode","getPropertyName","patternNode","findVariable","property","nextPath","specifierNode","type","name","index","traverse","context","node","visit","visited","key","child","collectIdentifiers","rootNode","identifiers","isPathBetween","src","dest","scope","identifier","findVariable","variable","def","isReactFunctionalComponent","isFunctionComponent","isArrowFunctionComponent","isUseState","el","isUseEffect","getEffectFn","effectFn","getEffectFnRefs","getRefs","childScope","getDepArrRefs","depsArr","_node","ref","isFnRef","isStateRef","isPropRef","isLocalRef","effectFnScope","getUseStateNode","stateRef","isStateSetterCalledWithDefaultValue","setterRef","callExpr","useStateDefaultValue","name","rule","context","node","isUseEffect","effectFn","getEffectFn","effectFnRefs","getEffectFnRefs","depsRefs","getDepArrRefs","isInternalEffect","ref","isStateRef","isPropRef","isLocalRef","stateSetterRefs","isFnRef","isPropUsedInDeps","isEveryStateSetterCalledWithDefaultValue","isStateSetterCalledWithDefaultValue","callExpr","isDepUsedInArgs","arg","depRef","isPathBetween","useStateNode","getUseStateNode","src_default","name","rule","reactHooks","tseslint","config_react_default","ignores","languageOptions","react","src_default"]}
package/config.solid.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as r,b as o}from"./chunk-WK3YS7OG.js";import s from"eslint-plugin-solid";import e from"typescript-eslint";var d=e.config({files:["**/*.{jsx,tsx}"],ignores:r,languageOptions:o,plugins:{solid:s},rules:{"solid/components-return-once":"error","solid/event-handlers":"error","solid/imports":"error","solid/jsx-no-duplicate-props":"error","solid/jsx-no-script-url":"error","solid/jsx-no-undef":"error","solid/jsx-uses-vars":"error","solid/no-array-handlers":"error","solid/no-destructure":"error","solid/no-innerhtml":"error","solid/no-proxy-apis":"off","solid/no-react-deps":"error","solid/no-react-specific-props":"error","solid/no-unknown-namespaces":"error","solid/prefer-for":"error","solid/prefer-show":"error","solid/reactivity":"error","solid/self-closing-comp":"error","solid/style-prop":"error"}});export{d as default};
1
+ import{c as r,d as o}from"./chunk-BCW6UQO7.js";import s from"eslint-plugin-solid";import e from"typescript-eslint";var d=e.config({files:["**/*.{jsx,tsx}"],ignores:r,languageOptions:o,plugins:{solid:s},rules:{"solid/components-return-once":"error","solid/event-handlers":"error","solid/imports":"error","solid/jsx-no-duplicate-props":"error","solid/jsx-no-script-url":"error","solid/jsx-no-undef":"error","solid/jsx-uses-vars":"error","solid/no-array-handlers":"error","solid/no-destructure":"error","solid/no-innerhtml":"error","solid/no-proxy-apis":"off","solid/no-react-deps":"error","solid/no-react-specific-props":"error","solid/no-unknown-namespaces":"error","solid/prefer-for":"error","solid/prefer-show":"error","solid/reactivity":"error","solid/self-closing-comp":"error","solid/style-prop":"error"}});export{d as default};
2
2
  //# sourceMappingURL=config.solid.js.map
@@ -1,2 +1,2 @@
1
- import{a as o,b as r}from"./chunk-WK3YS7OG.js";import t from"eslint-plugin-storybook";import s from"typescript-eslint";var y=s.config({files:["**/*.stories.@(ts|tsx|js|jsx|mjs|cjs)"],ignores:o,languageOptions:r,plugins:{storybook:t},rules:{"storybook/await-interactions":"error","storybook/context-in-play-function":"error","storybook/csf-component":"error","storybook/default-exports":"error","storybook/hierarchy-separator":"error","storybook/meta-inline-properties":"error","storybook/meta-satisfies-type":"error","storybook/no-redundant-story-name":"error","storybook/no-stories-of":"error","storybook/no-title-property-in-meta":"error","storybook/no-uninstalled-addons":"error","storybook/prefer-pascal-case":"error","storybook/story-exports":"error","storybook/use-storybook-expect":"error","storybook/use-storybook-testing-library":"error"}});export{y as default};
1
+ import{c as o,d as r}from"./chunk-BCW6UQO7.js";import t from"eslint-plugin-storybook";import s from"typescript-eslint";var y=s.config({files:["**/*.stories.@(ts|tsx|js|jsx|mjs|cjs)"],ignores:o,languageOptions:r,plugins:{storybook:t},rules:{"storybook/await-interactions":"error","storybook/context-in-play-function":"error","storybook/csf-component":"error","storybook/default-exports":"error","storybook/hierarchy-separator":"error","storybook/meta-inline-properties":"error","storybook/meta-satisfies-type":"error","storybook/no-redundant-story-name":"error","storybook/no-stories-of":"error","storybook/no-title-property-in-meta":"error","storybook/no-uninstalled-addons":"error","storybook/prefer-pascal-case":"error","storybook/story-exports":"error","storybook/use-storybook-expect":"error","storybook/use-storybook-testing-library":"error"}});export{y as default};
2
2
  //# sourceMappingURL=config.storybook.js.map
package/constants.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a,b,c}from"./chunk-WK3YS7OG.js";export{c as angularLanguageOptions,a as ignores,b as languageOptions};
1
+ import{c as a,d as b,e as c}from"./chunk-BCW6UQO7.js";export{c as angularLanguageOptions,a as ignores,b as languageOptions};
2
2
  //# sourceMappingURL=constants.js.map
package/eslint.config.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as e,b as o}from"./chunk-WK3YS7OG.js";import s from"eslint-plugin-jsx-a11y";import t from"eslint-plugin-compat";import a from"@cspell/eslint-plugin";import i from"@eslint/css";import c from"eslint-config-prettier";import l from"eslint-plugin-prettier/recommended";import p from"@html-eslint/eslint-plugin";import r from"@eslint/json";import u from"eslint-plugin-lodash";import d from"@eslint/markdown";import f from"eslint-plugin-perfectionist";import m from"eslint-plugin-sonarjs";import y from"@tanstack/eslint-plugin-query";import h from"@tanstack/eslint-plugin-router";import n from"typescript-eslint";import g from"eslint-plugin-unicorn";var _=n.config({files:["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],ignores:e,languageOptions:o,settings:{react:{version:"19.1.0"}},plugins:{compat:t,"@typescript-eslint":n.plugin,unicorn:g,lodash:u,sonar:m,perfectionist:f,"@tanstack/query":y,"@tanstack/router":h,a11y:s,cspell:a},rules:{"compat/compat":"error","accessor-pairs":"error","array-callback-return":"error","arrow-body-style":["error","always"],"block-scoped-var":"error",camelcase:"off","capitalized-comments":"off","class-methods-use-this":"off",complexity:"off","consistent-return":"off","consistent-this":"off","constructor-super":"error",curly:"off","default-case":"off","default-case-last":"off","default-param-last":"off","dot-notation":"off",eqeqeq:"error","for-direction":"error","func-name-matching":"error","func-names":"off","func-style":["error","declaration",{allowArrowFunctions:!0}],"getter-return":"error","grouped-accessor-pairs":"error","guard-for-in":"error","id-denylist":"off","id-length":"off","id-match":"off","init-declarations":"off","logical-assignment-operators":"error","max-classes-per-file":"error","max-depth":"error","max-lines":"off","max-lines-per-function":"off","max-nested-callbacks":"error","max-params":"off","max-statements":"off","new-cap":"off","no-alert":"error","no-array-constructor":"off","no-async-promise-executor":"error","no-await-in-loop":"error","no-bitwise":"error","no-caller":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-console":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-constructor-return":"error","no-continue":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-div-regex":"error","no-dupe-args":"error","no-dupe-class-members":"off","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-duplicate-imports":"error","no-else-return":"error","no-empty":"error","no-empty-character-class":"error","no-empty-function":"off","no-empty-pattern":"error","no-empty-static-block":"error","no-eq-null":"error","no-eval":"error","no-ex-assign":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-boolean-cast":"error","no-extra-label":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-implicit-coercion":"error","no-implicit-globals":"off","no-implied-eval":"off","no-import-assign":"error","no-inline-comments":"off","no-inner-declarations":"error","no-invalid-regexp":"error","no-invalid-this":"error","no-irregular-whitespace":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"error","no-loop-func":"error","no-loss-of-precision":"error","no-magic-numbers":"off","no-misleading-character-class":"error","no-multi-assign":"error","no-multi-str":"error","no-negated-condition":"error","no-nested-ternary":"error","no-new":"error","no-new-func":"error","no-new-native-nonconstructor":"error","no-new-wrappers":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-object-constructor":"error","no-octal":"error","no-octal-escape":"error","no-param-reassign":"error","no-plusplus":"error","no-promise-executor-return":"error","no-proto":"error","no-prototype-builtins":"error","no-redeclare":"off","no-regex-spaces":"error","no-restricted-exports":"off","no-restricted-globals":"off","no-restricted-imports":"off","no-restricted-properties":"off","no-restricted-syntax":"off","no-return-assign":"error","no-script-url":"error","no-self-assign":"error","no-self-compare":"error","no-sequences":"error","no-setter-return":"error","no-shadow":"off","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-template-curly-in-string":"off","no-ternary":"off","no-this-before-super":"error","no-throw-literal":"off","no-undef":"off","no-undef-init":"error","no-undefined":"off","no-underscore-dangle":"off","no-unexpected-multiline":"off","no-unmodified-loop-condition":"error","no-unneeded-ternary":"error","no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-unused-expressions":"off","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":"off","no-use-before-define":"off","no-useless-assignment":"off","no-useless-backreference":"error","no-useless-call":"error","no-useless-catch":"error","no-useless-computed-key":"error","no-useless-concat":"error","no-useless-constructor":"off","no-useless-escape":"error","no-useless-rename":"error","no-useless-return":"error","no-var":"error","no-void":"error","no-warning-comments":"off","no-with":"error","object-shorthand":"error","one-var":"off","operator-assignment":"error","prefer-arrow-callback":"off","prefer-const":"error","prefer-destructuring":"off","prefer-exponentiation-operator":"error","prefer-named-capture-group":"error","prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"error","prefer-promise-reject-errors":"off","prefer-regex-literals":"error","prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error",radix:"error","require-atomic-updates":"error","require-await":"off","require-unicode-regexp":"error","require-yield":"error","sort-imports":"off","sort-keys":"off","sort-vars":"error",strict:"error","symbol-description":"error","unicode-bom":"error","use-isnan":"error","valid-typeof":"error","vars-on-top":"error",yoda:["error","always"],"@typescript-eslint/adjacent-overload-signatures":"off","@typescript-eslint/array-type":"error","@typescript-eslint/await-thenable":"error","@typescript-eslint/ban-ts-comment":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/class-literal-property-style":"error","@typescript-eslint/class-methods-use-this":"off","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-return":"off","@typescript-eslint/consistent-type-assertions":"error","@typescript-eslint/consistent-type-definitions":["error","type"],"@typescript-eslint/consistent-type-exports":"error","@typescript-eslint/consistent-type-imports":["error",{fixStyle:"inline-type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/dot-notation":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/explicit-member-accessibility":"error","@typescript-eslint/explicit-module-boundary-types":"off","@typescript-eslint/init-declarations":"off","@typescript-eslint/max-params":"off","@typescript-eslint/member-ordering":"off","@typescript-eslint/method-signature-style":"error","@typescript-eslint/naming-convention":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-array-delete":"error","@typescript-eslint/no-base-to-string":"error","@typescript-eslint/no-confusing-non-null-assertion":"error","@typescript-eslint/no-confusing-void-expression":"error","@typescript-eslint/no-deprecated":"error","@typescript-eslint/no-dupe-class-members":"off","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-duplicate-type-constituents":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-empty-object-type":"error","@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-floating-promises":"error","@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/no-invalid-this":"off","@typescript-eslint/no-invalid-void-type":"error","@typescript-eslint/no-loop-func":"error","@typescript-eslint/no-magic-numbers":"off","@typescript-eslint/no-meaningless-void-operator":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-misused-promises":"error","@typescript-eslint/no-misused-spread":"error","@typescript-eslint/no-mixed-enums":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-redeclare":"off","@typescript-eslint/no-redundant-type-constituents":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-restricted-imports":"error","@typescript-eslint/no-restricted-types":"error","@typescript-eslint/no-shadow":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-boolean-literal-compare":"error","@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-parameter-property-assignment":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-template-expression":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unnecessary-type-conversion":"error","@typescript-eslint/no-unnecessary-type-parameters":"off","@typescript-eslint/no-unsafe-argument":"error","@typescript-eslint/no-unsafe-assignment":"error","@typescript-eslint/no-unsafe-call":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-enum-comparison":"error","@typescript-eslint/no-unsafe-function-type":"error","@typescript-eslint/no-unsafe-member-access":"error","@typescript-eslint/no-unsafe-return":"error","@typescript-eslint/no-unsafe-type-assertion":"error","@typescript-eslint/no-unsafe-unary-minus":"error","@typescript-eslint/no-unused-expressions":"error","@typescript-eslint/no-unused-vars":["error",{args:"all",argsIgnorePattern:"^_",caughtErrors:"all",caughtErrorsIgnorePattern:"^_",destructuredArrayIgnorePattern:"^_",ignoreRestSiblings:!0,varsIgnorePattern:"^_"}],"@typescript-eslint/no-use-before-define":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-useless-empty-export":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/non-nullable-type-assertion-style":"error","@typescript-eslint/only-throw-error":"error","@typescript-eslint/parameter-properties":"off","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-destructuring":"error","@typescript-eslint/prefer-enum-initializers":"error","@typescript-eslint/prefer-find":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/prefer-nullish-coalescing":"error","@typescript-eslint/prefer-optional-chain":"error","@typescript-eslint/prefer-promise-reject-errors":"error","@typescript-eslint/prefer-readonly":"error","@typescript-eslint/prefer-readonly-parameter-types":"off","@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/related-getter-setter-pairs":"error","@typescript-eslint/require-array-sort-compare":"error","@typescript-eslint/require-await":"error","@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/restrict-template-expressions":"error","@typescript-eslint/return-await":"error","@typescript-eslint/strict-boolean-expressions":"error","@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/typedef":"off","@typescript-eslint/unbound-method":"error","@typescript-eslint/unified-signatures":"error","@typescript-eslint/use-unknown-in-catch-callback-variable":"error","unicorn/better-regex":"error","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-destructuring":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/custom-error-definition":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/expiring-todo-comments":"error","unicorn/explicit-length-check":"off","unicorn/filename-case":"error","unicorn/import-style":"error","unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-callback-reference":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"error","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-for-loop":"error","unicorn/no-hex-escape":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-keyword-prefix":"off","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-named-default":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-array-splice-count":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-polyfills":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-unused-properties":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-at":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-default-parameters":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-export-from":"error","unicorn/prefer-global-this":"error","unicorn/prefer-import-meta-properties":"error","unicorn/prefer-includes":"error","unicorn/prefer-json-parse-buffer":"error","unicorn/prefer-keyboard-event-key":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-module":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-single-call":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-switch":"error","unicorn/prefer-ternary":"error","unicorn/prefer-top-level-await":"error","unicorn/prefer-type-error":"error","unicorn/prevent-abbreviations":"error","unicorn/relative-url-style":"error","unicorn/require-array-join-separator":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"error","unicorn/string-content":"error","unicorn/switch-case-braces":"error","unicorn/template-indent":"off","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","lodash/callback-binding":"error","lodash/chain-style":[2,"as-needed"],"lodash/chaining":"error","lodash/collection-method-value":"error","lodash/collection-ordering":"error","lodash/collection-return":"error","lodash/consistent-compose":[2,"flow"],"lodash/identity-shorthand":[2,"always"],"lodash/import-scope":[2,"method"],"lodash/matches-prop-shorthand":[2,"always"],"lodash/matches-shorthand":[2,"always",3],"lodash/no-commit":"error","lodash/no-double-unwrap":"error","lodash/no-extra-args":"error","lodash/no-unbound-this":"error","lodash/path-style":[2,"array"],"lodash/prefer-compact":"error","lodash/prefer-constant":"error","lodash/prefer-filter":"error","lodash/prefer-find":"error","lodash/prefer-flat-map":"error","lodash/prefer-get":"error","lodash/prefer-immutable-method":"error","lodash/prefer-includes":[2,{includeNative:!0}],"lodash/prefer-invoke-map":"error","lodash/prefer-is-nil":"error","lodash/prefer-lodash-chain":"error","lodash/prefer-lodash-method":"error","lodash/prefer-lodash-typecheck":"error","lodash/prefer-map":"error","lodash/prefer-matches":"error","lodash/prefer-noop":"error","lodash/prefer-over-quantifier":"error","lodash/prefer-reject":"error","lodash/prefer-some":[2,{includeNative:!0}],"lodash/prefer-startswith":"error","lodash/prefer-thru":"error","lodash/prefer-times":"error","lodash/prefer-wrapper-method":"error","lodash/preferred-alias":"error","lodash/prop-shorthand":[2,"always"],"lodash/unwrap":"error","sonar/anchor-precedence":"error","sonar/argument-type":"error","sonar/arguments-order":"error","sonar/arguments-usage":"error","sonar/array-callback-without-return":"error","sonar/array-constructor":"error","sonar/arrow-function-convention":"off","sonar/assertions-in-tests":"error","sonar/aws-apigateway-public-api":"error","sonar/aws-ec2-rds-dms-public":"error","sonar/aws-ec2-unencrypted-ebs-volume":"error","sonar/aws-efs-unencrypted":"error","sonar/aws-iam-all-privileges":"error","sonar/aws-iam-all-resources-accessible":"error","sonar/aws-iam-privilege-escalation":"error","sonar/aws-iam-public-access":"error","sonar/aws-opensearchservice-domain":"error","sonar/aws-rds-unencrypted-databases":"error","sonar/aws-restricted-ip-admin-access":"error","sonar/aws-s3-bucket-granted-access":"error","sonar/aws-s3-bucket-insecure-http":"error","sonar/aws-s3-bucket-public-access":"error","sonar/aws-s3-bucket-versioning":"error","sonar/aws-sagemaker-unencrypted-notebook":"error","sonar/aws-sns-unencrypted-topics":"error","sonar/aws-sqs-unencrypted-queue":"error","sonar/bitwise-operators":"error","sonar/block-scoped-var":"error","sonar/bool-param-default":"error","sonar/call-argument-line":"error","sonar/chai-determinate-assertion":"error","sonar/class-name":"error","sonar/class-prototype":"error","sonar/code-eval":"error","sonar/cognitive-complexity":"error","sonar/comma-or-logical-or-case":"error","sonar/comment-regex":"off","sonar/concise-regex":"error","sonar/confidential-information-logging":"error","sonar/constructor-for-side-effects":"error","sonar/content-length":"error","sonar/content-security-policy":"error","sonar/cookie-no-httponly":"error","sonar/cors":"error","sonar/csrf":"error","sonar/cyclomatic-complexity":"off","sonar/declarations-in-global-scope":"error","sonar/deprecation":"error","sonar/destructuring-assignment-syntax":"error","sonar/different-types-comparison":"error","sonar/disabled-auto-escaping":"error","sonar/disabled-resource-integrity":"error","sonar/disabled-timeout":"error","sonar/duplicates-in-character-class":"error","sonar/elseif-without-else":"error","sonar/empty-string-repetition":"error","sonar/encryption-secure-mode":"error","sonar/existing-groups":"error","sonar/expression-complexity":"error","sonar/file-header":"off","sonar/file-name-differ-from-class":"error","sonar/file-permissions":"error","sonar/file-uploads":"error","sonar/fixme-tag":"error","sonar/for-in":"error","sonar/for-loop-increment-sign":"error","sonar/frame-ancestors":"error","sonar/function-inside-loop":"error","sonar/function-name":["error",{format:"^(?:[a-z][a-zA-Z0-9]*|[A-Z][A-Z0-9]*)$"}],"sonar/function-return-type":"off","sonar/future-reserved-words":"error","sonar/generator-without-yield":"error","sonar/hashing":"error","sonar/hidden-files":"error","sonar/in-operator-type-error":"error","sonar/inconsistent-function-call":"error","sonar/index-of-compare-to-positive-number":"error","sonar/insecure-cookie":"error","sonar/insecure-jwt-token":"error","sonar/inverted-assertion-arguments":"error","sonar/jsx-no-leaked-render":"error","sonar/label-position":"error","sonar/link-with-target-blank":"error","sonar/max-lines":"error","sonar/max-lines-per-function":"error","sonar/max-switch-cases":"error","sonar/max-union-size":"off","sonar/misplaced-loop-counter":"error","sonar/nested-control-flow":"error","sonar/new-operator-misuse":"error","sonar/no-all-duplicated-branches":"error","sonar/no-alphabetical-sort":"error","sonar/no-angular-bypass-sanitization":"error","sonar/no-array-delete":"error","sonar/no-associative-arrays":"error","sonar/no-async-constructor":"error","sonar/no-built-in-override":"error","sonar/no-case-label-in-switch":"error","sonar/no-clear-text-protocols":"error","sonar/no-code-after-done":"error","sonar/no-collapsible-if":"error","sonar/no-collection-size-mischeck":"error","sonar/no-commented-code":"error","sonar/no-control-regex":"error","sonar/no-dead-store":"error","sonar/no-delete-var":"error","sonar/no-duplicate-in-composite":"error","sonar/no-duplicate-string":"error","sonar/no-duplicated-branches":"error","sonar/no-element-overwrite":"error","sonar/no-empty-after-reluctant":"error","sonar/no-empty-alternatives":"error","sonar/no-empty-character-class":"error","sonar/no-empty-collection":"error","sonar/no-empty-group":"error","sonar/no-empty-test-file":"error","sonar/no-equals-in-for-termination":"error","sonar/no-exclusive-tests":"error","sonar/no-extra-arguments":"error","sonar/no-fallthrough":"error","sonar/no-for-in-iterable":"error","sonar/no-function-declaration-in-block":"error","sonar/no-global-this":"error","sonar/no-globals-shadowing":"error","sonar/no-gratuitous-expressions":"error","sonar/no-hardcoded-ip":"error","sonar/no-hardcoded-passwords":"error","sonar/no-hardcoded-secrets":"error","sonar/no-hook-setter-in-body":"error","sonar/no-identical-conditions":"error","sonar/no-identical-expressions":"error","sonar/no-identical-functions":"error","sonar/no-ignored-exceptions":"error","sonar/no-ignored-return":"error","sonar/no-implicit-dependencies":"off","sonar/no-implicit-global":"error","sonar/no-in-misuse":"error","sonar/no-incomplete-assertions":"error","sonar/no-inconsistent-returns":"off","sonar/no-incorrect-string-concat":"error","sonar/no-internal-api-use":"error","sonar/no-intrusive-permissions":"error","sonar/no-invalid-await":"error","sonar/no-invalid-regexp":"error","sonar/no-invariant-returns":"error","sonar/no-inverted-boolean-check":"error","sonar/no-ip-forward":"error","sonar/no-labels":"error","sonar/no-literal-call":"error","sonar/no-mime-sniff":"error","sonar/no-misleading-array-reverse":"error","sonar/no-misleading-character-class":"error","sonar/no-mixed-content":"error","sonar/no-nested-assignment":"error","sonar/no-nested-conditional":"error","sonar/no-nested-functions":"error","sonar/no-nested-incdec":"error","sonar/no-nested-switch":"error","sonar/no-nested-template-literals":"error","sonar/no-one-iteration-loop":"error","sonar/no-os-command-from-path":"error","sonar/no-parameter-reassignment":"error","sonar/no-primitive-wrappers":"error","sonar/no-redundant-assignments":"error","sonar/no-redundant-boolean":"error","sonar/no-redundant-jump":"error","sonar/no-redundant-optional":"error","sonar/no-reference-error":"error","sonar/no-referrer-policy":"error","sonar/no-regex-spaces":"error","sonar/no-require-or-define":"error","sonar/no-return-type-any":"error","sonar/no-same-argument-assert":"error","sonar/no-same-line-conditional":"error","sonar/no-selector-parameter":"error","sonar/no-skipped-tests":"error","sonar/no-small-switch":"error","sonar/no-sonar-comments":"error","sonar/no-table-as-layout":"error","sonar/no-try-promise":"error","sonar/no-undefined-argument":"error","sonar/no-undefined-assignment":"off","sonar/no-unenclosed-multiline-block":"error","sonar/no-uniq-key":"error","sonar/no-unsafe-unzip":"error","sonar/no-unthrown-error":"error","sonar/no-unused-collection":"error","sonar/no-unused-function-argument":"error","sonar/no-unused-vars":"error","sonar/no-use-of-empty-return-value":"error","sonar/no-useless-catch":"error","sonar/no-useless-increment":"error","sonar/no-useless-intersection":"error","sonar/no-useless-react-setstate":"error","sonar/no-variable-usage-before-declaration":"error","sonar/no-weak-cipher":"error","sonar/no-weak-keys":"error","sonar/no-wildcard-import":"error","sonar/non-existent-operator":"error","sonar/non-number-in-arithmetic-expression":"error","sonar/null-dereference":"error","sonar/object-alt-content":"error","sonar/operation-returning-nan":"error","sonar/os-command":"error","sonar/post-message":"error","sonar/prefer-default-last":"error","sonar/prefer-immediate-return":"error","sonar/prefer-object-literal":"error","sonar/prefer-promise-shorthand":"error","sonar/prefer-read-only-props":"error","sonar/prefer-regexp-exec":"error","sonar/prefer-single-boolean-return":"error","sonar/prefer-type-guard":"error","sonar/prefer-while":"error","sonar/production-debug":"error","sonar/pseudo-random":"error","sonar/public-static-readonly":"error","sonar/publicly-writable-directories":"error","sonar/reduce-initial-value":"error","sonar/redundant-type-aliases":"error","sonar/regex-complexity":"error","sonar/session-regeneration":"error","sonar/shorthand-property-grouping":"off","sonar/single-char-in-character-classes":"error","sonar/single-character-alternation":"error","sonar/slow-regex":"error","sonar/sql-queries":"error","sonar/stable-tests":"error","sonar/stateful-regex":"error","sonar/strict-transport-security":"error","sonar/strings-comparison":"error","sonar/super-invocation":"error","sonar/table-header":"error","sonar/table-header-reference":"error","sonar/test-check-exception":"error","sonar/todo-tag":"off","sonar/too-many-break-or-continue-in-loop":"error","sonar/unicode-aware-regex":"error","sonar/unused-import":"error","sonar/unused-named-groups":"error","sonar/unverified-certificate":"error","sonar/unverified-hostname":"error","sonar/updated-const-var":"error","sonar/updated-loop-counter":"error","sonar/use-type-alias":"error","sonar/values-not-convertible-to-numbers":"error","sonar/variable-name":"error","sonar/void-use":"error","sonar/weak-ssl":"error","sonar/x-powered-by":"error","sonar/xml-parser-xxe":"error","perfectionist/sort-array-includes":"error","perfectionist/sort-classes":"error","perfectionist/sort-decorators":"error","perfectionist/sort-enums":"error","perfectionist/sort-exports":"error","perfectionist/sort-heritage-clauses":"error","perfectionist/sort-imports":"error","perfectionist/sort-interfaces":"error","perfectionist/sort-intersection-types":"error","perfectionist/sort-jsx-props":["error",{groups:["shorthand","multiline"]}],"perfectionist/sort-maps":"error","perfectionist/sort-modules":"error","perfectionist/sort-named-exports":"error","perfectionist/sort-named-imports":"error","perfectionist/sort-object-types":"error","perfectionist/sort-objects":["error",{partitionByComment:!0}],"perfectionist/sort-sets":"error","perfectionist/sort-switch-case":["error",{order:"asc",type:"alphabetical"}],"perfectionist/sort-union-types":"error","perfectionist/sort-variable-declarations":["error",{order:"asc",type:"alphabetical"}],"@tanstack/query/exhaustive-deps":"error","@tanstack/query/infinite-query-property-order":"error","@tanstack/query/no-rest-destructuring":"error","@tanstack/query/no-unstable-deps":"error","@tanstack/query/no-void-query-fn":"error","@tanstack/query/stable-query-client":"error","@tanstack/router/create-route-property-order":"error","a11y/alt-text":"error","a11y/anchor-ambiguous-text":"error","a11y/anchor-has-content":"error","a11y/anchor-is-valid":"error","a11y/aria-activedescendant-has-tabindex":"error","a11y/aria-props":"error","a11y/aria-proptypes":"error","a11y/aria-role":"error","a11y/aria-unsupported-elements":"error","a11y/autocomplete-valid":"error","a11y/click-events-have-key-events":"error","a11y/control-has-associated-label":"off","a11y/heading-has-content":"error","a11y/html-has-lang":"error","a11y/iframe-has-title":"error","a11y/img-redundant-alt":"error","a11y/interactive-supports-focus":"error","a11y/label-has-associated-control":"error","a11y/lang":"error","a11y/media-has-caption":"off","a11y/mouse-events-have-key-events":"error","a11y/no-access-key":"error","a11y/no-aria-hidden-on-focusable":"error","a11y/no-autofocus":"error","a11y/no-distracting-elements":"error","a11y/no-interactive-element-to-noninteractive-role":"error","a11y/no-noninteractive-element-interactions":"error","a11y/no-noninteractive-element-to-interactive-role":"error","a11y/no-noninteractive-tabindex":"error","a11y/no-redundant-roles":"error","a11y/no-static-element-interactions":"error","a11y/prefer-tag-over-role":"error","a11y/role-has-required-aria-props":"error","a11y/role-supports-aria-props":"error","a11y/scope":"error","a11y/tabindex-no-positive":"error","cspell/spellchecker":["error",{cspell:{words:["Applynetic","julianday","typicode","toolbelt","taze","ethang","TSESTree","Boop","cldr","astro","laravel","qwik","sitecore","uswds","mediat","Packt","Academind","Udemy","Colte","Bootcamp","HTMX","MERN","Nuxt","Credly","Sterett","Beyonder","hotspot","lqip","Hawn","nextui","speculationrules","zustand","vinxi","datasource","turso","supabase","solidjs","labelledby","svix","blockqoute","cortexjs","mathrm","nums","lifecycles","krausest","Signalis","Plass","Iteree","Sonner","cmdk","ngsw","dexie","leetcode","ngsrc","sindresorhus","rogan","heroui","millis","duckdb","pthread","remeda","radash"]}}]}},{files:["**/*.md"],plugins:{markdown:d},rules:{"markdown/fenced-code-language":"error","markdown/heading-increment":"error","markdown/no-duplicate-headings":"error","markdown/no-empty-links":"error","markdown/no-html":"error","markdown/no-invalid-label-refs":"error","markdown/no-missing-label-refs":"error"}},{files:["**/*.html"],language:"html/html",plugins:{html:p},rules:{"html/attrs-newline":"error","html/element-newline":"error","html/id-naming-convention":"error","html/indent":"error","html/lowercase":"error","html/max-element-depth":"error","html/no-abstract-roles":"error","html/no-accesskey-attrs":"error","html/no-aria-hidden-body":"error","html/no-duplicate-attrs":"error","html/no-duplicate-class":"error","html/no-duplicate-id":"error","html/no-extra-spacing-attrs":"error","html/no-extra-spacing-text":"error","html/no-heading-inside-button":"error","html/no-inline-styles":"error","html/no-invalid-role":"error","html/no-multiple-empty-lines":"error","html/no-multiple-h1":"error","html/no-nested-interactive":"error","html/no-non-scalable-viewport":"error","html/no-obsolete-tags":"error","html/no-positive-tabindex":"error","html/no-restricted-attr-values":"error","html/no-restricted-attrs":"error","html/no-script-style-type":"error","html/no-skip-heading-levels":"error","html/no-target-blank":"error","html/no-trailing-spaces":"error","html/prefer-https":"error","html/quotes":"error","html/require-attrs":"error","html/require-button-type":"error","html/require-closing-tags":"error","html/require-doctype":"error","html/require-explicit-size":"error","html/require-form-method":"error","html/require-frame-title":"error","html/require-img-alt":"error","html/require-input-label":"error","html/require-lang":"error","html/require-li-container":"error","html/require-meta-charset":"error","html/require-meta-description":"error","html/require-meta-viewport":"error","html/require-open-graph-protocol":"error","html/require-title":"error","html/sort-attrs":"error","html/use-baseline":"error"}},{files:["**/*.css"],language:"css/css",plugins:{css:i},rules:{"css/no-duplicate-imports":"error","css/no-empty-blocks":"error","css/no-invalid-at-rules":"off","css/no-invalid-properties":"error","css/prefer-logical-properties":"error","css/use-baseline":["error",{available:"newly"}],"css/use-layers":"error"}},{files:["**/*.json"],language:"json/json",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.jsonc"],language:"json/jsonc",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.json5"],language:"json/json5",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},c,l);export{_ as default};
1
+ import{c as e,d as o}from"./chunk-BCW6UQO7.js";import s from"eslint-plugin-jsx-a11y";import t from"eslint-plugin-compat";import a from"@cspell/eslint-plugin";import i from"@eslint/css";import c from"eslint-config-prettier";import l from"eslint-plugin-prettier/recommended";import p from"@html-eslint/eslint-plugin";import r from"@eslint/json";import u from"eslint-plugin-lodash";import d from"@eslint/markdown";import f from"eslint-plugin-perfectionist";import m from"eslint-plugin-sonarjs";import y from"@tanstack/eslint-plugin-query";import h from"@tanstack/eslint-plugin-router";import n from"typescript-eslint";import g from"eslint-plugin-unicorn";var _=n.config({files:["**/*.{js,ts,jsx,tsx,cjs,cts,mjs,mts}"],ignores:e,languageOptions:o,settings:{react:{version:"19.1.0"}},plugins:{compat:t,"@typescript-eslint":n.plugin,unicorn:g,lodash:u,sonar:m,perfectionist:f,"@tanstack/query":y,"@tanstack/router":h,a11y:s,cspell:a},rules:{"compat/compat":"error","accessor-pairs":"error","array-callback-return":"error","arrow-body-style":["error","always"],"block-scoped-var":"error",camelcase:"off","capitalized-comments":"off","class-methods-use-this":"off",complexity:"off","consistent-return":"off","consistent-this":"off","constructor-super":"error",curly:"off","default-case":"off","default-case-last":"off","default-param-last":"off","dot-notation":"off",eqeqeq:"error","for-direction":"error","func-name-matching":"error","func-names":"off","func-style":["error","declaration",{allowArrowFunctions:!0}],"getter-return":"error","grouped-accessor-pairs":"error","guard-for-in":"error","id-denylist":"off","id-length":"off","id-match":"off","init-declarations":"off","logical-assignment-operators":"error","max-classes-per-file":"error","max-depth":"error","max-lines":"off","max-lines-per-function":"off","max-nested-callbacks":"error","max-params":"off","max-statements":"off","new-cap":"off","no-alert":"error","no-array-constructor":"off","no-async-promise-executor":"error","no-await-in-loop":"error","no-bitwise":"error","no-caller":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-console":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-constructor-return":"error","no-continue":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-div-regex":"error","no-dupe-args":"error","no-dupe-class-members":"off","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-duplicate-imports":"error","no-else-return":"error","no-empty":"error","no-empty-character-class":"error","no-empty-function":"off","no-empty-pattern":"error","no-empty-static-block":"error","no-eq-null":"error","no-eval":"error","no-ex-assign":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-boolean-cast":"error","no-extra-label":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-implicit-coercion":"error","no-implicit-globals":"off","no-implied-eval":"off","no-import-assign":"error","no-inline-comments":"off","no-inner-declarations":"error","no-invalid-regexp":"error","no-invalid-this":"error","no-irregular-whitespace":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"error","no-loop-func":"error","no-loss-of-precision":"error","no-magic-numbers":"off","no-misleading-character-class":"error","no-multi-assign":"error","no-multi-str":"error","no-negated-condition":"error","no-nested-ternary":"error","no-new":"error","no-new-func":"error","no-new-native-nonconstructor":"error","no-new-wrappers":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-object-constructor":"error","no-octal":"error","no-octal-escape":"error","no-param-reassign":"error","no-plusplus":"error","no-promise-executor-return":"error","no-proto":"error","no-prototype-builtins":"error","no-redeclare":"off","no-regex-spaces":"error","no-restricted-exports":"off","no-restricted-globals":"off","no-restricted-imports":"off","no-restricted-properties":"off","no-restricted-syntax":"off","no-return-assign":"error","no-script-url":"error","no-self-assign":"error","no-self-compare":"error","no-sequences":"error","no-setter-return":"error","no-shadow":"off","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-template-curly-in-string":"off","no-ternary":"off","no-this-before-super":"error","no-throw-literal":"off","no-undef":"off","no-undef-init":"error","no-undefined":"off","no-underscore-dangle":"off","no-unexpected-multiline":"off","no-unmodified-loop-condition":"error","no-unneeded-ternary":"error","no-unreachable":"error","no-unreachable-loop":"error","no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":["error",{disallowArithmeticOperators:!0}],"no-unused-expressions":"off","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":"off","no-use-before-define":"off","no-useless-assignment":"off","no-useless-backreference":"error","no-useless-call":"error","no-useless-catch":"error","no-useless-computed-key":"error","no-useless-concat":"error","no-useless-constructor":"off","no-useless-escape":"error","no-useless-rename":"error","no-useless-return":"error","no-var":"error","no-void":"error","no-warning-comments":"off","no-with":"error","object-shorthand":"error","one-var":"off","operator-assignment":"error","prefer-arrow-callback":"off","prefer-const":"error","prefer-destructuring":"off","prefer-exponentiation-operator":"error","prefer-named-capture-group":"error","prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"error","prefer-promise-reject-errors":"off","prefer-regex-literals":"error","prefer-rest-params":"error","prefer-spread":"error","prefer-template":"error",radix:"error","require-atomic-updates":"error","require-await":"off","require-unicode-regexp":"error","require-yield":"error","sort-imports":"off","sort-keys":"off","sort-vars":"error",strict:"error","symbol-description":"error","unicode-bom":"error","use-isnan":"error","valid-typeof":"error","vars-on-top":"error",yoda:["error","always"],"@typescript-eslint/adjacent-overload-signatures":"off","@typescript-eslint/array-type":"error","@typescript-eslint/await-thenable":"error","@typescript-eslint/ban-ts-comment":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/class-literal-property-style":"error","@typescript-eslint/class-methods-use-this":"off","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-return":"off","@typescript-eslint/consistent-type-assertions":"error","@typescript-eslint/consistent-type-definitions":["error","type"],"@typescript-eslint/consistent-type-exports":"error","@typescript-eslint/consistent-type-imports":["error",{fixStyle:"inline-type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/dot-notation":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/explicit-member-accessibility":"error","@typescript-eslint/explicit-module-boundary-types":"off","@typescript-eslint/init-declarations":"off","@typescript-eslint/max-params":"off","@typescript-eslint/member-ordering":"off","@typescript-eslint/method-signature-style":"error","@typescript-eslint/naming-convention":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-array-delete":"error","@typescript-eslint/no-base-to-string":"error","@typescript-eslint/no-confusing-non-null-assertion":"error","@typescript-eslint/no-confusing-void-expression":"error","@typescript-eslint/no-deprecated":"error","@typescript-eslint/no-dupe-class-members":"off","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-duplicate-type-constituents":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-empty-object-type":"error","@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-floating-promises":"error","@typescript-eslint/no-for-in-array":"error","@typescript-eslint/no-implied-eval":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/no-invalid-this":"off","@typescript-eslint/no-invalid-void-type":"error","@typescript-eslint/no-loop-func":"error","@typescript-eslint/no-magic-numbers":"off","@typescript-eslint/no-meaningless-void-operator":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-misused-promises":"error","@typescript-eslint/no-misused-spread":"error","@typescript-eslint/no-mixed-enums":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-redeclare":"off","@typescript-eslint/no-redundant-type-constituents":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-restricted-imports":"error","@typescript-eslint/no-restricted-types":"error","@typescript-eslint/no-shadow":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-boolean-literal-compare":"error","@typescript-eslint/no-unnecessary-condition":"error","@typescript-eslint/no-unnecessary-parameter-property-assignment":"error","@typescript-eslint/no-unnecessary-qualifier":"error","@typescript-eslint/no-unnecessary-template-expression":"error","@typescript-eslint/no-unnecessary-type-arguments":"error","@typescript-eslint/no-unnecessary-type-assertion":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unnecessary-type-conversion":"error","@typescript-eslint/no-unnecessary-type-parameters":"off","@typescript-eslint/no-unsafe-argument":"error","@typescript-eslint/no-unsafe-assignment":"error","@typescript-eslint/no-unsafe-call":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-enum-comparison":"error","@typescript-eslint/no-unsafe-function-type":"error","@typescript-eslint/no-unsafe-member-access":"error","@typescript-eslint/no-unsafe-return":"error","@typescript-eslint/no-unsafe-type-assertion":"error","@typescript-eslint/no-unsafe-unary-minus":"error","@typescript-eslint/no-unused-expressions":"error","@typescript-eslint/no-unused-vars":["error",{args:"all",argsIgnorePattern:"^_",caughtErrors:"all",caughtErrorsIgnorePattern:"^_",destructuredArrayIgnorePattern:"^_",ignoreRestSiblings:!0,varsIgnorePattern:"^_"}],"@typescript-eslint/no-use-before-define":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-useless-empty-export":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/non-nullable-type-assertion-style":"error","@typescript-eslint/only-throw-error":"error","@typescript-eslint/parameter-properties":"off","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-destructuring":"error","@typescript-eslint/prefer-enum-initializers":"error","@typescript-eslint/prefer-find":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/prefer-includes":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/prefer-nullish-coalescing":"error","@typescript-eslint/prefer-optional-chain":"error","@typescript-eslint/prefer-promise-reject-errors":"error","@typescript-eslint/prefer-readonly":"error","@typescript-eslint/prefer-readonly-parameter-types":"off","@typescript-eslint/prefer-reduce-type-parameter":"error","@typescript-eslint/prefer-regexp-exec":"error","@typescript-eslint/prefer-return-this-type":"error","@typescript-eslint/prefer-string-starts-ends-with":"error","@typescript-eslint/promise-function-async":"error","@typescript-eslint/related-getter-setter-pairs":"error","@typescript-eslint/require-array-sort-compare":"error","@typescript-eslint/require-await":"error","@typescript-eslint/restrict-plus-operands":"error","@typescript-eslint/restrict-template-expressions":"error","@typescript-eslint/return-await":"error","@typescript-eslint/strict-boolean-expressions":"error","@typescript-eslint/switch-exhaustiveness-check":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/typedef":"off","@typescript-eslint/unbound-method":"error","@typescript-eslint/unified-signatures":"error","@typescript-eslint/use-unknown-in-catch-callback-variable":"error","unicorn/better-regex":"error","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-destructuring":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/custom-error-definition":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/expiring-todo-comments":"error","unicorn/explicit-length-check":"off","unicorn/filename-case":"error","unicorn/import-style":"error","unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-callback-reference":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"error","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-for-loop":"error","unicorn/no-hex-escape":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-keyword-prefix":"off","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-named-default":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-array-splice-count":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-polyfills":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-unused-properties":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-at":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-default-parameters":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-export-from":"error","unicorn/prefer-global-this":"error","unicorn/prefer-import-meta-properties":"error","unicorn/prefer-includes":"error","unicorn/prefer-json-parse-buffer":"error","unicorn/prefer-keyboard-event-key":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-module":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":"error","unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-single-call":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-switch":"error","unicorn/prefer-ternary":"error","unicorn/prefer-top-level-await":"error","unicorn/prefer-type-error":"error","unicorn/prevent-abbreviations":"error","unicorn/relative-url-style":"error","unicorn/require-array-join-separator":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"error","unicorn/string-content":"error","unicorn/switch-case-braces":"error","unicorn/template-indent":"off","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","lodash/callback-binding":"error","lodash/chain-style":[2,"as-needed"],"lodash/chaining":"error","lodash/collection-method-value":"error","lodash/collection-ordering":"error","lodash/collection-return":"error","lodash/consistent-compose":[2,"flow"],"lodash/identity-shorthand":[2,"always"],"lodash/import-scope":[2,"method"],"lodash/matches-prop-shorthand":[2,"always"],"lodash/matches-shorthand":[2,"always",3],"lodash/no-commit":"error","lodash/no-double-unwrap":"error","lodash/no-extra-args":"error","lodash/no-unbound-this":"error","lodash/path-style":[2,"array"],"lodash/prefer-compact":"error","lodash/prefer-constant":"error","lodash/prefer-filter":"error","lodash/prefer-find":"error","lodash/prefer-flat-map":"error","lodash/prefer-get":"error","lodash/prefer-immutable-method":"error","lodash/prefer-includes":[2,{includeNative:!0}],"lodash/prefer-invoke-map":"error","lodash/prefer-is-nil":"error","lodash/prefer-lodash-chain":"error","lodash/prefer-lodash-method":"error","lodash/prefer-lodash-typecheck":"error","lodash/prefer-map":"error","lodash/prefer-matches":"error","lodash/prefer-noop":"error","lodash/prefer-over-quantifier":"error","lodash/prefer-reject":"error","lodash/prefer-some":[2,{includeNative:!0}],"lodash/prefer-startswith":"error","lodash/prefer-thru":"error","lodash/prefer-times":"error","lodash/prefer-wrapper-method":"error","lodash/preferred-alias":"error","lodash/prop-shorthand":[2,"always"],"lodash/unwrap":"error","sonar/anchor-precedence":"error","sonar/argument-type":"error","sonar/arguments-order":"error","sonar/arguments-usage":"error","sonar/array-callback-without-return":"error","sonar/array-constructor":"error","sonar/arrow-function-convention":"off","sonar/assertions-in-tests":"error","sonar/aws-apigateway-public-api":"error","sonar/aws-ec2-rds-dms-public":"error","sonar/aws-ec2-unencrypted-ebs-volume":"error","sonar/aws-efs-unencrypted":"error","sonar/aws-iam-all-privileges":"error","sonar/aws-iam-all-resources-accessible":"error","sonar/aws-iam-privilege-escalation":"error","sonar/aws-iam-public-access":"error","sonar/aws-opensearchservice-domain":"error","sonar/aws-rds-unencrypted-databases":"error","sonar/aws-restricted-ip-admin-access":"error","sonar/aws-s3-bucket-granted-access":"error","sonar/aws-s3-bucket-insecure-http":"error","sonar/aws-s3-bucket-public-access":"error","sonar/aws-s3-bucket-versioning":"error","sonar/aws-sagemaker-unencrypted-notebook":"error","sonar/aws-sns-unencrypted-topics":"error","sonar/aws-sqs-unencrypted-queue":"error","sonar/bitwise-operators":"error","sonar/block-scoped-var":"error","sonar/bool-param-default":"error","sonar/call-argument-line":"error","sonar/chai-determinate-assertion":"error","sonar/class-name":"error","sonar/class-prototype":"error","sonar/code-eval":"error","sonar/cognitive-complexity":"error","sonar/comma-or-logical-or-case":"error","sonar/comment-regex":"off","sonar/concise-regex":"error","sonar/confidential-information-logging":"error","sonar/constructor-for-side-effects":"error","sonar/content-length":"error","sonar/content-security-policy":"error","sonar/cookie-no-httponly":"error","sonar/cors":"error","sonar/csrf":"error","sonar/cyclomatic-complexity":"off","sonar/declarations-in-global-scope":"error","sonar/deprecation":"error","sonar/destructuring-assignment-syntax":"error","sonar/different-types-comparison":"error","sonar/disabled-auto-escaping":"error","sonar/disabled-resource-integrity":"error","sonar/disabled-timeout":"error","sonar/duplicates-in-character-class":"error","sonar/elseif-without-else":"error","sonar/empty-string-repetition":"error","sonar/encryption-secure-mode":"error","sonar/existing-groups":"error","sonar/expression-complexity":"error","sonar/file-header":"off","sonar/file-name-differ-from-class":"error","sonar/file-permissions":"error","sonar/file-uploads":"error","sonar/fixme-tag":"error","sonar/for-in":"error","sonar/for-loop-increment-sign":"error","sonar/frame-ancestors":"error","sonar/function-inside-loop":"error","sonar/function-name":["error",{format:"^(?:[a-z][a-zA-Z0-9]*|[A-Z][A-Z0-9]*)$"}],"sonar/function-return-type":"off","sonar/future-reserved-words":"error","sonar/generator-without-yield":"error","sonar/hashing":"error","sonar/hidden-files":"error","sonar/in-operator-type-error":"error","sonar/inconsistent-function-call":"error","sonar/index-of-compare-to-positive-number":"error","sonar/insecure-cookie":"error","sonar/insecure-jwt-token":"error","sonar/inverted-assertion-arguments":"error","sonar/jsx-no-leaked-render":"error","sonar/label-position":"error","sonar/link-with-target-blank":"error","sonar/max-lines":"error","sonar/max-lines-per-function":"error","sonar/max-switch-cases":"error","sonar/max-union-size":"off","sonar/misplaced-loop-counter":"error","sonar/nested-control-flow":"error","sonar/new-operator-misuse":"error","sonar/no-all-duplicated-branches":"error","sonar/no-alphabetical-sort":"error","sonar/no-angular-bypass-sanitization":"error","sonar/no-array-delete":"error","sonar/no-associative-arrays":"error","sonar/no-async-constructor":"error","sonar/no-built-in-override":"error","sonar/no-case-label-in-switch":"error","sonar/no-clear-text-protocols":"error","sonar/no-code-after-done":"error","sonar/no-collapsible-if":"error","sonar/no-collection-size-mischeck":"error","sonar/no-commented-code":"error","sonar/no-control-regex":"error","sonar/no-dead-store":"error","sonar/no-delete-var":"error","sonar/no-duplicate-in-composite":"error","sonar/no-duplicate-string":"error","sonar/no-duplicated-branches":"error","sonar/no-element-overwrite":"error","sonar/no-empty-after-reluctant":"error","sonar/no-empty-alternatives":"error","sonar/no-empty-character-class":"error","sonar/no-empty-collection":"error","sonar/no-empty-group":"error","sonar/no-empty-test-file":"error","sonar/no-equals-in-for-termination":"error","sonar/no-exclusive-tests":"error","sonar/no-extra-arguments":"error","sonar/no-fallthrough":"error","sonar/no-for-in-iterable":"error","sonar/no-function-declaration-in-block":"error","sonar/no-global-this":"error","sonar/no-globals-shadowing":"error","sonar/no-gratuitous-expressions":"error","sonar/no-hardcoded-ip":"error","sonar/no-hardcoded-passwords":"error","sonar/no-hardcoded-secrets":"error","sonar/no-hook-setter-in-body":"error","sonar/no-identical-conditions":"error","sonar/no-identical-expressions":"error","sonar/no-identical-functions":"error","sonar/no-ignored-exceptions":"error","sonar/no-ignored-return":"error","sonar/no-implicit-dependencies":"off","sonar/no-implicit-global":"error","sonar/no-in-misuse":"error","sonar/no-incomplete-assertions":"error","sonar/no-inconsistent-returns":"off","sonar/no-incorrect-string-concat":"error","sonar/no-internal-api-use":"error","sonar/no-intrusive-permissions":"error","sonar/no-invalid-await":"error","sonar/no-invalid-regexp":"error","sonar/no-invariant-returns":"error","sonar/no-inverted-boolean-check":"error","sonar/no-ip-forward":"error","sonar/no-labels":"error","sonar/no-literal-call":"error","sonar/no-mime-sniff":"error","sonar/no-misleading-array-reverse":"error","sonar/no-misleading-character-class":"error","sonar/no-mixed-content":"error","sonar/no-nested-assignment":"error","sonar/no-nested-conditional":"error","sonar/no-nested-functions":"error","sonar/no-nested-incdec":"error","sonar/no-nested-switch":"error","sonar/no-nested-template-literals":"error","sonar/no-one-iteration-loop":"error","sonar/no-os-command-from-path":"error","sonar/no-parameter-reassignment":"error","sonar/no-primitive-wrappers":"error","sonar/no-redundant-assignments":"error","sonar/no-redundant-boolean":"error","sonar/no-redundant-jump":"error","sonar/no-redundant-optional":"error","sonar/no-reference-error":"error","sonar/no-referrer-policy":"error","sonar/no-regex-spaces":"error","sonar/no-require-or-define":"error","sonar/no-return-type-any":"error","sonar/no-same-argument-assert":"error","sonar/no-same-line-conditional":"error","sonar/no-selector-parameter":"error","sonar/no-skipped-tests":"error","sonar/no-small-switch":"error","sonar/no-sonar-comments":"error","sonar/no-table-as-layout":"error","sonar/no-try-promise":"error","sonar/no-undefined-argument":"error","sonar/no-undefined-assignment":"off","sonar/no-unenclosed-multiline-block":"error","sonar/no-uniq-key":"error","sonar/no-unsafe-unzip":"error","sonar/no-unthrown-error":"error","sonar/no-unused-collection":"error","sonar/no-unused-function-argument":"error","sonar/no-unused-vars":"error","sonar/no-use-of-empty-return-value":"error","sonar/no-useless-catch":"error","sonar/no-useless-increment":"error","sonar/no-useless-intersection":"error","sonar/no-useless-react-setstate":"error","sonar/no-variable-usage-before-declaration":"error","sonar/no-weak-cipher":"error","sonar/no-weak-keys":"error","sonar/no-wildcard-import":"error","sonar/non-existent-operator":"error","sonar/non-number-in-arithmetic-expression":"error","sonar/null-dereference":"error","sonar/object-alt-content":"error","sonar/operation-returning-nan":"error","sonar/os-command":"error","sonar/post-message":"error","sonar/prefer-default-last":"error","sonar/prefer-immediate-return":"error","sonar/prefer-object-literal":"error","sonar/prefer-promise-shorthand":"error","sonar/prefer-read-only-props":"error","sonar/prefer-regexp-exec":"error","sonar/prefer-single-boolean-return":"error","sonar/prefer-type-guard":"error","sonar/prefer-while":"error","sonar/production-debug":"error","sonar/pseudo-random":"error","sonar/public-static-readonly":"error","sonar/publicly-writable-directories":"error","sonar/reduce-initial-value":"error","sonar/redundant-type-aliases":"error","sonar/regex-complexity":"error","sonar/session-regeneration":"error","sonar/shorthand-property-grouping":"off","sonar/single-char-in-character-classes":"error","sonar/single-character-alternation":"error","sonar/slow-regex":"error","sonar/sql-queries":"error","sonar/stable-tests":"error","sonar/stateful-regex":"error","sonar/strict-transport-security":"error","sonar/strings-comparison":"error","sonar/super-invocation":"error","sonar/table-header":"error","sonar/table-header-reference":"error","sonar/test-check-exception":"error","sonar/todo-tag":"off","sonar/too-many-break-or-continue-in-loop":"error","sonar/unicode-aware-regex":"error","sonar/unused-import":"error","sonar/unused-named-groups":"error","sonar/unverified-certificate":"error","sonar/unverified-hostname":"error","sonar/updated-const-var":"error","sonar/updated-loop-counter":"error","sonar/use-type-alias":"error","sonar/values-not-convertible-to-numbers":"error","sonar/variable-name":"error","sonar/void-use":"error","sonar/weak-ssl":"error","sonar/x-powered-by":"error","sonar/xml-parser-xxe":"error","perfectionist/sort-array-includes":"error","perfectionist/sort-classes":"error","perfectionist/sort-decorators":"error","perfectionist/sort-enums":"error","perfectionist/sort-exports":"error","perfectionist/sort-heritage-clauses":"error","perfectionist/sort-imports":"error","perfectionist/sort-interfaces":"error","perfectionist/sort-intersection-types":"error","perfectionist/sort-jsx-props":["error",{groups:["shorthand","multiline"]}],"perfectionist/sort-maps":"error","perfectionist/sort-modules":"error","perfectionist/sort-named-exports":"error","perfectionist/sort-named-imports":"error","perfectionist/sort-object-types":"error","perfectionist/sort-objects":["error",{partitionByComment:!0}],"perfectionist/sort-sets":"error","perfectionist/sort-switch-case":["error",{order:"asc",type:"alphabetical"}],"perfectionist/sort-union-types":"error","perfectionist/sort-variable-declarations":["error",{order:"asc",type:"alphabetical"}],"@tanstack/query/exhaustive-deps":"error","@tanstack/query/infinite-query-property-order":"error","@tanstack/query/no-rest-destructuring":"error","@tanstack/query/no-unstable-deps":"error","@tanstack/query/no-void-query-fn":"error","@tanstack/query/stable-query-client":"error","@tanstack/router/create-route-property-order":"error","a11y/alt-text":"error","a11y/anchor-ambiguous-text":"error","a11y/anchor-has-content":"error","a11y/anchor-is-valid":"error","a11y/aria-activedescendant-has-tabindex":"error","a11y/aria-props":"error","a11y/aria-proptypes":"error","a11y/aria-role":"error","a11y/aria-unsupported-elements":"error","a11y/autocomplete-valid":"error","a11y/click-events-have-key-events":"error","a11y/control-has-associated-label":"off","a11y/heading-has-content":"error","a11y/html-has-lang":"error","a11y/iframe-has-title":"error","a11y/img-redundant-alt":"error","a11y/interactive-supports-focus":"error","a11y/label-has-associated-control":"error","a11y/lang":"error","a11y/media-has-caption":"off","a11y/mouse-events-have-key-events":"error","a11y/no-access-key":"error","a11y/no-aria-hidden-on-focusable":"error","a11y/no-autofocus":"error","a11y/no-distracting-elements":"error","a11y/no-interactive-element-to-noninteractive-role":"error","a11y/no-noninteractive-element-interactions":"error","a11y/no-noninteractive-element-to-interactive-role":"error","a11y/no-noninteractive-tabindex":"error","a11y/no-redundant-roles":"error","a11y/no-static-element-interactions":"error","a11y/prefer-tag-over-role":"error","a11y/role-has-required-aria-props":"error","a11y/role-supports-aria-props":"error","a11y/scope":"error","a11y/tabindex-no-positive":"error","cspell/spellchecker":["error",{cspell:{words:["Applynetic","julianday","typicode","toolbelt","taze","ethang","TSESTree","Boop","cldr","astro","laravel","qwik","sitecore","uswds","mediat","Packt","Academind","Udemy","Colte","Bootcamp","HTMX","MERN","Nuxt","Credly","Sterett","Beyonder","hotspot","lqip","Hawn","nextui","speculationrules","zustand","vinxi","datasource","turso","supabase","solidjs","labelledby","svix","blockqoute","cortexjs","mathrm","nums","lifecycles","krausest","Signalis","Plass","Iteree","Sonner","cmdk","ngsw","dexie","leetcode","ngsrc","sindresorhus","rogan","heroui","millis","duckdb","pthread","remeda","radash"]}}]}},{files:["**/*.md"],plugins:{markdown:d},rules:{"markdown/fenced-code-language":"error","markdown/heading-increment":"error","markdown/no-duplicate-headings":"error","markdown/no-empty-links":"error","markdown/no-html":"error","markdown/no-invalid-label-refs":"error","markdown/no-missing-label-refs":"error"}},{files:["**/*.html"],language:"html/html",plugins:{html:p},rules:{"html/attrs-newline":"error","html/element-newline":"error","html/id-naming-convention":"error","html/indent":"error","html/lowercase":"error","html/max-element-depth":"error","html/no-abstract-roles":"error","html/no-accesskey-attrs":"error","html/no-aria-hidden-body":"error","html/no-duplicate-attrs":"error","html/no-duplicate-class":"error","html/no-duplicate-id":"error","html/no-extra-spacing-attrs":"error","html/no-extra-spacing-text":"error","html/no-heading-inside-button":"error","html/no-inline-styles":"error","html/no-invalid-role":"error","html/no-multiple-empty-lines":"error","html/no-multiple-h1":"error","html/no-nested-interactive":"error","html/no-non-scalable-viewport":"error","html/no-obsolete-tags":"error","html/no-positive-tabindex":"error","html/no-restricted-attr-values":"error","html/no-restricted-attrs":"error","html/no-script-style-type":"error","html/no-skip-heading-levels":"error","html/no-target-blank":"error","html/no-trailing-spaces":"error","html/prefer-https":"error","html/quotes":"error","html/require-attrs":"error","html/require-button-type":"error","html/require-closing-tags":"error","html/require-doctype":"error","html/require-explicit-size":"error","html/require-form-method":"error","html/require-frame-title":"error","html/require-img-alt":"error","html/require-input-label":"error","html/require-lang":"error","html/require-li-container":"error","html/require-meta-charset":"error","html/require-meta-description":"error","html/require-meta-viewport":"error","html/require-open-graph-protocol":"error","html/require-title":"error","html/sort-attrs":"error","html/use-baseline":"error"}},{files:["**/*.css"],language:"css/css",plugins:{css:i},rules:{"css/no-duplicate-imports":"error","css/no-empty-blocks":"error","css/no-invalid-at-rules":"off","css/no-invalid-properties":"error","css/prefer-logical-properties":"error","css/use-baseline":["error",{available:"newly"}],"css/use-layers":"error"}},{files:["**/*.json"],language:"json/json",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.jsonc"],language:"json/jsonc",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},{files:["**/*.json5"],language:"json/json5",plugins:{json:r},rules:{"json/no-duplicate-keys":"error","json/no-empty-keys":"error","json/no-unnormalized-keys":"error","json/no-unsafe-values":"error","json/sort-keys":"error","json/top-level-interop":"error"}},c,l);export{_ as default};
2
2
  //# sourceMappingURL=eslint.config.js.map
package/package.json CHANGED
@@ -42,7 +42,8 @@
42
42
  "@types/eslint-plugin-jsx-a11y": "^6.10.0",
43
43
  "@types/eslint-plugin-tailwindcss": "^3.17.0",
44
44
  "@types/lodash": "^4.17.16",
45
- "@types/node": "^22.15.17",
45
+ "@types/node": "^22.15.18",
46
+ "eslint-plugin-react-you-might-not-need-an-effect": "^0.0.20",
46
47
  "lodash": "^4.17.21",
47
48
  "typescript": "^5.8.3",
48
49
  "zod": "^3.24.4"
@@ -56,10 +57,10 @@
56
57
  "repository": {
57
58
  "url": "git+https://github.com/eglove/ethang-monorepo.git#master"
58
59
  },
60
+ "type": "module",
61
+ "version": "22.1.1",
59
62
  "scripts": {
60
63
  "build": "bun build.ts && pnpm lint",
61
64
  "lint": "eslint . --fix && prettier src --write"
62
- },
63
- "type": "module",
64
- "version": "22.0.1"
65
- }
65
+ }
66
+ }
package/chunk-WK3YS7OG.js DELETED
@@ -1,2 +0,0 @@
1
- import r from"@angular-eslint/template-parser";import{parser as o}from"typescript-eslint";var n=["eslint.config.js","node_modules","dist"],s={parser:o,parserOptions:{project:!0,tsconfigRootDir:import.meta.dirname}},a={parser:r};export{n as a,s as b,a as c};
2
- //# sourceMappingURL=chunk-WK3YS7OG.js.map