UNPKG

@feathers-community/eslint-config

Version:
92 lines (91 loc) 2.96 kB
import prettierConfig from "./prettier.js"; import eslint from "@eslint/js"; import tseslint from "typescript-eslint"; import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; import eslintPluginImportX from "eslint-plugin-import-x"; import tsParser from "@typescript-eslint/parser"; import unicorn from "eslint-plugin-unicorn"; import globals from "globals"; import unusedImports from "eslint-plugin-unused-imports"; import { configs } from "eslint-plugin-package-json"; import process from "node:process"; //#region src/default-config.ts const defaultConfig = (options, ...userConfigs) => { const tsconfigPath = options?.tsconfig?.path ?? "./tsconfig.json"; const tsconfigRootDir = options?.tsconfig?.rootDir ?? process.cwd(); return tseslint.config({ ignores: [ "**/node_modules", "**/dist", "**/coverage", "docs/.vitepress/cache", "docs/.vitepress/dist", "**/*.d.ts", "**/*.cjs", "**/*.json" ] }, eslint.configs.recommended, tseslint.configs.recommended, { rules: { "no-unused-vars": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/consistent-type-imports": ["error", { prefer: "type-imports", fixStyle: "separate-type-imports" }] } }, eslintPluginImportX.flatConfigs.recommended, eslintPluginImportX.flatConfigs.typescript, { files: ["**/*.{ts,tsx}"], ignores: [], languageOptions: { parser: tsParser, parserOptions: { ecmaVersion: "latest", sourceType: "module", project: tsconfigPath, tsconfigRootDir } } }, { files: ["**/*.{js,mjs}"], languageOptions: { ecmaVersion: "latest", sourceType: "module" } }, { rules: { "import-x/no-dynamic-require": "warn", "import-x/no-nodejs-modules": "off" } }, { languageOptions: { globals: globals.builtin }, plugins: { unicorn }, rules: { "unicorn/consistent-assert": "warn", "unicorn/consistent-date-clone": "warn", "unicorn/consistent-empty-array-spread": "warn", "unicorn/prefer-date-now": "warn", "unicorn/prefer-module": "warn", "unicorn/prefer-node-protocol": "warn", "unicorn/prefer-object-from-entries": "warn", "unicorn/prefer-set-size": "warn" } }, { plugins: { "unused-imports": unusedImports }, rules: { "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": "off", "unused-imports/no-unused-imports": "error", "unused-imports/no-unused-vars": ["warn", { vars: "all", varsIgnorePattern: "^_", args: "after-used", argsIgnorePattern: "^_", ignoreRestSiblings: true }] } }, { ...configs.recommended, rules: { "package-json/require-files": "error" } }, eslintPluginPrettierRecommended, { rules: { "prettier/prettier": ["warn", prettierConfig] } }, ...userConfigs); }; //#endregion //#region src/index.ts var src_default = (options, ...userConfigs) => { return defaultConfig(options, ...userConfigs); }; //#endregion export { src_default as default, defaultConfig, prettierConfig };