{ "$schema": "https://raw.githubusercontent.com/oxc-project/oxc/main/npm/oxlint/configuration_schema.json", "categories": { "correctness": "error" }, "plugins": ["react", "react-hooks", "typescript"], "ignorePatterns": [ ".scratch/", "dist/", "coverage/", "node_modules/", "playground/", "packages/producer/tests/**/src/vendor/**", "docs/public/catalog/", "registry/blocks/**/lib/*.iife.js", "registry/blocks/{glass-shard-title,code-slice-hero,cuboid-carousel,frost-sequence-camera-orbit,orbit-card}/**/*.{js,mjs}", "registry/blocks/frost-sequence-camera-orbit/source/**", "chrome/", "packages/cli/src/media-use/lib/svg-sanitize.mjs" ], "overrides": [ { "files": [ "packages/cli/src/capture/**/*.ts", "packages/cli/src/registry/**/*.ts", "packages/cli/src/templates/**/*.ts", "packages/cli/src/telemetry/**/*.ts", "packages/engine/src/services/browserManager.ts", "packages/engine/src/services/frameCapture.ts", "packages/engine/src/services/parallelCoordinator.ts" ], "excludeFiles": ["**/*.test.ts", "**/*.test.tsx", "packages/cli/src/telemetry/feedback.ts"], "rules": { "no-console": [ "error", { "allow": ["error", "warn"] } ] } }, { "files": ["docs/snippets/**/*.jsx", "docs/snippets/**/*.tsx"], "globals": { "CodeBlock": "readonly" }, "rules": { "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "warn" } }, { "files": ["packages/studio/src/**/*.ts", "packages/studio/src/**/*.tsx"], "excludeFiles": [ "**/*.test.ts", "**/*.test.tsx", "**/*TestUtils.ts", "**/*TestUtils.tsx", "**/*TestHarness.ts", "**/*TestHarness.tsx", "packages/studio/src/utils/studioApiFetch.ts" ], "rules": { "no-restricted-globals": [ "error", { "name": "fetch", "message": "Use studioApiFetch (utils/studioApiFetch.ts): it keeps Studio's requests off the preview media's sockets." } ], "no-restricted-properties": [ "error", { "object": "window", "property": "fetch", "message": "Use studioApiFetch (utils/studioApiFetch.ts): it keeps Studio's requests off the preview media's sockets." }, { "object": "globalThis", "property": "fetch", "message": "Use studioApiFetch (utils/studioApiFetch.ts): it keeps Studio's requests off the preview media's sockets." }, { "object": "self", "property": "fetch", "message": "Use studioApiFetch (utils/studioApiFetch.ts): it keeps Studio's requests off the preview media's sockets." } ] } }, { "files": ["packages/cli/src/**/*.ts"], "excludeFiles": [ "**/*.test.ts", "packages/cli/src/utils/defineCommand.ts", "packages/cli/src/ui/prompts.ts" ], "rules": { "no-restricted-imports": [ "error", { "paths": [ { "name": "citty", "importNames": ["defineCommand"], "message": "Define commands with defineCommand from packages/cli/src/utils/defineCommand.ts so the shared guards and the agent-mode contract test cover them." }, { "name": "@clack/prompts", "message": "Import prompts and spinners from packages/cli/src/ui/prompts.ts: it refuses to prompt when nobody can answer." } ] } ] } } ] }