@azat-io/eslint-config 2.0.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.
@@ -0,0 +1,109 @@
1
+ import reactCompilerPlugin from "eslint-plugin-react-compiler";
2
+ import reactHooksPlugin from "eslint-plugin-react-hooks";
3
+ import reactPerfPlugin from "eslint-plugin-react-perf";
4
+ import reactPlugin from "eslint-plugin-react";
5
+ let react = (config) => {
6
+ if (!config.react) {
7
+ return {};
8
+ }
9
+ let files = ["**/*.jsx"];
10
+ if (config.typescript) {
11
+ files.push("**/*.tsx");
12
+ }
13
+ return {
14
+ files,
15
+ plugins: {
16
+ react: reactPlugin,
17
+ "react-compiler": reactCompilerPlugin,
18
+ "react-hooks": reactHooksPlugin,
19
+ "react-perf": reactPerfPlugin
20
+ },
21
+ rules: {
22
+ "react/button-has-type": "error",
23
+ "react/checked-requires-onchange-or-readonly": "error",
24
+ "react/forbid-prop-types": "error",
25
+ "react/forward-ref-uses-ref": "error",
26
+ "react/function-component-definition": [
27
+ "error",
28
+ {
29
+ namedComponents: "arrow-function"
30
+ }
31
+ ],
32
+ "react/hook-use-state": [
33
+ "error",
34
+ {
35
+ allowDestructuredState: true
36
+ }
37
+ ],
38
+ "react/jsx-boolean-value": "error",
39
+ "react/jsx-curly-brace-presence": [
40
+ "error",
41
+ {
42
+ children: "never",
43
+ propElementValues: "always",
44
+ props: "never"
45
+ }
46
+ ],
47
+ "react/jsx-fragments": "error",
48
+ "react/jsx-key": "error",
49
+ "react/jsx-no-comment-textnodes": "error",
50
+ "react/jsx-no-constructed-context-values": "error",
51
+ "react/jsx-no-duplicate-props": "error",
52
+ "react/jsx-no-leaked-render": "error",
53
+ "react/jsx-no-target-blank": "error",
54
+ "react/jsx-no-undef": "error",
55
+ "react/jsx-no-useless-fragment": "error",
56
+ "react/jsx-pascal-case": "error",
57
+ "react/jsx-uses-vars": "error",
58
+ "react/no-array-index-key": "error",
59
+ "react/no-arrow-function-lifecycle": "error",
60
+ "react/no-children-prop": "error",
61
+ "react/no-danger-with-children": "error",
62
+ "react/no-deprecated": "error",
63
+ "react/no-did-mount-set-state": "error",
64
+ "react/no-did-update-set-state": "error",
65
+ "react/no-direct-mutation-state": "error",
66
+ "react/no-find-dom-node": "error",
67
+ "react/no-invalid-html-attribute": "error",
68
+ "react/no-is-mounted": "error",
69
+ "react/no-namespace": "error",
70
+ "react/no-redundant-should-component-update": "error",
71
+ "react/no-render-return-value": "error",
72
+ "react/no-string-refs": "error",
73
+ "react/no-this-in-sfc": "error",
74
+ "react/no-typos": "error",
75
+ "react/no-unescaped-entities": "error",
76
+ "react/no-unknown-property": "error",
77
+ "react/no-unused-class-component-methods": "error",
78
+ "react/no-unused-state": "error",
79
+ "react/no-will-update-set-state": "error",
80
+ "react/require-render-return": "error",
81
+ "react/self-closing-comp": [
82
+ "error",
83
+ {
84
+ component: true,
85
+ html: true
86
+ }
87
+ ],
88
+ "react/style-prop-object": "error",
89
+ "react/void-dom-elements-no-children": "error",
90
+ "react-compiler/react-compiler": "error",
91
+ "react-hooks/exhaustive-deps": "error",
92
+ "react-hooks/rules-of-hooks": "error",
93
+ "react-perf/jsx-no-jsx-as-prop": "error",
94
+ "react-perf/jsx-no-new-array-as-prop": "error",
95
+ "react-perf/jsx-no-new-function-as-prop": "error",
96
+ "react-perf/jsx-no-new-object-as-prop": "error"
97
+ },
98
+ settings: {
99
+ react: {
100
+ fragment: "Fragment",
101
+ pragma: "React",
102
+ version: "detect"
103
+ }
104
+ }
105
+ };
106
+ };
107
+ export {
108
+ react
109
+ };
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const typescriptEslint = require("typescript-eslint");
4
+ const svelteParser = require("svelte-eslint-parser");
5
+ const sveltePlugin = require("eslint-plugin-svelte");
6
+ let svelte = (config) => {
7
+ if (!config.svelte) {
8
+ return {};
9
+ }
10
+ let files = ["**/*.svelte"];
11
+ let additionalParserOptions = {};
12
+ if (config.typescript) {
13
+ additionalParserOptions = {
14
+ ...additionalParserOptions,
15
+ parser: typescriptEslint.parser,
16
+ projectService: true,
17
+ tsconfigRootDir: process.cwd()
18
+ };
19
+ }
20
+ return {
21
+ files,
22
+ languageOptions: {
23
+ parser: svelteParser,
24
+ parserOptions: {
25
+ ecmaVersion: "latest",
26
+ extraFileExtensions: [".svelte"],
27
+ sourceType: "module",
28
+ ...additionalParserOptions
29
+ }
30
+ },
31
+ plugins: {
32
+ svelte: sveltePlugin
33
+ },
34
+ rules: {
35
+ "svelte/block-lang": [
36
+ "error",
37
+ {
38
+ enforceScriptPresent: true,
39
+ enforceStylePresent: false,
40
+ script: ["ts", null]
41
+ }
42
+ ],
43
+ "svelte/button-has-type": "error",
44
+ "svelte/comment-directive": "error",
45
+ "svelte/derived-has-same-inputs-outputs": "error",
46
+ "svelte/html-self-closing": "error",
47
+ "svelte/infinite-reactive-loop": "error",
48
+ "svelte/no-at-debug-tags": "error",
49
+ "svelte/no-at-html-tags": "error",
50
+ "svelte/no-dom-manipulating": "error",
51
+ "svelte/no-dupe-else-if-blocks": "error",
52
+ "svelte/no-dupe-on-directives": "error",
53
+ "svelte/no-dupe-style-properties": "error",
54
+ "svelte/no-dupe-use-directives": "error",
55
+ "svelte/no-dynamic-slot-name": "error",
56
+ "svelte/no-extra-reactive-curlies": "error",
57
+ "svelte/no-ignored-unsubscribe": "error",
58
+ "svelte/no-immutable-reactive-statements": "error",
59
+ "svelte/no-inner-declarations": "error",
60
+ "svelte/no-inspect": "error",
61
+ "svelte/no-object-in-text-mustaches": "error",
62
+ "svelte/no-reactive-functions": "error",
63
+ "svelte/no-shorthand-style-property-overrides": "error",
64
+ "svelte/no-svelte-internal": "error",
65
+ "svelte/no-target-blank": "error",
66
+ "svelte/no-unknown-style-directive-property": "error",
67
+ "svelte/no-unused-svelte-ignore": "error",
68
+ "svelte/no-useless-mustaches": "error",
69
+ "svelte/prefer-class-directive": "error",
70
+ "svelte/prefer-destructured-store-props": "error",
71
+ "svelte/prefer-style-directive": "error",
72
+ "svelte/require-each-key": "error",
73
+ "svelte/require-store-reactive-access": "error",
74
+ "svelte/require-stores-init": "error",
75
+ "svelte/shorthand-attribute": "error",
76
+ "svelte/shorthand-directive": "error",
77
+ "svelte/system": "error",
78
+ "svelte/valid-each-key": "error"
79
+ }
80
+ };
81
+ };
82
+ exports.svelte = svelte;
@@ -0,0 +1,82 @@
1
+ import { parser } from "typescript-eslint";
2
+ import svelteParser from "svelte-eslint-parser";
3
+ import sveltePlugin from "eslint-plugin-svelte";
4
+ let svelte = (config) => {
5
+ if (!config.svelte) {
6
+ return {};
7
+ }
8
+ let files = ["**/*.svelte"];
9
+ let additionalParserOptions = {};
10
+ if (config.typescript) {
11
+ additionalParserOptions = {
12
+ ...additionalParserOptions,
13
+ parser,
14
+ projectService: true,
15
+ tsconfigRootDir: process.cwd()
16
+ };
17
+ }
18
+ return {
19
+ files,
20
+ languageOptions: {
21
+ parser: svelteParser,
22
+ parserOptions: {
23
+ ecmaVersion: "latest",
24
+ extraFileExtensions: [".svelte"],
25
+ sourceType: "module",
26
+ ...additionalParserOptions
27
+ }
28
+ },
29
+ plugins: {
30
+ svelte: sveltePlugin
31
+ },
32
+ rules: {
33
+ "svelte/block-lang": [
34
+ "error",
35
+ {
36
+ enforceScriptPresent: true,
37
+ enforceStylePresent: false,
38
+ script: ["ts", null]
39
+ }
40
+ ],
41
+ "svelte/button-has-type": "error",
42
+ "svelte/comment-directive": "error",
43
+ "svelte/derived-has-same-inputs-outputs": "error",
44
+ "svelte/html-self-closing": "error",
45
+ "svelte/infinite-reactive-loop": "error",
46
+ "svelte/no-at-debug-tags": "error",
47
+ "svelte/no-at-html-tags": "error",
48
+ "svelte/no-dom-manipulating": "error",
49
+ "svelte/no-dupe-else-if-blocks": "error",
50
+ "svelte/no-dupe-on-directives": "error",
51
+ "svelte/no-dupe-style-properties": "error",
52
+ "svelte/no-dupe-use-directives": "error",
53
+ "svelte/no-dynamic-slot-name": "error",
54
+ "svelte/no-extra-reactive-curlies": "error",
55
+ "svelte/no-ignored-unsubscribe": "error",
56
+ "svelte/no-immutable-reactive-statements": "error",
57
+ "svelte/no-inner-declarations": "error",
58
+ "svelte/no-inspect": "error",
59
+ "svelte/no-object-in-text-mustaches": "error",
60
+ "svelte/no-reactive-functions": "error",
61
+ "svelte/no-shorthand-style-property-overrides": "error",
62
+ "svelte/no-svelte-internal": "error",
63
+ "svelte/no-target-blank": "error",
64
+ "svelte/no-unknown-style-directive-property": "error",
65
+ "svelte/no-unused-svelte-ignore": "error",
66
+ "svelte/no-useless-mustaches": "error",
67
+ "svelte/prefer-class-directive": "error",
68
+ "svelte/prefer-destructured-store-props": "error",
69
+ "svelte/prefer-style-directive": "error",
70
+ "svelte/require-each-key": "error",
71
+ "svelte/require-store-reactive-access": "error",
72
+ "svelte/require-stores-init": "error",
73
+ "svelte/shorthand-attribute": "error",
74
+ "svelte/shorthand-directive": "error",
75
+ "svelte/system": "error",
76
+ "svelte/valid-each-key": "error"
77
+ }
78
+ };
79
+ };
80
+ export {
81
+ svelte
82
+ };
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const typescriptEslint = require("typescript-eslint");
4
+ let typescript = (config) => {
5
+ if (!config.typescript) {
6
+ return {};
7
+ }
8
+ let files = ["**/*.ts", "**/*.cts", "**/*.mts"];
9
+ if (config.react || config.qwik) {
10
+ files.push("**/*.tsx");
11
+ }
12
+ if (config.astro) {
13
+ files.push("**/*.astro");
14
+ }
15
+ if (config.svelte) {
16
+ files.push("**/*.svelte");
17
+ }
18
+ if (config.vue) {
19
+ files.push("**/*.vue");
20
+ }
21
+ return {
22
+ files,
23
+ languageOptions: {
24
+ parser: typescriptEslint.parser,
25
+ parserOptions: {
26
+ ecmaFeatures: {
27
+ jsx: config.react || config.qwik
28
+ },
29
+ ecmaVersion: "latest",
30
+ projectService: true,
31
+ sourceType: "module",
32
+ tsconfigRootDir: process.cwd()
33
+ }
34
+ },
35
+ plugins: {
36
+ "@typescript-eslint": typescriptEslint.plugin
37
+ },
38
+ rules: {
39
+ "@typescript-eslint/array-type": [
40
+ "error",
41
+ {
42
+ default: "array",
43
+ readonly: "array"
44
+ }
45
+ ],
46
+ "@typescript-eslint/await-thenable": "error",
47
+ "@typescript-eslint/class-literal-property-style": "error",
48
+ "@typescript-eslint/consistent-generic-constructors": [
49
+ "error",
50
+ "constructor"
51
+ ],
52
+ "@typescript-eslint/consistent-indexed-object-style": ["error", "record"],
53
+ "@typescript-eslint/consistent-type-definitions": "error",
54
+ "@typescript-eslint/consistent-type-exports": "error",
55
+ "@typescript-eslint/consistent-type-imports": "error",
56
+ "@typescript-eslint/default-param-last": "error",
57
+ "@typescript-eslint/dot-notation": (
58
+ "off"
59
+ ),
60
+ "@typescript-eslint/explicit-function-return-type": [
61
+ "error",
62
+ {
63
+ allowedNames: config.astro ? ["getStaticPaths"] : [],
64
+ allowExpressions: true,
65
+ allowHigherOrderFunctions: true,
66
+ allowIIFEs: true
67
+ }
68
+ ],
69
+ "@typescript-eslint/explicit-member-accessibility": "error",
70
+ "@typescript-eslint/explicit-module-boundary-types": [
71
+ "error",
72
+ {
73
+ allowedNames: config.astro ? ["getStaticPaths"] : []
74
+ }
75
+ ],
76
+ "@typescript-eslint/max-params": [
77
+ "error",
78
+ {
79
+ max: 3
80
+ }
81
+ ],
82
+ "@typescript-eslint/method-signature-style": ["error", "method"],
83
+ "@typescript-eslint/naming-convention": [
84
+ "error",
85
+ {
86
+ format: ["camelCase", "PascalCase", "UPPER_CASE"],
87
+ selector: "import"
88
+ },
89
+ {
90
+ format: ["UPPER_CASE"],
91
+ modifiers: ["const"],
92
+ selector: "variable"
93
+ },
94
+ {
95
+ format: ["PascalCase", "UPPER_CASE"],
96
+ selector: "typeLike"
97
+ }
98
+ ],
99
+ "@typescript-eslint/no-array-constructor": "error",
100
+ "@typescript-eslint/no-array-delete": "error",
101
+ "@typescript-eslint/no-base-to-string": "error",
102
+ "@typescript-eslint/no-duplicate-enum-values": "error",
103
+ "@typescript-eslint/no-duplicate-type-constituents": "error",
104
+ "@typescript-eslint/no-empty-object-type": "error",
105
+ "@typescript-eslint/no-explicit-any": "error",
106
+ "@typescript-eslint/no-extra-non-null-assertion": "error",
107
+ "@typescript-eslint/no-floating-promises": [
108
+ "error",
109
+ {
110
+ allowForKnownSafeCalls: [
111
+ {
112
+ from: "package",
113
+ name: ["task"],
114
+ package: "nanostores"
115
+ }
116
+ ],
117
+ checkThenables: true,
118
+ ignoreIIFE: true,
119
+ ignoreVoid: true
120
+ }
121
+ ],
122
+ "@typescript-eslint/no-for-in-array": "error",
123
+ "@typescript-eslint/no-implied-eval": "error",
124
+ "@typescript-eslint/no-import-type-side-effects": "error",
125
+ "@typescript-eslint/no-invalid-void-type": "error",
126
+ "@typescript-eslint/no-loop-func": "error",
127
+ "@typescript-eslint/no-meaningless-void-operator": "error",
128
+ "@typescript-eslint/no-misused-new": "error",
129
+ "@typescript-eslint/no-misused-promises": [
130
+ "error",
131
+ {
132
+ checksVoidReturn: false
133
+ }
134
+ ],
135
+ "@typescript-eslint/no-mixed-enums": "error",
136
+ "@typescript-eslint/no-namespace": "error",
137
+ "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "error",
138
+ "@typescript-eslint/no-non-null-asserted-optional-chain": "error",
139
+ "@typescript-eslint/no-require-imports": "error",
140
+ "@typescript-eslint/no-shadow": "error",
141
+ "@typescript-eslint/no-this-alias": "error",
142
+ "@typescript-eslint/no-unnecessary-boolean-literal-compare": "error",
143
+ "@typescript-eslint/no-unnecessary-condition": "error",
144
+ "@typescript-eslint/no-unnecessary-parameter-property-assignment": "error",
145
+ "@typescript-eslint/no-unnecessary-qualifier": "error",
146
+ "@typescript-eslint/no-unnecessary-template-expression": "error",
147
+ "@typescript-eslint/no-unnecessary-type-arguments": "error",
148
+ "@typescript-eslint/no-unnecessary-type-assertion": "error",
149
+ "@typescript-eslint/no-unnecessary-type-constraint": "error",
150
+ "@typescript-eslint/no-unnecessary-type-parameters": "error",
151
+ "@typescript-eslint/no-unsafe-argument": "error",
152
+ "@typescript-eslint/no-unsafe-assignment": (
153
+ config.astro ? "off" : "error"
154
+ ),
155
+ "@typescript-eslint/no-unsafe-call": "error",
156
+ "@typescript-eslint/no-unsafe-declaration-merging": "error",
157
+ "@typescript-eslint/no-unsafe-function-type": "error",
158
+ "@typescript-eslint/no-unsafe-member-access": "error",
159
+ "@typescript-eslint/no-unsafe-return": "error",
160
+ "@typescript-eslint/no-unsafe-unary-minus": "error",
161
+ "@typescript-eslint/no-unused-expressions": [
162
+ "error",
163
+ {
164
+ allowShortCircuit: true,
165
+ allowTaggedTemplates: true,
166
+ allowTernary: true
167
+ }
168
+ ],
169
+ "@typescript-eslint/no-unused-vars": [
170
+ "error",
171
+ {
172
+ argsIgnorePattern: "^_",
173
+ caughtErrorsIgnorePattern: "^_",
174
+ ignoreRestSiblings: true,
175
+ varsIgnorePattern: "^_"
176
+ }
177
+ ],
178
+ "@typescript-eslint/no-use-before-define": [
179
+ "error",
180
+ {
181
+ classes: false,
182
+ functions: false,
183
+ variables: false
184
+ }
185
+ ],
186
+ "@typescript-eslint/no-useless-constructor": "error",
187
+ "@typescript-eslint/no-useless-empty-export": "error",
188
+ "@typescript-eslint/no-wrapper-object-types": "error",
189
+ "@typescript-eslint/non-nullable-type-assertion-style": "error",
190
+ "@typescript-eslint/only-throw-error": "error",
191
+ "@typescript-eslint/prefer-as-const": "error",
192
+ "@typescript-eslint/prefer-destructuring": "error",
193
+ "@typescript-eslint/prefer-enum-initializers": "error",
194
+ "@typescript-eslint/prefer-for-of": "error",
195
+ "@typescript-eslint/prefer-function-type": "error",
196
+ "@typescript-eslint/prefer-nullish-coalescing": "error",
197
+ "@typescript-eslint/prefer-optional-chain": "error",
198
+ "@typescript-eslint/prefer-promise-reject-errors": "error",
199
+ "@typescript-eslint/prefer-readonly": "error",
200
+ "@typescript-eslint/prefer-reduce-type-parameter": "error",
201
+ "@typescript-eslint/prefer-return-this-type": "error",
202
+ "@typescript-eslint/require-array-sort-compare": "error",
203
+ "@typescript-eslint/require-await": "error",
204
+ "@typescript-eslint/restrict-plus-operands": "error",
205
+ "@typescript-eslint/restrict-template-expressions": "error",
206
+ "@typescript-eslint/triple-slash-reference": config.astro ? "off" : "error",
207
+ "@typescript-eslint/unified-signatures": "error",
208
+ "consistent-return": "off",
209
+ "default-param-last": "off",
210
+ "dot-notation": "off",
211
+ "max-params": "off",
212
+ "no-array-constructor": "off",
213
+ "no-dupe-class-members": "off",
214
+ "no-implied-eval": "off",
215
+ "no-loop-func": "off",
216
+ "no-shadow": "off",
217
+ "no-undef": "off",
218
+ "no-unused-expressions": "off",
219
+ "no-unused-vars": "off",
220
+ "no-use-before-define": "off",
221
+ "no-useless-constructor": "off",
222
+ "prefer-destructuring": "off",
223
+ "require-await": "off"
224
+ },
225
+ settings: {
226
+ jsdoc: {
227
+ mode: "typescript"
228
+ }
229
+ }
230
+ };
231
+ };
232
+ exports.typescript = typescript;