-
Notifications
You must be signed in to change notification settings - Fork 0
/
.eslintrc.js
111 lines (111 loc) · 2.9 KB
/
.eslintrc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
module.exports = {
env: {
es2021: true,
node: true,
},
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:boundaries/recommended"],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: 12,
sourceType: "module",
},
plugins: ["@typescript-eslint", "boundaries"],
settings: {
"import/resolver": {
typescript: {
alwaysTryTypes: true,
},
},
"extends": ["plugin:boundaries/recommended"],
"boundaries/ignore": ["**/tests/"],
"boundaries/elements": [
{
"type": "controllers",
"pattern": "src/controllers"
},
{
"type": "services",
"pattern": "src/services",
},
{
"type": "middlewares",
"pattern": "src/middlewares",
},
{
"type": "repositories",
"pattern": "src/repositories",
},
{
"type": "routers",
"pattern": "src/routers",
},
{
"type": "config",
"pattern": "src/config",
}
]
},
rules: {
indent: ["error", 2],
quotes: ["error", "double"],
semi: ["error", "always"],
"@typescript-eslint/explicit-module-boundary-types": "off",
"comma-spacing": ["error", { before: false, after: true }],
"semi-spacing": ["error", { before: false, after: true }],
"object-curly-spacing": ["error", "always"],
"key-spacing": ["error", { beforeColon: false }],
"padded-blocks": ["error", "never"],
"no-multiple-empty-lines": ["error", { max: 1 }],
"lines-between-class-members": ["error", "always", { exceptAfterSingleLine: true }],
"space-before-function-paren": [
"error",
{
anonymous: "never",
named: "never",
asyncArrow: "always",
},
],
"space-before-blocks": ["error", "always"],
"eol-last": ["error", "always"],
"@typescript-eslint/naming-convention": [
"error",
{
selector: "interface",
format: ["PascalCase"],
custom: {
regex: "^I[A-Z]",
match: false,
},
},
],
"@typescript-eslint/type-annotation-spacing": ["error", { after: true, before: false }],
"arrow-spacing": ["error", { before: true, after: true }],
"no-console": "warn",
"boundaries/element-types": [2, {
"default": "disallow",
"message": "${file.type} não podem importar ${dependency.type}",
"rules": [
{
"from": ["controllers"],
"allow": ["services", "middlewares"],
},
{
"from": ["middlewares"],
"allow": ["services", "controllers", "config"],
},
{
"from": ["services"],
"allow": ["repositories"],
},
{
"from": ["routers"],
"allow": ["controllers", "middlewares"],
},
{
"from": ["repositories"],
"allow": ["config"],
},
]
}]
}
};