import { defineConfig } from "oxlint"; import core from "ultracite/oxlint/core"; import react from "ultracite/oxlint/react"; import remix from "ultracite/oxlint/remix"; export default defineConfig({ extends: [core, react, remix], ignorePatterns: [ ...core.ignorePatterns, "**/.agents/skills/**", "repos/**", "scripts/**", ], overrides: [ { files: ["packages/ui/src/components/*.tsx"], rules: { "eslint/func-style": "off", "jsx-a11y/click-events-have-key-events": "off", "jsx-a11y/label-has-associated-control": "off", "jsx-a11y/no-noninteractive-element-interactions": "off", "jsx-a11y/prefer-tag-over-role": "off", "sort-keys": "off", }, }, { files: ["**/convex/**/*.ts", "**/convex/**/*.test.ts"], rules: { // Convex query builders use `any` in index callbacks "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-non-null-assertion": "off", "eslint/complexity": "off", "no-await-in-loop": "off", "unicorn/filename-case": "off", // Convex targets ES2022: no toSorted/at; sequential awaits ensure atomicity "unicorn/no-array-sort": "off", }, }, { files: ["**/convex/**/*.test.ts"], rules: { "eslint/require-await": "off", "sort-keys": "off", "unicorn/no-await-expression-member": "off", }, }, ], });