@jimmy.codes/eslint-config
Version:
A simple, modern ESLint config that covers most use cases.
87 lines (84 loc) • 2.15 kB
JavaScript
import {
GLOB_JS,
GLOB_JSX,
GLOB_TESTS
} from "./chunk-N5KZEOXT.js";
// src/rules/typescript.ts
var 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",
// https://typescript-eslint.io/rules/no-unused-vars/#benefits-over-typescript
{
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/restrict-template-expressions": [
"error",
{ allowNumber: true }
],
"no-use-before-define": "off"
};
// 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
},
{
files: GLOB_TESTS,
name: "jimmy.codes/typescript/testing",
rules: {
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-assignment": "off"
}
}
];
}
export {
typescriptConfig as default
};