@odg/eslint-config 0.8.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/.eslintrc +11 -0
- package/.vscode/settings.json +13 -0
- package/README.md +13539 -0
- package/index.js +137 -0
- package/package.json +43 -0
- package/public/images/quality.png +0 -0
- package/rules/javascript/best-practices.js +423 -0
- package/rules/javascript/errors.js +50 -0
- package/rules/javascript/js-documentation.js +50 -0
- package/rules/javascript/performance.js +5 -0
- package/rules/javascript/possible-errors.js +24 -0
- package/rules/javascript/security.js +34 -0
- package/rules/typescript/best-practices.js +104 -0
- package/rules/typescript/errors.js +10 -0
- package/rules/typescript/tests.js +10 -0
- package/tsconfig.json +33 -0
package/index.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
plugins: [
|
|
3
|
+
"@typescript-eslint",
|
|
4
|
+
"import",
|
|
5
|
+
"jsdoc",
|
|
6
|
+
"promise",
|
|
7
|
+
"regexp",
|
|
8
|
+
"filenames",
|
|
9
|
+
"security",
|
|
10
|
+
"unicorn",
|
|
11
|
+
"html",
|
|
12
|
+
"n",
|
|
13
|
+
"array-func",
|
|
14
|
+
"no-constructor-bind",
|
|
15
|
+
"anti-trojan-source",
|
|
16
|
+
"sonar",
|
|
17
|
+
],
|
|
18
|
+
env: {
|
|
19
|
+
node: true,
|
|
20
|
+
browser: true,
|
|
21
|
+
},
|
|
22
|
+
extends: [
|
|
23
|
+
"./rules/javascript/best-practices.js",
|
|
24
|
+
"./rules/javascript/js-documentation.js",
|
|
25
|
+
"./rules/javascript/errors.js",
|
|
26
|
+
"./rules/javascript/security.js",
|
|
27
|
+
"./rules/javascript/performance.js",
|
|
28
|
+
"./rules/javascript/possible-errors.js",
|
|
29
|
+
],
|
|
30
|
+
ignorePatterns: [
|
|
31
|
+
"!.*",
|
|
32
|
+
|
|
33
|
+
".git/",
|
|
34
|
+
"node_modules/",
|
|
35
|
+
"bower_components/",
|
|
36
|
+
"jspm_packages/",
|
|
37
|
+
".npm/",
|
|
38
|
+
"vendor/",
|
|
39
|
+
|
|
40
|
+
"lib-cov/",
|
|
41
|
+
"coverage/",
|
|
42
|
+
".nyc_output/",
|
|
43
|
+
".cache/",
|
|
44
|
+
|
|
45
|
+
"build/",
|
|
46
|
+
"dist/",
|
|
47
|
+
"tmp/",
|
|
48
|
+
|
|
49
|
+
"**/*.min.*",
|
|
50
|
+
],
|
|
51
|
+
settings: {
|
|
52
|
+
"html/report-bad-indent": "error",
|
|
53
|
+
"html/indent": "+4",
|
|
54
|
+
"import/resolver": {
|
|
55
|
+
"node": {
|
|
56
|
+
"extensions": [ ".mjs", ".js", ".jsx", ".json", ".ts", ".tsx", ".d.ts" ],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
"import/extensions": [
|
|
60
|
+
".js",
|
|
61
|
+
".mjs",
|
|
62
|
+
".jsx",
|
|
63
|
+
],
|
|
64
|
+
"import/core-modules": [
|
|
65
|
+
],
|
|
66
|
+
"import/ignore": [
|
|
67
|
+
"node_modules",
|
|
68
|
+
"\\.(coffee|scss|css|less|hbs|svg|json)$",
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
parserOptions: {
|
|
72
|
+
sourceType: "module",
|
|
73
|
+
ecmaVersion: 2022,
|
|
74
|
+
},
|
|
75
|
+
overrides: [
|
|
76
|
+
{
|
|
77
|
+
files: [ "*.ts", "*.tsx", "*.mts", "*.cts" ],
|
|
78
|
+
plugins: [
|
|
79
|
+
"@typescript-eslint",
|
|
80
|
+
"import",
|
|
81
|
+
"jsdoc",
|
|
82
|
+
"promise",
|
|
83
|
+
"regexp",
|
|
84
|
+
"filenames",
|
|
85
|
+
],
|
|
86
|
+
extends: [
|
|
87
|
+
"./rules/typescript/best-practices.js",
|
|
88
|
+
"./rules/typescript/errors.js",
|
|
89
|
+
],
|
|
90
|
+
parser: "@typescript-eslint/parser",
|
|
91
|
+
parserOptions: {
|
|
92
|
+
ecmaFeatures: {
|
|
93
|
+
jsx: true,
|
|
94
|
+
},
|
|
95
|
+
ecmaVersion: 2022,
|
|
96
|
+
sourceType: "module",
|
|
97
|
+
project: [ "tsconfig.json" ], // Specify it only for TypeScript files
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
files: [ "**.php" ],
|
|
102
|
+
plugins: [
|
|
103
|
+
"php-markup",
|
|
104
|
+
],
|
|
105
|
+
globals: {
|
|
106
|
+
"lintPHPCode": true,
|
|
107
|
+
},
|
|
108
|
+
settings: {
|
|
109
|
+
"php/php-extensions": [ ".php" ],
|
|
110
|
+
"php/markup-replacement": {
|
|
111
|
+
"php": "0",
|
|
112
|
+
"=": "0",
|
|
113
|
+
},
|
|
114
|
+
"php/keep-eol": true,
|
|
115
|
+
"php/remove-whitespace": false,
|
|
116
|
+
"php/remove-empty-line": false,
|
|
117
|
+
"php/remove-php-lint": true,
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
files: [
|
|
122
|
+
"**/test/**",
|
|
123
|
+
"**/tests/**",
|
|
124
|
+
"**/spec/**",
|
|
125
|
+
"**/__tests__/**",
|
|
126
|
+
"*.test.*",
|
|
127
|
+
"*.spec.*",
|
|
128
|
+
"*.e2e.*",
|
|
129
|
+
"*.e2e-spec.*",
|
|
130
|
+
],
|
|
131
|
+
extends: [
|
|
132
|
+
"./rules/typescript/tests.js",
|
|
133
|
+
],
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
rules: {},
|
|
137
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@odg/eslint-config",
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "Linter for JavaScript And Typescript project",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {},
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/ODGodinho/ODG-Linter-Js.git"
|
|
10
|
+
},
|
|
11
|
+
"author": "Dragons Gamers <https://www.linkedin.com/in/victor-alves-odgodinho>",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"devDependencies": {
|
|
14
|
+
"typescript": "*"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"eslint": "*"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@babel/core": "*",
|
|
21
|
+
"@typescript-eslint/eslint-plugin": "*",
|
|
22
|
+
"@typescript-eslint/parser": "*",
|
|
23
|
+
"eslint": "*",
|
|
24
|
+
"eslint-plugin-anti-trojan-source": "*",
|
|
25
|
+
"eslint-plugin-array-func": "*",
|
|
26
|
+
"eslint-plugin-filenames": "*",
|
|
27
|
+
"eslint-plugin-html": "*",
|
|
28
|
+
"eslint-plugin-import": "*",
|
|
29
|
+
"eslint-plugin-jsdoc": "*",
|
|
30
|
+
"eslint-plugin-n": "*",
|
|
31
|
+
"eslint-plugin-no-constructor-bind": "*",
|
|
32
|
+
"eslint-plugin-php-markup": "*",
|
|
33
|
+
"eslint-plugin-promise": "*",
|
|
34
|
+
"eslint-plugin-regexp": "*",
|
|
35
|
+
"eslint-plugin-security": "*",
|
|
36
|
+
"eslint-plugin-sonar": "*",
|
|
37
|
+
"eslint-plugin-unicorn": "*"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/ODGodinho/ODG-Linter-Js/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/ODGodinho/ODG-Linter-Js#readme"
|
|
43
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
rules: {
|
|
3
|
+
"indent": [ "error", 4 ], // 4 spaces
|
|
4
|
+
"semi": [ "error", "always" ], // Força usar ponto-virgula ;
|
|
5
|
+
"quotes": [ "error", "double" ], // Aspas duplas
|
|
6
|
+
"lines-between-class-members": [ "error", "always" ], // Força linha em branco entre props classe e funções
|
|
7
|
+
"space-before-function-paren": [ "error", {
|
|
8
|
+
anonymous: "never",
|
|
9
|
+
named: "never",
|
|
10
|
+
} ], // Não permite espaço antes dos parenteses
|
|
11
|
+
"no-unused-vars": [ "error", {
|
|
12
|
+
"vars": "all",
|
|
13
|
+
"args": "after-used",
|
|
14
|
+
"caughtErrors": "all",
|
|
15
|
+
"varsIgnorePattern": "^_",
|
|
16
|
+
"argsIgnorePattern": "^_",
|
|
17
|
+
} ],
|
|
18
|
+
"default-param-last": [ "error" ],
|
|
19
|
+
"comma-spacing": [ "error" ],
|
|
20
|
+
"comma-dangle": [ "error", {
|
|
21
|
+
arrays: "always-multiline",
|
|
22
|
+
objects: "always-multiline",
|
|
23
|
+
imports: "always-multiline",
|
|
24
|
+
exports: "always-multiline",
|
|
25
|
+
functions: "always-multiline",
|
|
26
|
+
} ], // Virgula no final de tudo
|
|
27
|
+
"no-array-constructor": [ "error" ], // Não permite usar new Array()
|
|
28
|
+
"no-unused-expressions": [ "error", {
|
|
29
|
+
allowTernary: true,
|
|
30
|
+
allowShortCircuit: true,
|
|
31
|
+
enforceForJSX: true,
|
|
32
|
+
} ],
|
|
33
|
+
"no-useless-constructor": [ "error" ], // Não permite construtores desnecessários
|
|
34
|
+
"no-throw-literal": [ "error" ], // Não permite throw "string" ou diferente de classe
|
|
35
|
+
"no-invalid-this": [ "error" ], // Desliga invalid this Js
|
|
36
|
+
"dot-location": [ "error" ], // Object.property ponto junto com a property
|
|
37
|
+
"no-extra-parens": [ "error" ], // Não permite parênteses extra
|
|
38
|
+
"no-extra-semi": [ "error" ], // Não permite ;, duplicadas ou desnecessárias
|
|
39
|
+
"no-empty-function": [ "error" ], // Não permite funções vazias
|
|
40
|
+
"no-duplicate-imports": [ "error" ], // Bloqueia import duplicado
|
|
41
|
+
"import/no-duplicates": [ "error" ], // Bloqueia import duplicado
|
|
42
|
+
"prefer-const": [ "error" ], // Preferir constantes
|
|
43
|
+
"generator-star-spacing": [ "error", { before: true, after: false } ], // Espaço Funções Yield;
|
|
44
|
+
"no-unsafe-optional-chaining": [
|
|
45
|
+
"error",
|
|
46
|
+
{ disallowArithmeticOperators: true },
|
|
47
|
+
], // Protege de optional que pode gerar errors
|
|
48
|
+
"linebreak-style": [ "error", "unix" ], // Força usar \n apenas em vez de \r\n
|
|
49
|
+
"eol-last": [ "error", "always" ], // Força finalizar com \n no final
|
|
50
|
+
"max-len": [ "warn", {
|
|
51
|
+
code: 120,
|
|
52
|
+
ignoreUrls: true,
|
|
53
|
+
} ], // Caracteres máximo por linhas
|
|
54
|
+
"camelcase": [ "error" ], // Força camelCase
|
|
55
|
+
"padded-blocks": [ "error", {
|
|
56
|
+
classes: "always",
|
|
57
|
+
blocks: "never",
|
|
58
|
+
switches: "never",
|
|
59
|
+
} ], // Força não usar blocos com espaços
|
|
60
|
+
"no-multi-assign": [ "error" ], // Força não usar atribuição múltipla
|
|
61
|
+
"array-bracket-spacing": [ "error", "always" ], // Força usar espaço entre chaves
|
|
62
|
+
"keyword-spacing": [ "error", {
|
|
63
|
+
before: true,
|
|
64
|
+
after: true,
|
|
65
|
+
} ], // Requer espaço apos try {}
|
|
66
|
+
"space-before-blocks": [ "error" ], // Requer espaço antes das chaves
|
|
67
|
+
"space-unary-ops": [
|
|
68
|
+
2, {
|
|
69
|
+
words: true, // Espaço apos Await e palavras chaves
|
|
70
|
+
nonwords: false, // Força nao ter espaço antes de operadores unários !, -, +
|
|
71
|
+
overrides: {
|
|
72
|
+
"new": false,
|
|
73
|
+
"++": false, // Nao permite espaço no ++
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
"unicode-bom": [ "error", "never" ], // Disabled "unicode-bom"
|
|
78
|
+
"space-in-parens": [ "error", "never" ], // Não permite espaço entre parenteses
|
|
79
|
+
"no-multi-spaces": [ "error" ], // Nao permite vários espaços if( i )
|
|
80
|
+
"computed-property-spacing": [ "error", "never" ], // Desliga espaço ao recuperar item $a[ 'I' ] ou $a[ ] = 12;
|
|
81
|
+
"no-useless-concat": [ "error" ], // Desabilita concatenação de strings desnecessárias ex: "a" + "b"
|
|
82
|
+
"no-self-assign": [ "error" ], // Nao se atribua seu próprio valor a variável
|
|
83
|
+
"array-bracket-newline": [ "error", "consistent" ], // Quebra linha Array
|
|
84
|
+
"prefer-arrow-callback": [ "error" ], // Força arrow function
|
|
85
|
+
"arrow-body-style": [ "error", "as-needed" ], // Força arrow function sem body
|
|
86
|
+
"no-empty": [ "error" ], // Não permite blocos vazios (if, while, for, function, etc)
|
|
87
|
+
"no-useless-call": [ "error" ], // Não permite chamadas desnecessárias.call
|
|
88
|
+
"no-useless-catch": [ "error" ], // Não permite catch desnecessários
|
|
89
|
+
"no-useless-return": [ "error" ], // Não permite retornos desnecessários
|
|
90
|
+
"newline-before-return": [ "error" ], // Força retorno de função com \n antes
|
|
91
|
+
"multiline-comment-style": [ "error", "starred-block" ], // Força /* comentário */ ao invés de // varias vezes
|
|
92
|
+
"no-unreachable": [ "error" ], // Não permite unreachable code
|
|
93
|
+
"no-multi-str": [ "error" ], // Não quebre linha dentro de uma string
|
|
94
|
+
"consistent-this": [ "error", "that" ], // Não permite this em locais inconsistente.
|
|
95
|
+
"no-irregular-whitespace": [ "error" ], // Não permite espaços entre palavras
|
|
96
|
+
"dot-notation": "off",
|
|
97
|
+
"no-whitespace-before-property": [ "error" ], // Não permite espaço antes de property
|
|
98
|
+
"no-trailing-spaces": [ "error" ], // Não permite espaço apos ou antes do ponto
|
|
99
|
+
"no-extra-boolean-cast": [
|
|
100
|
+
"error",
|
|
101
|
+
{ "enforceForLogicalOperands": true },
|
|
102
|
+
], // Não permite cast de boolean extra !!!
|
|
103
|
+
"no-constant-condition": [ "error" ], // Não permite condições constantes if (true)
|
|
104
|
+
"no-debugger": [ "error" ], // Não permite usar debugger
|
|
105
|
+
"no-duplicate-case": [ "error" ], // Não permite duplicar case em switch
|
|
106
|
+
"no-empty-character-class": [ "error" ], // Não permite classe de caracteres vazia em regex
|
|
107
|
+
"no-ex-assign": [ "error" ], // Não permite atribuição de exceção
|
|
108
|
+
"no-func-assign": [ "error" ], // Não permite atribuição de função
|
|
109
|
+
"no-inner-declarations": [ "error" ], // Não permite declarações dentro de escopos
|
|
110
|
+
"no-invalid-regexp": [ "error" ], // Não permite expressões regulares inválidas RegExp()
|
|
111
|
+
"no-negated-in-lhs": [ "error" ], // Não permite negação em IN
|
|
112
|
+
"no-regex-spaces": [ "error" ], // Não permite múltiplos espaços em regex utilize
|
|
113
|
+
"no-sparse-arrays": [ "error" ], // Não permite arrays com itens vagos no meio
|
|
114
|
+
"valid-typeof": [ "error" ], // Não permite typeof inválido
|
|
115
|
+
"eqeqeq": [ "error", "always" ], // Usa igual e do mesmo tipo
|
|
116
|
+
"no-extra-label": [ "error" ], // Não permite usar labels extra desnecessárias
|
|
117
|
+
"no-labels": [ "error" ], // Disable Label/GOTO
|
|
118
|
+
"no-floating-decimal": [ "error" ], // Não permite decimais flutuantes sem zero a esquerda.
|
|
119
|
+
"no-native-reassign": [ "error" ], // Não permite reatribuição de funções/vars nativas
|
|
120
|
+
"no-new": [ "error" ], // Não permite usar new sem salva-lo
|
|
121
|
+
"no-new-func": [ "error" ], // Não permite usar new Function()
|
|
122
|
+
"no-redeclare": [ "error" ], // Não permite redeclarar variáveis
|
|
123
|
+
"no-self-compare": [ "error" ], // Não permite comparar com seu próprio valor
|
|
124
|
+
"no-unmodified-loop-condition": [ "error" ], // Loop sem modificar o valor do contador ou check único
|
|
125
|
+
"no-useless-escape": [ "error" ], // Não permite usar escape desnecessárias
|
|
126
|
+
"yoda": [ "error" ], // Força if Variável === "COMPARATION"
|
|
127
|
+
"no-undef-init": [ "error" ], // Não permite variáveis definidas como undefined ao inicializar
|
|
128
|
+
"no-new-require": [ "error" ], // Não permite usar new require()
|
|
129
|
+
"no-new-object": [ "error" ], // Não permite usar new Object
|
|
130
|
+
"prefer-template": [ "error" ], // Prefer template literals over string concatenation
|
|
131
|
+
"no-multiple-empty-lines": [ "error", { "max": 1 } ], // Não permita varias linhas em branco
|
|
132
|
+
"no-async-promise-executor": [ "error" ], // Não permita use função async para executar promise
|
|
133
|
+
"prefer-promise-reject-errors": [ "error" ], // Passe uma Exception em promise ao invés de string/number
|
|
134
|
+
"semi-spacing": [ "error", { before: false, after: true } ], // Não permite espaço antes do ;
|
|
135
|
+
"no-var": [ "error" ], // Não user var prefira let ou const
|
|
136
|
+
"promise/no-new-statics": [ "error" ], // Não permite usar new em static promise
|
|
137
|
+
"promise/no-return-wrap": [ "error" ], // Não use promise.resolve ou reject dentro de then e catch
|
|
138
|
+
"promise/param-names": [ "error" ], // Use nome correto para promise
|
|
139
|
+
"promise/always-return": [ "error" ], // Se a promise não tiver retorno reportar erro
|
|
140
|
+
"promise/no-nesting": [ "warn" ], // Warn se colocar uma then ou catch dentro de outra promise
|
|
141
|
+
"promise/no-return-in-finally": [ "error" ], // No Return in finally
|
|
142
|
+
"promise/valid-params": [ "error" ], // Valida Parâmetros da promise
|
|
143
|
+
"import/newline-after-import": [ "error", { count: 1 } ], // Linhas em branco apos o import
|
|
144
|
+
"operator-linebreak": [
|
|
145
|
+
"error",
|
|
146
|
+
"before",
|
|
147
|
+
{ overrides: { "+=": "none", "=": "none" } },
|
|
148
|
+
], // Sem quebra de linha em operadores
|
|
149
|
+
"array-callback-return": [ "error" ], // Força returno em array callback
|
|
150
|
+
"space-infix-ops": [ "error" ], // Espaço em operadores
|
|
151
|
+
"curly": [ "off" ], // Utilize chaves em multi linhas
|
|
152
|
+
"no-useless-rename": [ "error" ], // Disable Rename desnecessários
|
|
153
|
+
"handle-callback-err": [ "error" ], // Funções que recebem error deve ser tratado
|
|
154
|
+
"n/handle-callback-err": [
|
|
155
|
+
"error",
|
|
156
|
+
"^(err|error|\\w+Error|\\w+Exception|exception)$",
|
|
157
|
+
], // Funções que recebem error deve ser tratado
|
|
158
|
+
"new-cap": [ "error", { newIsCap: true } ], // New require first Letter uppercase
|
|
159
|
+
"no-caller": [ "error" ], // Não permite usar callee
|
|
160
|
+
"no-script-url": [ "error" ], // Não permite usar script url
|
|
161
|
+
"no-undef": [ "error", { "typeof": true } ], // Não chame variáveis não definidas
|
|
162
|
+
"func-names": [ "error", "as-needed" ], // Nome de funções somente quando necessário
|
|
163
|
+
"no-param-reassign": [ "error" ], // Não permite reatribuição de parâmetros
|
|
164
|
+
"quote-props": [ "error", "consistent" ], // Aspas no objeto somente se algum for necessário
|
|
165
|
+
"block-scoped-var": [ "error" ], // INFO: Bloqueia Vars for escopo, mas ainda sim prefira Lets
|
|
166
|
+
"brace-style": [ "error" ], // Força formatação {}
|
|
167
|
+
"comma-style": [ "error", "last" ], // Separa variável por virgula alinhando a direita
|
|
168
|
+
"key-spacing": [ "error" ], // Espaçamento propriedade objects
|
|
169
|
+
"object-property-newline": [ "error", {
|
|
170
|
+
allowAllPropertiesOnSameLine: true,
|
|
171
|
+
} ], // Quebre todos objetos ou nenhum
|
|
172
|
+
"regexp/confusing-quantifier": [ "error" ], // No Especifique quantidade em opcional
|
|
173
|
+
"regexp/control-character-escape": [ "error" ], // Use \r ao invés de \u0009
|
|
174
|
+
"regexp/negation": [ "error" ], // This rule enforces use of \D, \W, \S and \P on negation.
|
|
175
|
+
"regexp/no-dupe-characters-character-class": [ "error" ], // Rvita condições duplicada em []
|
|
176
|
+
"regexp/no-invisible-character": [ "error" ], // Evita colocar tab espaço em regex
|
|
177
|
+
"regexp/no-legacy-features": [ "error", {
|
|
178
|
+
staticProperties: [
|
|
179
|
+
"input", "$_",
|
|
180
|
+
"lastMatch", "$&",
|
|
181
|
+
"lastParen", "$+",
|
|
182
|
+
"leftContext", "$`",
|
|
183
|
+
"rightContext", "$'",
|
|
184
|
+
"$1", "$2", "$3", "$4", "$5", "$6", "$7", "$8", "$9",
|
|
185
|
+
],
|
|
186
|
+
prototypeMethods: [ "compile" ],
|
|
187
|
+
} ],
|
|
188
|
+
"regexp/no-non-standard-flag": [ "error" ], // Bloqueia flags não padronizada
|
|
189
|
+
"regexp/no-obscure-range": [ "error" ], // Range regex /[A-\x43]/;
|
|
190
|
+
"regexp/no-trivially-nested-quantifier": [ "error" ], // Bloqueia flags não padronizada
|
|
191
|
+
"regexp/no-unused-capturing-group": [ "error" ], // Não crie grupos que não está sendo usado.
|
|
192
|
+
"regexp/no-useless-character-class": [ "error" ], // Não crie blocos desnecessários
|
|
193
|
+
"regexp/no-useless-flag": [ "error" ], // Não Use Flag desnecessários
|
|
194
|
+
"regexp/no-useless-lazy": [ "error" ],
|
|
195
|
+
"regexp/no-useless-quantifier": [ "error" ], // Não permite Quantifiers sem efeitos
|
|
196
|
+
"regexp/no-useless-range": [ "error" ], // Não permite Range desnecessários
|
|
197
|
+
"regexp/no-useless-two-nums-quantifier": [ "error" ], // Não permite Range Iguais
|
|
198
|
+
"regexp/no-zero-quantifier": [ "error" ], // Não permite Quantidade {0}
|
|
199
|
+
"regexp/optimal-lookaround-quantifier": [ "error" ],
|
|
200
|
+
"regexp/optimal-quantifier-concatenation": [ "error" ],
|
|
201
|
+
"regexp/prefer-quantifier": [ "error" ], // Use {4} ao invés de replicar
|
|
202
|
+
"regexp/prefer-range": [ "error" ], // Prefira [0-9] ao invés [1234567890]
|
|
203
|
+
"regexp/sort-alternatives": [ "error" ], // Coloque [a|b|c] ordem alfabética
|
|
204
|
+
"regexp/hexadecimal-escape": [ "error" ], // \x0a ao invés \u000a
|
|
205
|
+
"regexp/match-any": [ "error" ], // Não da match com qualquer coisa
|
|
206
|
+
"regexp/no-useless-escape": [ "error" ], // Não coloca \ contra em local sem efeito
|
|
207
|
+
"regexp/no-useless-non-capturing-group": [ "error" ], // Grupo não necessário
|
|
208
|
+
"regexp/prefer-character-class": [ "error" ], // Prefira [] ao invés de |
|
|
209
|
+
"regexp/prefer-d": [ "error" ], // Prefira \d
|
|
210
|
+
"regexp/prefer-plus-quantifier": [ "error" ], // Prefira + ao invés de {1, }
|
|
211
|
+
"regexp/prefer-question-quantifier": [ "error" ], // Prefira ? ao invés de {0,1}
|
|
212
|
+
"regexp/prefer-star-quantifier": [ "error" ], // Prefira * ao invés de {0,}
|
|
213
|
+
"regexp/prefer-unicode-codepoint-escapes": [ "error" ], // Use Unicode
|
|
214
|
+
"regexp/prefer-w": [ "error" ], // Use \w
|
|
215
|
+
"regexp/sort-character-class-elements": [ "error" ], // Coloque [] em ordem Alfabética
|
|
216
|
+
"regexp/sort-flags": [ "error" ], // Flag em ordem alfabética
|
|
217
|
+
"regexp/prefer-named-capture-group": [ "error" ], // Prefira group com nomes
|
|
218
|
+
"max-statements-per-line": [ "error", { "max": 1 } ], // Máximo operação em 1 linha
|
|
219
|
+
"arrow-parens": [ "error", "always" ], // Arrow Function sempre com parentese
|
|
220
|
+
"padding-line-between-statements": [
|
|
221
|
+
"error",
|
|
222
|
+
{ "blankLine": "always", "prev": "*", "next": "export" }, // Uma linha em branco antes do export
|
|
223
|
+
{ "blankLine": "always", "prev": "export", "next": "*" }, // Uma linha em branco apos do export
|
|
224
|
+
{ "blankLine": "always", "prev": "*", "next": "class" }, // Uma linha em branco antes da classe
|
|
225
|
+
{ "blankLine": "always", "prev": "class", "next": "*" }, // Uma linha em branco Apos da classe
|
|
226
|
+
],
|
|
227
|
+
"filenames/match-regex": [
|
|
228
|
+
"error",
|
|
229
|
+
"^[a-zA-Z][a-zA-Z0-9_-]+((\\.[a-z]+)?)+$",
|
|
230
|
+
], // Nome de arquivo deve ser alfanumérico
|
|
231
|
+
"filenames/match-exported": [ "error", "^[a-zA-Z0-9_-]+$" ], // Nome do arquivo igual export default
|
|
232
|
+
"unicorn/catch-error-name": [
|
|
233
|
+
"error",
|
|
234
|
+
{
|
|
235
|
+
"name": "exception",
|
|
236
|
+
"ignore": [
|
|
237
|
+
"^error\\w*$",
|
|
238
|
+
"^error$",
|
|
239
|
+
"^exception\\w*$",
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
], // Chame todos os catch erros de exception
|
|
243
|
+
"unicorn/consistent-destructuring": [ "error" ], // Usa destructuring ou usa acesso direto sem alternar
|
|
244
|
+
"unicorn/consistent-function-scoping": [ "error" ], // Remova sub função quando possível
|
|
245
|
+
"unicorn/error-message": [ "error" ], // Exception tem q ter mensagem
|
|
246
|
+
"unicorn/escape-case": [ "error" ], // Ao escapar use letra maiúscula hexadecimal
|
|
247
|
+
"unicorn/new-for-builtins": [ "error" ], // Use new sempre em Promise, Array, Error, RegExp
|
|
248
|
+
"unicorn/no-abusive-eslint-disable": [ "error" ], // Não desabilite todas as regras ESLInt
|
|
249
|
+
"unicorn/no-array-for-each": [ "error" ], // Prefira forOf ao invés Foreach
|
|
250
|
+
"unicorn/no-array-method-this-argument": [ "error" ], // Evita this array que pode falhar
|
|
251
|
+
"unicorn/no-array-push-push": [ "error" ], // Faça apenas 1 push ao invés de vários
|
|
252
|
+
"unicorn/no-await-expression-member": [ "error" ], // Não use (await getObject()).property;
|
|
253
|
+
"unicorn/no-empty-file": [ "error" ], // Não crie arquivo vazio
|
|
254
|
+
"unicorn/no-for-loop": [ "error" ], // Use ForOf em vez de for
|
|
255
|
+
"unicorn/no-invalid-remove-event-listener": [ "error" ], // Não use removeEventListener Invalid
|
|
256
|
+
"no-lonely-if": [ "error" ], // Não faz if cadeia desnecessário
|
|
257
|
+
"unicorn/no-lonely-if": [ "error" ], // Não faz if cadeia desnecessário
|
|
258
|
+
"unicorn/no-new-buffer": [ "error" ], // Não faz if cadeia desnecessário
|
|
259
|
+
"unicorn/no-this-assignment": [ "error" ], // Desabilita invalido this
|
|
260
|
+
"unicorn/no-useless-fallback-in-spread": [ "error" ], // Desabilita não usado opcional literals ...
|
|
261
|
+
"unicorn/no-useless-length-check": [ "error" ], // Desabilita não usado opcional literals ...
|
|
262
|
+
"unicorn/no-useless-spread": [ "error" ], // Desabilita ... em array desnecessário
|
|
263
|
+
"unicorn/no-useless-switch-case": [ "error" ], // Desabilita Case não usado
|
|
264
|
+
"unicorn/no-useless-undefined": [ "error" ], // Desabilita undefined desnecessário
|
|
265
|
+
"unicorn/number-literal-case": [ "error" ],
|
|
266
|
+
"unicorn/prefer-add-event-listener": [ "error" ], // Prefira AddEventListener em vez de onclick props
|
|
267
|
+
"unicorn/prefer-array-find": [ "error" ], // Prefira array Find quando possível
|
|
268
|
+
"unicorn/prefer-array-index-of": [ "error" ], // Prefira usar IndexOf
|
|
269
|
+
"unicorn/prefer-array-some": [ "error" ], // Prefira usar Array some invés de length
|
|
270
|
+
"unicorn/prefer-dom-node-append": [ "error" ], // Prefira append no DOM
|
|
271
|
+
"unicorn/prefer-dom-node-remove": [ "error" ], // Prefira remove invés removeChild
|
|
272
|
+
"unicorn/prefer-includes": [ "error" ], // Prefira usar include ao invés IndexOf
|
|
273
|
+
"unicorn/prefer-keyboard-event-key": [ "error" ], // Prefira use Key invés de KeyCode
|
|
274
|
+
"unicorn/prefer-optional-catch-binding": [ "error" ], // Omita o parâmetro .catch se não usado
|
|
275
|
+
"unicorn/prefer-prototype-methods": [ "error" ], // Omita o parâmetro .catch se não usado
|
|
276
|
+
"unicorn/prefer-query-selector": [ "error" ], // Prefira QuerySelector
|
|
277
|
+
"unicorn/prefer-regexp-test": [ "error" ], // Prefira Regex test invés match
|
|
278
|
+
"unicorn/prefer-spread": [ "error" ], // Prefira destructuring
|
|
279
|
+
"unicorn/prefer-string-replace-all": [ "error" ], // Prefira replace ao invés de regex
|
|
280
|
+
"unicorn/prefer-string-starts-ends-with": [ "error" ], // Prefira startWith ao invés de regex
|
|
281
|
+
"unicorn/prefer-string-trim-start-end": [ "error" ], // Prefira trim Start/End invés de Left/Right
|
|
282
|
+
"unicorn/prefer-switch": [ "error" ], // Prefira switch
|
|
283
|
+
"unicorn/prefer-ternary": [ "error" ], // Prefira ternário em vez de if else
|
|
284
|
+
"unicorn/prevent-abbreviations": [ "error" ], // Prefira ternário em vez de if else
|
|
285
|
+
"unicorn/relative-url-style": [ "error" ], // Não coloque ./ em new URL
|
|
286
|
+
"unicorn/require-array-join-separator": [ "error" ], // Sempre passe parâmetro Array#join
|
|
287
|
+
"unicorn/require-number-to-fixed-digits-argument": [ "error" ], // Passe quantidade em ToFixed
|
|
288
|
+
"unicorn/template-indent": [ "error" ], // Indenter em template string
|
|
289
|
+
"no-shadow": [ "error" ], // Erro caso ja esteja declarado escopo a cima
|
|
290
|
+
"no-delete-var": [ "error" ], // Não delete variáveis
|
|
291
|
+
"no-lone-blocks": [ "error" ], // Não crie bloco desnecessários
|
|
292
|
+
"no-proto": [ "error" ], // Não use __proto__ depreciada desde ECMA 3.1
|
|
293
|
+
"id-length": [ "error", { "min": 3 } ], // Tamanho mínimo das variáveis
|
|
294
|
+
"max-depth": [ "error", { "max": 3 } ], // Tamanho máximo do Hadouken
|
|
295
|
+
"max-params": [ "error", { "max": 3 } ], // Máximo de parâmetros
|
|
296
|
+
"max-statements": [ "error" ], // Máximo atribuição em função
|
|
297
|
+
"operator-assignment": [ "error", "always" ], // Prefira atribuição curtas +=
|
|
298
|
+
"prefer-rest-params": [ "error" ], // Prefira ..args em vez de arguments
|
|
299
|
+
"no-useless-computed-key": [ "error" ], // Chave de objeto computada de forma desnecessária
|
|
300
|
+
"symbol-description": [ "error" ], // Symbol deve ter descrição
|
|
301
|
+
"no-return-await": [ "error" ], // Não coloque await no return
|
|
302
|
+
"max-classes-per-file": [ "error", 1 ], // Apenas 1 classe por arquivo
|
|
303
|
+
"no-constructor-return": [ "error" ], // Construtor não deve ter um retorno
|
|
304
|
+
"prefer-exponentiation-operator": [ "error" ], // Prefira ** em vez de Math.pow
|
|
305
|
+
"prefer-object-spread": [ "error" ], // Prefira Desestruturar para concatenar objetos
|
|
306
|
+
"default-case-last": [ "error" ], // Default switch case por ultimo
|
|
307
|
+
"no-new-symbol": [ "error" ], // Use apenas Symbol()
|
|
308
|
+
"accessor-pairs": [ "error" ], // Crie o get e set
|
|
309
|
+
"no-promise-executor-return": [ "error" ], // Não coloque um retorno em new Promise()
|
|
310
|
+
"no-nonoctal-decimal-escape": [ "error" ], // Não coloque scape em numero decimais
|
|
311
|
+
"prefer-destructuring": [ "error" ], // Prefira desestruturar array ao invés
|
|
312
|
+
"no-magic-numbers": [
|
|
313
|
+
"warn",
|
|
314
|
+
{ "ignore": [ 0, 1, -1 ], "enforceConst": true, "ignoreDefaultValues": true },
|
|
315
|
+
], // Não permite numero mágicos
|
|
316
|
+
"complexity": [ "error", { "max": 10 } ], // Complexidade código
|
|
317
|
+
"func-style": [ "error", "declaration" ], // Declare function name() em vez de var = function()
|
|
318
|
+
"no-else-return": [ "error" ], // Não use else se tem retorno
|
|
319
|
+
"use-isnan": [
|
|
320
|
+
"error",
|
|
321
|
+
{ "enforceForSwitchCase": true, "enforceForIndexOf": true },
|
|
322
|
+
], // Use a função isNan
|
|
323
|
+
"prefer-regex-literals": [ "error", { "disallowRedundantWrapping": true } ], // Use a função isNan
|
|
324
|
+
"import/no-absolute-path": [ "error" ], // Não informa caminho absoluto
|
|
325
|
+
"import/no-webpack-loader-syntax": [ "error" ], // Bloqueia syntax webpack import
|
|
326
|
+
"import/no-named-as-default": [ "error" ],
|
|
327
|
+
"import/no-named-as-default-member": [ "error" ],
|
|
328
|
+
"import/no-mutable-exports": [ "error" ], // Não export var nem let
|
|
329
|
+
"import/no-amd": [ "error" ], // Não require, define array
|
|
330
|
+
"import/max-dependencies": [ "error", {
|
|
331
|
+
"max": 25,
|
|
332
|
+
"ignoreTypeImports": false,
|
|
333
|
+
} ], // Máximo de 25 dependências
|
|
334
|
+
"import/no-import-module-exports": [ "error" ], // Import e export CommanJs bloqueado
|
|
335
|
+
"import/no-useless-path-segments": [ "error", { "commonjs": true } ], // Não volte pasta desnecessária import
|
|
336
|
+
"import/no-extraneous-dependencies": [
|
|
337
|
+
"error",
|
|
338
|
+
{
|
|
339
|
+
"devDependencies": [
|
|
340
|
+
"**/*.e2e-spec.*",
|
|
341
|
+
"**/*.e2e.*",
|
|
342
|
+
"**/*.spec.*",
|
|
343
|
+
"**/*.test.*",
|
|
344
|
+
"**/.eslintrc.{js,cjs,ts}",
|
|
345
|
+
"**/Gruntfile{,.js,.ts}",
|
|
346
|
+
"**/__mocks__/**",
|
|
347
|
+
"**/__tests__/**",
|
|
348
|
+
"**/cypress.config.{js,ts}",
|
|
349
|
+
"**/gulpfile.*.{js,ts}",
|
|
350
|
+
"**/gulpfile.{js,ts}",
|
|
351
|
+
"**/jest.config.{js,ts}",
|
|
352
|
+
"**/jest.setup.{js,ts}",
|
|
353
|
+
"**/karma.conf.{js,ts}",
|
|
354
|
+
"**/nuxt.config.{js,ts}",
|
|
355
|
+
"**/protractor.conf.*.{js,ts}",
|
|
356
|
+
"**/protractor.conf.{js,ts}",
|
|
357
|
+
"**/rollup.config.*.{js,ts}",
|
|
358
|
+
"**/rollup.config.{js,ts}",
|
|
359
|
+
"**/setupTests.{js,ts}",
|
|
360
|
+
"**/spec/**",
|
|
361
|
+
"**/test/**",
|
|
362
|
+
"**/tests/**",
|
|
363
|
+
"**/vite.config.{js,ts}",
|
|
364
|
+
"**/vue.config.{js,ts}",
|
|
365
|
+
"**/webpack.config.*.{js,ts}",
|
|
366
|
+
"**/webpack.config.{js,ts}",
|
|
367
|
+
],
|
|
368
|
+
"optionalDependencies": true,
|
|
369
|
+
"peerDependencies": false,
|
|
370
|
+
"bundledDependencies": false,
|
|
371
|
+
},
|
|
372
|
+
], // Não dependa de pacotes em devDependencies
|
|
373
|
+
"import/order": [
|
|
374
|
+
"error",
|
|
375
|
+
{
|
|
376
|
+
"groups": [
|
|
377
|
+
"builtin",
|
|
378
|
+
"external",
|
|
379
|
+
"internal",
|
|
380
|
+
"unknown",
|
|
381
|
+
"parent",
|
|
382
|
+
"sibling",
|
|
383
|
+
"index",
|
|
384
|
+
],
|
|
385
|
+
"newlines-between": "always",
|
|
386
|
+
},
|
|
387
|
+
], // Força essa ordem no import
|
|
388
|
+
"import/no-anonymous-default-export": [
|
|
389
|
+
"error",
|
|
390
|
+
{ "allowCallExpression": false },
|
|
391
|
+
],
|
|
392
|
+
"unicorn/no-console-spaces": [ "error" ], // Separe por virgula em vez de colocar espaço no console
|
|
393
|
+
"unicorn/no-hex-escape": [ "error" ], // Use \u001B em vez de \x1B
|
|
394
|
+
"unicorn/prefer-array-flat-map": [ "error" ], // Prefira FlatMap in vez de map().flat().
|
|
395
|
+
"unicorn/prefer-array-flat": [ "error" ], // Prefira usar array Flat
|
|
396
|
+
"array-func/prefer-flat": [ "error" ], // Não passe parâmetro desnecessário
|
|
397
|
+
"unicorn/prefer-string-slice": [ "error" ], // Use slice em vez de substr ou substring
|
|
398
|
+
"unicorn/prefer-negative-index": [ "error" ], // Use slice em vez de substr ou substring
|
|
399
|
+
"unicorn/prefer-modern-dom-apis": [ "error" ], // Prefira usar o DOM moderno
|
|
400
|
+
"unicorn/prefer-number-properties": [ "error" ], // Prefira Number.numberVar() in vez de numberVar()
|
|
401
|
+
"unicorn/numeric-separators-style": [ "error" ], // Separe Numero com Underline
|
|
402
|
+
"unicorn/prefer-default-parameters": [ "error" ], // Prefira parâmetros padrões
|
|
403
|
+
"unicorn/prefer-node-protocol": [ "error" ], // Prefira node: antes do import
|
|
404
|
+
"unicorn/prefer-code-point": [ "error" ], // Prefira codePointAt no lugar de charCodeAt
|
|
405
|
+
"unicorn/no-thenable": [ "error" ], // Não crie os nome com o nome Then
|
|
406
|
+
"unicorn/no-unreadable-iife": [ "error" ], // Ternários não legíveis com funções
|
|
407
|
+
"unicorn/prefer-native-coercion-functions": [ "error" ], // Prefira função cast nativa
|
|
408
|
+
"unicorn/prefer-logical-operator-over-ternary": [ "error" ], // Mude "a ? a : b" para "a || b"
|
|
409
|
+
"unicorn/prefer-event-target": [ "error" ], // Use EventTarget no Lugar de EventEmitter
|
|
410
|
+
"unicorn/prefer-export-from": [ "error", { "ignoreUsedVariables": true } ], // Prefira Export From
|
|
411
|
+
"array-func/from-map": [ "error" ], // Use .map invés do segundo parâmetro do From
|
|
412
|
+
"array-func/no-unnecessary-this-arg": [ "error" ], // Não passe parâmetro desnecessário
|
|
413
|
+
"array-func/avoid-reverse": [ "error" ], // Não passe parâmetro desnecessário
|
|
414
|
+
"sonar/array-callback-without-return": [ "error" ], // Não use new Array
|
|
415
|
+
"sonar/bool-param-default": [ "error" ], // Param do tipo boolean deve ter um valor padrão e não optional
|
|
416
|
+
"sonar/call-argument-line": [ "error" ], // Chamada função anonima auto executável deve ter ;
|
|
417
|
+
"sonar/class-name": [ "error", { format: "^[A-Z][a-zA-Z0-9]*$" } ], // Convenção nome Classe
|
|
418
|
+
"sonar/class-prototype": [ "error" ], // No Prototype in class
|
|
419
|
+
"sonar/comma-or-logical-or-case": [ "error" ], // Switch Case logica invalida
|
|
420
|
+
"sonar/conditional-indentation": [ "error" ], // Formatação IF
|
|
421
|
+
"sonar/deprecation": [ "warn" ], // Alerta em funções depreciadas
|
|
422
|
+
},
|
|
423
|
+
};
|