Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 96 additions & 24 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@
"typescript/unbound-method": "error",
"typescript/unified-signatures": "error",
"typescript/use-unknown-in-catch-callback-variable": "error",
"no-empty-function": "error",
"no-empty-function": "off",
"typescript/adjacent-overload-signatures": "error",
"typescript/array-type": "error",
"typescript/ban-tslint-comment": "error",
Expand All @@ -198,8 +198,27 @@
"typescript/prefer-optional-chain": "error",
"typescript/prefer-regexp-exec": "error",
"typescript/prefer-string-starts-ends-with": "error",
"react-x/error-boundaries": "error",
"react-x/exhaustive-deps": "warn",
"react/capitalized-calls": "warn",
"react/error-boundaries": "error",
"react/exhaustive-deps": "warn",
"react/exhaustive-effect-dependencies": "warn",
"react/globals": "error",
"react/hooks": "warn",
"react/immutability": "error",
"react/incompatible-library": "warn",
"react/memo-dependencies": "error",
"react/no-deriving-state-in-effects": "error",
"react/preserve-manual-memoization": "error",
"react/purity": "error",
"react/refs": "error",
"react/rules-of-hooks": "error",
"react/set-state-in-effect": "error",
"react/set-state-in-render": "error",
"react/static-components": "error",
"react/unsupported-syntax": "warn",
"react/use-memo": "error",
"react/void-use-memo": "error",
"react/rule-suppression": "error",
"react-x/no-access-state-in-setstate": "error",
"react-x/no-array-index-key": "warn",
"react-x/no-children-count": "warn",
Expand Down Expand Up @@ -227,13 +246,6 @@
"react-x/no-unsafe-component-will-update": "warn",
"react-x/no-unused-class-component-members": "warn",
"react-x/no-use-context": "warn",
"react-x/purity": "warn",
"react-x/rules-of-hooks": "error",
"react-x/set-state-in-effect": "warn",
"react-x/set-state-in-render": "error",
"react-x/static-components": "error",
"react-x/unsupported-syntax": "error",
"react-x/use-memo": "error",
"react-x/use-state": "warn",
"react-x/no-class-component": "error",
"react-x/no-misused-capture-owner-stack": "error",
Expand All @@ -253,9 +265,6 @@
"react-dom/no-missing-button-type": "warn",
"react-dom/no-missing-iframe-sandbox": "warn",
"react-dom/no-unsafe-target-blank": "warn",
"react-naming-convention/context-name": "warn",
"react-naming-convention/id-name": "warn",
"react-naming-convention/ref-name": "warn",
"react-jsx/no-children-prop": "error",
"react-jsx/no-children-prop-with-children": "error",
"react-jsx/no-comment-textnodes": "warn",
Expand All @@ -264,16 +273,19 @@
"react-jsx/no-leaked-semicolon": "warn",
"react-jsx/no-namespace": "error",
"react-jsx/no-useless-fragment": "warn",
"react-naming-convention/context-name": "warn",
"react-naming-convention/id-name": "warn",
"react-naming-convention/ref-name": "warn",
"react-perf/jsx-no-new-object-as-prop": "error",
"react-perf/jsx-no-new-array-as-prop": "error",
"react-perf/jsx-no-new-function-as-prop": "error",
"import/named": "off",
"import/namespace": "error",
"import/default": "error",
"import/export": "error",
"import/no-named-as-default": "warn",
"import/no-named-as-default-member": "warn",
"import/no-duplicates": "warn",
"react-perf/jsx-no-new-object-as-prop": "error",
"react-perf/jsx-no-new-array-as-prop": "error",
"react-perf/jsx-no-new-function-as-prop": "error",
"jsx-a11y/alt-text": "error",
"jsx-a11y/anchor-ambiguous-text": "off",
"jsx-a11y/anchor-has-content": "error",
Expand Down Expand Up @@ -641,11 +653,11 @@
"sonarjs/no-redundant-jump": "error",
"sonarjs/inconsistent-function-call": "error",
"sonarjs/no-use-of-empty-return-value": "error",
"sonarjs/void-use": "error",
"sonarjs/void-use": "off",
"sonarjs/operation-returning-nan": "off",
"sonarjs/values-not-convertible-to-numbers": "off",
"sonarjs/non-number-in-arithmetic-expression": "off",
"sonarjs/cognitive-complexity": "error",
"sonarjs/cognitive-complexity": "off",
"sonarjs/argument-type": "error",
"sonarjs/in-operator-type-error": "error",
"sonarjs/array-callback-without-return": "error",
Expand Down Expand Up @@ -767,7 +779,6 @@
"sonarjs/no-exclusive-tests": "error",
"sonarjs/hardcoded-secret-signatures": "error",
"sonarjs/jsx-no-leaked-render": "error",
"sonarjs/no-hook-setter-in-body": "error",
"sonarjs/no-useless-react-setstate": "error",
"sonarjs/no-uniq-key": "error",
"sonarjs/redundant-type-aliases": "error",
Expand All @@ -787,8 +798,68 @@
"sonarjs/hooks-before-test-cases": "error",
"sonarjs/no-forced-browser-interaction": "error",
"sonarjs/super-linear-regex": "error",
"react/rules-of-hooks": "error",
"react/exhaustive-deps": "warn",
"react-doctor/no-fetch-in-effect": "error",
"react-doctor/no-async-effect-callback": "error",
"react-doctor/effect-needs-cleanup": "error",
"react-doctor/effect-listener-cleanup-mismatch": "error",
"react-doctor/no-effect-chain": "error",
"react-doctor/no-self-updating-effect": "error",
"react-doctor/no-effect-with-fresh-deps": "error",
"react-doctor/no-effect-event-in-deps": "error",
"react-doctor/no-stale-timer-ref": "error",
"react-doctor/no-mirror-prop-effect": "error",
"react-doctor/hooks-no-nan-in-deps": "error",
"react-doctor/no-mutable-in-deps": "error",
"react-doctor/no-impure-state-updater": "error",
"react-doctor/no-derived-state": "error",
"react-doctor/no-derived-state-effect": "error",
"react-doctor/no-chain-state-updates": "error",
"react-doctor/no-event-handler": "error",
"react-doctor/no-adjust-state-on-prop-change": "error",
"react-doctor/no-reset-all-state-on-prop-change": "error",
"react-doctor/no-pass-live-state-to-parent": "error",
"react-doctor/no-pass-data-to-parent": "error",
"react-doctor/no-initialize-state": "error",
"react-doctor/no-create-context-in-render": "error",
"react-doctor/no-create-store-in-render": "error",
"react-doctor/no-render-in-render": "error",
"react-doctor/no-ref-current-in-render": "error",
"react-doctor/no-json-parse-stringify-clone": "error",
"react-doctor/no-call-component-as-function": "error",
"react-doctor/no-full-lodash-import": "error",
"react-doctor/no-moment": "error",
"react-doctor/no-barrel-import": "error",
"react-doctor/prefer-dynamic-import": "error",
"react-doctor/no-dynamic-import-path": "error",
"react-doctor/no-layout-property-animation": "error",
"react-doctor/no-transition-all": "error",
"react-doctor/no-permanent-will-change": "error",
"react-doctor/no-large-animated-blur": "error",
"react-doctor/no-long-transition-duration": "error",
"react-doctor/no-global-css-variable-animation": "error",
"react-doctor/no-inline-bounce-easing": "error",
"react-doctor/no-scale-from-zero": "error",
"react-doctor/no-layout-transition-inline": "error",
"react-doctor/client-passive-event-listeners": "error",
"react-doctor/no-img-lazy-with-high-fetchpriority": "error",
"react-doctor/no-undeferred-third-party": "error",
"react-doctor/rendering-script-defer-async": "error",
"react-doctor/activity-wraps-effect-heavy-subtree": "error",
"react-doctor/no-eval": "error",
"react-doctor/no-sync-xhr": "error",
"react-doctor/no-document-write": "error",
"react-doctor/auth-token-in-web-storage": "error",
"react-doctor/zod-v4-no-deprecated-schema-apis": "error",
"react-doctor/zod-v4-no-deprecated-error-apis": "error",
"react-doctor/zod-v4-no-deprecated-error-customization": "error",
"react-doctor/zod-v4-prefer-top-level-string-formats": "error",
"react-doctor/no-react19-deprecated-apis": "error",
"react-doctor/no-react-dom-deprecated-apis": "error",
"react-doctor/dialog-has-accessible-name": "error",
"react-doctor/html-no-invalid-table-nesting": "error",
"react-doctor/html-no-nested-interactive": "error",
"react-doctor/html-no-invalid-paragraph-child": "error",
"react-doctor/no-aria-hidden-on-focusable": "error",
"perfectionist/sort-variable-declarations": [
"error",
{
Expand Down Expand Up @@ -891,15 +962,16 @@
"@docusaurus/prefer-docusaurus-heading": "error",
"@docusaurus/no-html-links": "error"
},
"plugins": ["typescript", "import", "react-perf", "jsx-a11y", "unicorn", "react"],
"plugins": ["typescript", "react-perf", "import", "jsx-a11y", "unicorn", "react"],
"jsPlugins": [
"eslint-plugin-react-x",
"eslint-plugin-react-dom",
"eslint-plugin-react-naming-convention",
"eslint-plugin-react-jsx",
"eslint-plugin-react-naming-convention",
"eslint-plugin-sonarjs",
"eslint-plugin-perfectionist",
"@docusaurus/eslint-plugin"
"@docusaurus/eslint-plugin",
{ "name": "react-doctor", "specifier": "oxlint-plugin-react-doctor" }
],
"env": {
"es2026": true,
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"globals": "^17.7.0",
"oxfmt": "^0.65.0",
"oxlint": "^1.73.0",
"oxlint-plugin-react-doctor": "^0.9.12",
"oxlint-tsgolint": "^7.0.0",
"typescript": "npm:@typescript/typescript6@^6.0.2",
"typescript-eslint": "^8.64.0"
Expand Down
Loading