UNPKG

@shayanthenerd/eslint-config

Version:

A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style

39 lines (38 loc) 1.47 kB
import { isTruthy } from "../utils/isTruthy.mjs"; import { globs } from "../helpers/globs.mjs"; import { isEnabled } from "../utils/isEnabled.mjs"; import { defaultOptions } from "../helpers/options/defaultOptions.mjs"; import { getTypescriptRules } from "../rules/typescript.mjs"; import { mergeConfigs } from "eslint-flat-config-utils"; import { parser, plugin } from "typescript-eslint"; import path from "node:path"; //#region src/configs/typescript.ts function getTypescriptConfig(options) { const { tsConfig, configs: { vue, astro, typescript } } = options; const { allowedDefaultProjects } = isEnabled(typescript) ? typescript : defaultOptions.configs.typescript; const { overrides } = isEnabled(typescript) ? typescript : defaultOptions.configs.typescript; return mergeConfigs({ name: "shayanthenerd/typescript", files: [ globs.src, globs.jsxTsx, isEnabled(vue) ? globs.vue : "", isEnabled(astro) ? globs.astro : "" ].filter(isTruthy), plugins: { "@typescript-eslint": plugin }, languageOptions: { parser, parserOptions: { warnOnUnsupportedTypeScriptVersion: false, tsconfigRootDir: tsConfig ? path.resolve(tsConfig.rootDir) : void 0, projectService: { defaultProject: tsConfig ? tsConfig.filename : void 0, allowDefaultProject: ["{prettier,eslint}.config.?([mc])ts", ...allowedDefaultProjects] } } }, rules: getTypescriptRules(options) }, overrides); } //#endregion export { getTypescriptConfig };