@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.
@@ -1,84 +1,51 @@
1
- const alwaysMultiline = "always-multiline";
1
+ const maxHadoukenDepth = 3;
2
+ const maxStatements = 12;
2
3
 
3
- module.exports = {
4
+ export default {
4
5
  rules: {
5
- "semi": [ "error", "always" ], // Força usar ponto-virgula ;
6
- "lines-between-class-members": [ "error", "always" ], // Força linha em branco entre props classe e funções
7
- "no-unused-vars": [ "error", {
8
- "vars": "all",
9
- "args": "after-used",
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
- before: false,
20
- after: true,
13
+ vars: "all",
14
+ args: "after-used",
15
+ caughtErrors: "all",
16
+ ignoreRestSiblings: true,
17
+ varsIgnorePattern: "^_",
18
+ argsIgnorePattern: "^_",
21
19
  },
22
20
  ],
23
- "comma-dangle": [ "error", {
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
- { "enforceForLogicalOperands": true },
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
- "operator-linebreak": [
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
- "^(err|error|\\w+Error|\\w+Exception|exception)$",
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
- "brace-style": [ "error" ], // Força formatação {}
138
- "comma-style": [ "error", "last" ], // Separa variável por virgula alinhando a direita
139
- "key-spacing": [
140
- "error",
141
- {
142
- beforeColon: false,
143
- afterColon: true,
144
- },
145
- ], // Espaçamento propriedade objects
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
- "name": "exception",
172
- "ignore": [
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": [ "error", {
229
- "ignore": [
230
- "\\.env$",
231
- ".env.*",
232
- "^Arr$",
233
- "^Num$",
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": [ "error", {
247
- "min": 3,
248
- "exceptions": [ "i", "fs", "os", "id", "ip" ],
249
- // eslint-disable-next-line no-template-curly-in-string
250
- "exceptionPatterns": [ "^\\${1,2}[a-z]?$" ],
251
- } ], // Tamanho mínimo das variáveis
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", { "max": 3 } ], // Tamanho máximo do Hadouken
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
- "func": 4,
258
- "constructor": 8,
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-symbol": [ "error" ], // Use apenas Symbol()
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": 10 } ], // Complexidade código
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
- "error",
281
- { "enforceForSwitchCase": true, "enforceForIndexOf": true },
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": [ "error", {
291
- "max": 20,
292
- "ignoreTypeImports": true,
293
- } ], // Máximo de 25 dependências
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", { "commonjs": true } ], // Não volte pasta desnecessária import
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
- "devDependencies": [
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
- "optionalDependencies": true,
333
- "peerDependencies": true,
334
- "bundledDependencies": true,
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
- "caseInsensitive": true,
342
- "order": "asc",
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", { "ignoreUsedVariables": true } ], // Prefira Export From
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
- "object-curly-newline": [
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
- "sonar/future-reserved-words": [ "error" ], // Palavras reservadas futuras bloqueadas
458
- "sonar/arguments-usage": [ "error" ], // Evite protótipo Array.prototype.slice
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/prefer-inline-type-import": [ "error" ], // Prefira type inline
471
- "antfu/named-tuple-spacing": [ "error" ], // Solicita espaço depois do : no Typescript types
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
- "@stylistic/plus/type-generic-spacing": [ "error" ], // De type Foo<T,K> para type Foo<T, K>
474
- "@stylistic/plus/type-named-tuple-spacing": [ "error" ], // De [i? :number] para [i?: number]
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
  };
@@ -0,0 +1,6 @@
1
+ export default {
2
+ rules: {
3
+ "import/default": [ "error" ], // Import default
4
+ // "import/namespace": [ "error" ], // Import namespace errors // ? slower
5
+ },
6
+ };
@@ -1,8 +1,11 @@
1
- module.exports = {
1
+ export default {
2
2
  rules: {
3
- "spaced-comment": [ "error", "always", {
4
- exceptions: [ "-", "+" ],
5
- } ], // Força espaço apos do // comentário
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": [ "error", {
14
- definedTags: [
15
- "task", // Create @task [name](LINK)
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": [ "error", "any", {
25
- startLines: 1,
26
- endLines: 0,
27
- } ], // Requer linha em branco apos a descrição
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
+ };