{ "$schema": "./node_modules/oxlint/configuration_schema.json", "categories": {}, "env": { "es2022": true }, "globals": {}, "ignorePatterns": [ "node_modules/**", "build/**", "dist/**", "out/**", "local/**", ".yarn/**", ".gitignore", "scripts/cloudflare-worker.js", "src/main/integration/nutstore/sso/lib/**", "src/main/integration/cherryai/index.js", "src/main/integration/nutstore/sso/lib/**", "src/renderer/src/ui/**", "packages/**/dist", "eslint.config.mjs" ], "overrides": [ // set different env { "env": { "node": true }, "files": ["src/main/**", "resources/scripts/**", "scripts/**", "playwright.config.ts", "electron.vite.config.ts"] }, { "env": { "browser": true }, "files": [ "src/renderer/**/*.{ts,tsx}", "packages/aiCore/**", "packages/extension-table-plus/**", "resources/js/**" ] }, { "env": { "node": true, "vitest": true }, "files": ["**/__tests__/*.test.{ts,tsx}", "tests/**"] }, { "env": { "browser": true, "node": true }, "files": ["src/preload/**"] } ], // We don't use the React plugin here because its behavior differs slightly from that of ESLint's React plugin. "plugins": ["unicorn", "typescript", "oxc", "import"], "rules": { "constructor-super": "error", "for-direction": "error", "getter-return": "error", "no-array-constructor": "off", // "import/no-cycle": "error", // tons of error, bro "no-async-promise-executor": "error", "no-caller": "warn", "no-case-declarations": "error", "no-class-assign": "error", "no-compare-neg-zero": "error", "no-cond-assign": "error", "no-const-assign": "error", "no-constant-binary-expression": "error", "no-constant-condition": "error", "no-control-regex": "error", "no-debugger": "error", "no-delete-var": "error", "no-dupe-args": "error", "no-dupe-class-members": "error", "no-dupe-else-if": "error", "no-dupe-keys": "error", "no-duplicate-case": "error", "no-empty": "error", "no-empty-character-class": "error", "no-empty-pattern": "error", "no-empty-static-block": "error", "no-eval": "warn", "no-ex-assign": "error", "no-extra-boolean-cast": "error", "no-fallthrough": "warn", "no-func-assign": "error", "no-global-assign": "error", "no-import-assign": "error", "no-invalid-regexp": "error", "no-irregular-whitespace": "error", "no-loss-of-precision": "error", "no-misleading-character-class": "error", "no-new-native-nonconstructor": "error", "no-nonoctal-decimal-escape": "error", "no-obj-calls": "error", "no-octal": "error", "no-prototype-builtins": "error", "no-redeclare": "error", "no-regex-spaces": "error", "no-self-assign": "error", "no-setter-return": "error", "no-shadow-restricted-names": "error", "no-sparse-arrays": "error", "no-this-before-super": "error", "no-unassigned-vars": "warn", "no-undef": "error", "no-unexpected-multiline": "error", "no-unreachable": "error", "no-unsafe-finally": "error", "no-unsafe-negation": "error", "no-unsafe-optional-chaining": "error", "no-unused-expressions": "off", // this rule disallow us to use expression to call function, like `condition && fn()` "no-unused-labels": "error", "no-unused-private-class-members": "error", "no-unused-vars": ["warn", { "caughtErrors": "none" }], "no-useless-backreference": "error", "no-useless-catch": "error", "no-useless-escape": "error", "no-useless-rename": "warn", "no-with": "error", "oxc/bad-array-method-on-arguments": "warn", "oxc/bad-char-at-comparison": "warn", "oxc/bad-comparison-sequence": "warn", "oxc/bad-min-max-func": "warn", "oxc/bad-object-literal-comparison": "warn", "oxc/bad-replace-all-arg": "warn", "oxc/const-comparisons": "warn", "oxc/double-comparisons": "warn", "oxc/erasing-op": "warn", "oxc/missing-throw": "warn", "oxc/number-arg-out-of-range": "warn", "oxc/only-used-in-recursion": "off", // manually off bacause of existing warning. may turn it on in the future "oxc/uninvoked-array-callback": "warn", "require-yield": "error", "typescript/await-thenable": "warn", // "typescript/ban-ts-comment": "error", "typescript/no-array-constructor": "error", // "typescript/consistent-type-imports": "error", "typescript/no-array-delete": "warn", "typescript/no-base-to-string": "warn", "typescript/no-duplicate-enum-values": "error", "typescript/no-duplicate-type-constituents": "warn", "typescript/no-empty-object-type": "off", "typescript/no-explicit-any": "off", // not safe but too many errors "typescript/no-extra-non-null-assertion": "error", "typescript/no-floating-promises": "warn", "typescript/no-for-in-array": "warn", "typescript/no-implied-eval": "warn", "typescript/no-meaningless-void-operator": "warn", "typescript/no-misused-new": "error", "typescript/no-misused-spread": "warn", "typescript/no-namespace": "error", "typescript/no-non-null-asserted-optional-chain": "off", // it's off now. but may turn it on. "typescript/no-redundant-type-constituents": "warn", "typescript/no-require-imports": "off", "typescript/no-this-alias": "error", "typescript/no-unnecessary-parameter-property-assignment": "warn", "typescript/no-unnecessary-type-constraint": "error", "typescript/no-unsafe-declaration-merging": "error", "typescript/no-unsafe-function-type": "error", "typescript/no-unsafe-unary-minus": "warn", "typescript/no-useless-empty-export": "warn", "typescript/no-wrapper-object-types": "error", "typescript/prefer-as-const": "error", "typescript/prefer-namespace-keyword": "error", "typescript/require-array-sort-compare": "warn", "typescript/restrict-template-expressions": "warn", "typescript/triple-slash-reference": "error", "typescript/unbound-method": "warn", "unicorn/no-await-in-promise-methods": "warn", "unicorn/no-empty-file": "off", // manually off bacause of existing warning. may turn it on in the future "unicorn/no-invalid-fetch-options": "warn", "unicorn/no-invalid-remove-event-listener": "warn", "unicorn/no-new-array": "off", // manually off bacause of existing warning. may turn it on in the future "unicorn/no-single-promise-in-promise-methods": "warn", "unicorn/no-thenable": "off", // manually off bacause of existing warning. may turn it on in the future "unicorn/no-unnecessary-await": "warn", "unicorn/no-useless-fallback-in-spread": "warn", "unicorn/no-useless-length-check": "warn", "unicorn/no-useless-spread": "off", // manually off bacause of existing warning. may turn it on in the future "unicorn/prefer-set-size": "warn", "unicorn/prefer-string-starts-ends-with": "warn", "use-isnan": "error", "valid-typeof": "error" }, "settings": { "jsdoc": { "augmentsExtendsReplacesDocs": false, "exemptDestructuredRootsFromChecks": false, "ignoreInternal": false, "ignorePrivate": false, "ignoreReplacesDocs": true, "implementsReplacesDocs": false, "overrideReplacesDocs": true, "tagNamePreference": {} }, "jsx-a11y": { "attributes": {}, "components": {}, "polymorphicPropName": null }, "next": { "rootDir": [] }, "react": { "formComponents": [], "linkComponents": [] } } }