eslint-config-vylda-typescript 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +12 -0
- package/.gitlab-ci.yml +13 -0
- package/.husky/pre-commit +1 -0
- package/.husky/pre-push +1 -0
- package/.vscode/extensions.json +8 -0
- package/.vscode/settings.json +6 -0
- package/Changelog.md +114 -0
- package/LICENSE +24 -0
- package/README.md +372 -0
- package/directory.mjs +3 -0
- package/empty.ts +0 -0
- package/eslint.config.mjs +81 -0
- package/index.d.ts +55 -0
- package/index.js +176 -0
- package/package.json +44 -0
- package/rules/defaultTs.mjs +654 -0
- package/rules/imports.mjs +119 -0
- package/rules/index.mjs +10 -0
- package/rules/off.mjs +64 -0
- package/rules/plus.mjs +22 -0
- package/rules/strictTs.mjs +115 -0
- package/rules/stylisticTs.mjs +495 -0
- package/rules/typescriptConfig.mjs +16 -0
- package/rules/vanillaConfig.mjs +26 -0
- package/rules/variablesTs.mjs +129 -0
- package/tsconfig.json +22 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ESLint, Linter } from 'eslint';
|
|
2
|
+
|
|
3
|
+
export type TConfig = Array<Linter.Config>;
|
|
4
|
+
export type TGetConfigOptions = TGetImportConfigOptions & {
|
|
5
|
+
barrelsFiles?: Array<string>;
|
|
6
|
+
files?: Array<string>;
|
|
7
|
+
plugins?: Record<string, ESLint.Plugin>;
|
|
8
|
+
};
|
|
9
|
+
export type TGetImportConfigOptions = {
|
|
10
|
+
barrelsFiles?: Array<string>;
|
|
11
|
+
files?: Array<string>;
|
|
12
|
+
importExtensions?: Array<string>;
|
|
13
|
+
importExtensionsRuleGranularOption?: Record<string, unknown>;
|
|
14
|
+
importNoExtraneousDependenciesDevDependencies?: Array<string>;
|
|
15
|
+
importResolverNodeExtensions?: Array<string>;
|
|
16
|
+
plugins?: Record<string, ESLint.Plugin>;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export function getConfig(options?: TGetConfigOptions): TConfig;
|
|
20
|
+
export function getImportConfig(options?: TGetImportConfigOptions): TConfig;
|
|
21
|
+
export function getLanguageOptions(dir: string): TConfig;
|
|
22
|
+
export function mapFiles(defaults: TConfig, customFiles: Array<string>): TConfig;
|
|
23
|
+
|
|
24
|
+
export const barrels: TConfig;
|
|
25
|
+
export const barrelsFiles: Array<string>;
|
|
26
|
+
export const bestPractices: TConfig;
|
|
27
|
+
export const constants: Record<string, number>;
|
|
28
|
+
export const customs: TConfig;
|
|
29
|
+
export const defaultImportExtensions: Array<string>;
|
|
30
|
+
export const defaultImportExtensionsRuleGranularOption: Record<string, string>;
|
|
31
|
+
export const defaultImportNoExtraneousDependenciesDevDependencies: Array<string>;
|
|
32
|
+
export const defaultImportResolverNodeExtensions: Array<string>;
|
|
33
|
+
export const defaultTs: TConfig;
|
|
34
|
+
export const errors: TConfig;
|
|
35
|
+
export const es6: TConfig;
|
|
36
|
+
export const files: Array<string>;
|
|
37
|
+
export const ignores: TConfig;
|
|
38
|
+
export const node: TConfig;
|
|
39
|
+
export const off: TConfig;
|
|
40
|
+
export const perfectionist: TConfig;
|
|
41
|
+
export const plugins: Record<string, ESLint.Plugin>;
|
|
42
|
+
export const plus: TConfig;
|
|
43
|
+
export const strict: TConfig;
|
|
44
|
+
export const stylistic: TConfig;
|
|
45
|
+
export const tsConfig: TConfig;
|
|
46
|
+
export const tsFiles: Array<string>;
|
|
47
|
+
export const tsPlugins: Record<string, ESLint.Plugin>;
|
|
48
|
+
export const tsStrict: TConfig;
|
|
49
|
+
export const tsStylistic: TConfig;
|
|
50
|
+
export const vanillaConfigs: TConfig;
|
|
51
|
+
export const tsVariables: TConfig;
|
|
52
|
+
export const vanillaPlugins: Record<string, ESLint.Plugin>;
|
|
53
|
+
export const variables: TConfig;
|
|
54
|
+
|
|
55
|
+
export default TConfig;
|
package/index.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import {
|
|
4
|
+
barrels, bestPractices, constants, customs, errors, es6, ignores, mapFiles, node,
|
|
5
|
+
perfectionist, strict, stylistic, plugins as vanillaPlugins, variables,
|
|
6
|
+
} from 'eslint-config-vylda-vanilla';
|
|
7
|
+
import {
|
|
8
|
+
barrelsFiles, files, getLanguageOptions, nonTsConfigFiles,
|
|
9
|
+
nonTsConfigFilesRule, plugins, tsFiles, tsPlugins,
|
|
10
|
+
} from './eslint.config.mjs';
|
|
11
|
+
import {
|
|
12
|
+
defaultImportExtensions,
|
|
13
|
+
defaultImportExtensionsRuleGranularOption,
|
|
14
|
+
defaultImportNoExtraneousDependenciesDevDependencies,
|
|
15
|
+
defaultImportResolverNodeExtensions,
|
|
16
|
+
} from './rules/imports.mjs';
|
|
17
|
+
import {
|
|
18
|
+
defaultTs, getImportConfig, off, plus,
|
|
19
|
+
tsConfig, tsStrict, tsStylistic, tsVariables,
|
|
20
|
+
} from './rules/index.mjs';
|
|
21
|
+
|
|
22
|
+
const dineddd = defaultImportNoExtraneousDependenciesDevDependencies;
|
|
23
|
+
const diergo = defaultImportExtensionsRuleGranularOption;
|
|
24
|
+
|
|
25
|
+
const defaultOptions = {
|
|
26
|
+
files,
|
|
27
|
+
importExtensions: defaultImportExtensions,
|
|
28
|
+
importExtensionsRuleGranularOption: diergo,
|
|
29
|
+
importNoExtraneousDependenciesDevDependencies: dineddd,
|
|
30
|
+
importResolverNodeExtensions: defaultImportResolverNodeExtensions,
|
|
31
|
+
plugins,
|
|
32
|
+
tsFiles,
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Create Vanilla ESLint configs
|
|
37
|
+
* @param {Array.<Object>} importConfigs - Array of import configs
|
|
38
|
+
* @returns {Array.<Object>} - ESLint Flat config
|
|
39
|
+
*/
|
|
40
|
+
const createVanillaConfigs = (importConfigs) => [
|
|
41
|
+
...importConfigs,
|
|
42
|
+
...es6,
|
|
43
|
+
...strict,
|
|
44
|
+
...stylistic,
|
|
45
|
+
...bestPractices,
|
|
46
|
+
...errors,
|
|
47
|
+
...node,
|
|
48
|
+
...perfectionist,
|
|
49
|
+
...variables,
|
|
50
|
+
...customs,
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param {Array.<Object>} configs
|
|
56
|
+
* @returns {Array.<Object>}
|
|
57
|
+
*/
|
|
58
|
+
const deleteLanguageOptions = (configs) => {
|
|
59
|
+
const configsWithoutLanguageOptions = configs.map((config) => {
|
|
60
|
+
if ('languageOptions' in config) {
|
|
61
|
+
const { languageOptions, ...rest } = config;
|
|
62
|
+
|
|
63
|
+
return rest;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return config;
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
return configsWithoutLanguageOptions;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* returns eslint config for typescript
|
|
74
|
+
* @param {string} baseDir - base directory for tsconfig.json
|
|
75
|
+
* @param {object} [options={}] - options
|
|
76
|
+
* @param {Array.<string>} [options.barrelsFiles=['**\/*.{js,mjs,mts,ts}']] - file patterns for barrels files
|
|
77
|
+
* @param {Array.<string>} [options.files=['**\/*.{cjs,cts,js,mjs,mts,ts}']] - file patterns for files to lint
|
|
78
|
+
* @param {Array.<string>} [options.importExtensions=[".js", ".mjs", ".mts", ".ts"]] - extensions for module settings import/extensions
|
|
79
|
+
* @param {Object.<string, string>} [options.importExtensionsRuleGranularOption] - granural oprions for import/extensions rule; for default values see Readme.md
|
|
80
|
+
* @param {Array.<string>} [options.importNoExtraneousDependenciesDevDependencies=['see Readme.md']] - devDependencies for import/no-extraneous-dependencies rule
|
|
81
|
+
* @param {Array.<string>} [options.importResolverNodeExtensions=['.js', '.json', '.mjs', '.mts', '.ts']] - extensions for module settings import/resolver.node.extensions
|
|
82
|
+
* @param {Object.<string, Object | undefined>} [options.plugins] - default plugins; for default values see Readme.md
|
|
83
|
+
* @param {Array.<string>} [options.tsFiles=['**\/*.{cts,mts,ts}']] - ts files to lint
|
|
84
|
+
* @returns {Array.<Object>} - ESLint Flat config
|
|
85
|
+
*/
|
|
86
|
+
const getConfig = (
|
|
87
|
+
baseDir,
|
|
88
|
+
options = defaultOptions,
|
|
89
|
+
) => {
|
|
90
|
+
const {
|
|
91
|
+
barrelsFiles: customBarrelsFiles = barrelsFiles,
|
|
92
|
+
files: customFiles = files,
|
|
93
|
+
importExtensions: ie = defaultImportExtensions,
|
|
94
|
+
importExtensionsRuleGranularOption: iergo = diergo,
|
|
95
|
+
importNoExtraneousDependenciesDevDependencies: ineddd = dineddd,
|
|
96
|
+
importResolverNodeExtensions: irne = defaultImportResolverNodeExtensions,
|
|
97
|
+
plugins: customPlugins = plugins,
|
|
98
|
+
tsFiles: customTsFiles = tsFiles,
|
|
99
|
+
} = options;
|
|
100
|
+
|
|
101
|
+
const baseImportConfigs = getImportConfig(
|
|
102
|
+
resolve(baseDir, 'tsconfig.json'),
|
|
103
|
+
{
|
|
104
|
+
importExtensions: ie,
|
|
105
|
+
importExtensionsRuleGranularOption: iergo,
|
|
106
|
+
importNoExtraneousDependenciesDevDependencies: ineddd,
|
|
107
|
+
importResolverNodeExtensions: irne,
|
|
108
|
+
},
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
const languageOptions = getLanguageOptions(baseDir);
|
|
112
|
+
|
|
113
|
+
const importConfigs = deleteLanguageOptions(baseImportConfigs);
|
|
114
|
+
|
|
115
|
+
const vanillaConfigs = createVanillaConfigs(importConfigs);
|
|
116
|
+
|
|
117
|
+
const configsWithFiles = mapFiles(vanillaConfigs, customFiles);
|
|
118
|
+
const tsConfigsWithFiles = mapFiles(tsConfig, customTsFiles);
|
|
119
|
+
const barrelsConfigsWithFiles = mapFiles(barrels, customBarrelsFiles);
|
|
120
|
+
|
|
121
|
+
const eslintConfig = [
|
|
122
|
+
{
|
|
123
|
+
languageOptions,
|
|
124
|
+
name: 'typescript-eslint/base',
|
|
125
|
+
plugins: customPlugins,
|
|
126
|
+
},
|
|
127
|
+
...configsWithFiles,
|
|
128
|
+
...tsConfigsWithFiles,
|
|
129
|
+
...barrelsConfigsWithFiles,
|
|
130
|
+
...ignores,
|
|
131
|
+
];
|
|
132
|
+
|
|
133
|
+
return eslintConfig;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const vanillaConfigs = createVanillaConfigs([]);
|
|
137
|
+
|
|
138
|
+
export {
|
|
139
|
+
barrels,
|
|
140
|
+
barrelsFiles,
|
|
141
|
+
bestPractices,
|
|
142
|
+
constants,
|
|
143
|
+
customs,
|
|
144
|
+
defaultImportExtensions,
|
|
145
|
+
defaultImportExtensionsRuleGranularOption,
|
|
146
|
+
defaultImportNoExtraneousDependenciesDevDependencies,
|
|
147
|
+
defaultImportResolverNodeExtensions,
|
|
148
|
+
defaultTs,
|
|
149
|
+
errors,
|
|
150
|
+
es6,
|
|
151
|
+
files,
|
|
152
|
+
getImportConfig,
|
|
153
|
+
getLanguageOptions,
|
|
154
|
+
ignores,
|
|
155
|
+
mapFiles,
|
|
156
|
+
node,
|
|
157
|
+
nonTsConfigFiles,
|
|
158
|
+
nonTsConfigFilesRule,
|
|
159
|
+
off,
|
|
160
|
+
perfectionist,
|
|
161
|
+
plugins,
|
|
162
|
+
plus,
|
|
163
|
+
strict,
|
|
164
|
+
stylistic,
|
|
165
|
+
tsConfig,
|
|
166
|
+
tsFiles,
|
|
167
|
+
tsPlugins,
|
|
168
|
+
tsStrict,
|
|
169
|
+
tsStylistic,
|
|
170
|
+
tsVariables,
|
|
171
|
+
vanillaConfigs,
|
|
172
|
+
vanillaPlugins,
|
|
173
|
+
variables,
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
export default getConfig;
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "eslint-config-vylda-typescript",
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "Eslint Typescript rules for JS and TS vanilla projects",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"eslint"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"inspect": "npx @eslint/config-inspector",
|
|
12
|
+
"lint": "eslint .",
|
|
13
|
+
"test": "eslint .",
|
|
14
|
+
"prepare": "husky"
|
|
15
|
+
},
|
|
16
|
+
"author": "Vilem Lipold, vilem.lipold@seznam.cz",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://gitlab.com/Vylda/eslint-config-vylda-typescript/-/issues"
|
|
19
|
+
},
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://gitlab.com/Vylda/eslint-config-vylda-typescript.git"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://gitlab.com/Vylda/eslint-config-vylda-typescript",
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@eslint/config-inspector": "^1.2.0",
|
|
28
|
+
"@types/espree": "^10.1.0",
|
|
29
|
+
"@types/node": "^24.3.0",
|
|
30
|
+
"espree": "^10.4.0",
|
|
31
|
+
"husky": "^9.1.7",
|
|
32
|
+
"typescript": "^5.9.2"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"eslint": "^9.34.0",
|
|
36
|
+
"eslint-config-vylda-vanilla": "^4.0.5",
|
|
37
|
+
"eslint-import-resolver-typescript": "^4.4.4",
|
|
38
|
+
"tslib": "^2.8.1",
|
|
39
|
+
"typescript-eslint": "^8.41.0"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=20"
|
|
43
|
+
}
|
|
44
|
+
}
|