eslint-config-typed 4.2.1 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/configs/immer.d.mts +3 -0
- package/dist/configs/immer.d.mts.map +1 -0
- package/dist/configs/immer.mjs +11 -0
- package/dist/configs/immer.mjs.map +1 -0
- package/dist/configs/index.d.mts +2 -0
- package/dist/configs/index.d.mts.map +1 -1
- package/dist/configs/index.mjs +2 -0
- package/dist/configs/index.mjs.map +1 -1
- package/dist/configs/plugins.d.mts +1 -1
- package/dist/configs/plugins.d.mts.map +1 -1
- package/dist/configs/plugins.mjs +2 -0
- package/dist/configs/plugins.mjs.map +1 -1
- package/dist/configs/ts-data-forge.d.mts +3 -0
- package/dist/configs/ts-data-forge.d.mts.map +1 -0
- package/dist/configs/ts-data-forge.mjs +11 -0
- package/dist/configs/ts-data-forge.mjs.map +1 -0
- package/dist/configs/typescript.d.mts.map +1 -1
- package/dist/configs/typescript.mjs +0 -2
- package/dist/configs/typescript.mjs.map +1 -1
- package/dist/entry-point.mjs +4 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/index.mjs +4 -0
- package/dist/index.mjs.map +1 -1
- package/dist/plugins/index.d.mts +1 -0
- package/dist/plugins/index.d.mts.map +1 -1
- package/dist/plugins/index.mjs +1 -0
- package/dist/plugins/index.mjs.map +1 -1
- package/dist/plugins/ts-data-forge/index.d.mts +2 -0
- package/dist/plugins/ts-data-forge/index.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/index.mjs +2 -0
- package/dist/plugins/ts-data-forge/index.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/plugin.d.mts +3 -0
- package/dist/plugins/ts-data-forge/plugin.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/plugin.mjs +8 -0
- package/dist/plugins/ts-data-forge/plugin.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/branded-number-types.d.mts +5 -0
- package/dist/plugins/ts-data-forge/rules/branded-number-types.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/branded-number-types.mjs +35 -0
- package/dist/plugins/ts-data-forge/rules/branded-number-types.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/constants.d.mts +2 -0
- package/dist/plugins/ts-data-forge/rules/constants.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/constants.mjs +4 -0
- package/dist/plugins/ts-data-forge/rules/constants.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/import-utils.d.mts +5 -0
- package/dist/plugins/ts-data-forge/rules/import-utils.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/import-utils.mjs +31 -0
- package/dist/plugins/ts-data-forge/rules/import-utils.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/index.d.mts +2 -0
- package/dist/plugins/ts-data-forge/rules/index.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/index.mjs +2 -0
- package/dist/plugins/ts-data-forge/rules/index.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.mjs +94 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.mjs +95 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array.mjs +72 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-array.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-non-empty.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-non-empty.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-non-empty.mjs +71 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-is-non-empty.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-sum.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-sum.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-sum.mjs +183 -0
- package/dist/plugins/ts-data-forge/rules/prefer-arr-sum.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-as-int.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-as-int.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-as-int.mjs +86 -0
- package/dist/plugins/ts-data-forge/rules/prefer-as-int.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-non-null-object.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-non-null-object.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-non-null-object.mjs +103 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-non-null-object.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-record-and-has-key.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-record-and-has-key.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-record-and-has-key.mjs +105 -0
- package/dist/plugins/ts-data-forge/rules/prefer-is-record-and-has-key.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-range-for-loop.d.mts +6 -0
- package/dist/plugins/ts-data-forge/rules/prefer-range-for-loop.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/prefer-range-for-loop.mjs +130 -0
- package/dist/plugins/ts-data-forge/rules/prefer-range-for-loop.mjs.map +1 -0
- package/dist/plugins/ts-data-forge/rules/rules.d.mts +12 -0
- package/dist/plugins/ts-data-forge/rules/rules.d.mts.map +1 -0
- package/dist/plugins/ts-data-forge/rules/rules.mjs +24 -0
- package/dist/plugins/ts-data-forge/rules/rules.mjs.map +1 -0
- package/dist/plugins/ts-restrictions/rules/check-destructuring-completeness.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/check-destructuring-completeness.mjs +6 -8
- package/dist/plugins/ts-restrictions/rules/check-destructuring-completeness.mjs.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-restricted-cast-name.d.mts.map +1 -1
- package/dist/plugins/ts-restrictions/rules/no-restricted-cast-name.mjs +11 -15
- package/dist/plugins/ts-restrictions/rules/no-restricted-cast-name.mjs.map +1 -1
- package/dist/rules/eslint-jest-rules.d.mts +3 -0
- package/dist/rules/eslint-jest-rules.d.mts.map +1 -1
- package/dist/rules/eslint-jest-rules.mjs +3 -0
- package/dist/rules/eslint-jest-rules.mjs.map +1 -1
- package/dist/rules/eslint-ts-data-forge-rules.d.mts +12 -0
- package/dist/rules/eslint-ts-data-forge-rules.d.mts.map +1 -0
- package/dist/rules/eslint-ts-data-forge-rules.mjs +14 -0
- package/dist/rules/eslint-ts-data-forge-rules.mjs.map +1 -0
- package/dist/rules/eslint-vitest-rules.d.mts +2 -2
- package/dist/rules/eslint-vitest-rules.mjs +2 -2
- package/dist/rules/eslint-vitest-rules.mjs.map +1 -1
- package/dist/rules/index.d.mts +1 -0
- package/dist/rules/index.d.mts.map +1 -1
- package/dist/rules/index.mjs +1 -0
- package/dist/rules/index.mjs.map +1 -1
- package/dist/types/define-known-rules.d.mts +2 -2
- package/dist/types/define-known-rules.d.mts.map +1 -1
- package/dist/types/define-known-rules.mjs.map +1 -1
- package/dist/types/rules/eslint-jest-rules.d.mts +119 -67
- package/dist/types/rules/eslint-jest-rules.d.mts.map +1 -1
- package/dist/types/rules/eslint-ts-data-forge-rules.d.mts +147 -0
- package/dist/types/rules/eslint-ts-data-forge-rules.d.mts.map +1 -0
- package/dist/types/rules/eslint-ts-data-forge-rules.mjs +2 -0
- package/dist/types/rules/eslint-ts-data-forge-rules.mjs.map +1 -0
- package/dist/types/rules/eslint-vitest-rules.d.mts +41 -20
- package/dist/types/rules/eslint-vitest-rules.d.mts.map +1 -1
- package/dist/types/rules/index.d.mts +1 -0
- package/dist/types/rules/index.d.mts.map +1 -1
- package/package.json +15 -15
- package/src/configs/immer.mts +9 -0
- package/src/configs/index.mts +2 -0
- package/src/configs/plugins.mts +3 -0
- package/src/configs/ts-data-forge.mts +11 -0
- package/src/configs/typescript.mts +0 -2
- package/src/plugins/index.mts +1 -0
- package/src/plugins/strict-dependencies/rules/resolve-import-path.test.mts +7 -9
- package/src/plugins/ts-data-forge/index.mts +1 -0
- package/src/plugins/ts-data-forge/plugin.mts +6 -0
- package/src/plugins/ts-data-forge/rules/branded-number-types.mts +36 -0
- package/src/plugins/ts-data-forge/rules/constants.mts +1 -0
- package/src/plugins/ts-data-forge/rules/import-utils.mts +56 -0
- package/src/plugins/ts-data-forge/rules/index.mts +1 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.mts +140 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-array-at-least-length.test.mts +175 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.mts +144 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-array-of-length.test.mts +183 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-array.mts +97 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-array.test.mts +62 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-non-empty.mts +106 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-is-non-empty.test.mts +83 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-sum.mts +269 -0
- package/src/plugins/ts-data-forge/rules/prefer-arr-sum.test.mts +171 -0
- package/src/plugins/ts-data-forge/rules/prefer-as-int.mts +130 -0
- package/src/plugins/ts-data-forge/rules/prefer-as-int.test.mts +267 -0
- package/src/plugins/ts-data-forge/rules/prefer-is-non-null-object.mts +144 -0
- package/src/plugins/ts-data-forge/rules/prefer-is-non-null-object.test.mts +156 -0
- package/src/plugins/ts-data-forge/rules/prefer-is-record-and-has-key.mts +158 -0
- package/src/plugins/ts-data-forge/rules/prefer-is-record-and-has-key.test.mts +191 -0
- package/src/plugins/ts-data-forge/rules/prefer-range-for-loop.mts +181 -0
- package/src/plugins/ts-data-forge/rules/prefer-range-for-loop.test.mts +156 -0
- package/src/plugins/ts-data-forge/rules/rules.mts +22 -0
- package/src/plugins/ts-restrictions/rules/check-destructuring-completeness.mts +6 -8
- package/src/plugins/ts-restrictions/rules/no-restricted-cast-name.mts +11 -15
- package/src/rules/eslint-jest-rules.mts +3 -0
- package/src/rules/eslint-ts-data-forge-rules.mts +13 -0
- package/src/rules/eslint-vitest-rules.mts +2 -2
- package/src/rules/index.mts +1 -0
- package/src/types/define-known-rules.mts +2 -0
- package/src/types/rules/eslint-jest-rules.mts +122 -67
- package/src/types/rules/eslint-ts-data-forge-rules.mts +156 -0
- package/src/types/rules/eslint-vitest-rules.mts +46 -21
- package/src/types/rules/index.mts +1 -0
|
@@ -171,20 +171,19 @@ export const checkDestructuringCompleteness: TSESLint.RuleModule<
|
|
|
171
171
|
|
|
172
172
|
const objectProps = getObjectTypeProperties(type);
|
|
173
173
|
|
|
174
|
-
const
|
|
174
|
+
const mut_destructuredProps = new Set<string>();
|
|
175
175
|
|
|
176
176
|
for (const prop of node.id.properties) {
|
|
177
177
|
if (
|
|
178
178
|
prop.type === AST_NODE_TYPES.Property &&
|
|
179
179
|
prop.key.type === AST_NODE_TYPES.Identifier
|
|
180
180
|
) {
|
|
181
|
-
|
|
182
|
-
destructuredProps.add(prop.key.name);
|
|
181
|
+
mut_destructuredProps.add(prop.key.name);
|
|
183
182
|
}
|
|
184
183
|
}
|
|
185
184
|
|
|
186
185
|
const missingProps = objectProps.filter(
|
|
187
|
-
(prop) => !
|
|
186
|
+
(prop) => !mut_destructuredProps.has(prop),
|
|
188
187
|
);
|
|
189
188
|
|
|
190
189
|
if (missingProps.length > 0) {
|
|
@@ -218,20 +217,19 @@ export const checkDestructuringCompleteness: TSESLint.RuleModule<
|
|
|
218
217
|
|
|
219
218
|
const objectProps = getObjectTypeProperties(type);
|
|
220
219
|
|
|
221
|
-
const
|
|
220
|
+
const mut_destructuredProps = new Set<string>();
|
|
222
221
|
|
|
223
222
|
for (const prop of param.properties) {
|
|
224
223
|
if (
|
|
225
224
|
prop.type === AST_NODE_TYPES.Property &&
|
|
226
225
|
prop.key.type === AST_NODE_TYPES.Identifier
|
|
227
226
|
) {
|
|
228
|
-
|
|
229
|
-
destructuredProps.add(prop.key.name);
|
|
227
|
+
mut_destructuredProps.add(prop.key.name);
|
|
230
228
|
}
|
|
231
229
|
}
|
|
232
230
|
|
|
233
231
|
const missingProps = objectProps.filter(
|
|
234
|
-
(prop) => !
|
|
232
|
+
(prop) => !mut_destructuredProps.has(prop),
|
|
235
233
|
);
|
|
236
234
|
|
|
237
235
|
if (missingProps.length > 0) {
|
|
@@ -62,7 +62,7 @@ const getTypeName = (
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
if (typeName.type === AST_NODE_TYPES.TSQualifiedName) {
|
|
65
|
-
const
|
|
65
|
+
const mut_parts: string[] = [];
|
|
66
66
|
|
|
67
67
|
// eslint-disable-next-line functional/no-let
|
|
68
68
|
let current:
|
|
@@ -72,8 +72,7 @@ const getTypeName = (
|
|
|
72
72
|
while (current.type === AST_NODE_TYPES.TSQualifiedName) {
|
|
73
73
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
74
74
|
if (current.right.type === AST_NODE_TYPES.Identifier) {
|
|
75
|
-
|
|
76
|
-
parts.unshift(current.right.name);
|
|
75
|
+
mut_parts.unshift(current.right.name);
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
if (
|
|
@@ -87,11 +86,10 @@ const getTypeName = (
|
|
|
87
86
|
}
|
|
88
87
|
|
|
89
88
|
if (current.type === AST_NODE_TYPES.Identifier) {
|
|
90
|
-
|
|
91
|
-
parts.unshift(current.name);
|
|
89
|
+
mut_parts.unshift(current.name);
|
|
92
90
|
}
|
|
93
91
|
|
|
94
|
-
return
|
|
92
|
+
return mut_parts.join('.');
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
95
|
|
|
@@ -157,15 +155,13 @@ export const noRestrictedCastName: TSESLint.RuleModule<MessageIds, Options> = {
|
|
|
157
155
|
create: (context) => {
|
|
158
156
|
const options = context.options;
|
|
159
157
|
|
|
160
|
-
const
|
|
158
|
+
const mut_restrictedTypes = new Map<string, FixWithOption | undefined>();
|
|
161
159
|
|
|
162
160
|
for (const option of options) {
|
|
163
161
|
if (typeof option === 'string') {
|
|
164
|
-
|
|
165
|
-
restrictedTypes.set(option, undefined);
|
|
162
|
+
mut_restrictedTypes.set(option, undefined);
|
|
166
163
|
} else {
|
|
167
|
-
|
|
168
|
-
restrictedTypes.set(option.name, option.fixWith);
|
|
164
|
+
mut_restrictedTypes.set(option.name, option.fixWith);
|
|
169
165
|
}
|
|
170
166
|
}
|
|
171
167
|
|
|
@@ -207,9 +203,9 @@ export const noRestrictedCastName: TSESLint.RuleModule<MessageIds, Options> = {
|
|
|
207
203
|
|
|
208
204
|
if (typeName === undefined) return;
|
|
209
205
|
|
|
210
|
-
const fixWith =
|
|
206
|
+
const fixWith = mut_restrictedTypes.get(typeName);
|
|
211
207
|
|
|
212
|
-
if (fixWith === undefined && !
|
|
208
|
+
if (fixWith === undefined && !mut_restrictedTypes.has(typeName)) return;
|
|
213
209
|
|
|
214
210
|
context.report({
|
|
215
211
|
node: node.typeAnnotation,
|
|
@@ -233,9 +229,9 @@ export const noRestrictedCastName: TSESLint.RuleModule<MessageIds, Options> = {
|
|
|
233
229
|
|
|
234
230
|
if (typeName === undefined) return;
|
|
235
231
|
|
|
236
|
-
const fixWith =
|
|
232
|
+
const fixWith = mut_restrictedTypes.get(typeName);
|
|
237
233
|
|
|
238
|
-
if (fixWith === undefined && !
|
|
234
|
+
if (fixWith === undefined && !mut_restrictedTypes.has(typeName)) return;
|
|
239
235
|
|
|
240
236
|
context.report({
|
|
241
237
|
node: node.typeAnnotation,
|
|
@@ -87,4 +87,7 @@ export const eslintJestRules = {
|
|
|
87
87
|
'jest/prefer-to-have-been-called-times': 'error',
|
|
88
88
|
|
|
89
89
|
'jest/valid-mock-module-path': withDefaultOption('error'),
|
|
90
|
+
'jest/no-error-equal': 'error',
|
|
91
|
+
'jest/no-unnecessary-assertion': 'error',
|
|
92
|
+
'jest/valid-expect-with-promise': 'error',
|
|
90
93
|
} as const satisfies EslintJestRules;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type EslintTsDataForgeRules } from '../types/index.mjs';
|
|
2
|
+
|
|
3
|
+
export const eslintTsDataForgeRules = {
|
|
4
|
+
'ts-data-forge/prefer-as-int': 'error',
|
|
5
|
+
'ts-data-forge/prefer-is-non-null-object': 'error',
|
|
6
|
+
'ts-data-forge/prefer-arr-is-array': 'error',
|
|
7
|
+
'ts-data-forge/prefer-arr-is-non-empty': 'error',
|
|
8
|
+
'ts-data-forge/prefer-arr-sum': 'error',
|
|
9
|
+
'ts-data-forge/prefer-range-for-loop': 'error',
|
|
10
|
+
'ts-data-forge/prefer-arr-is-array-at-least-length': 'error',
|
|
11
|
+
'ts-data-forge/prefer-arr-is-array-of-length': 'error',
|
|
12
|
+
'ts-data-forge/prefer-is-record-and-has-key': 'error',
|
|
13
|
+
} as const satisfies EslintTsDataForgeRules;
|
|
@@ -95,7 +95,7 @@ export const eslintVitestRules = {
|
|
|
95
95
|
'vitest/prefer-called-times': 'off',
|
|
96
96
|
'vitest/prefer-describe-function-title': 'error',
|
|
97
97
|
'vitest/prefer-expect-type-of': 'error',
|
|
98
|
-
'vitest/prefer-import-in-mock': 'error',
|
|
98
|
+
'vitest/prefer-import-in-mock': withDefaultOption('error'),
|
|
99
99
|
'vitest/prefer-strict-boolean-matchers': 'error',
|
|
100
100
|
'vitest/prefer-vi-mocked': 'error',
|
|
101
101
|
'vitest/require-mock-type-parameters': 'off',
|
|
@@ -116,8 +116,8 @@ export const eslintVitestRules = {
|
|
|
116
116
|
suite: 'each',
|
|
117
117
|
},
|
|
118
118
|
],
|
|
119
|
-
'vitest/require-import-vi-mock': 'error',
|
|
120
119
|
'vitest/no-unneeded-async-expect-function': 'error',
|
|
120
|
+
'vitest/prefer-to-have-been-called-times': 'error',
|
|
121
121
|
|
|
122
122
|
// deprecated
|
|
123
123
|
'vitest/no-done-callback': 0,
|
package/src/rules/index.mts
CHANGED
|
@@ -23,6 +23,7 @@ export * from './eslint-stylistic-rules.mjs';
|
|
|
23
23
|
export * from './eslint-testing-library-rules.mjs';
|
|
24
24
|
export * from './eslint-total-functions-rules.mjs';
|
|
25
25
|
export * from './eslint-tree-shakable-rules.mjs';
|
|
26
|
+
export * from './eslint-ts-data-forge-rules.mjs';
|
|
26
27
|
export * from './eslint-ts-restrictions-rules.mjs';
|
|
27
28
|
export * from './eslint-unicorn-rules.mjs';
|
|
28
29
|
export * from './eslint-vitest-coding-style-rules.mjs';
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
type EslintTestingLibraryRules,
|
|
26
26
|
type EslintTotalFunctionsRules,
|
|
27
27
|
type EslintTreeShakableRules,
|
|
28
|
+
type EslintTsDataForgeRules,
|
|
28
29
|
type EslintTsRestrictionsRules,
|
|
29
30
|
type EslintUnicornRules,
|
|
30
31
|
type EslintVitestCodingStyleRules,
|
|
@@ -62,6 +63,7 @@ type KnownRules = DeepReadonly<
|
|
|
62
63
|
EslintVitestRules &
|
|
63
64
|
EslintVitestCodingStyleRules &
|
|
64
65
|
EslintImmerCodingStyleRules &
|
|
66
|
+
EslintTsDataForgeRules &
|
|
65
67
|
EslintReactCodingStyleRules &
|
|
66
68
|
TypeScriptEslintRules
|
|
67
69
|
>;
|