@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
30 lines (28 loc) • 1.26 kB
JavaScript
import { globs } from "../utils/globs.js";
import { isEnabled } from "../utils/isEnabled.js";
import { defaultOptions } from "../utils/options/defaultOptions.js";
import { getTypeScriptRules } from "../rules/typescript.js";
import typescriptESLint from "typescript-eslint";
import { mergeConfigs } from "eslint-flat-config-utils";
//#region src/configs/typescript.ts
function getTypeScriptConfig(options) {
const { tsConfig, configs: { vue, typescript } } = options;
const { allowedDefaultProjects } = isEnabled(typescript) ? typescript : defaultOptions.configs.typescript;
const { overrides } = isEnabled(typescript) ? typescript : defaultOptions.configs.typescript;
const typescriptConfig = {
name: "shayanthenerd/typescript",
files: [globs.ts, vue ? globs.vue : ""],
extends: [typescriptESLint.configs.strictTypeChecked, typescriptESLint.configs.stylisticTypeChecked],
languageOptions: { parserOptions: {
tsconfigRootDir: tsConfig ? tsConfig.rootDir : void 0,
projectService: {
allowDefaultProject: allowedDefaultProjects,
defaultProject: tsConfig ? tsConfig.filename : void 0
}
} },
rules: getTypeScriptRules(options)
};
return mergeConfigs(typescriptConfig, overrides);
}
//#endregion
export { getTypeScriptConfig };