{ "env": { "node": true }, "extends": [ "eslint:recommended", "plugin:playwright/recommended", "plugin:prettier/recommended", "plugin:@typescript-eslint/recommended", "plugin:@typescript-eslint/recommended-requiring-type-checking", "prettier" ], "parser": "@typescript-eslint/parser", "parserOptions": { "project": true, "tsconfigRootDir": "__dirname" }, "plugins": ["@typescript-eslint"], "root": true, "rules": { // The following rules need `noImplicitAny` to be set to `true` in our tsconfig. They are too restrictive for now, but should be reconsidered in future "@typescript-eslint/no-unsafe-assignment": "off", "@typescript-eslint/no-unsafe-call": "off", "@typescript-eslint/no-unsafe-member-access": "off", "@typescript-eslint/unbound-method": "off", // Nitpicky. Prefer `interface T` over type T "@typescript-eslint/consistent-type-definitions": "error", "@typescript-eslint/consistent-type-exports": "error", // Use `import type` instead of `import` for type imports "@typescript-eslint/consistent-type-imports": [ "error", { "fixStyle": "inline-type-imports" } ], // Use Array instead of T[] consistently "@typescript-eslint/array-type": [ "error", { "default": "generic" } ], "no-console": ["error", { "allow": ["warn", "error"] }], "no-restricted-imports": [ "error", { "paths": [ // These two rules ensure that we're importing lodash and lodash-es correctly. Not doing so can bloat our bundle size significantly. { "name": "lodash", "message": "Import specific methods from `lodash`. e.g. `import map from 'lodash/map'`" }, { "name": "lodash-es", "importNames": ["default"], "message": "Import specific methods from `lodash-es`. e.g. `import { map } from 'lodash-es'`" }, // These two rules ensure that we're importing Carbon components and icons from the correct packages (after v10). May be removed in the future. { "name": "carbon-components-react", "message": "Import from `@carbon/react` directly. e.g. `import { Toggle } from '@carbon/react'`" }, { "name": "@carbon/icons-react", "message": "Import from `@carbon/react/icons`. e.g. `import { ChevronUp } from '@carbon/react/icons'`" } ] } ] } }