@odg/eslint-config 2.0.4 → 3.0.1
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/README.md +451 -22
- package/index.mjs +463 -0
- package/package.json +37 -32
- package/rules/any/base.mjs +15 -0
- package/rules/global/base.mjs +409 -0
- package/rules/global/{errors.js → errors.mjs} +27 -18
- package/rules/global/possible-errors.mjs +85 -0
- package/rules/global/security.mjs +82 -0
- package/rules/ini/{base.js → base.mjs} +26 -15
- package/rules/javascript/{best-practices.js → best-practices.mjs} +124 -217
- package/rules/javascript/errors.mjs +6 -0
- package/rules/javascript/{js-documentation.js → js-documentation.mjs} +28 -13
- package/rules/javascript/performance.mjs +9 -0
- package/rules/json/base.mjs +60 -0
- package/rules/typescript/{best-practices.js → best-practices.mjs} +60 -180
- package/rules/typescript/{errors.js → errors.mjs} +17 -10
- package/rules/typescript/{possible-errors.js → possible-errors.mjs} +15 -10
- package/rules/typescript/{security.js → security.mjs} +1 -1
- package/rules/typescript/tests.mjs +31 -0
- package/rules/yaml/{base.js → base.mjs} +11 -8
- package/rules/yaml/{github.js → github.mjs} +1 -1
- package/index.js +0 -376
- package/rules/any/base.js +0 -11
- package/rules/global/base.js +0 -148
- package/rules/global/possible-errors.js +0 -74
- package/rules/global/security.js +0 -77
- package/rules/javascript/errors.js +0 -6
- package/rules/javascript/performance.js +0 -6
- package/rules/json/base.js +0 -27
- package/rules/typescript/tests.js +0 -16
|
@@ -1,84 +1,51 @@
|
|
|
1
|
-
const
|
|
1
|
+
const maxHadoukenDepth = 3;
|
|
2
|
+
const maxStatements = 12;
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
export default {
|
|
4
5
|
rules: {
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
"caughtErrors": "all",
|
|
11
|
-
"ignoreRestSiblings": true,
|
|
12
|
-
"varsIgnorePattern": "^_",
|
|
13
|
-
"argsIgnorePattern": "^_",
|
|
14
|
-
} ],
|
|
15
|
-
"default-param-last": [ "error" ],
|
|
16
|
-
"comma-spacing": [
|
|
6
|
+
"no-unexpected-multiline": [ "error" ], // Desabilita multiline possíveis erros operadores ;
|
|
7
|
+
"no-cond-assign": [ "error" ], // Não atribua variável na condição do IF
|
|
8
|
+
"object-shorthand": [ "error" ], // Não permite labels não usadas
|
|
9
|
+
"no-unused-labels": [ "error" ], // Não permite labels não usadas
|
|
10
|
+
"no-unused-vars": [
|
|
17
11
|
"error",
|
|
18
12
|
{
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
vars: "all",
|
|
14
|
+
args: "after-used",
|
|
15
|
+
caughtErrors: "all",
|
|
16
|
+
ignoreRestSiblings: true,
|
|
17
|
+
varsIgnorePattern: "^_",
|
|
18
|
+
argsIgnorePattern: "^_",
|
|
21
19
|
},
|
|
22
20
|
],
|
|
23
|
-
"
|
|
24
|
-
arrays: alwaysMultiline,
|
|
25
|
-
objects: alwaysMultiline,
|
|
26
|
-
imports: alwaysMultiline,
|
|
27
|
-
exports: alwaysMultiline,
|
|
28
|
-
functions: alwaysMultiline,
|
|
29
|
-
} ], // Virgula no final de tudo
|
|
21
|
+
"default-param-last": [ "error" ],
|
|
30
22
|
"no-array-constructor": [ "error" ], // Não permite usar new Array()
|
|
31
23
|
"no-throw-literal": [ "error" ], // Não permite throw "string" ou diferente de classe
|
|
32
24
|
"no-empty-function": [ "error" ], // Não permite funções vazias
|
|
33
25
|
"no-duplicate-imports": [ "error" ], // Bloqueia import duplicado
|
|
34
26
|
"import/no-duplicates": [ "error", { "prefer-inline": true } ], // Bloqueia import duplicado
|
|
35
27
|
"prefer-const": [ "error" ], // Preferir constantes
|
|
36
|
-
"generator-star-spacing": [ "error", { before: true, after: false } ], // Espaço Funções Yield;
|
|
37
28
|
"no-unsafe-optional-chaining": [
|
|
38
29
|
"error",
|
|
39
30
|
{ disallowArithmeticOperators: true },
|
|
40
31
|
], // Protege de optional que pode gerar errors
|
|
41
32
|
"camelcase": [ "error" ], // Força camelCase
|
|
42
|
-
"padded-blocks": [ "error", {
|
|
43
|
-
classes: "always",
|
|
44
|
-
blocks: "never",
|
|
45
|
-
switches: "never",
|
|
46
|
-
} ], // Força não usar blocos com espaços
|
|
47
33
|
"no-multi-assign": [ "error" ], // Força não usar atribuição múltipla
|
|
48
|
-
"keyword-spacing": [ "error", {
|
|
49
|
-
before: true,
|
|
50
|
-
after: true,
|
|
51
|
-
} ], // Requer espaço apos try {}
|
|
52
|
-
"space-before-blocks": [ "error" ], // Requer espaço antes das chaves
|
|
53
|
-
"space-unary-ops": [
|
|
54
|
-
"error", {
|
|
55
|
-
words: true, // Espaço apos Await e palavras chaves
|
|
56
|
-
nonwords: false, // Força nao ter espaço antes de operadores unários !, -, +
|
|
57
|
-
overrides: {
|
|
58
|
-
"new": false,
|
|
59
|
-
"++": false, // Nao permite espaço no ++
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
],
|
|
63
|
-
"space-in-parens": [ "error", "never" ], // Não permite espaço entre parenteses
|
|
64
|
-
"no-multi-spaces": [ "error" ], // Nao permite vários espaços if( i )
|
|
65
|
-
"computed-property-spacing": [ "error", "never" ], // Desliga espaço ao recuperar item $a[ 'I' ] ou $a[ ] = 12;
|
|
66
34
|
"prefer-arrow-callback": [ "error" ], // Força arrow function
|
|
67
35
|
"arrow-body-style": [ "error", "as-needed" ], // Força arrow function sem body
|
|
68
36
|
"no-empty": [ "error" ], // Não permite blocos vazios (if, while, for, function, etc)
|
|
69
37
|
"newline-before-return": [ "error" ], // Força retorno de função com \n antes
|
|
70
|
-
"multiline-comment-style": [ "error", "starred-block" ], // Força /* comentário */ ao invés de // varias vezes
|
|
71
38
|
"no-unreachable": [ "error" ], // Não permite unreachable code
|
|
72
39
|
"no-multi-str": [ "error" ], // Não quebre linha dentro de uma string
|
|
73
40
|
"consistent-this": [ "error", "that" ], // Não permite this em locais inconsistente.
|
|
74
41
|
"dot-notation": [ "error" ], // Força usar dot em objeto em vez de object["key"]
|
|
75
|
-
"no-whitespace-before-property": [ "error" ], // Não permite espaço antes de property
|
|
76
42
|
"no-extra-boolean-cast": [
|
|
77
43
|
"error",
|
|
78
|
-
{
|
|
44
|
+
{ enforceForLogicalOperands: true },
|
|
79
45
|
], // Não permite cast de boolean extra !!!
|
|
80
46
|
"no-constant-condition": [ "error" ], // Não permite condições constantes if (true)
|
|
81
47
|
"no-debugger": [ "error" ], // Não permite usar debugger
|
|
48
|
+
"no-console": [ "error" ], // Não permite usar console use https://github.com/ODGodinho/ODGLog
|
|
82
49
|
"no-duplicate-case": [ "error" ], // Não permite duplicar case em switch
|
|
83
50
|
"no-empty-character-class": [ "error" ], // Não permite classe de caracteres vazia em regex
|
|
84
51
|
"no-ex-assign": [ "error" ], // Não permite atribuição de exceção
|
|
@@ -114,66 +81,35 @@ module.exports = {
|
|
|
114
81
|
"promise/no-return-in-finally": [ "error" ], // No Return in finally
|
|
115
82
|
"promise/valid-params": [ "error" ], // Valida Parâmetros da promise
|
|
116
83
|
"import/newline-after-import": [ "error", { count: 1 } ], // Linhas em branco apos o import
|
|
117
|
-
|
|
118
|
-
"error",
|
|
119
|
-
"before",
|
|
120
|
-
{ overrides: { "+=": "none", "=": "none" } },
|
|
121
|
-
], // Sem quebra de linha em operadores
|
|
84
|
+
|
|
122
85
|
"array-callback-return": [ "error" ], // Força returno em array callback
|
|
123
86
|
"space-infix-ops": [ "error" ], // Espaço em operadores
|
|
124
87
|
"curly": [ "off" ], // Utilize chaves em multi linhas
|
|
125
88
|
"handle-callback-err": [ "error" ], // Funções que recebem error deve ser tratado
|
|
126
89
|
"n/handle-callback-err": [
|
|
127
90
|
"error",
|
|
128
|
-
|
|
91
|
+
String.raw`^(err|error|\w+Error|\w+Exception|exception)$`,
|
|
129
92
|
], // Funções que recebem error deve ser tratado
|
|
130
93
|
"new-cap": [ "error", { newIsCap: true } ], // New require first Letter uppercase
|
|
131
94
|
"no-caller": [ "error" ], // Não permite usar callee
|
|
132
95
|
"no-script-url": [ "error" ], // Não permite usar script url
|
|
133
96
|
"func-names": [ "error", "as-needed" ], // Nome de funções somente quando necessário
|
|
134
97
|
"no-param-reassign": [ "error" ], // Não permite reatribuição de parâmetros
|
|
135
|
-
"quote-props": [ "error", "consistent" ], // Aspas no objeto somente se algum for necessário
|
|
136
98
|
"block-scoped-var": [ "error" ], // INFO: Bloqueia Vars for escopo, mas ainda sim prefira Lets
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
"object-property-newline": [ "error", {
|
|
147
|
-
allowAllPropertiesOnSameLine: true,
|
|
148
|
-
} ], // Quebre todos objetos ou nenhum
|
|
149
|
-
"max-statements-per-line": [ "error", { "max": 1 } ], // Máximo operação em 1 linha
|
|
150
|
-
"arrow-parens": [ "error", "always" ], // Arrow Function sempre com parentese
|
|
151
|
-
"padding-line-between-statements": [
|
|
152
|
-
"error",
|
|
153
|
-
{ "blankLine": "always", "prev": "*", "next": "export" }, // Uma linha em branco antes do export
|
|
154
|
-
{ "blankLine": "always", "prev": "export", "next": "*" }, // Uma linha em branco apos do export
|
|
155
|
-
{ "blankLine": "always", "prev": "*", "next": "class" }, // Uma linha em branco antes da classe
|
|
156
|
-
{ "blankLine": "always", "prev": "class", "next": "*" }, // Uma linha em branco Apos da classe
|
|
157
|
-
{ "blankLine": "always", "prev": "multiline-block-like", "next": "*" },
|
|
158
|
-
],
|
|
159
|
-
"filenames/match-regex": [
|
|
160
|
-
"error",
|
|
161
|
-
"^[a-zA-Z][a-zA-Z0-9_-]+((\\.[a-z]+)?)+$",
|
|
162
|
-
], // Nome de arquivo deve ser alfanumérico
|
|
163
|
-
"filenames/match-exported": [
|
|
164
|
-
"error",
|
|
165
|
-
"^[a-zA-Z0-9_-]+$",
|
|
166
|
-
"\\.[a-z]+$",
|
|
167
|
-
], // Nome do arquivo igual export default
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
* "filenames/match-exported": [
|
|
102
|
+
* "error",
|
|
103
|
+
* "^[a-zA-Z0-9_-]+$",
|
|
104
|
+
* "\\.[a-z]+$",
|
|
105
|
+
* ], // Nome do arquivo igual export default
|
|
106
|
+
*/
|
|
107
|
+
|
|
168
108
|
"unicorn/catch-error-name": [
|
|
169
109
|
"error",
|
|
170
110
|
{
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
"^error\\w*$",
|
|
174
|
-
"^error$",
|
|
175
|
-
"^exception\\w*$",
|
|
176
|
-
],
|
|
111
|
+
name: "exception",
|
|
112
|
+
ignore: [ String.raw`^error\w*$`, "^error$", String.raw`^exception\w*$` ],
|
|
177
113
|
},
|
|
178
114
|
], // Chame todos os catch erros de exception
|
|
179
115
|
"unicorn/consistent-destructuring": [ "error" ], // Usa destructuring ou usa acesso direto sem alternar
|
|
@@ -225,40 +161,68 @@ module.exports = {
|
|
|
225
161
|
"unicorn/consistent-empty-array-spread": [ "error" ], // ... no ternário deve ser 2 dados tipos iguais
|
|
226
162
|
"unicorn/no-negation-in-equality-check": [ "error" ], // Evite if(!a !== b) evite isso
|
|
227
163
|
"unicorn/no-length-as-slice-end": [ "error" ], // Não coloque fim no slice igual ao length
|
|
228
|
-
"unicorn/prevent-abbreviations": [
|
|
229
|
-
"
|
|
230
|
-
|
|
231
|
-
".env.*",
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
"^Str$",
|
|
235
|
-
],
|
|
236
|
-
} ], // Prefira ternário em vez de if else
|
|
164
|
+
"unicorn/prevent-abbreviations": [
|
|
165
|
+
"error",
|
|
166
|
+
{
|
|
167
|
+
ignore: [ String.raw`\.env$`, ".env.*", "^Arr$", "^Num$", "^Str$" ],
|
|
168
|
+
},
|
|
169
|
+
], // Prefira ternário em vez de if else
|
|
237
170
|
"unicorn/relative-url-style": [ "error" ], // Não coloque ./ em new URL
|
|
238
171
|
"unicorn/require-array-join-separator": [ "error" ], // Sempre passe parâmetro Array#join
|
|
239
172
|
"unicorn/require-number-to-fixed-digits-argument": [ "error" ], // Passe quantidade em ToFixed
|
|
240
173
|
"unicorn/template-indent": [ "error" ], // Indenter em template string
|
|
241
174
|
"unicorn/no-nested-ternary": [ "error" ], // Ternário ilegível
|
|
175
|
+
"unicorn/prefer-math-min-max": [ "error" ], // Use Math.Min e Max ao invés de ternário
|
|
176
|
+
"unicorn/prefer-import-meta-properties": [ "error" ], // Pega o nome ou dirname do arquivo de forma nativa
|
|
177
|
+
"unicorn/no-unnecessary-array-flat-depth": [ "error" ], // Não passe parâmetro no flat se for o default
|
|
178
|
+
"unicorn/prefer-class-fields": [ "error" ], // Prefira inicializar atributo na classe não construtor
|
|
179
|
+
"unicorn/prefer-classlist-toggle": [ "error" ], // Prefira class toggle ao invés de if-else
|
|
180
|
+
"unicorn/no-immediate-mutation": [ "error" ], // Não edite array logo em sequencia
|
|
181
|
+
"unicorn/no-useless-collection-argument": [ "error" ], // Não passe parâmetro array vazio no set
|
|
182
|
+
"unicorn/prefer-response-static-json": [ "error" ], // Prefira Response.Json ao invés de stringify
|
|
183
|
+
"unicorn/expiring-todo-comments": [ "error" ], // Alertas em docs com TO-D + data
|
|
184
|
+
"unicorn/no-array-reverse": [ "error" ], // Prefira toReversed ao invés array.reverse() ao salvar em variável
|
|
185
|
+
"unicorn/no-array-sort": [ "error" ], // Prefira toSort ao invés array.sort() ao salvar em variável
|
|
186
|
+
"unicorn/no-named-default": [ "error" ], // Não import com name default
|
|
187
|
+
"unicorn/no-unnecessary-slice-end": [ "error" ], // Não coloque end slice desnecessário
|
|
188
|
+
"unicorn/no-zero-fractions": [ "error" ], // Não use decimal se terminar .0
|
|
189
|
+
"unicorn/prefer-at": [ "error" ], // Use at acessar ultima posição
|
|
190
|
+
"unicorn/prefer-blob-reading-methods": [ "error" ], // Prefira BufferArray em blob
|
|
191
|
+
"unicorn/prefer-bigint-literals": [ "error" ], // Prefira BigInt literal ao invés de BigInt function
|
|
192
|
+
"unicorn/prefer-date-now": [ "error" ], // Prefira usar date.now() ao invés dos outros
|
|
193
|
+
"unicorn/prefer-dom-node-dataset": [ "error" ], // Prefira .dataset ao invés de .getAttribute(data-*)
|
|
194
|
+
"unicorn/prefer-modern-math-apis": [ "error" ], // Prefira Math api modernas
|
|
195
|
+
"unicorn/prefer-object-from-entries": [ "error" ], // Prefira Object entries ao invés de loop
|
|
196
|
+
"unicorn/prefer-reflect-apply": [ "error" ], // Prefira Reflect ao invés Function.prototype.apply
|
|
197
|
+
"unicorn/prefer-set-has": [ "error" ], // Prefira Set.has ao invés array.includes
|
|
198
|
+
"unicorn/prefer-set-size": [ "error" ], // Prefira Set.size ao invés array.length
|
|
199
|
+
"unicorn/prefer-single-call": [ "error" ], // Prefira class
|
|
200
|
+
"unicorn/require-module-specifiers": [ "error" ], // Não faça import vazio
|
|
201
|
+
"unicorn/throw-new-error": [ "error" ], // Faça um new na hora do throw
|
|
242
202
|
"no-shadow": [ "error" ], // Erro caso ja esteja declarado escopo a cima
|
|
243
203
|
"no-delete-var": [ "error" ], // Não delete variáveis
|
|
244
204
|
"no-lone-blocks": [ "error" ], // Não crie bloco desnecessários
|
|
245
205
|
"no-proto": [ "error" ], // Não use __proto__ depreciada desde ECMA 3.1
|
|
246
|
-
"id-length": [
|
|
247
|
-
"
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
206
|
+
"id-length": [
|
|
207
|
+
"error",
|
|
208
|
+
{
|
|
209
|
+
min: 3,
|
|
210
|
+
exceptions: [ "i", "fs", "os", "id", "ip" ],
|
|
211
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
212
|
+
exceptionPatterns: [ "^\\${1,2}[a-z]?$" ],
|
|
213
|
+
},
|
|
214
|
+
], // Tamanho mínimo das variáveis
|
|
252
215
|
"no-template-curly-in-string": [ "error" ], // Não faça templete string de forma incorreta
|
|
253
|
-
"max-depth": [ "error", {
|
|
216
|
+
"max-depth": [ "error", { max: maxHadoukenDepth } ], // Tamanho máximo do Hadouken
|
|
217
|
+
"max-nested-callbacks": [ "error", maxHadoukenDepth ], // Tamanho máximo do Hadouken callback
|
|
254
218
|
"better-max-params/better-max-params": [
|
|
255
219
|
"error",
|
|
256
220
|
{
|
|
257
|
-
|
|
258
|
-
|
|
221
|
+
func: 4,
|
|
222
|
+
constructor: 8,
|
|
259
223
|
},
|
|
260
224
|
],
|
|
261
|
-
"max-statements": [ "error" ], // Máximo atribuição em função
|
|
225
|
+
"max-statements": [ "error", maxStatements ], // Máximo atribuição em função
|
|
262
226
|
"operator-assignment": [ "error", "always" ], // Prefira atribuição curtas +=
|
|
263
227
|
"prefer-rest-params": [ "error" ], // Prefira ..args em vez de arguments
|
|
264
228
|
"symbol-description": [ "error" ], // Symbol deve ter descrição
|
|
@@ -268,35 +232,36 @@ module.exports = {
|
|
|
268
232
|
"prefer-exponentiation-operator": [ "error" ], // Prefira ** em vez de Math.pow
|
|
269
233
|
"prefer-object-spread": [ "error" ], // Prefira Desestruturar para concatenar objetos
|
|
270
234
|
"default-case-last": [ "error" ], // Default switch case por ultimo
|
|
271
|
-
"no-new-
|
|
235
|
+
"no-new-native-nonconstructor": [ "error" ], // Use apenas Symbol()
|
|
272
236
|
"accessor-pairs": [ "error" ], // Crie o get e set
|
|
273
237
|
"no-promise-executor-return": [ "error" ], // Não coloque um retorno em new Promise()
|
|
274
238
|
"no-nonoctal-decimal-escape": [ "error" ], // Não coloque scape em numero decimais
|
|
275
239
|
"prefer-destructuring": [ "error" ], // Prefira desestruturar array ao invés
|
|
276
|
-
"complexity": [ "error", { "max":
|
|
240
|
+
"complexity": [ "error", { "max": 15 } ], // Complexidade código
|
|
277
241
|
"func-style": [ "error", "declaration" ], // Declare function name() em vez de var = function()
|
|
278
242
|
"no-else-return": [ "error" ], // Não use else se tem retorno
|
|
279
|
-
"use-isnan": [
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
], // Use a função isNan
|
|
283
|
-
"prefer-regex-literals": [ "error", { "disallowRedundantWrapping": true } ], // Use a função isNan
|
|
243
|
+
"use-isnan": [ "error", { enforceForSwitchCase: true, enforceForIndexOf: true } ], // Use a função isNan
|
|
244
|
+
"n/no-deprecated-api": [ "error" ], // Não use API depreciada do NodeJS
|
|
245
|
+
"prefer-regex-literals": [ "error", { disallowRedundantWrapping: true } ], // Use a função isNan
|
|
284
246
|
"import/no-absolute-path": [ "error" ], // Não informa caminho absoluto
|
|
285
247
|
"import/no-webpack-loader-syntax": [ "error" ], // Bloqueia syntax webpack import
|
|
286
248
|
"import/no-named-as-default": [ "error" ],
|
|
287
249
|
"import/no-named-as-default-member": [ "error" ],
|
|
288
250
|
"import/no-mutable-exports": [ "error" ], // Não export var nem let
|
|
289
251
|
"import/no-amd": [ "error" ], // Não require, define array
|
|
290
|
-
"import/max-dependencies": [
|
|
291
|
-
"
|
|
292
|
-
|
|
293
|
-
|
|
252
|
+
"import/max-dependencies": [
|
|
253
|
+
"error",
|
|
254
|
+
{
|
|
255
|
+
max: 20,
|
|
256
|
+
ignoreTypeImports: true,
|
|
257
|
+
},
|
|
258
|
+
], // Máximo de 25 dependências
|
|
294
259
|
"import/no-import-module-exports": [ "error" ], // Import e export CommanJs bloqueado
|
|
295
|
-
"import/no-useless-path-segments": [ "error", {
|
|
260
|
+
"import/no-useless-path-segments": [ "error", { commonjs: true } ], // Não volte pasta desnecessária import
|
|
296
261
|
"import/no-extraneous-dependencies": [
|
|
297
262
|
"error",
|
|
298
263
|
{
|
|
299
|
-
|
|
264
|
+
devDependencies: [
|
|
300
265
|
"**/*.e2e-spec.*",
|
|
301
266
|
"**/*.e2e.*",
|
|
302
267
|
"**/*.spec.*",
|
|
@@ -329,36 +294,25 @@ module.exports = {
|
|
|
329
294
|
"electron",
|
|
330
295
|
"electron**",
|
|
331
296
|
],
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
297
|
+
optionalDependencies: true,
|
|
298
|
+
peerDependencies: true,
|
|
299
|
+
bundledDependencies: true,
|
|
335
300
|
},
|
|
336
301
|
], // Não dependa de pacotes em devDependencies
|
|
337
302
|
"import/order": [
|
|
338
303
|
"error",
|
|
339
304
|
{
|
|
340
305
|
"alphabetize": {
|
|
341
|
-
|
|
342
|
-
|
|
306
|
+
caseInsensitive: true,
|
|
307
|
+
order: "asc",
|
|
343
308
|
},
|
|
344
|
-
"groups": [
|
|
345
|
-
"builtin",
|
|
346
|
-
"external",
|
|
347
|
-
"internal",
|
|
348
|
-
"unknown",
|
|
349
|
-
"parent",
|
|
350
|
-
"sibling",
|
|
351
|
-
"index",
|
|
352
|
-
],
|
|
309
|
+
"groups": [ "builtin", "external", "internal", "unknown", "parent", "sibling", "index" ],
|
|
353
310
|
"newlines-between": "always",
|
|
354
311
|
},
|
|
355
312
|
], // Força essa ordem no import
|
|
356
|
-
"import/no-anonymous-default-export": [
|
|
357
|
-
"error",
|
|
358
|
-
{ "allowCallExpression": false },
|
|
359
|
-
],
|
|
313
|
+
"import/no-anonymous-default-export": [ "error", { allowCallExpression: false } ],
|
|
360
314
|
"import/exports-last": [ "error" ], // Export por ultimo
|
|
361
|
-
"import/no-deprecated": [ "error" ], // Não import deprecated
|
|
315
|
+
// "import/no-deprecated": [ "error" ], // Não import deprecated // ? slower
|
|
362
316
|
"import/no-empty-named-blocks": [ "error" ], // Não import bloco vazio
|
|
363
317
|
"import/first": [ "error" ], // Import por primeiro
|
|
364
318
|
"import/no-named-default": [ "error" ], // Não faça { default as NomeModulo }
|
|
@@ -379,68 +333,19 @@ module.exports = {
|
|
|
379
333
|
"unicorn/prefer-native-coercion-functions": [ "error" ], // Prefira função cast nativa
|
|
380
334
|
"unicorn/prefer-logical-operator-over-ternary": [ "error" ], // Mude "a ? a : b" para "a || b"
|
|
381
335
|
"unicorn/prefer-event-target": [ "error" ], // Use EventTarget no Lugar de EventEmitter
|
|
382
|
-
"unicorn/prefer-export-from": [ "error", {
|
|
336
|
+
"unicorn/prefer-export-from": [ "error", { ignoreUsedVariables: true } ], // Prefira Export From
|
|
337
|
+
"unicorn/prefer-string-raw": [ "error" ], // Use String.raw`` ao invés de scape no código
|
|
383
338
|
"array-func/from-map": [ "error" ], // Use .map invés do segundo parâmetro do From
|
|
384
339
|
"array-func/no-unnecessary-this-arg": [ "error" ], // Não passe parâmetro desnecessário
|
|
385
340
|
"array-func/avoid-reverse": [ "error" ], // Não passe parâmetro desnecessário
|
|
386
|
-
"sonar/bool-param-default": [ "error" ], // Param do tipo boolean deve ter um valor padrão e não optional
|
|
387
|
-
"sonar/call-argument-line": [ "error" ], // Chamada função anonima auto executável deve ter ;
|
|
388
|
-
"sonar/class-name": [ "error", { format: "^[A-Z][a-zA-Z0-9]*$" } ], // Convenção nome Classe
|
|
389
|
-
"sonar/class-prototype": [ "error" ], // No Prototype in class
|
|
390
|
-
"sonar/comma-or-logical-or-case": [ "error" ], // Switch Case logica invalida
|
|
391
|
-
"sonar/conditional-indentation": [ "error" ], // Formatação IF
|
|
392
|
-
"sonar/deprecation": [ "warn" ], // Alerta em funções depreciadas
|
|
393
|
-
"object-curly-spacing": [ "error", "always", { "arraysInObjects": true } ], // Espaço declarar objeto
|
|
394
|
-
"function-paren-newline": [ "error", "multiline-arguments" ], // Força formatação parentese quebre todos params
|
|
395
|
-
"function-call-argument-newline": [ "error", "consistent" ], // Força formatação parentese quebre todos params
|
|
396
341
|
"func-call-spacing": [ "error", "never" ],
|
|
397
|
-
"array-element-newline": [ "error", "consistent" ],
|
|
398
|
-
"wrap-iife": [ "error", "inside" ], // Coloque parentese em função auto excetuável
|
|
399
|
-
"template-tag-spacing": [ "error", "never" ], // Sem espaço em template " sql`` "
|
|
400
|
-
"template-curly-spacing": [ "error" ], // Não coloque espaço em template string
|
|
401
|
-
"rest-spread-spacing": [ "error", "never" ], // Não faça fun(... space)
|
|
402
|
-
"nonblock-statement-body-position": [ "error", "beside" ], // If sem chaves deve ser inline
|
|
403
|
-
"no-tabs": [ "error" ], // Não use tabs
|
|
404
|
-
"new-parens": [ "error" ], // New Sempre precisa ter parenteses
|
|
405
|
-
"multiline-ternary": [ "error", "always-multiline" ], // Força múltiplas linhas em ternários múltiplos
|
|
406
|
-
"lines-around-comment": [
|
|
407
|
-
"error",
|
|
408
|
-
{ "beforeLineComment": true, "allowBlockStart": true },
|
|
409
|
-
], // Linha em branco antes do comentário
|
|
410
342
|
"jsx-quotes": [ "error", "prefer-double" ], // Aspas duplas em jsx html
|
|
411
|
-
"implicit-arrow-linebreak": [ "error", "beside" ], // Não quebre arrow function
|
|
412
|
-
"arrow-spacing": [ "error", { "before": true, "after": true } ], // Espaço seta arrow function
|
|
413
343
|
"vars-on-top": [ "error" ], // Caso a regra de var seja desativa elas devem ficar no topo
|
|
414
344
|
"strict": [ "error" ], // Strict javascript top file
|
|
415
345
|
"no-shadow-restricted-names": [ "error" ], // Sem variável com palavra reservada
|
|
416
346
|
"logical-assignment-operators": [ "error", "always" ], // Faça ||= ao invés a = a || b
|
|
417
347
|
"no-with": [ "error" ], // Não use with
|
|
418
|
-
|
|
419
|
-
"error",
|
|
420
|
-
{
|
|
421
|
-
"ExportDeclaration": {
|
|
422
|
-
"consistent": true,
|
|
423
|
-
"minProperties": 4,
|
|
424
|
-
"multiline": true,
|
|
425
|
-
},
|
|
426
|
-
"ImportDeclaration": {
|
|
427
|
-
"consistent": true,
|
|
428
|
-
"minProperties": 4,
|
|
429
|
-
"multiline": true,
|
|
430
|
-
},
|
|
431
|
-
"ObjectExpression": {
|
|
432
|
-
"consistent": true,
|
|
433
|
-
"minProperties": 4,
|
|
434
|
-
"multiline": true,
|
|
435
|
-
},
|
|
436
|
-
"ObjectPattern": {
|
|
437
|
-
"consistent": true,
|
|
438
|
-
"minProperties": 4,
|
|
439
|
-
"multiline": true,
|
|
440
|
-
},
|
|
441
|
-
},
|
|
442
|
-
],
|
|
443
|
-
"no-mixed-spaces-and-tabs": [ "error" ],
|
|
348
|
+
|
|
444
349
|
"func-name-matching": [
|
|
445
350
|
"error",
|
|
446
351
|
{
|
|
@@ -449,28 +354,30 @@ module.exports = {
|
|
|
449
354
|
],
|
|
450
355
|
"no-new-wrappers": [ "error" ],
|
|
451
356
|
"no-misleading-character-class": [ "error" ],
|
|
452
|
-
"grouped-accessor-pairs": [
|
|
453
|
-
"error",
|
|
454
|
-
"getBeforeSet",
|
|
455
|
-
],
|
|
357
|
+
"grouped-accessor-pairs": [ "error", "getBeforeSet" ],
|
|
456
358
|
"no-sequences": [ "error" ], // Não faça a = (2, 4)
|
|
457
|
-
"
|
|
458
|
-
"
|
|
459
|
-
"sonar/inverted-assertion-arguments": [ "error" ], // Não inverta parâmetro no assert test
|
|
460
|
-
"sonar/max-union-size": [ "error", { max: 3 } ], // Max union types
|
|
461
|
-
"sonar/no-mime-sniff": [ "error" ], // Helmet segurança express
|
|
462
|
-
"sonar/no-mixed-content": [ "error" ], // Helmet segurança express
|
|
463
|
-
"sonar/no-redundant-optional": [ "error" ], // Não use ? e undefined
|
|
464
|
-
"sonar/prefer-type-guard": [ "error" ], // Força retorna is boolean
|
|
465
|
-
"sonar/production-debug": [ "error" ], // Não use debug em prod
|
|
466
|
-
"sonar/shorthand-property-grouping": [ "error" ], // Agrupe { a, b, c:1, d:2}
|
|
467
|
-
"sonar/unused-named-groups": [ "error" ], // Grupos não usados de regex
|
|
468
|
-
"antfu/generic-spacing": [ "error" ], // String<a,b> => String<a, b>
|
|
359
|
+
"antfu/consistent-chaining": [ "error" ], // Ou quebra todos os pontos ou nenhum arr.map().filter().flat() etc
|
|
360
|
+
"antfu/consistent-list-newline": [ "error" ], // Quebre todos ou nenhum item do object
|
|
469
361
|
"antfu/import-dedupe": [ "error" ], // Auto fix import duplicados
|
|
470
|
-
"antfu/
|
|
471
|
-
"antfu/
|
|
362
|
+
"antfu/indent-unindent": [ "error" ], // Ident template strings
|
|
363
|
+
"antfu/no-import-dist": [ "error" ], // Não importe a pasta dist
|
|
472
364
|
"antfu/no-import-node-modules-by-path": [ "error" ], // Não importe de dentro da node_modules,
|
|
473
|
-
|
|
474
|
-
"
|
|
365
|
+
|
|
366
|
+
"sonarjs/block-scoped-var": [ "error" ], // Bloqueia variáveis fora do escopo do bloco
|
|
367
|
+
"sonarjs/deprecation": [ "warn" ], // Não use função depreciadas
|
|
368
|
+
"sonarjs/max-union-size": [ "error" ], // Não une mais de 3 tipos sem criar um type
|
|
369
|
+
"sonarjs/no-async-constructor": [ "error" ], // Não coloque coisas async no construtor
|
|
370
|
+
"sonarjs/no-collapsible-if": [ "error" ], // Unir os if desnecessários
|
|
371
|
+
"sonarjs/no-nested-functions": [ "error" ], // Sem Hadouken de função
|
|
372
|
+
"sonarjs/no-parameter-reassignment": [ "error" ], // Não reatribua um parâmetro sem usar
|
|
373
|
+
"sonarjs/no-redundant-jump": [ "error" ], // Não coloque return desnecessário na função
|
|
374
|
+
"sonarjs/no-redundant-optional": [ "error" ], // Não Coloque optional e undefined juntos
|
|
375
|
+
"sonarjs/prefer-promise-shorthand": [ "error" ], // Promise.resolve ao invés new Promise resolve
|
|
376
|
+
"sonarjs/public-static-readonly": [ "error" ], // Use Readonly no static
|
|
377
|
+
"sonarjs/redundant-type-aliases": [ "error" ], // Não crie um ja existe
|
|
378
|
+
"sonarjs/todo-tag": [ "warn" ], // Doc TO-D devem ser resolvidos alerta
|
|
379
|
+
"sonarjs/updated-loop-counter": [ "error" ], // Não reatribua variável do loop
|
|
380
|
+
"sonarjs/use-type-alias": [ "error" ], // Crie um alias se repetir muita concatenação de tipo
|
|
381
|
+
"sonarjs/void-use": [ "error" ], // Não use void em lugar malucos
|
|
475
382
|
},
|
|
476
383
|
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
export default {
|
|
2
2
|
rules: {
|
|
3
|
-
"
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
"jsdoc/require-description": [ "error" ], // Require Description
|
|
4
|
+
"jsdoc/require-next-type": [ "error" ], // Doc @next precisa Type
|
|
5
|
+
"jsdoc/require-next-description": [ "error" ], // Doc @next precisa descrição
|
|
6
|
+
"jsdoc/check-template-names": [ "error" ], // Validate @template names
|
|
7
|
+
"jsdoc/escape-inline-tags": [ "error" ], // Adicione scape para tags inline {@link}
|
|
8
|
+
"jsdoc/informative-docs": [ "error" ], // A Doc tem q ter mais nomes q o nome da variável
|
|
6
9
|
"jsdoc/check-access": [ "error" ],
|
|
7
10
|
"jsdoc/check-alignment": [ "error" ], // Não desalinhe o * da docblock
|
|
8
11
|
"jsdoc/check-indentation": [ "error" ], // Força formatação na docblock
|
|
@@ -10,21 +13,30 @@ module.exports = {
|
|
|
10
13
|
"jsdoc/check-property-names": [ "error" ], // Valida nome de propriedade
|
|
11
14
|
"jsdoc/check-param-names": [ "error" ], // Verifica se o nome do parâmetro e ordem
|
|
12
15
|
"jsdoc/check-syntax": [ "error" ], // Valida Sintaxe do docblock
|
|
13
|
-
"jsdoc/check-tag-names": [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
"jsdoc/check-tag-names": [
|
|
17
|
+
"error",
|
|
18
|
+
{
|
|
19
|
+
definedTags: [
|
|
20
|
+
|
|
21
|
+
// Create @task [name](LINK)
|
|
22
|
+
"task",
|
|
23
|
+
],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
18
26
|
"jsdoc/check-types": [ "error" ], // Valida se é um Tipo valido
|
|
19
27
|
"jsdoc/check-values": [ "error" ], // Devemos Padronizar o modelo
|
|
20
28
|
"jsdoc/valid-types": [ "error" ], // Valida Padrão DocBlock
|
|
21
29
|
"jsdoc/empty-tags": [ "error" ], // Não devem existir tags vazias
|
|
22
30
|
"jsdoc/implements-on-classes": [ "error" ],
|
|
23
31
|
"jsdoc/multiline-blocks": [ "error" ], // Valida mútilos blocos
|
|
24
|
-
"jsdoc/tag-lines": [
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
"jsdoc/tag-lines": [
|
|
33
|
+
"error",
|
|
34
|
+
"any",
|
|
35
|
+
{
|
|
36
|
+
startLines: 1,
|
|
37
|
+
endLines: 0,
|
|
38
|
+
},
|
|
39
|
+
], // Requer linha em branco apos a descrição
|
|
28
40
|
"jsdoc/no-bad-blocks": [ "error" ], // DockBlock deve ter apenas 2 asteriscos
|
|
29
41
|
"jsdoc/no-multi-asterisks": [
|
|
30
42
|
"error",
|
|
@@ -45,9 +57,12 @@ module.exports = {
|
|
|
45
57
|
"jsdoc/require-returns": [ "error" ],
|
|
46
58
|
"jsdoc/require-returns-check": [ "error" ],
|
|
47
59
|
"jsdoc/require-returns-type": [ "error" ],
|
|
60
|
+
"jsdoc/require-throws-description": [ "error" ],
|
|
61
|
+
"jsdoc/require-throws-type": [ "error" ],
|
|
48
62
|
"jsdoc/require-throws": [ "error" ],
|
|
49
63
|
"jsdoc/require-yields": [ "error" ],
|
|
50
64
|
"jsdoc/require-yields-check": [ "error" ],
|
|
65
|
+
"jsdoc/require-yields-type": [ "error" ],
|
|
51
66
|
"jsdoc/no-blank-block-descriptions": [ "error" ], // Não deixe descrição de docblock vazias
|
|
52
67
|
"jsdoc/sort-tags": [
|
|
53
68
|
"error",
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
rules: {
|
|
3
|
+
"no-alert": [ "error" ], // Não use alert prompt etc
|
|
4
|
+
"no-loop-func": [ "error" ], // Não declare funções em loop
|
|
5
|
+
"n/no-sync": [ "error" ], // N use funções SYNC
|
|
6
|
+
"n/prefer-promises/dns": [ "error" ], // Use promise no DNS
|
|
7
|
+
"n/prefer-promises/fs": [ "error" ], // Use promise no FS
|
|
8
|
+
},
|
|
9
|
+
};
|