@elsikora/eslint-config
Version:
ESLint configuration vision of ElsiKora
81 lines (78 loc) • 4.47 kB
JavaScript
import 'eslint/use-at-your-own-risk';
import { formatPluginName } from '../utility/format-plugin-name.utility.js';
import { formatRuleName } from '../utility/format-rule-name.utility.js';
import checkFile from 'eslint-plugin-check-file';
/**
* Loads the ESLint configuration for file checking rules
* @returns {Array<Linter.Config>} An array of ESLint configurations for file checking
*/
function loadConfig() {
return [
{
files: ["src/**/*"],
plugins: {
[]: checkFile,
},
rules: {
[]: [
"error",
{
"**/*.enums.ts": "*.enum.ts",
"**/*.models.ts": "*.model.ts",
"**/*.tests.ts": "*.test.ts",
"**/*.types.ts": "*.type.ts",
"**/*.util.ts": "*.utility.ts",
},
], // Disallow specific filename patterns to enforce a consistent naming convention across the project. For example, preferring `*.enum.ts` over `*.enums.ts`.
[]: [
"error",
{
"**/class/**/*.{js,ts}": "KEBAB_CASE",
"**/dto/**/*.{js,ts}": "KEBAB_CASE",
"**/entity/**/*.{js,ts}": "KEBAB_CASE",
"**/enum/**/*.{js,ts}": "KEBAB_CASE",
"**/event/*/*.{js,ts}": "KEBAB_CASE",
"**/filter/**/*.{js,ts}": "KEBAB_CASE",
"**/interceptor/**/*.{js,ts}": "KEBAB_CASE",
"**/interface/**/*.{js,ts}": "KEBAB_CASE",
"**/middleware/**/*.{js,ts}": "KEBAB_CASE",
"**/modules/*/*.{js,ts}": "KEBAB_CASE",
"**/subscriber/**/*.{js,ts}": "KEBAB_CASE",
"**/type/*/*.{js,ts}": "KEBAB_CASE",
"**/utility/**/*.{js,ts}": "KEBAB_CASE",
"**/validator/**/*.{js,ts}": "KEBAB_CASE",
},
// eslint-disable-next-line @elsikora/typescript/naming-convention
{ ignoreMiddleExtensions: true },
], // Enforce a specific naming convention for files in various directories, typically using KEBAB_CASE for clarity and consistency. The `ignoreMiddleExtensions` option allows ignoring file extensions in the middle of filenames, focusing on the final extension for the rule.
[]: [
"error",
{
"*.api.{ts,js}": "**/api/**",
"*.class.{js,jsx,ts,tsx}": "**/class/**",
"*.dto.{js,jsx,ts,tsx}": "**/dto/**",
"*.entity.{js,jsx,ts,tsx}": "**/entity/**",
"*.enum.{js,jsx,ts,tsx}": "**/enum/**",
"*.event.{js,jsx,ts,tsx}": "**/event/**",
"*.filter.{js,jsx,ts,tsx}": "**/filter/**",
"*.interceptor.{js,jsx,ts,tsx}": "**/interceptor/**",
"*.interface.{js,jsx,ts,tsx}": "**/interface/**",
"*.middleware.{js,jsx,ts,tsx}": "**/middleware/**",
"*.subscriber.{js,jsx,ts,tsx}": "**/subscriber/**",
"*.type.{js,jsx,ts,tsx}": "**/type/**",
"*.utility.{js,jsx,ts,tsx}": "**/utility/**",
"*.validator.{js,jsx,ts,tsx}": "**/validator/**",
},
], // Enforce a naming convention that requires files to be located in folders matching their type (e.g., API files in /api, DTOs in /dto) to ensure a clear and consistent project structure.
[]: [
"error",
{
"src/**": "KEBAB_CASE",
},
], // Require all files and folders under the `src` directory to use flat case naming (e.g., `my_directory`), promoting consistency in file system organization.
},
},
];
}
export { loadConfig as default };
//# sourceMappingURL=check-file.js.map