UNPKG

@jimmy.codes/eslint-config

Version:

A simple, modern ESLint config that covers most use cases.

70 lines (67 loc) 2.16 kB
import { GLOB_JS, GLOB_JSX, GLOB_TESTS } from "./globs-CRO5v7xy.js"; //#region src/rules/typescript.ts const disabledEslintRules = { "no-use-before-define": "off" }; const typescriptRules = { "@typescript-eslint/consistent-type-exports": ["error", { fixMixedExportsWithInlineTypeSpecifier: false }], "@typescript-eslint/consistent-type-imports": ["error", { fixStyle: "separate-type-imports" }], "@typescript-eslint/no-deprecated": "warn", "@typescript-eslint/no-misused-promises": ["error", { checksVoidReturn: { attributes: false } }], "@typescript-eslint/no-unnecessary-type-conversion": "error", "@typescript-eslint/no-unused-vars": ["error", { args: "all", argsIgnorePattern: "^_", caughtErrors: "all", caughtErrorsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_", ignoreRestSiblings: true, varsIgnorePattern: "^_" }], "@typescript-eslint/no-use-before-define": ["error", { allowNamedExports: false, classes: false, functions: false, variables: true }], "@typescript-eslint/no-useless-empty-export": "error", "@typescript-eslint/restrict-template-expressions": ["error", { allowNumber: true }], "@typescript-eslint/switch-exhaustiveness-check": "error", ...disabledEslintRules }; //#endregion //#region src/configs/typescript.ts async function typescriptConfig() { const { configs } = await import("typescript-eslint"); return [ ...configs.strictTypeChecked, ...configs.stylisticTypeChecked.filter((config) => { return config.name === "typescript-eslint/stylistic-type-checked"; }), { languageOptions: { parserOptions: { projectService: true, tsconfigRootDir: process.cwd() } }, name: "jimmy.codes/typescript", rules: typescriptRules }, { files: [GLOB_JS, GLOB_JSX], ...configs.disableTypeChecked, languageOptions: { parserOptions: { program: null, project: false, projectService: false } } }, { files: GLOB_TESTS, name: "jimmy.codes/typescript/testing", rules: { "@typescript-eslint/no-unsafe-argument": "off", "@typescript-eslint/no-unsafe-assignment": "off" } } ]; } //#endregion export { typescriptConfig as default };