@elsikora/eslint-config
Version:
ESLint configuration vision of ElsiKora
85 lines (80 loc) • 4.68 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
require('eslint/use-at-your-own-risk');
var formatPluginName_utility = require('../utility/format-plugin-name.utility.js');
var formatRuleName_utility = require('../utility/format-rule-name.utility.js');
var checkFile = require('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: {
[formatPluginName_utility.formatPluginName("check-file")]: checkFile,
},
rules: {
[formatRuleName_utility.formatRuleName("check-file/filename-blocklist")]: [
"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`.
[formatRuleName_utility.formatRuleName("check-file/filename-naming-convention")]: [
"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.
[formatRuleName_utility.formatRuleName("check-file/folder-match-with-fex")]: [
"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.
[formatRuleName_utility.formatRuleName("check-file/folder-naming-convention")]: [
"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.
},
},
];
}
exports.default = loadConfig;
//# sourceMappingURL=check-file.js.map