@typescript-eslint/eslint-plugin 8.49.1-alpha.2 → 8.49.1-alpha.3
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/dist/configs/eslintrc/all.d.ts +1 -0
- package/dist/configs/eslintrc/all.js +1 -0
- package/dist/configs/eslintrc/disable-type-checked.d.ts +1 -0
- package/dist/configs/eslintrc/disable-type-checked.js +1 -0
- package/dist/configs/eslintrc/strict-type-checked-only.d.ts +1 -0
- package/dist/configs/eslintrc/strict-type-checked-only.js +1 -0
- package/dist/configs/eslintrc/strict-type-checked.d.ts +1 -0
- package/dist/configs/eslintrc/strict-type-checked.js +1 -0
- package/dist/configs/flat/all.js +1 -0
- package/dist/configs/flat/disable-type-checked.js +1 -0
- package/dist/configs/flat/strict-type-checked-only.js +1 -0
- package/dist/configs/flat/strict-type-checked.js +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/raw-plugin.d.ts +5 -0
- package/dist/rules/index.d.ts +1 -0
- package/dist/rules/index.js +2 -0
- package/dist/rules/no-useless-default-assignment.d.ts +3 -0
- package/dist/rules/no-useless-default-assignment.js +222 -0
- package/package.json +8 -8
|
@@ -111,6 +111,7 @@ declare const _default: {
|
|
|
111
111
|
'@typescript-eslint/no-use-before-define': "error";
|
|
112
112
|
'no-useless-constructor': "off";
|
|
113
113
|
'@typescript-eslint/no-useless-constructor': "error";
|
|
114
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
114
115
|
'@typescript-eslint/no-useless-empty-export': "error";
|
|
115
116
|
'@typescript-eslint/no-wrapper-object-types': "error";
|
|
116
117
|
'@typescript-eslint/non-nullable-type-assertion-style': "error";
|
|
@@ -118,6 +118,7 @@ module.exports = {
|
|
|
118
118
|
'@typescript-eslint/no-use-before-define': 'error',
|
|
119
119
|
'no-useless-constructor': 'off',
|
|
120
120
|
'@typescript-eslint/no-useless-constructor': 'error',
|
|
121
|
+
'@typescript-eslint/no-useless-default-assignment': 'error',
|
|
121
122
|
'@typescript-eslint/no-useless-empty-export': 'error',
|
|
122
123
|
'@typescript-eslint/no-wrapper-object-types': 'error',
|
|
123
124
|
'@typescript-eslint/non-nullable-type-assertion-style': 'error',
|
|
@@ -39,6 +39,7 @@ declare const _default: {
|
|
|
39
39
|
'@typescript-eslint/no-unsafe-return': "off";
|
|
40
40
|
'@typescript-eslint/no-unsafe-type-assertion': "off";
|
|
41
41
|
'@typescript-eslint/no-unsafe-unary-minus': "off";
|
|
42
|
+
'@typescript-eslint/no-useless-default-assignment': "off";
|
|
42
43
|
'@typescript-eslint/non-nullable-type-assertion-style': "off";
|
|
43
44
|
'@typescript-eslint/only-throw-error': "off";
|
|
44
45
|
'@typescript-eslint/prefer-destructuring': "off";
|
|
@@ -42,6 +42,7 @@ module.exports = {
|
|
|
42
42
|
'@typescript-eslint/no-unsafe-return': 'off',
|
|
43
43
|
'@typescript-eslint/no-unsafe-type-assertion': 'off',
|
|
44
44
|
'@typescript-eslint/no-unsafe-unary-minus': 'off',
|
|
45
|
+
'@typescript-eslint/no-useless-default-assignment': 'off',
|
|
45
46
|
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
|
|
46
47
|
'@typescript-eslint/only-throw-error': 'off',
|
|
47
48
|
'@typescript-eslint/prefer-destructuring': 'off',
|
|
@@ -30,6 +30,7 @@ declare const _default: {
|
|
|
30
30
|
'@typescript-eslint/no-unsafe-member-access': "error";
|
|
31
31
|
'@typescript-eslint/no-unsafe-return': "error";
|
|
32
32
|
'@typescript-eslint/no-unsafe-unary-minus': "error";
|
|
33
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
33
34
|
'no-throw-literal': "off";
|
|
34
35
|
'@typescript-eslint/only-throw-error': "error";
|
|
35
36
|
'prefer-promise-reject-errors': "off";
|
|
@@ -37,6 +37,7 @@ module.exports = {
|
|
|
37
37
|
'@typescript-eslint/no-unsafe-member-access': 'error',
|
|
38
38
|
'@typescript-eslint/no-unsafe-return': 'error',
|
|
39
39
|
'@typescript-eslint/no-unsafe-unary-minus': 'error',
|
|
40
|
+
'@typescript-eslint/no-useless-default-assignment': 'error',
|
|
40
41
|
'no-throw-literal': 'off',
|
|
41
42
|
'@typescript-eslint/only-throw-error': 'error',
|
|
42
43
|
'prefer-promise-reject-errors': 'off',
|
|
@@ -58,6 +58,7 @@ declare const _default: {
|
|
|
58
58
|
'@typescript-eslint/no-unused-vars': "error";
|
|
59
59
|
'no-useless-constructor': "off";
|
|
60
60
|
'@typescript-eslint/no-useless-constructor': "error";
|
|
61
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
61
62
|
'@typescript-eslint/no-wrapper-object-types': "error";
|
|
62
63
|
'no-throw-literal': "off";
|
|
63
64
|
'@typescript-eslint/only-throw-error': "error";
|
|
@@ -66,6 +66,7 @@ module.exports = {
|
|
|
66
66
|
'@typescript-eslint/no-unused-vars': 'error',
|
|
67
67
|
'no-useless-constructor': 'off',
|
|
68
68
|
'@typescript-eslint/no-useless-constructor': 'error',
|
|
69
|
+
'@typescript-eslint/no-useless-default-assignment': 'error',
|
|
69
70
|
'@typescript-eslint/no-wrapper-object-types': 'error',
|
|
70
71
|
'no-throw-literal': 'off',
|
|
71
72
|
'@typescript-eslint/only-throw-error': 'error',
|
package/dist/configs/flat/all.js
CHANGED
|
@@ -131,6 +131,7 @@ exports.default = (plugin, parser) => [
|
|
|
131
131
|
'@typescript-eslint/no-use-before-define': 'error',
|
|
132
132
|
'no-useless-constructor': 'off',
|
|
133
133
|
'@typescript-eslint/no-useless-constructor': 'error',
|
|
134
|
+
'@typescript-eslint/no-useless-default-assignment': 'error',
|
|
134
135
|
'@typescript-eslint/no-useless-empty-export': 'error',
|
|
135
136
|
'@typescript-eslint/no-wrapper-object-types': 'error',
|
|
136
137
|
'@typescript-eslint/non-nullable-type-assertion-style': 'error',
|
|
@@ -47,6 +47,7 @@ exports.default = (_plugin, _parser) => ({
|
|
|
47
47
|
'@typescript-eslint/no-unsafe-return': 'off',
|
|
48
48
|
'@typescript-eslint/no-unsafe-type-assertion': 'off',
|
|
49
49
|
'@typescript-eslint/no-unsafe-unary-minus': 'off',
|
|
50
|
+
'@typescript-eslint/no-useless-default-assignment': 'off',
|
|
50
51
|
'@typescript-eslint/non-nullable-type-assertion-style': 'off',
|
|
51
52
|
'@typescript-eslint/only-throw-error': 'off',
|
|
52
53
|
'@typescript-eslint/prefer-destructuring': 'off',
|
|
@@ -50,6 +50,7 @@ exports.default = (plugin, parser) => [
|
|
|
50
50
|
'@typescript-eslint/no-unsafe-member-access': 'error',
|
|
51
51
|
'@typescript-eslint/no-unsafe-return': 'error',
|
|
52
52
|
'@typescript-eslint/no-unsafe-unary-minus': 'error',
|
|
53
|
+
'@typescript-eslint/no-useless-default-assignment': 'error',
|
|
53
54
|
'no-throw-literal': 'off',
|
|
54
55
|
'@typescript-eslint/only-throw-error': 'error',
|
|
55
56
|
'prefer-promise-reject-errors': 'off',
|
|
@@ -79,6 +79,7 @@ exports.default = (plugin, parser) => [
|
|
|
79
79
|
'@typescript-eslint/no-unused-vars': 'error',
|
|
80
80
|
'no-useless-constructor': 'off',
|
|
81
81
|
'@typescript-eslint/no-useless-constructor': 'error',
|
|
82
|
+
'@typescript-eslint/no-useless-default-assignment': 'error',
|
|
82
83
|
'@typescript-eslint/no-wrapper-object-types': 'error',
|
|
83
84
|
'no-throw-literal': 'off',
|
|
84
85
|
'@typescript-eslint/only-throw-error': 'error',
|
package/dist/index.d.ts
CHANGED
|
@@ -113,6 +113,7 @@ declare const _default: {
|
|
|
113
113
|
'@typescript-eslint/no-use-before-define': "error";
|
|
114
114
|
'no-useless-constructor': "off";
|
|
115
115
|
'@typescript-eslint/no-useless-constructor': "error";
|
|
116
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
116
117
|
'@typescript-eslint/no-useless-empty-export': "error";
|
|
117
118
|
'@typescript-eslint/no-wrapper-object-types': "error";
|
|
118
119
|
'@typescript-eslint/non-nullable-type-assertion-style': "error";
|
|
@@ -204,6 +205,7 @@ declare const _default: {
|
|
|
204
205
|
'@typescript-eslint/no-unsafe-return': "off";
|
|
205
206
|
'@typescript-eslint/no-unsafe-type-assertion': "off";
|
|
206
207
|
'@typescript-eslint/no-unsafe-unary-minus': "off";
|
|
208
|
+
'@typescript-eslint/no-useless-default-assignment': "off";
|
|
207
209
|
'@typescript-eslint/non-nullable-type-assertion-style': "off";
|
|
208
210
|
'@typescript-eslint/only-throw-error': "off";
|
|
209
211
|
'@typescript-eslint/prefer-destructuring': "off";
|
|
@@ -506,6 +508,7 @@ declare const _default: {
|
|
|
506
508
|
'@typescript-eslint/no-unused-vars': "error";
|
|
507
509
|
'no-useless-constructor': "off";
|
|
508
510
|
'@typescript-eslint/no-useless-constructor': "error";
|
|
511
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
509
512
|
'@typescript-eslint/no-wrapper-object-types': "error";
|
|
510
513
|
'no-throw-literal': "off";
|
|
511
514
|
'@typescript-eslint/only-throw-error': "error";
|
|
@@ -574,6 +577,7 @@ declare const _default: {
|
|
|
574
577
|
'@typescript-eslint/no-unsafe-member-access': "error";
|
|
575
578
|
'@typescript-eslint/no-unsafe-return': "error";
|
|
576
579
|
'@typescript-eslint/no-unsafe-unary-minus': "error";
|
|
580
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
577
581
|
'no-throw-literal': "off";
|
|
578
582
|
'@typescript-eslint/only-throw-error': "error";
|
|
579
583
|
'prefer-promise-reject-errors': "off";
|
|
@@ -800,6 +804,7 @@ declare const _default: {
|
|
|
800
804
|
'no-unused-vars': import("@typescript-eslint/utils/ts-eslint").RuleModule<import("./rules/no-unused-vars").MessageIds, import("./rules/no-unused-vars").Options, import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
801
805
|
'no-use-before-define': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUseBeforeDefine", import("./rules/no-use-before-define").Options, import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
802
806
|
'no-useless-constructor': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUselessConstructor" | "removeConstructor", [], import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
807
|
+
'no-useless-default-assignment': import("@typescript-eslint/utils/ts-eslint").RuleModule<"uselessDefaultAssignment" | "uselessUndefined", [], import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
803
808
|
'no-useless-empty-export': import("@typescript-eslint/utils/ts-eslint").RuleModule<"uselessExport", [], import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
804
809
|
'no-var-requires': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noVarReqs", import("./rules/no-var-requires").Options, import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
805
810
|
'no-wrapper-object-types': import("@typescript-eslint/utils/ts-eslint").RuleModule<"bannedClassType", [], import("../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
package/dist/raw-plugin.d.ts
CHANGED
|
@@ -135,6 +135,7 @@ declare const _default: {
|
|
|
135
135
|
'@typescript-eslint/no-use-before-define': "error";
|
|
136
136
|
'no-useless-constructor': "off";
|
|
137
137
|
'@typescript-eslint/no-useless-constructor': "error";
|
|
138
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
138
139
|
'@typescript-eslint/no-useless-empty-export': "error";
|
|
139
140
|
'@typescript-eslint/no-wrapper-object-types': "error";
|
|
140
141
|
'@typescript-eslint/non-nullable-type-assertion-style': "error";
|
|
@@ -226,6 +227,7 @@ declare const _default: {
|
|
|
226
227
|
'@typescript-eslint/no-unsafe-return': "off";
|
|
227
228
|
'@typescript-eslint/no-unsafe-type-assertion': "off";
|
|
228
229
|
'@typescript-eslint/no-unsafe-unary-minus': "off";
|
|
230
|
+
'@typescript-eslint/no-useless-default-assignment': "off";
|
|
229
231
|
'@typescript-eslint/non-nullable-type-assertion-style': "off";
|
|
230
232
|
'@typescript-eslint/only-throw-error': "off";
|
|
231
233
|
'@typescript-eslint/prefer-destructuring': "off";
|
|
@@ -529,6 +531,7 @@ declare const _default: {
|
|
|
529
531
|
'@typescript-eslint/no-unused-vars': "error";
|
|
530
532
|
'no-useless-constructor': "off";
|
|
531
533
|
'@typescript-eslint/no-useless-constructor': "error";
|
|
534
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
532
535
|
'@typescript-eslint/no-wrapper-object-types': "error";
|
|
533
536
|
'no-throw-literal': "off";
|
|
534
537
|
'@typescript-eslint/only-throw-error': "error";
|
|
@@ -597,6 +600,7 @@ declare const _default: {
|
|
|
597
600
|
'@typescript-eslint/no-unsafe-member-access': "error";
|
|
598
601
|
'@typescript-eslint/no-unsafe-return': "error";
|
|
599
602
|
'@typescript-eslint/no-unsafe-unary-minus': "error";
|
|
603
|
+
'@typescript-eslint/no-useless-default-assignment': "error";
|
|
600
604
|
'no-throw-literal': "off";
|
|
601
605
|
'@typescript-eslint/only-throw-error': "error";
|
|
602
606
|
'prefer-promise-reject-errors': "off";
|
|
@@ -823,6 +827,7 @@ declare const _default: {
|
|
|
823
827
|
'no-unused-vars': TSESLint.RuleModule<import("./rules/no-unused-vars").MessageIds, import("./rules/no-unused-vars").Options, import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
|
824
828
|
'no-use-before-define': TSESLint.RuleModule<"noUseBeforeDefine", import("./rules/no-use-before-define").Options, import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
|
825
829
|
'no-useless-constructor': TSESLint.RuleModule<"noUselessConstructor" | "removeConstructor", [], import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
|
830
|
+
'no-useless-default-assignment': TSESLint.RuleModule<"uselessDefaultAssignment" | "uselessUndefined", [], import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
|
826
831
|
'no-useless-empty-export': TSESLint.RuleModule<"uselessExport", [], import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
|
827
832
|
'no-var-requires': TSESLint.RuleModule<"noVarReqs", import("./rules/no-var-requires").Options, import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
|
828
833
|
'no-wrapper-object-types': TSESLint.RuleModule<"bannedClassType", [], import("../rules").ESLintPluginDocs, TSESLint.RuleListener>;
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -128,6 +128,7 @@ declare const rules: {
|
|
|
128
128
|
'no-unused-vars': import("@typescript-eslint/utils/ts-eslint").RuleModule<import("./no-unused-vars").MessageIds, import("./no-unused-vars").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
129
129
|
'no-use-before-define': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUseBeforeDefine", import("./no-use-before-define").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
130
130
|
'no-useless-constructor': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noUselessConstructor" | "removeConstructor", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
131
|
+
'no-useless-default-assignment': import("@typescript-eslint/utils/ts-eslint").RuleModule<"uselessDefaultAssignment" | "uselessUndefined", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
131
132
|
'no-useless-empty-export': import("@typescript-eslint/utils/ts-eslint").RuleModule<"uselessExport", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
132
133
|
'no-var-requires': import("@typescript-eslint/utils/ts-eslint").RuleModule<"noVarReqs", import("./no-var-requires").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
133
134
|
'no-wrapper-object-types': import("@typescript-eslint/utils/ts-eslint").RuleModule<"bannedClassType", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
package/dist/rules/index.js
CHANGED
|
@@ -94,6 +94,7 @@ const no_unused_private_class_members_1 = __importDefault(require("./no-unused-p
|
|
|
94
94
|
const no_unused_vars_1 = __importDefault(require("./no-unused-vars"));
|
|
95
95
|
const no_use_before_define_1 = __importDefault(require("./no-use-before-define"));
|
|
96
96
|
const no_useless_constructor_1 = __importDefault(require("./no-useless-constructor"));
|
|
97
|
+
const no_useless_default_assignment_1 = __importDefault(require("./no-useless-default-assignment"));
|
|
97
98
|
const no_useless_empty_export_1 = __importDefault(require("./no-useless-empty-export"));
|
|
98
99
|
const no_var_requires_1 = __importDefault(require("./no-var-requires"));
|
|
99
100
|
const no_wrapper_object_types_1 = __importDefault(require("./no-wrapper-object-types"));
|
|
@@ -227,6 +228,7 @@ const rules = {
|
|
|
227
228
|
'no-unused-vars': no_unused_vars_1.default,
|
|
228
229
|
'no-use-before-define': no_use_before_define_1.default,
|
|
229
230
|
'no-useless-constructor': no_useless_constructor_1.default,
|
|
231
|
+
'no-useless-default-assignment': no_useless_default_assignment_1.default,
|
|
230
232
|
'no-useless-empty-export': no_useless_empty_export_1.default,
|
|
231
233
|
'no-var-requires': no_var_requires_1.default,
|
|
232
234
|
'no-wrapper-object-types': no_wrapper_object_types_1.default,
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
type MessageId = 'uselessDefaultAssignment' | 'uselessUndefined';
|
|
2
|
+
declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageId, [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
|
|
3
|
+
export default _default;
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const utils_1 = require("@typescript-eslint/utils");
|
|
37
|
+
const tsutils = __importStar(require("ts-api-utils"));
|
|
38
|
+
const ts = __importStar(require("typescript"));
|
|
39
|
+
const util_1 = require("../util");
|
|
40
|
+
exports.default = (0, util_1.createRule)({
|
|
41
|
+
name: 'no-useless-default-assignment',
|
|
42
|
+
meta: {
|
|
43
|
+
type: 'suggestion',
|
|
44
|
+
docs: {
|
|
45
|
+
description: 'Disallow default values that will never be used',
|
|
46
|
+
recommended: 'strict',
|
|
47
|
+
requiresTypeChecking: true,
|
|
48
|
+
},
|
|
49
|
+
fixable: 'code',
|
|
50
|
+
messages: {
|
|
51
|
+
uselessDefaultAssignment: 'Default value is useless because the {{ type }} is not optional.',
|
|
52
|
+
uselessUndefined: 'Default value is useless because it is undefined. Optional {{ type }}s are already undefined by default.',
|
|
53
|
+
},
|
|
54
|
+
schema: [],
|
|
55
|
+
},
|
|
56
|
+
defaultOptions: [],
|
|
57
|
+
create(context) {
|
|
58
|
+
const services = (0, util_1.getParserServices)(context);
|
|
59
|
+
const checker = services.program.getTypeChecker();
|
|
60
|
+
const compilerOptions = services.program.getCompilerOptions();
|
|
61
|
+
const isNoUncheckedIndexedAccess = tsutils.isCompilerOptionEnabled(compilerOptions, 'noUncheckedIndexedAccess');
|
|
62
|
+
function canBeUndefined(type) {
|
|
63
|
+
if ((0, util_1.isTypeAnyType)(type) || (0, util_1.isTypeUnknownType)(type)) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
return tsutils
|
|
67
|
+
.unionConstituents(type)
|
|
68
|
+
.some(part => (0, util_1.isTypeFlagSet)(part, ts.TypeFlags.Undefined));
|
|
69
|
+
}
|
|
70
|
+
function getPropertyType(objectType, propertyName) {
|
|
71
|
+
const symbol = objectType.getProperty(propertyName);
|
|
72
|
+
if (!symbol) {
|
|
73
|
+
if (isNoUncheckedIndexedAccess) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
return objectType.getStringIndexType() ?? null;
|
|
77
|
+
}
|
|
78
|
+
return checker.getTypeOfSymbol(symbol);
|
|
79
|
+
}
|
|
80
|
+
function getArrayElementType(arrayType, elementIndex) {
|
|
81
|
+
if (checker.isTupleType(arrayType)) {
|
|
82
|
+
const tupleArgs = checker.getTypeArguments(arrayType);
|
|
83
|
+
if (elementIndex < tupleArgs.length) {
|
|
84
|
+
return tupleArgs[elementIndex];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (isNoUncheckedIndexedAccess) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return arrayType.getNumberIndexType() ?? null;
|
|
91
|
+
}
|
|
92
|
+
function checkAssignmentPattern(node) {
|
|
93
|
+
if (node.right.type === utils_1.AST_NODE_TYPES.Identifier &&
|
|
94
|
+
node.right.name === 'undefined') {
|
|
95
|
+
const type = node.parent.type === utils_1.AST_NODE_TYPES.Property ||
|
|
96
|
+
node.parent.type === utils_1.AST_NODE_TYPES.ArrayPattern
|
|
97
|
+
? 'property'
|
|
98
|
+
: 'parameter';
|
|
99
|
+
reportUselessDefault(node, type, 'uselessUndefined');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const parent = node.parent;
|
|
103
|
+
if (parent.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
104
|
+
parent.type === utils_1.AST_NODE_TYPES.FunctionExpression) {
|
|
105
|
+
const paramIndex = parent.params.indexOf(node);
|
|
106
|
+
if (paramIndex !== -1) {
|
|
107
|
+
const tsFunc = services.esTreeNodeToTSNodeMap.get(parent);
|
|
108
|
+
if (ts.isFunctionLike(tsFunc)) {
|
|
109
|
+
const contextualType = checker.getContextualType(tsFunc);
|
|
110
|
+
if (!contextualType) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const signatures = contextualType.getCallSignatures();
|
|
114
|
+
const params = signatures[0].getParameters();
|
|
115
|
+
if (paramIndex < params.length) {
|
|
116
|
+
const paramSymbol = params[paramIndex];
|
|
117
|
+
if ((paramSymbol.flags & ts.SymbolFlags.Optional) === 0) {
|
|
118
|
+
const paramType = checker.getTypeOfSymbol(paramSymbol);
|
|
119
|
+
if (!canBeUndefined(paramType)) {
|
|
120
|
+
reportUselessDefault(node, 'parameter', 'uselessDefaultAssignment');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (parent.type === utils_1.AST_NODE_TYPES.Property) {
|
|
129
|
+
const propertyType = getTypeOfProperty(parent);
|
|
130
|
+
if (!propertyType) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (!canBeUndefined(propertyType)) {
|
|
134
|
+
reportUselessDefault(node, 'property', 'uselessDefaultAssignment');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (parent.type === utils_1.AST_NODE_TYPES.ArrayPattern) {
|
|
138
|
+
const sourceType = getSourceTypeForPattern(parent);
|
|
139
|
+
if (!sourceType) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const elementIndex = parent.elements.indexOf(node);
|
|
143
|
+
const elementType = getArrayElementType(sourceType, elementIndex);
|
|
144
|
+
if (!elementType) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (!canBeUndefined(elementType)) {
|
|
148
|
+
reportUselessDefault(node, 'property', 'uselessDefaultAssignment');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function getTypeOfProperty(node) {
|
|
153
|
+
const objectPattern = node.parent;
|
|
154
|
+
const sourceType = getSourceTypeForPattern(objectPattern);
|
|
155
|
+
if (!sourceType) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
const propertyName = getPropertyName(node.key);
|
|
159
|
+
if (!propertyName) {
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
return getPropertyType(sourceType, propertyName);
|
|
163
|
+
}
|
|
164
|
+
function getSourceTypeForPattern(pattern) {
|
|
165
|
+
const parent = (0, util_1.nullThrows)(pattern.parent, util_1.NullThrowsReasons.MissingParent);
|
|
166
|
+
if (parent.type === utils_1.AST_NODE_TYPES.VariableDeclarator && parent.init) {
|
|
167
|
+
const tsNode = services.esTreeNodeToTSNodeMap.get(parent.init);
|
|
168
|
+
return checker.getTypeAtLocation(tsNode);
|
|
169
|
+
}
|
|
170
|
+
if ((0, util_1.isFunction)(parent)) {
|
|
171
|
+
const paramIndex = parent.params.indexOf(pattern);
|
|
172
|
+
const tsFunc = services.esTreeNodeToTSNodeMap.get(parent);
|
|
173
|
+
const signature = (0, util_1.nullThrows)(checker.getSignatureFromDeclaration(tsFunc), util_1.NullThrowsReasons.MissingToken('signature', 'function'));
|
|
174
|
+
const params = signature.getParameters();
|
|
175
|
+
return checker.getTypeOfSymbol(params[paramIndex]);
|
|
176
|
+
}
|
|
177
|
+
if (parent.type === utils_1.AST_NODE_TYPES.AssignmentPattern) {
|
|
178
|
+
return getSourceTypeForPattern(parent);
|
|
179
|
+
}
|
|
180
|
+
if (parent.type === utils_1.AST_NODE_TYPES.Property) {
|
|
181
|
+
return getTypeOfProperty(parent);
|
|
182
|
+
}
|
|
183
|
+
if (parent.type === utils_1.AST_NODE_TYPES.ArrayPattern) {
|
|
184
|
+
const arrayPattern = parent;
|
|
185
|
+
const arrayType = getSourceTypeForPattern(arrayPattern);
|
|
186
|
+
if (!arrayType) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
const elementIndex = arrayPattern.elements.indexOf(pattern);
|
|
190
|
+
return getArrayElementType(arrayType, elementIndex);
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
function getPropertyName(key) {
|
|
195
|
+
switch (key.type) {
|
|
196
|
+
case utils_1.AST_NODE_TYPES.Identifier:
|
|
197
|
+
return key.name;
|
|
198
|
+
case utils_1.AST_NODE_TYPES.Literal:
|
|
199
|
+
return String(key.value);
|
|
200
|
+
default:
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function reportUselessDefault(node, type, messageId) {
|
|
205
|
+
context.report({
|
|
206
|
+
node: node.right,
|
|
207
|
+
messageId,
|
|
208
|
+
data: { type },
|
|
209
|
+
fix(fixer) {
|
|
210
|
+
// Remove from before the = to the end of the default value
|
|
211
|
+
// Find the start position (including whitespace before =)
|
|
212
|
+
const start = node.left.range[1];
|
|
213
|
+
const end = node.range[1];
|
|
214
|
+
return fixer.removeRange([start, end]);
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
AssignmentPattern: checkAssignmentPattern,
|
|
220
|
+
};
|
|
221
|
+
},
|
|
222
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typescript-eslint/eslint-plugin",
|
|
3
|
-
"version": "8.49.1-alpha.
|
|
3
|
+
"version": "8.49.1-alpha.3",
|
|
4
4
|
"description": "TypeScript plugin for ESLint",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -59,10 +59,10 @@
|
|
|
59
59
|
},
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@eslint-community/regexpp": "^4.10.0",
|
|
62
|
-
"@typescript-eslint/scope-manager": "8.49.1-alpha.
|
|
63
|
-
"@typescript-eslint/type-utils": "8.49.1-alpha.
|
|
64
|
-
"@typescript-eslint/utils": "8.49.1-alpha.
|
|
65
|
-
"@typescript-eslint/visitor-keys": "8.49.1-alpha.
|
|
62
|
+
"@typescript-eslint/scope-manager": "8.49.1-alpha.3",
|
|
63
|
+
"@typescript-eslint/type-utils": "8.49.1-alpha.3",
|
|
64
|
+
"@typescript-eslint/utils": "8.49.1-alpha.3",
|
|
65
|
+
"@typescript-eslint/visitor-keys": "8.49.1-alpha.3",
|
|
66
66
|
"ignore": "^7.0.0",
|
|
67
67
|
"natural-compare": "^1.4.0",
|
|
68
68
|
"ts-api-utils": "^2.1.0"
|
|
@@ -70,8 +70,8 @@
|
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@types/mdast": "^4.0.3",
|
|
72
72
|
"@types/natural-compare": "*",
|
|
73
|
-
"@typescript-eslint/rule-schema-to-typescript-types": "8.49.1-alpha.
|
|
74
|
-
"@typescript-eslint/rule-tester": "8.49.1-alpha.
|
|
73
|
+
"@typescript-eslint/rule-schema-to-typescript-types": "8.49.1-alpha.3",
|
|
74
|
+
"@typescript-eslint/rule-tester": "8.49.1-alpha.3",
|
|
75
75
|
"@vitest/coverage-v8": "^3.1.3",
|
|
76
76
|
"ajv": "^6.12.6",
|
|
77
77
|
"cross-fetch": "*",
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"vitest": "^3.1.3"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
|
94
|
-
"@typescript-eslint/parser": "^8.49.1-alpha.
|
|
94
|
+
"@typescript-eslint/parser": "^8.49.1-alpha.3",
|
|
95
95
|
"eslint": "^8.57.0 || ^9.0.0",
|
|
96
96
|
"typescript": ">=4.8.4 <6.0.0"
|
|
97
97
|
},
|