{ "$schema": "./node_modules/oxlint/configuration_schema.json", "plugins": ["typescript", "unicorn", "oxc", "react", "import", "promise"], "categories": { "correctness": "error" }, "env": { "browser": true, "builtin": true, "es2024": true, "node": true }, "ignorePatterns": [ "node_modules", "dist", "build", "coverage", ".tanstack", ".eslintrc.cjs", "src/components/ui", "src/routeTree.gen.ts" ], "rules": { "curly": ["error", "multi-line"], "eqeqeq": [ "error", "always", { "null": "ignore" } ], "import/first": "warn", "import/newline-after-import": "warn", "import/no-cycle": "error", "import/no-duplicates": [ "error", { "preferInline": true } ], "import/no-unassigned-import": "off", "no-array-constructor": "error", "no-console": "warn", "no-duplicate-imports": "error", "no-nested-ternary": "error", "no-new-wrappers": "error", "no-regex-spaces": "error", "no-unsafe-finally": "warn", "no-unsafe-negation": "error", "no-unused-expressions": "warn", "no-unused-labels": "error", "no-unused-vars": [ "warn", { "args": "all", "argsIgnorePattern": "^_", "caughtErrors": "all", "caughtErrorsIgnorePattern": "^_", "destructuredArrayIgnorePattern": "^_", "varsIgnorePattern": "^_", "ignoreRestSiblings": true } ], "no-useless-catch": "warn", "no-useless-computed-key": "error", "no-useless-escape": "warn", "no-useless-rename": "warn", "no-var": "warn", "object-shorthand": "warn", "oxc/const-comparisons": "error", "prefer-const": "warn", "prefer-object-has-own": "warn", "prefer-object-spread": "warn", "prefer-template": "warn", "promise/catch-or-return": "error", "promise/no-callback-in-promise": "error", "promise/no-new-statics": "error", "promise/no-return-wrap": "warn", "promise/valid-params": "warn", "react/button-has-type": "error", "react/checked-requires-onchange-or-readonly": "warn", "react/exhaustive-deps": "error", "react/iframe-missing-sandbox": "error", "react/jsx-boolean-value": "warn", "react/jsx-curly-brace-presence": "warn", "react/jsx-fragments": "warn", "react/jsx-key": "warn", "react/jsx-no-duplicate-props": "error", "react/jsx-no-target-blank": "warn", "react/jsx-no-undef": "error", "react/jsx-no-useless-fragment": "error", "react/jsx-props-no-spread-multi": "warn", "react/no-array-index-key": "error", "react/no-danger": "warn", "react/no-unknown-property": "warn", "react/no-unstable-nested-components": [ "error", { "allowAsProps": true } ], "react/only-export-components": [ "error", { "allowConstantExport": true, "allowExportNames": [ "getAuthSectionNavItems", "getAuthSectionContent", "getAuthSectionMeta", "getBillingSectionNavItems", "getBillingSectionContent", "getBillingSectionMeta", "getContentSectionNavItems", "getContentSectionContent", "getContentSectionMeta", "getDashboardSectionNavItems", "getModelsSectionNavItems", "getModelsSectionContent", "getModelsSectionMeta", "getOperationsSectionNavItems", "getOperationsSectionContent", "getOperationsSectionMeta", "getSecuritySectionNavItems", "getSecuritySectionContent", "getSecuritySectionMeta", "getSiteSectionNavItems", "getSiteSectionContent", "getSiteSectionMeta", "getUsageLogsSectionNavItems", "isUsageLogsSectionId", "useSuppressSettingsSectionHeader" ] } ], "react/react-in-jsx-scope": "off", "react/rules-of-hooks": "warn", "react/self-closing-comp": "warn", "typescript/consistent-type-imports": [ "error", { "prefer": "type-imports", "fixStyle": "inline-type-imports", "disallowTypeAnnotations": false } ], "typescript/no-duplicate-type-constituents": "error", "typescript/no-explicit-any": "warn", "typescript/no-extra-non-null-assertion": "error", "typescript/no-import-type-side-effects": "error", "typescript/no-non-null-assertion": "error", "typescript/no-require-imports": "error", "typescript/no-unnecessary-template-expression": "error", "typescript/no-unnecessary-type-arguments": "error", "typescript/no-unnecessary-type-assertion": "error", "typescript/no-useless-empty-export": "error", "typescript/no-wrapper-object-types": "error", "typescript/prefer-as-const": "error", "typescript/prefer-namespace-keyword": "error", "unicorn/no-single-promise-in-promise-methods": "error", "unicorn/no-unnecessary-await": "error", "unicorn/no-useless-fallback-in-spread": "warn", "unicorn/no-useless-length-check": "warn", "unicorn/no-useless-promise-resolve-reject": "warn", "unicorn/no-useless-spread": "error", "unicorn/prefer-add-event-listener": "warn", "unicorn/prefer-array-find": "warn", "unicorn/prefer-array-flat": "warn", "unicorn/prefer-array-flat-map": "warn", "unicorn/prefer-array-index-of": "warn", "unicorn/prefer-array-some": "warn", "unicorn/prefer-at": "error", "unicorn/prefer-date-now": "warn", "unicorn/prefer-includes": "warn", "unicorn/prefer-keyboard-event-key": "warn", "unicorn/prefer-modern-dom-apis": "warn", "unicorn/prefer-module": "warn", "unicorn/prefer-node-protocol": "warn", "unicorn/prefer-number-properties": "warn", "unicorn/prefer-object-from-entries": "warn", "unicorn/prefer-optional-catch-binding": "error", "unicorn/prefer-query-selector": "warn", "unicorn/prefer-regexp-test": "warn", "unicorn/prefer-set-has": "warn", "unicorn/prefer-spread": "error", "unicorn/prefer-string-replace-all": "error", "unicorn/prefer-string-slice": "warn", "unicorn/prefer-string-starts-ends-with": "warn", "unicorn/prefer-string-trim-start-end": "warn", "unicorn/prefer-structured-clone": "warn", "unicorn/throw-new-error": "error" }, "overrides": [ { "files": ["src/routes/**/*.{ts,tsx}"], "rules": { "react/only-export-components": "off" } }, { "files": ["**/scripts/**/*.{js,mjs,cjs}"], "rules": { "no-console": "off", "prefer-node-protocol": "off" } } ] }