@enormora/eslint-config-base-with-prettier 0.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.
@@ -0,0 +1,255 @@
1
+ import arrayFunctionPlugin from 'eslint-plugin-array-func';
2
+ import noBarrelFiles from 'eslint-plugin-no-barrel-files';
3
+ import promisePlugin from 'eslint-plugin-promise';
4
+ import sonarjsPlugin from 'eslint-plugin-sonarjs';
5
+ import unicornPlugin from 'eslint-plugin-unicorn';
6
+
7
+ const maxSwitchCases = 6;
8
+
9
+ function isSonarjsRuleDeprecated(sonarjsRule) {
10
+ return sonarjsRule.meta?.deprecated ?? false;
11
+ }
12
+
13
+ const nonDeprecatedSonarjsRuleNames = new Set(
14
+ Object
15
+ .entries(sonarjsPlugin.rules)
16
+ .filter(([ , sonarjsRule ]) => {
17
+ return !isSonarjsRuleDeprecated(sonarjsRule);
18
+ })
19
+ .map(([ sonarjsRuleName ]) => {
20
+ return `sonarjs/${sonarjsRuleName}`;
21
+ })
22
+ );
23
+
24
+ const nonDeprecatedSonarjsRecommendedRules = Object.fromEntries(
25
+ Object.entries(sonarjsPlugin.configs.recommended.rules).filter(([ sonarjsRuleName ]) => {
26
+ return nonDeprecatedSonarjsRuleNames.has(sonarjsRuleName);
27
+ })
28
+ );
29
+
30
+ export const bestPracticesRuleSet = {
31
+ plugins: {
32
+ unicorn: unicornPlugin,
33
+ promise: promisePlugin,
34
+ 'array-func': arrayFunctionPlugin,
35
+ sonarjs: sonarjsPlugin,
36
+ 'no-barrel-files': noBarrelFiles
37
+ },
38
+ settings: {},
39
+ rules: {
40
+ 'unicorn/string-content': 'off',
41
+ 'unicorn/consistent-template-literal-escape': 'error',
42
+ 'unicorn/prefer-string-trim-start-end': 'error',
43
+ 'unicorn/prefer-set-has': 'error',
44
+ 'unicorn/prefer-string-replace-all': 'error',
45
+ 'unicorn/prefer-number-properties': 'error',
46
+ 'unicorn/prefer-negative-index': 'error',
47
+ 'unicorn/prefer-modern-dom-apis': 'off',
48
+ 'unicorn/no-null': 'off',
49
+ 'unicorn/catch-error-name': 'error',
50
+ 'unicorn/consistent-function-scoping': 'off',
51
+ 'unicorn/custom-error-definition': 'off',
52
+ 'unicorn/error-message': 'error',
53
+ 'unicorn/escape-case': 'error',
54
+ 'unicorn/expiring-todo-comments': 'error',
55
+ 'unicorn/explicit-length-check': 'error',
56
+ 'unicorn/no-useless-length-check': 'error',
57
+ 'unicorn/filename-case': 'off',
58
+ 'unicorn/no-immediate-mutation': 'error',
59
+ 'unicorn/new-for-builtins': 'error',
60
+ 'unicorn/no-abusive-eslint-disable': 'error',
61
+ 'unicorn/no-console-spaces': 'error',
62
+ 'unicorn/no-array-callback-reference': 'off',
63
+ 'unicorn/no-for-loop': 'error',
64
+ 'unicorn/no-hex-escape': 'error',
65
+ 'unicorn/no-keyword-prefix': 'off',
66
+ 'unicorn/no-nested-ternary': 'off',
67
+ 'unicorn/no-new-buffer': 'error',
68
+ 'unicorn/no-process-exit': 'error',
69
+ 'unicorn/no-unreadable-array-destructuring': 'error',
70
+ 'unicorn/no-unused-properties': 'off',
71
+ 'unicorn/no-zero-fractions': 'error',
72
+ 'unicorn/number-literal-case': 'error',
73
+ 'unicorn/prefer-add-event-listener': 'error',
74
+ 'unicorn/prefer-dom-node-dataset': 'error',
75
+ 'unicorn/prefer-keyboard-event-key': 'error',
76
+ 'unicorn/prefer-array-flat-map': 'error',
77
+ 'unicorn/prefer-includes': 'error',
78
+ 'unicorn/prefer-dom-node-append': 'error',
79
+ 'unicorn/prefer-dom-node-remove': 'error',
80
+ 'unicorn/prefer-query-selector': 'error',
81
+ 'unicorn/prefer-reflect-apply': 'error',
82
+ 'unicorn/prefer-spread': 'off',
83
+ 'unicorn/prefer-string-starts-ends-with': 'error',
84
+ 'unicorn/prefer-string-slice': 'error',
85
+ 'unicorn/prefer-dom-node-text-content': 'error',
86
+ 'unicorn/prefer-type-error': 'error',
87
+ 'unicorn/prevent-abbreviations': 'off',
88
+ 'unicorn/better-regex': 'error',
89
+ 'unicorn/throw-new-error': 'error',
90
+ 'unicorn/no-array-reduce': 'off',
91
+ 'unicorn/no-useless-undefined': 'off',
92
+ 'unicorn/prefer-optional-catch-binding': 'error',
93
+ 'unicorn/no-object-as-default-parameter': 'off',
94
+ 'unicorn/prefer-array-find': 'error',
95
+ 'unicorn/import-style': 'off',
96
+ 'unicorn/numeric-separators-style': 'error',
97
+ 'unicorn/prefer-math-trunc': 'error',
98
+ 'unicorn/prefer-ternary': 'error',
99
+ 'unicorn/prefer-array-some': 'error',
100
+ 'unicorn/prefer-default-parameters': 'error',
101
+ 'unicorn/no-lonely-if': 'error',
102
+ 'unicorn/empty-brace-spaces': 'off',
103
+ 'unicorn/prefer-date-now': 'error',
104
+ 'unicorn/consistent-destructuring': 'off',
105
+ 'unicorn/no-array-for-each': 'off',
106
+ 'unicorn/no-new-array': 'error',
107
+ 'unicorn/no-this-assignment': 'error',
108
+ 'unicorn/prefer-array-index-of': 'error',
109
+ 'unicorn/prefer-regexp-test': 'error',
110
+ 'unicorn/no-static-only-class': 'error',
111
+ 'unicorn/prefer-array-flat': 'error',
112
+ 'unicorn/prefer-module': 'off',
113
+ 'unicorn/prefer-node-protocol': 'error',
114
+ 'unicorn/prefer-switch': 'off',
115
+ 'unicorn/no-document-cookie': 'off',
116
+ 'unicorn/require-array-join-separator': 'off',
117
+ 'unicorn/require-number-to-fixed-digits-argument': 'off',
118
+ 'unicorn/prefer-prototype-methods': 'off',
119
+ 'unicorn/no-array-method-this-argument': 'off',
120
+ 'unicorn/require-post-message-target-origin': 'error',
121
+ 'unicorn/no-useless-spread': 'error',
122
+ 'unicorn/prefer-object-from-entries': 'error',
123
+ 'unicorn/no-useless-fallback-in-spread': 'error',
124
+ 'unicorn/no-invalid-remove-event-listener': 'off',
125
+ 'unicorn/template-indent': 'error',
126
+ 'unicorn/no-empty-file': 'error',
127
+ 'unicorn/prefer-export-from': 'error',
128
+ 'unicorn/no-await-expression-member': 'error',
129
+ 'unicorn/prefer-code-point': 'error',
130
+ 'unicorn/no-thenable': 'off',
131
+ 'unicorn/no-useless-promise-resolve-reject': 'error',
132
+ 'unicorn/prefer-json-parse-buffer': 'off',
133
+ 'unicorn/relative-url-style': 'off',
134
+ 'unicorn/text-encoding-identifier-case': 'off',
135
+ 'unicorn/no-useless-switch-case': 'error',
136
+ 'unicorn/prefer-modern-math-apis': 'error',
137
+ 'unicorn/no-unreadable-iife': 'error',
138
+ 'unicorn/prefer-native-coercion-functions': 'error',
139
+ 'unicorn/prefer-event-target': 'off',
140
+ 'unicorn/prefer-logical-operator-over-ternary': 'off',
141
+ 'unicorn/no-unnecessary-await': 'error',
142
+ 'unicorn/switch-case-braces': 'off',
143
+ 'unicorn/no-negated-condition': 'error',
144
+ 'unicorn/no-typeof-undefined': 'error',
145
+ 'unicorn/prefer-set-size': 'error',
146
+ 'unicorn/prefer-blob-reading-methods': 'error',
147
+ 'unicorn/prefer-top-level-await': 'off',
148
+ 'unicorn/prefer-at': 'error',
149
+ 'unicorn/no-unnecessary-polyfills': 'off',
150
+ 'unicorn/no-single-promise-in-promise-methods': 'error',
151
+ 'unicorn/no-await-in-promise-methods': 'error',
152
+ 'unicorn/no-anonymous-default-export': 'error',
153
+ 'unicorn/consistent-empty-array-spread': 'error',
154
+ 'unicorn/no-invalid-fetch-options': 'error',
155
+ 'unicorn/no-magic-array-flat-depth': 'error',
156
+ 'unicorn/no-negation-in-equality-check': 'error',
157
+ 'unicorn/prefer-string-raw': 'off',
158
+ 'unicorn/prefer-structured-clone': 'error',
159
+ 'unicorn/consistent-existence-index-check': 'error',
160
+ 'unicorn/prefer-global-this': 'error',
161
+ 'unicorn/prefer-math-min-max': 'error',
162
+ 'unicorn/consistent-assert': 'error',
163
+ 'unicorn/consistent-date-clone': 'error',
164
+ 'unicorn/no-accessor-recursion': 'error',
165
+ 'unicorn/no-array-reverse': 'error',
166
+ 'unicorn/no-array-sort': 'error',
167
+ 'unicorn/no-instanceof-builtins': 'error',
168
+ 'unicorn/no-named-default': 'error',
169
+ 'unicorn/no-unnecessary-array-flat-depth': 'error',
170
+ 'unicorn/no-unnecessary-array-splice-count': 'error',
171
+ 'unicorn/no-unnecessary-slice-end': 'error',
172
+ 'unicorn/no-useless-iterator-to-array': 'error',
173
+ 'unicorn/no-useless-error-capture-stack-trace': 'error',
174
+ 'unicorn/prefer-bigint-literals': 'error',
175
+ 'unicorn/prefer-class-fields': 'error',
176
+ 'unicorn/prefer-classlist-toggle': 'error',
177
+ 'unicorn/prefer-import-meta-properties': 'off',
178
+ 'unicorn/prefer-simple-condition-first': 'error',
179
+ 'unicorn/prefer-single-call': 'error',
180
+ 'unicorn/require-module-attributes': 'error',
181
+ 'unicorn/require-module-specifiers': 'error',
182
+ 'unicorn/no-useless-collection-argument': 'error',
183
+ 'unicorn/prefer-response-static-json': 'error',
184
+ 'unicorn/isolated-functions': 'off',
185
+ 'unicorn/switch-case-break-position': 'error',
186
+
187
+ 'array-func/from-map': 'error',
188
+ 'array-func/no-unnecessary-this-arg': 'error',
189
+ 'array-func/prefer-array-from': 'error',
190
+ 'array-func/avoid-reverse': 'error',
191
+ 'array-func/prefer-flat-map': 'error',
192
+ 'array-func/prefer-flat': 'error',
193
+
194
+ ...nonDeprecatedSonarjsRecommendedRules,
195
+
196
+ 'sonarjs/cognitive-complexity': 'off',
197
+ 'sonarjs/elseif-without-else': 'off',
198
+ 'sonarjs/max-switch-cases': [ 'error', maxSwitchCases ],
199
+ 'sonarjs/no-all-duplicated-branches': 'error',
200
+ 'sonarjs/no-collapsible-if': 'error',
201
+ 'sonarjs/no-collection-size-mischeck': 'error',
202
+ 'sonarjs/no-clear-text-protocols': 'off',
203
+ 'sonarjs/no-duplicate-string': 'off',
204
+ 'sonarjs/no-duplicated-branches': 'error',
205
+ 'sonarjs/no-element-overwrite': 'error',
206
+ 'sonarjs/no-empty-collection': 'error',
207
+ 'sonarjs/no-extra-arguments': 'off',
208
+ 'sonarjs/function-name': 'off',
209
+ 'sonarjs/no-gratuitous-expressions': 'error',
210
+ 'sonarjs/no-identical-conditions': 'error',
211
+ 'sonarjs/no-identical-expressions': 'error',
212
+ 'sonarjs/no-identical-functions': 'error',
213
+ 'sonarjs/no-ignored-return': 'error',
214
+ 'sonarjs/no-inverted-boolean-check': 'error',
215
+ 'sonarjs/no-nested-switch': 'error',
216
+ 'sonarjs/no-nested-template-literals': 'error',
217
+ 'sonarjs/no-redundant-boolean': 'off',
218
+ 'sonarjs/no-redundant-jump': 'off',
219
+ 'sonarjs/no-same-line-conditional': 'error',
220
+ 'sonarjs/no-small-switch': 'error',
221
+ 'sonarjs/no-unused-collection': 'error',
222
+ 'sonarjs/no-use-of-empty-return-value': 'error',
223
+ 'sonarjs/no-useless-catch': 'error',
224
+ 'sonarjs/non-existent-operator': 'error',
225
+ 'sonarjs/prefer-immediate-return': 'off',
226
+ 'sonarjs/prefer-object-literal': 'error',
227
+ 'sonarjs/prefer-single-boolean-return': 'error',
228
+ 'sonarjs/prefer-while': 'error',
229
+
230
+ 'promise/avoid-new': 'off',
231
+ 'promise/no-nesting': 'error',
232
+ 'promise/no-promise-in-callback': 'error',
233
+ 'promise/no-callback-in-promise': 'error',
234
+ 'promise/no-native': 'off',
235
+ 'promise/prefer-await-to-callbacks': 'off',
236
+ 'promise/catch-or-return': 'error',
237
+ 'promise/always-return': 'off',
238
+ 'promise/param-names': 'error',
239
+ 'promise/no-return-wrap': [
240
+ 'error',
241
+ {
242
+ allowReject: true
243
+ }
244
+ ],
245
+ 'promise/no-new-statics': 'error',
246
+ 'promise/no-return-in-finally': 'error',
247
+ 'promise/valid-params': 'error',
248
+ 'promise/prefer-await-to-then': [ 'error', { strict: true } ],
249
+ 'promise/no-multiple-resolved': 'error',
250
+ 'promise/spec-only': 'error',
251
+ 'promise/prefer-catch': 'error',
252
+
253
+ 'no-barrel-files/no-barrel-files': 'error'
254
+ }
255
+ };
@@ -0,0 +1,44 @@
1
+ import { builtinRules } from 'eslint/use-at-your-own-risk';
2
+
3
+ const noRestrictedSyntaxRule = builtinRules.get('no-restricted-syntax');
4
+
5
+ export function createRestrictedSyntaxPlugin(ruleNames) {
6
+ return {
7
+ rules: Object.fromEntries(
8
+ ruleNames.map((ruleName) => {
9
+ return [ ruleName, noRestrictedSyntaxRule ];
10
+ })
11
+ )
12
+ };
13
+ }
14
+
15
+ const defaultAllowedSuperClassNamePattern = '/Error$/';
16
+ const defaultClassDeclarationMessage = 'Class declarations are not allowed except for extending errors.';
17
+
18
+ export function createNoClassDeclarationRestriction({
19
+ allowedSuperClassNamePattern = defaultAllowedSuperClassNamePattern,
20
+ message = defaultClassDeclarationMessage
21
+ } = {}) {
22
+ return {
23
+ selector: `ClassDeclaration[superClass.name!=${allowedSuperClassNamePattern}]`,
24
+ message
25
+ };
26
+ }
27
+
28
+ export const noClassDeclarationRestriction = createNoClassDeclarationRestriction();
29
+
30
+ export const noSwitchStatementRestriction = {
31
+ selector: 'SwitchStatement',
32
+ message: 'Use pattern matching instead.'
33
+ };
34
+
35
+ const emptyFunctionBodySelector = [ 'FunctionDeclaration', 'FunctionExpression', 'ArrowFunctionExpression' ]
36
+ .map((kind) => {
37
+ return `${kind} > BlockStatement[body.length=0]`;
38
+ })
39
+ .join(', ');
40
+
41
+ export const noEmptyFunctionBodyRestriction = {
42
+ selector: emptyFunctionBodySelector,
43
+ message: 'Empty function bodies are not allowed, even with a comment.'
44
+ };
@@ -0,0 +1,232 @@
1
+ import stylisticPlugin from '@stylistic/eslint-plugin';
2
+ import destructuringPlugin from 'eslint-plugin-destructuring';
3
+ import { indentSize } from '../constants.js';
4
+
5
+ export const stylisticRuleSet = {
6
+ plugins: {
7
+ destructuring: destructuringPlugin,
8
+ '@stylistic': stylisticPlugin
9
+ },
10
+
11
+ settings: {},
12
+
13
+ rules: {
14
+ 'destructuring/in-methods-params': 'error',
15
+ 'destructuring/in-params': [ 'error', { 'max-params': 0 } ],
16
+ 'destructuring/no-rename': 'off',
17
+
18
+ '@stylistic/array-bracket-newline': 'off',
19
+ '@stylistic/array-bracket-spacing': [ 'error', 'always' ],
20
+ '@stylistic/array-element-newline': [ 'error', 'consistent' ],
21
+ '@stylistic/arrow-parens': [ 'error', 'always' ],
22
+ '@stylistic/arrow-spacing': [
23
+ 'error',
24
+ {
25
+ before: true,
26
+ after: true
27
+ }
28
+ ],
29
+ '@stylistic/block-spacing': 'off',
30
+ '@stylistic/brace-style': [ 'error', '1tbs', { allowSingleLine: false } ],
31
+ '@stylistic/comma-dangle': [ 'error', 'never' ],
32
+ '@stylistic/comma-spacing': [
33
+ 'error',
34
+ {
35
+ before: false,
36
+ after: true
37
+ }
38
+ ],
39
+ '@stylistic/comma-style': [ 'error', 'last' ],
40
+ '@stylistic/computed-property-spacing': [
41
+ 'error',
42
+ 'never',
43
+ {
44
+ enforceForClassMembers: true
45
+ }
46
+ ],
47
+ '@stylistic/dot-location': [ 'error', 'property' ],
48
+ '@stylistic/eol-last': 'error',
49
+ '@stylistic/exp-list-style': 'off',
50
+ '@stylistic/exp-jsx-props-style': 'off',
51
+ '@stylistic/function-call-spacing': [ 'error', 'never' ],
52
+ '@stylistic/function-call-argument-newline': [ 'error', 'consistent' ],
53
+ '@stylistic/function-paren-newline': 'off',
54
+ '@stylistic/generator-star-spacing': [ 'error', { before: false, after: true } ],
55
+ '@stylistic/indent-binary-ops': [ 'error', indentSize ],
56
+ '@stylistic/implicit-arrow-linebreak': 'off',
57
+ '@stylistic/indent': [
58
+ 'error',
59
+ indentSize,
60
+ {
61
+ SwitchCase: 1,
62
+ VariableDeclarator: 1,
63
+ MemberExpression: 1
64
+ }
65
+ ],
66
+ '@stylistic/jsx-child-element-spacing': 'off',
67
+ '@stylistic/jsx-closing-bracket-location': 'off',
68
+ '@stylistic/jsx-closing-tag-location': 'off',
69
+ '@stylistic/jsx-curly-brace-presence': 'off',
70
+ '@stylistic/jsx-curly-newline': 'off',
71
+ '@stylistic/jsx-curly-spacing': 'off',
72
+ '@stylistic/jsx-equals-spacing': 'off',
73
+ '@stylistic/jsx-first-prop-new-line': 'off',
74
+ '@stylistic/jsx-indent-props': 'off',
75
+ '@stylistic/jsx-max-props-per-line': 'off',
76
+ '@stylistic/jsx-newline': 'off',
77
+ '@stylistic/jsx-one-expression-per-line': 'off',
78
+ '@stylistic/jsx-self-closing-comp': 'off',
79
+ '@stylistic/jsx-tag-spacing': 'off',
80
+ '@stylistic/jsx-quotes': 'off',
81
+ '@stylistic/jsx-wrap-multilines': 'off',
82
+ '@stylistic/jsx-function-call-newline': 'off',
83
+ '@stylistic/key-spacing': [
84
+ 'error',
85
+ {
86
+ beforeColon: false,
87
+ afterColon: true
88
+ }
89
+ ],
90
+ '@stylistic/keyword-spacing': [
91
+ 'error',
92
+ {
93
+ before: true,
94
+ after: true
95
+ }
96
+ ],
97
+ '@stylistic/linebreak-style': [ 'error', 'unix' ],
98
+ '@stylistic/lines-between-class-members': [
99
+ 'error',
100
+ 'always',
101
+ {
102
+ exceptAfterSingleLine: true
103
+ }
104
+ ],
105
+ '@stylistic/lines-around-comment': 'off',
106
+ '@stylistic/max-len': [
107
+ 'error',
108
+ {
109
+ code: 120,
110
+ tabWidth: indentSize,
111
+ ignoreComments: true,
112
+ ignoreTrailingComments: true,
113
+ ignoreUrls: true,
114
+ ignoreStrings: false,
115
+ ignoreTemplateLiterals: false,
116
+ ignoreRegExpLiterals: true
117
+ }
118
+ ],
119
+ '@stylistic/max-statements-per-line': [ 'error', { max: 1 } ],
120
+ '@stylistic/member-delimiter-style': [
121
+ 'error',
122
+ {
123
+ multiline: {
124
+ delimiter: 'semi',
125
+ requireLast: true
126
+ },
127
+ singleline: {
128
+ delimiter: 'semi',
129
+ requireLast: false
130
+ }
131
+ }
132
+ ],
133
+ '@stylistic/multiline-ternary': 'off',
134
+ '@stylistic/new-parens': 'error',
135
+ '@stylistic/newline-per-chained-call': 'off',
136
+ '@stylistic/no-confusing-arrow': 'error',
137
+ '@stylistic/no-extra-parens': 'error',
138
+ '@stylistic/no-extra-semi': 'error',
139
+ '@stylistic/no-floating-decimal': 'error',
140
+ '@stylistic/no-mixed-operators': 'off',
141
+ '@stylistic/no-mixed-spaces-and-tabs': 'error',
142
+ '@stylistic/no-multi-spaces': 'error',
143
+ '@stylistic/no-multiple-empty-lines': [ 'error', { max: 1 } ],
144
+ '@stylistic/no-tabs': 'error',
145
+ '@stylistic/no-trailing-spaces': 'error',
146
+ '@stylistic/no-whitespace-before-property': 'error',
147
+ '@stylistic/nonblock-statement-body-position': 'off',
148
+ '@stylistic/object-curly-newline': 'off',
149
+ '@stylistic/object-curly-spacing': [ 'error', 'always' ],
150
+ '@stylistic/object-property-newline': 'off',
151
+ '@stylistic/one-var-declaration-per-line': 'error',
152
+ '@stylistic/operator-linebreak': [ 'error', 'after', { overrides: { '?': 'before', ':': 'before' } } ],
153
+ '@stylistic/padded-blocks': [
154
+ 'error',
155
+ 'never',
156
+ {
157
+ allowSingleLineBlocks: false
158
+ }
159
+ ],
160
+ '@stylistic/padding-line-between-statements': [
161
+ 'error',
162
+ {
163
+ blankLine: 'always',
164
+ prev: 'directive',
165
+ next: '*'
166
+ },
167
+ {
168
+ blankLine: 'any',
169
+ prev: 'directive',
170
+ next: 'directive'
171
+ }
172
+ ],
173
+ '@stylistic/quote-props': [ 'error', 'as-needed' ],
174
+ '@stylistic/quotes': [ 'error', 'single', { avoidEscape: true } ],
175
+ '@stylistic/rest-spread-spacing': [ 'error', 'never' ],
176
+ '@stylistic/semi': [ 'error', 'always' ],
177
+ '@stylistic/semi-spacing': [
178
+ 'error',
179
+ {
180
+ before: false,
181
+ after: true
182
+ }
183
+ ],
184
+ '@stylistic/semi-style': [ 'error', 'last' ],
185
+ '@stylistic/space-before-blocks': [ 'error', 'always' ],
186
+ '@stylistic/space-before-function-paren': [
187
+ 'error',
188
+ {
189
+ anonymous: 'always',
190
+ named: 'never',
191
+ asyncArrow: 'always'
192
+ }
193
+ ],
194
+ '@stylistic/space-in-parens': [ 'error', 'never' ],
195
+ '@stylistic/space-infix-ops': 'error',
196
+ '@stylistic/space-unary-ops': 'error',
197
+ '@stylistic/spaced-comment': [
198
+ 'error',
199
+ 'always',
200
+ {
201
+ line: {
202
+ exceptions: [ '-', '+', '*' ],
203
+ markers: [ '!', '/', '=>' ]
204
+ },
205
+ block: {
206
+ exceptions: [ '-', '+', '*' ],
207
+ markers: [ '!', '*' ],
208
+ balanced: true
209
+ }
210
+ }
211
+ ],
212
+ '@stylistic/switch-colon-spacing': [
213
+ 'error',
214
+ {
215
+ after: true,
216
+ before: false
217
+ }
218
+ ],
219
+ '@stylistic/curly-newline': 'off',
220
+ '@stylistic/template-curly-spacing': 'error',
221
+ '@stylistic/template-tag-spacing': [ 'error', 'never' ],
222
+ '@stylistic/type-annotation-spacing': 'error',
223
+ '@stylistic/type-generic-spacing': 'error',
224
+ '@stylistic/type-named-tuple-spacing': 'error',
225
+ '@stylistic/wrap-iife': [ 'error', 'inside' ],
226
+ '@stylistic/wrap-regex': 'off',
227
+ '@stylistic/yield-star-spacing': [ 'error', { before: false, after: true } ],
228
+ '@stylistic/jsx-pascal-case': 'off',
229
+ '@stylistic/line-comment-position': 'off',
230
+ '@stylistic/multiline-comment-style': 'off'
231
+ }
232
+ };