{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "plugins": ["typescript", "import", "node"],
  "ignorePatterns": ["dist/", "node_modules/", "test-files/", "patches/"],
  "categories": {
    "correctness": "error"
  },
  "rules": {
    "array-callback-return": "error",
    "block-scoped-var": "error",
    "curly": ["error", "all"],
    "default-case": ["error", { "commentPattern": "^no default$" }],
    "default-case-last": "error",
    "default-param-last": "error",
    "eqeqeq": ["error", "always", { "null": "ignore" }],
    "func-names": "warn",
    "grouped-accessor-pairs": "error",
    "guard-for-in": "error",
    "import/export": "error",
    "import/first": "error",
    "import/named": "error",
    "import/newline-after-import": "error",
    "import/no-absolute-path": "error",
    "import/no-amd": "error",
    "import/no-cycle": [
      "error",
      { "ignoreExternal": false, "allowUnsafeDynamicCyclicDependency": false }
    ],
    "import/no-default-export": "error",
    "import/no-duplicates": "error",
    "import/no-dynamic-require": "error",
    "import/no-mutable-exports": "error",
    "import/no-named-as-default": "error",
    "import/no-named-as-default-member": "error",
    "import/no-named-default": "error",
    "import/no-self-import": "error",
    "import/no-webpack-loader-syntax": "error",
    "new-cap": [
      "error",
      {
        "newIsCap": true,
        "newIsCapExceptions": [],
        "capIsNew": false,
        "capIsNewExceptions": ["Immutable.Map", "Immutable.Set", "Immutable.List"],
        "properties": true
      }
    ],
    "no-array-constructor": "error",
    "no-async-promise-executor": "error",
    "no-bitwise": "error",
    "no-caller": "error",
    "no-case-declarations": "error",
    "no-class-assign": "error",
    "no-compare-neg-zero": "error",
    "no-cond-assign": ["error", "always"],
    "no-constant-condition": "warn",
    "no-control-regex": "error",
    "no-debugger": "error",
    "no-delete-var": "error",
    "no-dupe-else-if": "error",
    "no-duplicate-case": "error",
    "no-else-return": ["error", { "allowElseIf": false }],
    "no-empty": "error",
    "no-empty-character-class": "error",
    "no-empty-function": ["error", { "allow": ["constructors"] }],
    "no-empty-pattern": "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-global-assign": ["error", { "exceptions": [] }],
    "no-implied-eval": "error",
    "no-inner-declarations": "error",
    "no-invalid-regexp": "error",
    "no-irregular-whitespace": "error",
    "no-iterator": "error",
    "no-label-var": "error",
    "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }],
    "no-lone-blocks": "error",
    "no-lonely-if": "error",
    "no-loop-func": "error",
    "no-loss-of-precision": "error",
    "no-misleading-character-class": "error",
    "no-multi-assign": "error",
    "no-multi-str": "error",
    "no-new": "error",
    "no-new-func": "error",
    "no-new-wrappers": "error",
    "no-nonoctal-decimal-escape": "error",
    "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }],
    "no-promise-executor-return": "error",
    "no-proto": "error",
    "no-prototype-builtins": "error",
    "no-redeclare": "error",
    "no-regex-spaces": "error",
    "no-restricted-exports": ["error", { "restrictedNamedExports": ["default", "then"] }],
    "no-restricted-properties": [
      "error",
      { "object": "arguments", "property": "callee", "message": "arguments.callee is deprecated" },
      {
        "object": "global",
        "property": "isFinite",
        "message": "Please use Number.isFinite instead"
      },
      { "object": "self", "property": "isFinite", "message": "Please use Number.isFinite instead" },
      {
        "object": "window",
        "property": "isFinite",
        "message": "Please use Number.isFinite instead"
      },
      { "object": "global", "property": "isNaN", "message": "Please use Number.isNaN instead" },
      { "object": "self", "property": "isNaN", "message": "Please use Number.isNaN instead" },
      { "object": "window", "property": "isNaN", "message": "Please use Number.isNaN instead" },
      { "property": "__defineGetter__", "message": "Please use Object.defineProperty instead." },
      { "property": "__defineSetter__", "message": "Please use Object.defineProperty instead." },
      {
        "object": "Math",
        "property": "pow",
        "message": "Use the exponentiation operator (**) instead."
      }
    ],
    "no-self-assign": ["error", { "props": true }],
    "no-self-compare": "error",
    "no-sequences": "error",
    "no-shadow": ["error", { "builtinGlobals": false }],
    "no-shadow-restricted-names": "error",
    "no-sparse-arrays": "error",
    "no-template-curly-in-string": "error",
    "no-throw-literal": "error",
    "no-unneeded-ternary": ["error", { "defaultAssignment": false }],
    "no-unsafe-finally": "error",
    "no-unsafe-optional-chaining": ["error", { "disallowArithmeticOperators": true }],
    "no-unused-labels": "error",
    "no-unused-vars": ["error", { "ignoreRestSiblings": true }],
    "no-use-before-define": "error",
    "no-useless-backreference": "error",
    "no-useless-catch": "error",
    "no-useless-computed-key": "error",
    "no-useless-concat": "error",
    "no-useless-escape": "error",
    "no-useless-rename": [
      "error",
      { "ignoreDestructuring": false, "ignoreImport": false, "ignoreExport": false }
    ],
    "no-useless-return": "error",
    "no-var": "error",
    "no-void": "error",
    "no-with": "error",
    "node/global-require": "error",
    "node/no-new-require": "error",
    "node/no-path-concat": "error",
    "object-shorthand": ["error", "always", { "ignoreConstructors": false, "avoidQuotes": true }],
    "operator-assignment": ["error", "always"],
    "prefer-arrow-callback": ["error", { "allowNamedFunctions": false, "allowUnboundThis": true }],
    "prefer-const": ["error", { "destructuring": "any", "ignoreReadBeforeAssign": true }],
    "prefer-destructuring": [
      "error",
      {
        "VariableDeclarator": { "array": false, "object": true },
        "AssignmentExpression": { "array": false, "object": false }
      }
    ],
    "prefer-exponentiation-operator": "error",
    "prefer-numeric-literals": "error",
    "prefer-object-spread": "error",
    "prefer-promise-reject-errors": ["error", { "allowEmptyReject": true }],
    "prefer-regex-literals": ["error", { "disallowRedundantWrapping": true }],
    "prefer-rest-params": "error",
    "prefer-spread": "error",
    "prefer-template": "error",
    "require-yield": "error",
    "symbol-description": "error",
    "typescript/ban-ts-comment": "error",
    "typescript/ban-types": "error",
    "typescript/consistent-return": "error",
    "typescript/dot-notation": ["error", { "allowKeywords": true, "allowPattern": "" }],
    "typescript/no-duplicate-enum-values": "error",
    "typescript/no-extra-non-null-assertion": "error",
    "typescript/no-floating-promises": "off",
    "typescript/no-misused-new": "error",
    "typescript/no-namespace": "error",
    "typescript/no-non-null-asserted-optional-chain": "error",
    "typescript/no-this-alias": "error",
    "typescript/no-unnecessary-type-constraint": "error",
    "typescript/no-unsafe-declaration-merging": "error",
    "typescript/no-useless-default-assignment": "off",
    "typescript/no-var-requires": "error",
    "typescript/prefer-as-const": "error",
    "typescript/return-await": "error",
    "typescript/triple-slash-reference": "error",
    "unicode-bom": ["error", "never"],
    "use-isnan": "error",
    "valid-typeof": ["error", { "requireStringLiterals": true }],
    "vars-on-top": "error",
    "yoda": "error"
  },
  "overrides": [
    {
      "files": [
        "shims.d.ts",
        "webpack.*.ts",
        "vite.*.ts",
        "vite-env.d.ts",
        "tailwind.config.*",
        "postcss.*.{js,cjs}",
        "esbuild.{js,mjs}",
        "vitest.config.*"
      ],
      "rules": {
        "import/no-default-export": "off"
      }
    },
    {
      "files": ["*.d.*.ts"],
      "rules": {
        "import/no-default-export": "off"
      }
    },
    {
      "files": ["*.{js,cjs}"],
      "rules": {
        "node/global-require": "off"
      }
    }
  ]
}
