Skip to content

Commit dac1953

Browse files
author
Simon Mollweide
committed
fix: override es rules with typescript rules
1 parent 26159ee commit dac1953

10 files changed

+171
-45
lines changed

package-lock.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@namics/eslint-config",
3-
"version": "9.0.3",
3+
"version": "9.0.4",
44
"description": "Default configurations for eslint",
55
"author": "Namics AG",
66
"contributors": [

rules/typescript-disable-styles.js

+46
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,53 @@
1+
const styles = require('./style-disable-styles');
2+
const variables = require('./variables-disable-styles');
3+
const errors = require('./errors-disable-styles');
4+
const es6 = require('./es6-disable-styles');
5+
const bestPractices = require('./best-practices-disable-styles');
6+
7+
const replaceRule = (name, ruleSet) => {
8+
return typeof ruleSet.rules[name] === 'undefined'
9+
? {}
10+
: { [`@typescript-eslint/${name}`]: ruleSet.rules[name] };
11+
};
112

213
/* [12.04.2019] add typescript support */
314
module.exports = {
415
rules: {
16+
// default overrides
17+
...replaceRule('brace-style', styles),
18+
...replaceRule('comma-dangle', errors),
19+
...replaceRule('comma-spacing', styles),
20+
...replaceRule('default-param-last', styles),
21+
...replaceRule('dot-notation', bestPractices),
22+
...replaceRule('func-call-spacing', styles),
23+
...replaceRule('indent', styles),
24+
...replaceRule('init-declarations', variables),
25+
...replaceRule('keyword-spacing', styles),
26+
...replaceRule('lines-between-class-members', styles),
27+
...replaceRule('no-array-constructor', styles),
28+
...replaceRule('no-dupe-class-members', es6),
29+
...replaceRule('no-duplicate-imports', es6),
30+
...replaceRule('no-empty-function', bestPractices),
31+
...replaceRule('no-extra-parens', errors),
32+
...replaceRule('no-extra-semi', errors),
33+
...replaceRule('no-implied-eval', bestPractices),
34+
...replaceRule('no-invalid-this', bestPractices),
35+
...replaceRule('no-loop-func', bestPractices),
36+
...replaceRule('no-loss-of-precision', bestPractices),
37+
...replaceRule('no-magic-numbers', bestPractices),
38+
...replaceRule('no-redeclare', bestPractices),
39+
...replaceRule('no-shadow', variables),
40+
...replaceRule('no-throw-literal', bestPractices),
41+
...replaceRule('no-unused-expressions', bestPractices),
42+
...replaceRule('no-unused-vars', variables),
43+
...replaceRule('no-use-before-define', variables),
44+
...replaceRule('no-useless-constructor', es6),
45+
...replaceRule('quotes', styles),
46+
...replaceRule('require-await', styles),
47+
...replaceRule('return-await', styles),
48+
...replaceRule('semi', styles),
49+
...replaceRule('space-before-function-paren', styles),
50+
...replaceRule('space-infix-ops', styles),
551
'@typescript-eslint/indent': 0,
652
'@typescript-eslint/member-delimiter-style': 0,
753
'@typescript-eslint/type-annotation-spacing': 0,

rules/typescript.js

+90-38
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,63 @@
11
/* eslint-disable */
2+
const styles = require('./style');
3+
const variables = require('./variables');
4+
const errors = require('./errors');
5+
const bestPractices = require('./best-practices');
6+
const es6 = require('./es6');
7+
8+
const replaceRule = (name, ruleSet, fallback) => {
9+
return {
10+
[name]: 0,
11+
[`@typescript-eslint/${name}`]: ruleSet.rules[name] || fallback || 0,
12+
};
13+
};
14+
215
/* [12.04.2019] add typescript support */
316
module.exports = {
417
rules: {
518
'require-jsdoc': 0,
6-
'camelcase': 0,
7-
'indent': 0,
19+
camelcase: 0,
820
'no-unused-vars': 0,
921
'no-use-before-define': 0,
1022
'no-useless-constructor': 0,
1123

24+
// default overrides
25+
// https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#extension-rules
26+
...replaceRule('brace-style', styles),
27+
...replaceRule('comma-dangle', errors),
28+
...replaceRule('comma-spacing', styles),
29+
...replaceRule('default-param-last', styles),
30+
...replaceRule('dot-notation', bestPractices),
31+
...replaceRule('func-call-spacing', styles),
32+
...replaceRule('indent', styles),
33+
...replaceRule('init-declarations', variables),
34+
...replaceRule('keyword-spacing', styles),
35+
...replaceRule('lines-between-class-members', styles),
36+
...replaceRule('no-array-constructor', styles),
37+
...replaceRule('no-dupe-class-members', es6),
38+
...replaceRule('no-duplicate-imports', es6),
39+
...replaceRule('no-empty-function', bestPractices),
40+
...replaceRule('no-extra-parens', errors),
41+
...replaceRule('no-extra-semi', errors),
42+
...replaceRule('no-implied-eval', bestPractices),
43+
...replaceRule('no-invalid-this', bestPractices),
44+
...replaceRule('no-loop-func', bestPractices),
45+
...replaceRule('no-loss-of-precision', bestPractices),
46+
...replaceRule('no-magic-numbers', bestPractices),
47+
...replaceRule('no-redeclare', bestPractices),
48+
...replaceRule('no-shadow', variables),
49+
...replaceRule('no-throw-literal', bestPractices),
50+
...replaceRule('no-unused-expressions', bestPractices),
51+
...replaceRule('no-unused-vars', variables),
52+
...replaceRule('no-use-before-define', variables),
53+
...replaceRule('no-useless-constructor', es6),
54+
...replaceRule('quotes', styles),
55+
...replaceRule('require-await', styles),
56+
...replaceRule('return-await', styles),
57+
...replaceRule('semi', styles),
58+
...replaceRule('space-before-function-paren', styles),
59+
...replaceRule('space-infix-ops', styles),
60+
1261
// Require that member overloads be consecutive (adjacent-overload-signatures from TSLint)
1362
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/adjacent-overload-signatures.md
1463
'@typescript-eslint/adjacent-overload-signatures': 2,
@@ -27,46 +76,47 @@ module.exports = {
2776

2877
// Enforces naming conventions for everything across a codebase (naming-convention)
2978
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/naming-convention.md
30-
'@typescript-eslint/naming-convention': [2,
31-
{
32-
"selector": "variable",
33-
"format": ["camelCase", "UPPER_CASE", "PascalCase"],
34-
"leadingUnderscore": "allow"
35-
},
79+
'@typescript-eslint/naming-convention': [
80+
2,
81+
{
82+
selector: 'variable',
83+
format: ['camelCase', 'UPPER_CASE', 'PascalCase'],
84+
leadingUnderscore: 'allow',
85+
},
86+
{
87+
selector: 'class',
88+
format: ['PascalCase'],
89+
},
3690
{
37-
"selector": "class",
38-
"format": ["PascalCase"]
91+
selector: 'enum',
92+
format: ['UPPER_CASE', 'PascalCase'],
3993
},
4094
{
41-
"selector": "enum",
42-
"format": ["UPPER_CASE", "PascalCase"]
95+
selector: 'typeAlias',
96+
format: ['PascalCase'],
4397
},
4498
{
45-
"selector": "typeAlias",
46-
"format": ["PascalCase"]
99+
selector: 'interface',
100+
format: ['PascalCase'],
101+
prefix: ['I'],
47102
},
48103
{
49-
"selector": "interface",
50-
"format": ["PascalCase"],
51-
"prefix": ["I"]
52-
},
53-
{
54-
"selector": "method",
55-
"modifiers": ["private"],
56-
"format": ["camelCase"],
57-
"leadingUnderscore": "require"
58-
},
59-
{
60-
"selector": "property",
61-
"modifiers": ["private"],
62-
"format": ["camelCase"],
63-
"leadingUnderscore": "require"
64-
},
65-
{
66-
"selector": "typeParameter",
67-
"format": ["PascalCase"],
68-
"prefix": ["T"]
69-
},
104+
selector: 'method',
105+
modifiers: ['private'],
106+
format: ['camelCase'],
107+
leadingUnderscore: 'require',
108+
},
109+
{
110+
selector: 'property',
111+
modifiers: ['private'],
112+
format: ['camelCase'],
113+
leadingUnderscore: 'require',
114+
},
115+
{
116+
selector: 'typeParameter',
117+
format: ['PascalCase'],
118+
prefix: ['T'],
119+
},
70120
],
71121

72122
// Require explicit return types on functions and class methods (explicit-function-return-type)
@@ -91,7 +141,10 @@ module.exports = {
91141

92142
// Enforces consistent usage of type assertions. (consistent-type-assertions)
93143
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/consistent-type-assertions.md
94-
'@typescript-eslint/consistent-type-assertions': [2, { assertionStyle: 'as', objectLiteralTypeAssertions: 'allow-as-parameter' }],
144+
'@typescript-eslint/consistent-type-assertions': [
145+
2,
146+
{ assertionStyle: 'as', objectLiteralTypeAssertions: 'allow-as-parameter' },
147+
],
95148

96149
// Disallow generic Array constructors (no-array-constructor)
97150
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-array-constructor.md
@@ -144,7 +197,7 @@ module.exports = {
144197

145198
// Sets preference level for triple slash directives versus ES6-style import declarations.
146199
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/triple-slash-reference.md
147-
'@typescript-eslint/triple-slash-reference': [2, { 'path': 'always', 'types': 'prefer-import', 'lib': 'always' }],
200+
'@typescript-eslint/triple-slash-reference': [2, { path: 'always', types: 'prefer-import', lib: 'always' }],
148201

149202
// Disallow the use of type aliases (no-type-alias)
150203
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/no-type-alias.md
@@ -201,6 +254,5 @@ module.exports = {
201254
// Warns for any two overloads that could be unified into one by using a union or an optional/rest parameter.
202255
// https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/unified-signatures.md
203256
'@typescript-eslint/unified-signatures': 2,
204-
205257
},
206258
};
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
2+
enum States {
3+
Prepare = 'state-a-gondel--prepare',
4+
Motion = 'state-a-gondel--motion',
5+
}
6+
7+
export class Gondel {
8+
9+
private _ctx = document.getElementById('root');
10+
11+
private _handleMouseOver() {
12+
if (!this._ctx) {
13+
return;
14+
}
15+
this._ctx.classList.add(States.Prepare);
16+
}
17+
private _handleMouseOut() {
18+
if (!this._ctx) {
19+
return;
20+
}
21+
this._ctx.classList.remove(States.Prepare);
22+
}
23+
private _handleChange() {
24+
if (!this._ctx) {
25+
return;
26+
}
27+
this._ctx.classList.toggle(States.Motion);
28+
}
29+
}

test/typescript/rules/typescript/consistent-type-assertions.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/* eslint-disable @typescript-eslint/ban-types */
66
/* eslint no-console: 0*/
77
/* eslint no-trailing-spaces: 0*/
8-
/* eslint no-throw-literal: 0*/
8+
/* eslint @typescript-eslint/no-throw-literal: 0*/
99
/* eslint @typescript-eslint/no-unused-vars: 0*/
1010

1111
// <!START

test/typescript/rules/typescript/naming-convention.ts

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// DESCRIPTION = Enforces naming conventions for everything across a codebase (naming-convention)
22
// STATUS = 2
33

4-
/* eslint-disable no-shadow */
54
/* eslint no-console: 0*/
65
/* eslint @typescript-eslint/no-unused-vars: 0*/
76
/* eslint-disable @typescript-eslint/no-empty-interface */

test/typescript/rules/typescript/no-extraneous-class.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ConstructorOnly {
1616
*/
1717
// Good
1818
class ConstructorOnly {
19-
private _version: string = '1.1.0'
19+
private _version: string = '1.1.0';
2020
public constructor() {
2121
console.log(`constructor ${this._version}`);
2222
}

test/typescript/rules/typescript/no-misused-new.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/* eslint no-console: 0*/
55
/* eslint @typescript-eslint/no-unused-vars: 0*/
66
/* eslint @typescript-eslint/no-useless-constructor: 0*/
7-
/* eslint no-empty-function: 0*/
7+
/* eslint @typescript-eslint/no-empty-function: 0*/
88
/* eslint @typescript-eslint/no-extraneous-class: 0*/
99
/* eslint @typescript-eslint/prefer-function-type: 0*/
1010

test/typescript/rules/typescript/no-parameter-properties.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
/* eslint no-console: 0*/
55
/* eslint @typescript-eslint/no-unused-vars: 0*/
66
/* eslint @typescript-eslint/no-useless-constructor: 0*/
7-
/* eslint no-empty-function: 0*/
7+
/* eslint @typescript-eslint/no-empty-function: 0*/
88
/* eslint @typescript-eslint/explicit-member-accessibility: 0*/
99
/* eslint @typescript-eslint/no-extraneous-class: 0*/
1010

0 commit comments

Comments
 (0)