UNPKG

@elsikora/eslint-config

Version:

ESLint configuration vision of ElsiKora

62 lines (59 loc) 2.76 kB
import 'eslint/use-at-your-own-risk'; import { formatConfig } from '../utility/format-config.utility.js'; import { formatRuleName } from '../utility/format-rule-name.utility.js'; import perfectionist from 'eslint-plugin-perfectionist'; /** * Loads the ESLint configuration for perfectionist (sorting imports, etc.) * @param {IConfigOptions} config - Configuration options * @returns {Array<Linter.Config>} An array of ESLint configurations for perfectionist */ function loadConfig(config) { return [ { ...formatConfig([perfectionist.configs["recommended-alphabetical"]])[0], files: ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"], }, { files: ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"], rules: { [formatRuleName("perfectionist/sort-imports")]: config.withFsd ? [ "error", { customGroups: { value: { internal: ["^.*app($|/.*$)", "^.*processes($|/.*$)", "^.*pages($|/.*$)", "^.*widgets($|/.*$)", "^.*features($|/.*$)", "^.*entities($|/.*$)", "^.*shared($|/.*$)"], }, }, groups: ["builtin", "external", "internal", "parent", "sibling", "index", "unknown"], ignoreCase: true, newlinesBetween: "never", order: "asc", partitionByComment: false, partitionByNewLine: false, type: "alphabetical", }, ] : [ "error", { customGroups: { type: {}, value: {}, }, environment: "node", groups: ["builtin-type", "type", "external-type", "internal-type", "parent-type", "sibling-type", "index-type", "builtin", "external", "internal", "parent", "sibling", "index", "object", "style", "side-effect", "unknown"], ignoreCase: false, newlinesBetween: "always", order: "asc", sortSideEffects: true, specialCharacters: "keep", type: "alphabetical", }, ], }, }, ]; } export { loadConfig as default }; //# sourceMappingURL=perfectionist.js.map