@typescript-eslint/eslint-plugin 8.29.2-alpha.0 → 8.29.2-alpha.10

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.
Files changed (109) hide show
  1. package/dist/configs/eslint-recommended-raw.d.ts +1 -1
  2. package/dist/configs/eslint-recommended-raw.d.ts.map +1 -1
  3. package/dist/configs/eslint-recommended-raw.js +3 -5
  4. package/dist/configs/{all.d.ts.map → eslintrc/all.d.ts.map} +1 -1
  5. package/dist/configs/eslintrc/base.d.ts.map +1 -0
  6. package/dist/configs/eslintrc/disable-type-checked.d.ts.map +1 -0
  7. package/dist/configs/{eslint-recommended.d.ts → eslintrc/eslint-recommended.d.ts} +1 -1
  8. package/dist/configs/eslintrc/eslint-recommended.d.ts.map +1 -0
  9. package/dist/configs/{eslint-recommended.js → eslintrc/eslint-recommended.js} +1 -1
  10. package/dist/configs/eslintrc/recommended-type-checked-only.d.ts.map +1 -0
  11. package/dist/configs/eslintrc/recommended-type-checked.d.ts.map +1 -0
  12. package/dist/configs/eslintrc/recommended.d.ts.map +1 -0
  13. package/dist/configs/eslintrc/strict-type-checked-only.d.ts.map +1 -0
  14. package/dist/configs/eslintrc/strict-type-checked.d.ts.map +1 -0
  15. package/dist/configs/eslintrc/strict.d.ts.map +1 -0
  16. package/dist/configs/eslintrc/stylistic-type-checked-only.d.ts.map +1 -0
  17. package/dist/configs/eslintrc/stylistic-type-checked.d.ts.map +1 -0
  18. package/dist/configs/eslintrc/stylistic.d.ts.map +1 -0
  19. package/dist/configs/flat/all.d.ts +8 -0
  20. package/dist/configs/flat/all.d.ts.map +1 -0
  21. package/dist/configs/flat/all.js +175 -0
  22. package/dist/configs/flat/base.d.ts +9 -0
  23. package/dist/configs/flat/base.d.ts.map +1 -0
  24. package/dist/configs/flat/base.js +17 -0
  25. package/dist/configs/flat/disable-type-checked.d.ts +8 -0
  26. package/dist/configs/flat/disable-type-checked.d.ts.map +1 -0
  27. package/dist/configs/flat/disable-type-checked.js +78 -0
  28. package/dist/configs/flat/eslint-recommended.d.ts +10 -0
  29. package/dist/configs/flat/eslint-recommended.d.ts.map +1 -0
  30. package/dist/configs/flat/eslint-recommended.js +16 -0
  31. package/dist/configs/flat/recommended-type-checked-only.d.ts +8 -0
  32. package/dist/configs/flat/recommended-type-checked-only.d.ts.map +1 -0
  33. package/dist/configs/flat/recommended-type-checked-only.js +53 -0
  34. package/dist/configs/flat/recommended-type-checked.d.ts +8 -0
  35. package/dist/configs/flat/recommended-type-checked.d.ts.map +1 -0
  36. package/dist/configs/flat/recommended-type-checked.js +76 -0
  37. package/dist/configs/flat/recommended.d.ts +8 -0
  38. package/dist/configs/flat/recommended.d.ts.map +1 -0
  39. package/dist/configs/flat/recommended.js +49 -0
  40. package/dist/configs/flat/strict-type-checked-only.d.ts +8 -0
  41. package/dist/configs/flat/strict-type-checked-only.d.ts.map +1 -0
  42. package/dist/configs/flat/strict-type-checked-only.js +91 -0
  43. package/dist/configs/flat/strict-type-checked.d.ts +8 -0
  44. package/dist/configs/flat/strict-type-checked.d.ts.map +1 -0
  45. package/dist/configs/flat/strict-type-checked.js +126 -0
  46. package/dist/configs/flat/strict.d.ts +8 -0
  47. package/dist/configs/flat/strict.d.ts.map +1 -0
  48. package/dist/configs/flat/strict.js +61 -0
  49. package/dist/configs/flat/stylistic-type-checked-only.d.ts +8 -0
  50. package/dist/configs/flat/stylistic-type-checked-only.d.ts.map +1 -0
  51. package/dist/configs/flat/stylistic-type-checked-only.js +35 -0
  52. package/dist/configs/flat/stylistic-type-checked.d.ts +8 -0
  53. package/dist/configs/flat/stylistic-type-checked.d.ts.map +1 -0
  54. package/dist/configs/flat/stylistic-type-checked.js +49 -0
  55. package/dist/configs/flat/stylistic.d.ts +8 -0
  56. package/dist/configs/flat/stylistic.d.ts.map +1 -0
  57. package/dist/configs/flat/stylistic.js +40 -0
  58. package/dist/index.d.ts +2 -3
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +2 -42
  61. package/dist/raw-plugin.d.ts +865 -0
  62. package/dist/raw-plugin.d.ts.map +1 -0
  63. package/dist/raw-plugin.js +121 -0
  64. package/dist/rules/index.d.ts +1 -1
  65. package/dist/rules/no-explicit-any.d.ts +1 -1
  66. package/dist/rules/no-explicit-any.d.ts.map +1 -1
  67. package/dist/rules/no-explicit-any.js +41 -13
  68. package/dist/rules/promise-function-async.d.ts +2 -2
  69. package/dist/rules/promise-function-async.d.ts.map +1 -1
  70. package/dist/rules/promise-function-async.js +6 -1
  71. package/package.json +11 -11
  72. package/raw-plugin.d.ts +25 -0
  73. package/dist/configs/base.d.ts.map +0 -1
  74. package/dist/configs/disable-type-checked.d.ts.map +0 -1
  75. package/dist/configs/eslint-recommended.d.ts.map +0 -1
  76. package/dist/configs/recommended-type-checked-only.d.ts.map +0 -1
  77. package/dist/configs/recommended-type-checked.d.ts.map +0 -1
  78. package/dist/configs/recommended.d.ts.map +0 -1
  79. package/dist/configs/strict-type-checked-only.d.ts.map +0 -1
  80. package/dist/configs/strict-type-checked.d.ts.map +0 -1
  81. package/dist/configs/strict.d.ts.map +0 -1
  82. package/dist/configs/stylistic-type-checked-only.d.ts.map +0 -1
  83. package/dist/configs/stylistic-type-checked.d.ts.map +0 -1
  84. package/dist/configs/stylistic.d.ts.map +0 -1
  85. package/eslint-recommended-raw.d.ts +0 -5
  86. /package/dist/configs/{all.d.ts → eslintrc/all.d.ts} +0 -0
  87. /package/dist/configs/{all.js → eslintrc/all.js} +0 -0
  88. /package/dist/configs/{base.d.ts → eslintrc/base.d.ts} +0 -0
  89. /package/dist/configs/{base.js → eslintrc/base.js} +0 -0
  90. /package/dist/configs/{disable-type-checked.d.ts → eslintrc/disable-type-checked.d.ts} +0 -0
  91. /package/dist/configs/{disable-type-checked.js → eslintrc/disable-type-checked.js} +0 -0
  92. /package/dist/configs/{recommended-type-checked-only.d.ts → eslintrc/recommended-type-checked-only.d.ts} +0 -0
  93. /package/dist/configs/{recommended-type-checked-only.js → eslintrc/recommended-type-checked-only.js} +0 -0
  94. /package/dist/configs/{recommended-type-checked.d.ts → eslintrc/recommended-type-checked.d.ts} +0 -0
  95. /package/dist/configs/{recommended-type-checked.js → eslintrc/recommended-type-checked.js} +0 -0
  96. /package/dist/configs/{recommended.d.ts → eslintrc/recommended.d.ts} +0 -0
  97. /package/dist/configs/{recommended.js → eslintrc/recommended.js} +0 -0
  98. /package/dist/configs/{strict-type-checked-only.d.ts → eslintrc/strict-type-checked-only.d.ts} +0 -0
  99. /package/dist/configs/{strict-type-checked-only.js → eslintrc/strict-type-checked-only.js} +0 -0
  100. /package/dist/configs/{strict-type-checked.d.ts → eslintrc/strict-type-checked.d.ts} +0 -0
  101. /package/dist/configs/{strict-type-checked.js → eslintrc/strict-type-checked.js} +0 -0
  102. /package/dist/configs/{strict.d.ts → eslintrc/strict.d.ts} +0 -0
  103. /package/dist/configs/{strict.js → eslintrc/strict.js} +0 -0
  104. /package/dist/configs/{stylistic-type-checked-only.d.ts → eslintrc/stylistic-type-checked-only.d.ts} +0 -0
  105. /package/dist/configs/{stylistic-type-checked-only.js → eslintrc/stylistic-type-checked-only.js} +0 -0
  106. /package/dist/configs/{stylistic-type-checked.d.ts → eslintrc/stylistic-type-checked.d.ts} +0 -0
  107. /package/dist/configs/{stylistic-type-checked.js → eslintrc/stylistic-type-checked.js} +0 -0
  108. /package/dist/configs/{stylistic.d.ts → eslintrc/stylistic.d.ts} +0 -0
  109. /package/dist/configs/{stylistic.js → eslintrc/stylistic.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-plugin.d.ts","sourceRoot":"","sources":["../src/raw-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,oCAAoC,CAAC;;;;;;;;;;;;;;;;;;wDAetD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAqCpB,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDvE,kBAIE"}
@@ -0,0 +1,121 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ const parserBase = __importStar(require("@typescript-eslint/parser"));
39
+ const all_1 = __importDefault(require("./configs/eslintrc/all"));
40
+ const base_1 = __importDefault(require("./configs/eslintrc/base"));
41
+ const disable_type_checked_1 = __importDefault(require("./configs/eslintrc/disable-type-checked"));
42
+ const eslint_recommended_1 = __importDefault(require("./configs/eslintrc/eslint-recommended"));
43
+ const recommended_1 = __importDefault(require("./configs/eslintrc/recommended"));
44
+ const recommended_type_checked_1 = __importDefault(require("./configs/eslintrc/recommended-type-checked"));
45
+ const recommended_type_checked_only_1 = __importDefault(require("./configs/eslintrc/recommended-type-checked-only"));
46
+ const strict_1 = __importDefault(require("./configs/eslintrc/strict"));
47
+ const strict_type_checked_1 = __importDefault(require("./configs/eslintrc/strict-type-checked"));
48
+ const strict_type_checked_only_1 = __importDefault(require("./configs/eslintrc/strict-type-checked-only"));
49
+ const stylistic_1 = __importDefault(require("./configs/eslintrc/stylistic"));
50
+ const stylistic_type_checked_1 = __importDefault(require("./configs/eslintrc/stylistic-type-checked"));
51
+ const stylistic_type_checked_only_1 = __importDefault(require("./configs/eslintrc/stylistic-type-checked-only"));
52
+ const all_2 = __importDefault(require("./configs/flat/all"));
53
+ const base_2 = __importDefault(require("./configs/flat/base"));
54
+ const disable_type_checked_2 = __importDefault(require("./configs/flat/disable-type-checked"));
55
+ const eslint_recommended_2 = __importDefault(require("./configs/flat/eslint-recommended"));
56
+ const recommended_2 = __importDefault(require("./configs/flat/recommended"));
57
+ const recommended_type_checked_2 = __importDefault(require("./configs/flat/recommended-type-checked"));
58
+ const recommended_type_checked_only_2 = __importDefault(require("./configs/flat/recommended-type-checked-only"));
59
+ const strict_2 = __importDefault(require("./configs/flat/strict"));
60
+ const strict_type_checked_2 = __importDefault(require("./configs/flat/strict-type-checked"));
61
+ const strict_type_checked_only_2 = __importDefault(require("./configs/flat/strict-type-checked-only"));
62
+ const stylistic_2 = __importDefault(require("./configs/flat/stylistic"));
63
+ const stylistic_type_checked_2 = __importDefault(require("./configs/flat/stylistic-type-checked"));
64
+ const stylistic_type_checked_only_2 = __importDefault(require("./configs/flat/stylistic-type-checked-only"));
65
+ const rules_1 = __importDefault(require("./rules"));
66
+ const parser = {
67
+ meta: parserBase.meta,
68
+ parseForESLint: parserBase.parseForESLint,
69
+ };
70
+ // note - cannot migrate this to an import statement because it will make TSC copy the package.json to the dist folder
71
+ const { name, version } = require('../package.json');
72
+ const plugin = {
73
+ // not fully initialized yet.
74
+ // See https://eslint.org/docs/latest/extend/plugins#configs-in-plugins
75
+ configs: {
76
+ all: all_1.default,
77
+ base: base_1.default,
78
+ 'disable-type-checked': disable_type_checked_1.default,
79
+ 'eslint-recommended': eslint_recommended_1.default,
80
+ recommended: recommended_1.default,
81
+ /** @deprecated - please use "recommended-type-checked" instead. */
82
+ 'recommended-requiring-type-checking': recommended_type_checked_1.default,
83
+ 'recommended-type-checked': recommended_type_checked_1.default,
84
+ 'recommended-type-checked-only': recommended_type_checked_only_1.default,
85
+ strict: strict_1.default,
86
+ 'strict-type-checked': strict_type_checked_1.default,
87
+ 'strict-type-checked-only': strict_type_checked_only_1.default,
88
+ stylistic: stylistic_1.default,
89
+ 'stylistic-type-checked': stylistic_type_checked_1.default,
90
+ 'stylistic-type-checked-only': stylistic_type_checked_only_1.default,
91
+ },
92
+ meta: {
93
+ name,
94
+ version,
95
+ },
96
+ rules: rules_1.default,
97
+ };
98
+ // @ts-expect-error -- upstream type incompatibility stuff
99
+ const flatPlugin = plugin;
100
+ // included due to https://github.com/eslint/eslint/issues/19513
101
+ const flatConfigs = {
102
+ 'flat/all': (0, all_2.default)(flatPlugin, parser),
103
+ 'flat/base': (0, base_2.default)(flatPlugin, parser),
104
+ 'flat/disable-type-checked': (0, disable_type_checked_2.default)(flatPlugin, parser),
105
+ 'flat/eslint-recommended': (0, eslint_recommended_2.default)(flatPlugin, parser),
106
+ 'flat/recommended': (0, recommended_2.default)(flatPlugin, parser),
107
+ 'flat/recommended-type-checked': (0, recommended_type_checked_2.default)(flatPlugin, parser),
108
+ 'flat/recommended-type-checked-only': (0, recommended_type_checked_only_2.default)(flatPlugin, parser),
109
+ 'flat/strict': (0, strict_2.default)(flatPlugin, parser),
110
+ 'flat/strict-type-checked': (0, strict_type_checked_2.default)(flatPlugin, parser),
111
+ 'flat/strict-type-checked-only': (0, strict_type_checked_only_2.default)(flatPlugin, parser),
112
+ 'flat/stylistic': (0, stylistic_2.default)(flatPlugin, parser),
113
+ 'flat/stylistic-type-checked': (0, stylistic_type_checked_2.default)(flatPlugin, parser),
114
+ 'flat/stylistic-type-checked-only': (0, stylistic_type_checked_only_2.default)(flatPlugin, parser),
115
+ };
116
+ Object.assign(plugin.configs, flatConfigs);
117
+ module.exports = {
118
+ flatConfigs,
119
+ parser,
120
+ plugin,
121
+ };
@@ -153,7 +153,7 @@ declare const rules: {
153
153
  'prefer-return-this-type': import("@typescript-eslint/utils/ts-eslint").RuleModule<"useThisType", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
154
154
  'prefer-string-starts-ends-with': import("@typescript-eslint/utils/ts-eslint").RuleModule<import("./prefer-string-starts-ends-with").MessageIds, import("./prefer-string-starts-ends-with").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
155
155
  'prefer-ts-expect-error': import("@typescript-eslint/utils/ts-eslint").RuleModule<"preferExpectErrorComment", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
156
- 'promise-function-async': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingAsync", import("./promise-function-async").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
156
+ 'promise-function-async': import("@typescript-eslint/utils/ts-eslint").RuleModule<import("./promise-function-async").MessageIds, import("./promise-function-async").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
157
157
  'related-getter-setter-pairs': import("@typescript-eslint/utils/ts-eslint").RuleModule<"mismatch", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
158
158
  'require-array-sort-compare': import("@typescript-eslint/utils/ts-eslint").RuleModule<"requireCompare", import("./require-array-sort-compare").Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
159
159
  'require-await': import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingAwait" | "removeAsync", [], import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
@@ -5,7 +5,7 @@ export type Options = [
5
5
  ignoreRestArgs?: boolean;
6
6
  }
7
7
  ];
8
- export type MessageIds = 'suggestNever' | 'suggestUnknown' | 'unexpectedAny';
8
+ export type MessageIds = 'suggestNever' | 'suggestPropertyKey' | 'suggestUnknown' | 'unexpectedAny';
9
9
  declare const _default: TSESLint.RuleModule<MessageIds, Options, import("../../rules").ESLintPluginDocs, TSESLint.RuleListener>;
10
10
  export default _default;
11
11
  //# sourceMappingURL=no-explicit-any.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-explicit-any.d.ts","sourceRoot":"","sources":["../../src/rules/no-explicit-any.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAMnE,MAAM,MAAM,OAAO,GAAG;IACpB;QACE,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,gBAAgB,GAAG,eAAe,CAAC;;AAE7E,wBAsMG"}
1
+ {"version":3,"file":"no-explicit-any.d.ts","sourceRoot":"","sources":["../../src/rules/no-explicit-any.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAMnE,MAAM,MAAM,OAAO,GAAG;IACpB;QACE,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,eAAe,CAAC;;AAEpB,wBAuOG"}
@@ -14,6 +14,7 @@ exports.default = (0, util_1.createRule)({
14
14
  hasSuggestions: true,
15
15
  messages: {
16
16
  suggestNever: "Use `never` instead, this is useful when instantiating generic type parameters that you don't need to know the type of.",
17
+ suggestPropertyKey: 'Use `PropertyKey` instead, this is more explicit than `keyof any`.',
17
18
  suggestUnknown: 'Use `unknown` instead, this will force you to explicitly, and safely assert the type is correct.',
18
19
  unexpectedAny: 'Unexpected any. Specify a different type.',
19
20
  },
@@ -133,30 +134,57 @@ exports.default = (0, util_1.createRule)({
133
134
  return (isGreatGrandparentRestElement(node) ||
134
135
  isGreatGreatGrandparentRestElement(node));
135
136
  }
137
+ /**
138
+ * Checks if the node is within a keyof any expression
139
+ * @param node the node to be validated.
140
+ * @returns true if the node is within a keyof any expression, false otherwise
141
+ * @private
142
+ */
143
+ function isNodeWithinKeyofAny(node) {
144
+ return (node.parent.type === utils_1.AST_NODE_TYPES.TSTypeOperator &&
145
+ node.parent.operator === 'keyof');
146
+ }
147
+ /**
148
+ * Creates a fixer that replaces a keyof any with PropertyKey
149
+ * @param node the node to be fixed.
150
+ * @returns a function that will fix the node.
151
+ * @private
152
+ */
153
+ function createPropertyKeyFixer(node) {
154
+ return (fixer) => {
155
+ return fixer.replaceText(node.parent, 'PropertyKey');
156
+ };
157
+ }
136
158
  return {
137
159
  TSAnyKeyword(node) {
160
+ const isKeyofAny = isNodeWithinKeyofAny(node);
138
161
  if (ignoreRestArgs && isNodeDescendantOfRestElementInFunction(node)) {
139
162
  return;
140
163
  }
141
164
  const fixOrSuggest = {
142
165
  fix: null,
143
- suggest: [
144
- {
145
- messageId: 'suggestUnknown',
146
- fix(fixer) {
147
- return fixer.replaceText(node, 'unknown');
166
+ suggest: isKeyofAny
167
+ ? [
168
+ {
169
+ messageId: 'suggestPropertyKey',
170
+ fix: createPropertyKeyFixer(node),
171
+ },
172
+ ]
173
+ : [
174
+ {
175
+ messageId: 'suggestUnknown',
176
+ fix: fixer => fixer.replaceText(node, 'unknown'),
148
177
  },
149
- },
150
- {
151
- messageId: 'suggestNever',
152
- fix(fixer) {
153
- return fixer.replaceText(node, 'never');
178
+ {
179
+ messageId: 'suggestNever',
180
+ fix: fixer => fixer.replaceText(node, 'never'),
154
181
  },
155
- },
156
- ],
182
+ ],
157
183
  };
158
184
  if (fixToUnknown) {
159
- fixOrSuggest.fix = (fixer) => fixer.replaceText(node, 'unknown');
185
+ fixOrSuggest.fix = isKeyofAny
186
+ ? createPropertyKeyFixer(node)
187
+ : fixer => fixer.replaceText(node, 'unknown');
160
188
  }
161
189
  context.report({
162
190
  node,
@@ -8,7 +8,7 @@ export type Options = [
8
8
  checkMethodDeclarations?: boolean;
9
9
  }
10
10
  ];
11
- export type MessageIds = 'missingAsync';
12
- declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingAsync", Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
11
+ export type MessageIds = 'missingAsync' | 'missingAsyncHybridReturn';
12
+ declare const _default: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds, Options, import("../../rules").ESLintPluginDocs, import("@typescript-eslint/utils/ts-eslint").RuleListener>;
13
13
  export default _default;
14
14
  //# sourceMappingURL=promise-function-async.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"promise-function-async.d.ts","sourceRoot":"","sources":["../../src/rules/promise-function-async.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,OAAO,GAAG;IACpB;QACE,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;KACnC;CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;;AAExC,wBA6OG"}
1
+ {"version":3,"file":"promise-function-async.d.ts","sourceRoot":"","sources":["../../src/rules/promise-function-async.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,OAAO,GAAG;IACpB;QACE,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,uBAAuB,CAAC,EAAE,OAAO,CAAC;KACnC;CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,0BAA0B,CAAC;;AAErE,wBAyPG"}
@@ -47,6 +47,7 @@ exports.default = (0, util_1.createRule)({
47
47
  fixable: 'code',
48
48
  messages: {
49
49
  missingAsync: 'Functions that return promises must be async.',
50
+ missingAsyncHybridReturn: 'Functions that return promises must be async. Consider adding an explicit return type annotation if the function is intended to return a union of promise and non-promise types.',
50
51
  },
51
52
  schema: [
52
53
  {
@@ -133,10 +134,14 @@ exports.default = (0, util_1.createRule)({
133
134
  returnTypes.every(type => (0, util_1.containsAllTypesByName)(type, true, allAllowedPromiseNames,
134
135
  // If no return type is explicitly set, we check if any parts of the return type match a Promise (instead of requiring all to match).
135
136
  node.returnType == null))) {
137
+ const isHybridReturnType = returnTypes.some(type => type.isUnion() &&
138
+ !type.types.every(part => (0, util_1.containsAllTypesByName)(part, true, allAllowedPromiseNames)));
136
139
  context.report({
137
140
  loc: (0, util_1.getFunctionHeadLoc)(node, context.sourceCode),
138
141
  node,
139
- messageId: 'missingAsync',
142
+ messageId: isHybridReturnType
143
+ ? 'missingAsyncHybridReturn'
144
+ : 'missingAsync',
140
145
  fix: fixer => {
141
146
  if (node.parent.type === utils_1.AST_NODE_TYPES.MethodDefinition ||
142
147
  (node.parent.type === utils_1.AST_NODE_TYPES.Property &&
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@typescript-eslint/eslint-plugin",
3
- "version": "8.29.2-alpha.0",
3
+ "version": "8.29.2-alpha.10",
4
4
  "description": "TypeScript plugin for ESLint",
5
5
  "files": [
6
6
  "dist",
7
7
  "!*.tsbuildinfo",
8
8
  "docs",
9
- "eslint-recommended-raw.d.ts",
10
9
  "index.d.ts",
10
+ "raw-plugin.d.ts",
11
11
  "rules.d.ts",
12
12
  "package.json",
13
13
  "README.md",
@@ -24,9 +24,9 @@
24
24
  "types": "./rules.d.ts",
25
25
  "default": "./dist/rules/index.js"
26
26
  },
27
- "./use-at-your-own-risk/eslint-recommended-raw": {
28
- "types": "./eslint-recommended-raw.d.ts",
29
- "default": "./dist/configs/eslint-recommended-raw.js"
27
+ "./use-at-your-own-risk/raw-plugin": {
28
+ "types": "./raw-plugin.d.ts",
29
+ "default": "./dist/raw-plugin.js"
30
30
  }
31
31
  },
32
32
  "engines": {
@@ -62,10 +62,10 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@eslint-community/regexpp": "^4.10.0",
65
- "@typescript-eslint/scope-manager": "8.29.2-alpha.0",
66
- "@typescript-eslint/type-utils": "8.29.2-alpha.0",
67
- "@typescript-eslint/utils": "8.29.2-alpha.0",
68
- "@typescript-eslint/visitor-keys": "8.29.2-alpha.0",
65
+ "@typescript-eslint/scope-manager": "8.29.2-alpha.10",
66
+ "@typescript-eslint/type-utils": "8.29.2-alpha.10",
67
+ "@typescript-eslint/utils": "8.29.2-alpha.10",
68
+ "@typescript-eslint/visitor-keys": "8.29.2-alpha.10",
69
69
  "graphemer": "^1.4.0",
70
70
  "ignore": "^5.3.1",
71
71
  "natural-compare": "^1.4.0",
@@ -76,8 +76,8 @@
76
76
  "@types/marked": "^5.0.2",
77
77
  "@types/mdast": "^4.0.3",
78
78
  "@types/natural-compare": "*",
79
- "@typescript-eslint/rule-schema-to-typescript-types": "8.29.2-alpha.0",
80
- "@typescript-eslint/rule-tester": "8.29.2-alpha.0",
79
+ "@typescript-eslint/rule-schema-to-typescript-types": "8.29.2-alpha.10",
80
+ "@typescript-eslint/rule-tester": "8.29.2-alpha.10",
81
81
  "ajv": "^6.12.6",
82
82
  "cross-env": "^7.0.3",
83
83
  "cross-fetch": "*",
@@ -0,0 +1,25 @@
1
+ import type { FlatConfig } from '@typescript-eslint/utils/ts-eslint';
2
+
3
+ import type plugin from './index';
4
+
5
+ declare const cjsExport: {
6
+ flatConfigs: {
7
+ 'flat/all': FlatConfig.ConfigArray;
8
+ 'flat/base': FlatConfig.Config;
9
+ 'flat/disable-type-checked': FlatConfig.Config;
10
+ 'flat/eslint-recommended': FlatConfig.Config;
11
+ 'flat/recommended': FlatConfig.ConfigArray;
12
+ 'flat/recommended-type-checked': FlatConfig.ConfigArray;
13
+ 'flat/recommended-type-checked-only': FlatConfig.ConfigArray;
14
+ 'flat/strict': FlatConfig.ConfigArray;
15
+ 'flat/strict-type-checked': FlatConfig.ConfigArray;
16
+ 'flat/strict-type-checked-only': FlatConfig.ConfigArray;
17
+ 'flat/stylistic': FlatConfig.ConfigArray;
18
+ 'flat/stylistic-type-checked': FlatConfig.ConfigArray;
19
+ 'flat/stylistic-type-checked-only': FlatConfig.ConfigArray;
20
+ };
21
+ parser: FlatConfig.Parser;
22
+ plugin: typeof plugin;
23
+ };
24
+
25
+ export = cjsExport;
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/configs/base.ts"],"names":[],"mappings":";;;;;;;AAEA,kBAIiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"disable-type-checked.d.ts","sourceRoot":"","sources":["../../src/configs/disable-type-checked.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBA8DiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"eslint-recommended.d.ts","sourceRoot":"","sources":["../../src/configs/eslint-recommended.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;;;;;;AAMH,kBAEiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommended-type-checked-only.d.ts","sourceRoot":"","sources":["../../src/configs/recommended-type-checked-only.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBA+BiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommended-type-checked.d.ts","sourceRoot":"","sources":["../../src/configs/recommended-type-checked.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBAsDiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/configs/recommended.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBA2BiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"strict-type-checked-only.d.ts","sourceRoot":"","sources":["../../src/configs/strict-type-checked-only.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBAqEiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"strict-type-checked.d.ts","sourceRoot":"","sources":["../../src/configs/strict-type-checked.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBAwGiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/configs/strict.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBAuCiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylistic-type-checked-only.d.ts","sourceRoot":"","sources":["../../src/configs/stylistic-type-checked-only.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AASA,kBAaiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylistic-type-checked.d.ts","sourceRoot":"","sources":["../../src/configs/stylistic-type-checked.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,kBA2BiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"stylistic.d.ts","sourceRoot":"","sources":["../../src/configs/stylistic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AASA,kBAkBiC"}
@@ -1,5 +0,0 @@
1
- declare const config: (style: 'glob' | 'minimatch') => {
2
- files: string[];
3
- rules: Record<string, 'error' | 'off' | 'warn'>;
4
- };
5
- export = config;
File without changes
File without changes
File without changes
File without changes
File without changes