UNPKG

eslint-config-proste

Version:
66 lines (65 loc) 2.96 kB
import { getTypescriptConfig } from "./configs/ts.js"; import { getJsConfig } from "./configs/js.js"; import { FlatConfigComposer } from "eslint-flat-config-utils"; import { getImportConfig } from "./configs/import.js"; import { getReactConfig } from "./configs/react.js"; import { getPrettierConfig } from "./configs/prettier.js"; import { getUnicornConfig } from "./configs/unicorn.js"; import { getVitestConfig } from "./configs/vitest.js"; import { getJsxA11yConfig } from "./configs/jsxA11y.js"; import { getVueConfig } from "./configs/vue.js"; import { isPackageExists } from "local-pkg"; import { resolveVueOptions, resolveReactOptions, resolveTsOptions, resolveOptions } from "./utils/options.js"; const BASE_IGNORES = [ "**/node_modules", "**/dist", "**/package-lock.json", "**/yarn.lock", "**/pnpm-lock.yaml", "**/CHANGELOG.md", "**/LICENSE" ]; async function eslintConfig(options, ...configs) { const { ignores = BASE_IGNORES, react: enableReact = isPackageExists("react"), ts: enableTypescript = isPackageExists("typescript"), prettier: enablePrettier = isPackageExists("prettier"), unicorn: enableUnicorn = !0, vitestGlobals = isPackageExists("vitest"), jsxA11y: enableJsxA11y = !1, vue: enableVue = isPackageExists("vue"), js: enableJs = !0, import: enableImport = !0 } = options ?? {}, vueOptions = resolveVueOptions(enableVue), reactOptions = resolveReactOptions(enableReact), tsOptions = resolveTsOptions(enableTypescript), prettierOptions = resolveOptions(enablePrettier), unicornOptions = resolveOptions(enableUnicorn), jsxA11yOptions = resolveOptions(enableJsxA11y), jsOptions = resolveOptions(enableJs), importOptions = resolveOptions(enableImport), tsExts = [], tsFiels = []; vueOptions.enable && (tsExts.push(".vue"), tsFiels.push("**/*.vue")); const configList = [ { ignores }, jsOptions.enable && getJsConfig({ overrides: jsOptions.overrides }), unicornOptions.enable && getUnicornConfig({ overrides: unicornOptions.overrides }), tsOptions.enable && getTypescriptConfig({ overrides: tsOptions.overrides, exts: tsExts, files: tsFiels, parseOptions: tsOptions.parseOptions }), importOptions.enable && getImportConfig({ overrides: importOptions.overrides, enableTs: tsOptions.enable }), reactOptions.enable && getReactConfig({ ...reactOptions }), vitestGlobals && getVitestConfig(), jsxA11yOptions.enable && getJsxA11yConfig({ overrides: jsxA11yOptions.overrides }), vueOptions.enable && getVueConfig({ enableTs: tsOptions.enable, version: vueOptions.version, overrides: vueOptions.overrides }) ].filter(Boolean), composer = new FlatConfigComposer(); return composer.append(...configList, ...configs), prettierOptions.enable && composer.append(getPrettierConfig({ overrides: prettierOptions.overrides })), composer; } export { eslintConfig as default };