eslint-plugin-ore-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,621 @@
1
+ /**
2
+ * This is based on the `no-deprecated` rule from `@typescript-eslint/eslint-plugin`.
3
+ *
4
+ * Original File Source: https://github.com/typescript-eslint/typescript-eslint/blob/c4d5a56925e588d0e84e18f6f2d7756d0248d3be/packages/eslint-plugin/src/rules/no-deprecated.ts
5
+ *
6
+ * Copyright (c) 2019 typescript-eslint and other contributors
7
+ * Licensed under the MIT License.
8
+ *
9
+ * Modifications by 8Crafter (2026)
10
+ */
11
+ "LICENSE";
12
+ "use strict";
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ const utils_1 = require("@typescript-eslint/utils");
17
+ const tsutils = require("ts-api-utils");
18
+ const typescript_1 = __importDefault(require("typescript"));
19
+ const type_utils_1 = require("@typescript-eslint/type-utils");
20
+ const eslint_utils_1 = require("@typescript-eslint/utils/eslint-utils");
21
+ const createRule = utils_1.ESLintUtils.RuleCreator((name) => name /* `https://typescript-eslint.io/rules/${name}` */);
22
+ const builtInBuggedMessages = [
23
+ {
24
+ prefix: {
25
+ tagName: [
26
+ { regex: "^bugged1$", flags: "i" },
27
+ { regex: "^bug1$", flags: "i" },
28
+ ],
29
+ prefix: ["Bug!", "!Bug"],
30
+ },
31
+ },
32
+ ];
33
+ function getReportedNodeName(node) {
34
+ if (node.type === utils_1.AST_NODE_TYPES.Super) {
35
+ return "super";
36
+ }
37
+ if (node.type === utils_1.AST_NODE_TYPES.PrivateIdentifier) {
38
+ return `#${node.name}`;
39
+ }
40
+ return node.name;
41
+ }
42
+ module.exports = createRule({
43
+ name: "no-bugged",
44
+ meta: {
45
+ type: "problem",
46
+ docs: {
47
+ description: "Disallow bugged symbols",
48
+ // recommended: true,
49
+ // requiresTypeChecking: true,
50
+ },
51
+ messages: {
52
+ bugged: `\`{{name}}\` has a bug`,
53
+ buggedWithReason: `\`{{name}}\` has a bug. {{reason}}`,
54
+ buggedReasonOverride: `{{reason}}`,
55
+ },
56
+ schema: [
57
+ {
58
+ type: "object",
59
+ additionalProperties: false,
60
+ properties: {
61
+ allow: {
62
+ ...type_utils_1.typeOrValueSpecifiersSchema,
63
+ description: "Type specifiers that can be allowed.",
64
+ },
65
+ ignoreBuiltInBuggedMessages: {
66
+ type: "boolean",
67
+ description: "Whether to ignore the built-in bugged messages.",
68
+ },
69
+ additionalBuggedMessages: {
70
+ type: "array",
71
+ items: {
72
+ type: "object",
73
+ properties: {
74
+ message: {
75
+ oneOf: [
76
+ { type: "string" },
77
+ { type: "object", required: ["regex"], properties: { regex: { type: "string" }, flags: { type: "string" } } },
78
+ ],
79
+ description: "The message to filter JSDoc comments by, only matching JSDoc comments will cause a violation. If not provided, any JSDoc tag of the specified name will cause a violation.",
80
+ },
81
+ prefix: {
82
+ type: "object",
83
+ oneOf: [
84
+ {
85
+ type: "object",
86
+ required: ["tagName"],
87
+ },
88
+ {
89
+ type: "object",
90
+ required: ["prefix"],
91
+ },
92
+ {
93
+ type: "object",
94
+ required: ["tagName", "prefix"],
95
+ },
96
+ ],
97
+ properties: {
98
+ tagName: {
99
+ oneOf: [
100
+ { type: "string" },
101
+ { type: "object", required: ["regex"], properties: { regex: { type: "string" }, flags: { type: "string" } } },
102
+ {
103
+ type: "array",
104
+ items: {
105
+ oneOf: [
106
+ { type: "string" },
107
+ {
108
+ type: "object",
109
+ required: ["regex"],
110
+ properties: { regex: { type: "string" }, flags: { type: "string" } },
111
+ },
112
+ ],
113
+ },
114
+ },
115
+ ],
116
+ description: "The JSDoc tag name or a list of JSDoc tag names to filter by, should not be prefixed with '@'. ex. 'throws'",
117
+ },
118
+ prefix: {
119
+ oneOf: [
120
+ { type: "string" },
121
+ { type: "object", required: ["regex"], properties: { regex: { type: "string" }, flags: { type: "string" } } },
122
+ {
123
+ type: "array",
124
+ items: {
125
+ oneOf: [
126
+ { type: "string" },
127
+ {
128
+ type: "object",
129
+ required: ["regex"],
130
+ properties: { regex: { type: "string" }, flags: { type: "string" } },
131
+ },
132
+ ],
133
+ },
134
+ },
135
+ ],
136
+ description: "The prefix to filter by, this is text that would be at the start of a line in the JSDoc, immediately followed by a colon, should not be suffixed with a colon. ex. 'Critical Bug' or 'Bug!!'",
137
+ },
138
+ },
139
+ description: "The prefix filtering options, these are used to find the start of the bug description, only matching JSDoc comments will cause a violation.",
140
+ },
141
+ reason: {
142
+ type: "string",
143
+ description: "The reason for the violation, this is what will be reported, if not specified, the message will be the bug description. ex. If the reason is 'This does not work at all in CoHTML (Ore UI).', the message will be '`{{name}}` has a bug. This does not work at all in CoHTML (Ore UI).'",
144
+ },
145
+ reasonOverride: {
146
+ type: "string",
147
+ description: "The error message to report. This will take precedence over `reason`. Unlike reason, this does not prepend '`{{name}}` has a bug.' to the reason. ex. If the reason override is 'This does not work at all in CoHTML (Ore UI).', the message will be 'This does not work at all in CoHTML (Ore UI).'",
148
+ },
149
+ },
150
+ required: ["tagName"],
151
+ additionalProperties: false,
152
+ description: "An additional bugged message to check for.",
153
+ },
154
+ description: "Additional bugged messages to check for.",
155
+ },
156
+ },
157
+ },
158
+ ],
159
+ defaultOptions: [
160
+ {
161
+ allow: [],
162
+ ignoreBuiltInBuggedMessages: false,
163
+ additionalBuggedMessages: [],
164
+ },
165
+ ],
166
+ },
167
+ defaultOptions: [
168
+ {
169
+ allow: [],
170
+ ignoreBuiltInBuggedMessages: false,
171
+ additionalBuggedMessages: [],
172
+ },
173
+ ],
174
+ create(context) {
175
+ const { jsDocParsingMode } = context.parserOptions;
176
+ const allow = context.options[0]?.allow;
177
+ const buggedMessages = (context.options[0]?.additionalBuggedMessages ?? [])
178
+ .concat((context.options[0]?.ignoreBuiltInBuggedMessages ?? false) ? [] : builtInBuggedMessages)
179
+ .map((message) => ({
180
+ ...message,
181
+ message: message.message ?
182
+ typeof message.message === "string" ?
183
+ message.message
184
+ : new RegExp(message.message.regex, message.message.flags)
185
+ : undefined,
186
+ prefix: Object.fromEntries(Object.entries(message.prefix).map(([key, value]) => [
187
+ key,
188
+ typeof value === "string" ? value
189
+ : value instanceof Array ?
190
+ value.map((item) => typeof item === "string" ? item : new RegExp(item.regex, item.flags))
191
+ : new RegExp(value.regex, value.flags),
192
+ ])),
193
+ }));
194
+ if (!buggedMessages.length)
195
+ return {};
196
+ if (jsDocParsingMode === "none" || jsDocParsingMode === "type-info") {
197
+ throw new Error(`Cannot be used with jsDocParsingMode: '${jsDocParsingMode}'.`);
198
+ }
199
+ const services = (0, eslint_utils_1.getParserServices)(context);
200
+ const checker = services.program.getTypeChecker();
201
+ // Deprecated jsdoc tags can be added on some symbol alias, e.g.
202
+ //
203
+ // export { /** @deprecated */ foo }
204
+ //
205
+ // When we import foo, its symbol is an alias of the exported foo (the one
206
+ // with the deprecated tag), which is itself an alias of the original foo.
207
+ // Therefore, we carefully go through the chain of aliases and check each
208
+ // immediate alias for deprecated tags
209
+ function searchForBuggedInAliasesChain(symbol, checkDeprecationsOfAliasedSymbol) {
210
+ if (!symbol || !tsutils.isSymbolFlagSet(symbol, typescript_1.default.SymbolFlags.Alias)) {
211
+ return checkDeprecationsOfAliasedSymbol ? getJsDocBugged(symbol) : undefined;
212
+ }
213
+ const targetSymbol = checker.getAliasedSymbol(symbol);
214
+ while (tsutils.isSymbolFlagSet(symbol, typescript_1.default.SymbolFlags.Alias)) {
215
+ const reason = getJsDocBugged(symbol);
216
+ if (reason != null) {
217
+ return reason;
218
+ }
219
+ const immediateAliasedSymbol = symbol.getDeclarations() && checker.getImmediateAliasedSymbol(symbol);
220
+ if (!immediateAliasedSymbol) {
221
+ break;
222
+ }
223
+ symbol = immediateAliasedSymbol;
224
+ if (checkDeprecationsOfAliasedSymbol && symbol === targetSymbol) {
225
+ return getJsDocBugged(symbol);
226
+ }
227
+ }
228
+ return undefined;
229
+ }
230
+ function isDeclaration(node) {
231
+ const { parent } = node;
232
+ switch (parent.type) {
233
+ case utils_1.AST_NODE_TYPES.ArrayPattern:
234
+ return parent.elements.includes(node);
235
+ case utils_1.AST_NODE_TYPES.ClassExpression:
236
+ case utils_1.AST_NODE_TYPES.ClassDeclaration:
237
+ case utils_1.AST_NODE_TYPES.VariableDeclarator:
238
+ case utils_1.AST_NODE_TYPES.TSEnumMember:
239
+ return parent.id === node;
240
+ case utils_1.AST_NODE_TYPES.MethodDefinition:
241
+ case utils_1.AST_NODE_TYPES.PropertyDefinition:
242
+ case utils_1.AST_NODE_TYPES.AccessorProperty:
243
+ return parent.key === node;
244
+ case utils_1.AST_NODE_TYPES.Property:
245
+ // foo in "const { foo } = bar" will be processed twice, as parent.key
246
+ // and parent.value. The second is treated as a declaration.
247
+ if (parent.shorthand && parent.value === node) {
248
+ return parent.parent.type === utils_1.AST_NODE_TYPES.ObjectPattern;
249
+ }
250
+ if (parent.value === node) {
251
+ return false;
252
+ }
253
+ return parent.parent.type === utils_1.AST_NODE_TYPES.ObjectExpression;
254
+ case utils_1.AST_NODE_TYPES.AssignmentPattern:
255
+ // foo in "const { foo = "" } = bar" will be processed twice, as parent.parent.key
256
+ // and parent.left. The second is treated as a declaration.
257
+ return parent.left === node;
258
+ case utils_1.AST_NODE_TYPES.ArrowFunctionExpression:
259
+ case utils_1.AST_NODE_TYPES.FunctionDeclaration:
260
+ case utils_1.AST_NODE_TYPES.FunctionExpression:
261
+ case utils_1.AST_NODE_TYPES.TSDeclareFunction:
262
+ case utils_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression:
263
+ case utils_1.AST_NODE_TYPES.TSEnumDeclaration:
264
+ case utils_1.AST_NODE_TYPES.TSInterfaceDeclaration:
265
+ case utils_1.AST_NODE_TYPES.TSMethodSignature:
266
+ case utils_1.AST_NODE_TYPES.TSModuleDeclaration:
267
+ case utils_1.AST_NODE_TYPES.TSParameterProperty:
268
+ case utils_1.AST_NODE_TYPES.TSPropertySignature:
269
+ case utils_1.AST_NODE_TYPES.TSTypeAliasDeclaration:
270
+ case utils_1.AST_NODE_TYPES.TSTypeParameter:
271
+ return true;
272
+ // treat `export import Bar = Foo;` (and `import Foo = require('...')`) as declarations
273
+ case utils_1.AST_NODE_TYPES.TSImportEqualsDeclaration:
274
+ return parent.id === node;
275
+ default:
276
+ return false;
277
+ }
278
+ }
279
+ function isInsideImport(node) {
280
+ let current = node;
281
+ while (true) {
282
+ switch (current.type) {
283
+ case utils_1.AST_NODE_TYPES.ImportDeclaration:
284
+ return true;
285
+ case utils_1.AST_NODE_TYPES.ArrowFunctionExpression:
286
+ case utils_1.AST_NODE_TYPES.ExportAllDeclaration:
287
+ case utils_1.AST_NODE_TYPES.ExportNamedDeclaration:
288
+ case utils_1.AST_NODE_TYPES.BlockStatement:
289
+ case utils_1.AST_NODE_TYPES.ClassDeclaration:
290
+ case utils_1.AST_NODE_TYPES.TSInterfaceDeclaration:
291
+ case utils_1.AST_NODE_TYPES.FunctionDeclaration:
292
+ case utils_1.AST_NODE_TYPES.FunctionExpression:
293
+ case utils_1.AST_NODE_TYPES.Program:
294
+ case utils_1.AST_NODE_TYPES.TSUnionType:
295
+ case utils_1.AST_NODE_TYPES.VariableDeclarator:
296
+ return false;
297
+ default:
298
+ current = current.parent;
299
+ }
300
+ }
301
+ }
302
+ function getJsDocBugged(symbol) {
303
+ let jsDocTags;
304
+ try {
305
+ jsDocTags = symbol?.getJsDocTags(checker);
306
+ }
307
+ catch {
308
+ // workaround for https://github.com/microsoft/TypeScript/issues/60024
309
+ return undefined;
310
+ }
311
+ let tag;
312
+ let messageRule;
313
+ let messageString;
314
+ jsDocTagLoop: for (const jsDocTag of jsDocTags ?? []) {
315
+ let displayPartsString;
316
+ for (const currentRule of buggedMessages) {
317
+ if (!("tagName" in currentRule.prefix && currentRule.prefix.tagName))
318
+ continue;
319
+ if (!(currentRule.prefix.tagName instanceof Array ?
320
+ currentRule.prefix.tagName.some((tagName) => typeof tagName === "string" ? tagName === jsDocTag.name : tagName.test(jsDocTag.name))
321
+ : typeof currentRule.prefix.tagName === "string" ? currentRule.prefix.tagName === jsDocTag.name
322
+ : currentRule.prefix.tagName.test(jsDocTag.name)))
323
+ continue;
324
+ if (!currentRule.message) {
325
+ tag = jsDocTag;
326
+ messageRule = currentRule;
327
+ messageString = displayPartsString;
328
+ break jsDocTagLoop;
329
+ }
330
+ if (typeof currentRule.message === "string") {
331
+ if (!jsDocTag.text || currentRule.message !== (displayPartsString ?? (displayPartsString = typescript_1.default.displayPartsToString(jsDocTag.text))))
332
+ continue;
333
+ tag = jsDocTag;
334
+ messageRule = currentRule;
335
+ messageString = displayPartsString;
336
+ break jsDocTagLoop;
337
+ }
338
+ if (currentRule.message && currentRule.message.test(displayPartsString ?? (displayPartsString = typescript_1.default.displayPartsToString(jsDocTag.text)))) {
339
+ tag = jsDocTag;
340
+ messageRule = currentRule;
341
+ messageString = displayPartsString;
342
+ break jsDocTagLoop;
343
+ }
344
+ }
345
+ }
346
+ if (!tag || !messageRule || messageString === undefined) {
347
+ let documentationComments;
348
+ try {
349
+ documentationComments = symbol?.getDocumentationComment(checker);
350
+ }
351
+ catch {
352
+ // workaround for https://github.com/microsoft/TypeScript/issues/60024
353
+ return undefined;
354
+ }
355
+ let comment;
356
+ let commentEntry;
357
+ let messageRule;
358
+ let message;
359
+ documentationCommentLoop: for (const documentationComment of documentationComments ?? []) {
360
+ if (documentationComment.kind !== "text")
361
+ continue;
362
+ const documentationCommentEntries = documentationComment.text.split(/(?:\r?\n){2,}/g).map((v) => v.trim());
363
+ for (const documentationCommentEntry of documentationCommentEntries) {
364
+ if (!documentationCommentEntry)
365
+ continue;
366
+ for (const currentRule of buggedMessages) {
367
+ if (!("prefix" in currentRule.prefix && currentRule.prefix.prefix))
368
+ continue;
369
+ for (const prefix of currentRule.prefix.prefix instanceof Array ? currentRule.prefix.prefix : [currentRule.prefix.prefix]) {
370
+ let documentationMessage;
371
+ if (typeof prefix === "string") {
372
+ if (prefix && documentationCommentEntry.split(":")[0] !== prefix)
373
+ continue;
374
+ documentationMessage =
375
+ prefix ? documentationCommentEntry.split(":").slice(1).join(":").trimStart() : documentationCommentEntry;
376
+ }
377
+ else {
378
+ if (!prefix.test(documentationCommentEntry.split(":")[0]))
379
+ continue;
380
+ documentationMessage = documentationCommentEntry.split(":").slice(1).join(":").trimStart();
381
+ }
382
+ if (!currentRule.message) {
383
+ comment = documentationComment;
384
+ commentEntry = documentationCommentEntry;
385
+ messageRule = currentRule;
386
+ message = documentationMessage;
387
+ break documentationCommentLoop;
388
+ }
389
+ if (typeof currentRule.message === "string") {
390
+ if (!documentationCommentEntry || currentRule.message !== documentationMessage)
391
+ continue;
392
+ comment = documentationComment;
393
+ commentEntry = documentationCommentEntry;
394
+ messageRule = currentRule;
395
+ message = documentationMessage;
396
+ break documentationCommentLoop;
397
+ }
398
+ if (currentRule.message.test(documentationMessage)) {
399
+ comment = documentationComment;
400
+ commentEntry = documentationCommentEntry;
401
+ messageRule = currentRule;
402
+ message = documentationMessage;
403
+ break documentationCommentLoop;
404
+ }
405
+ }
406
+ }
407
+ }
408
+ }
409
+ if (!comment || !commentEntry || !messageRule)
410
+ return undefined;
411
+ if (messageRule.reasonOverride)
412
+ return { override: messageRule.reasonOverride };
413
+ if (messageRule.reason)
414
+ return messageRule.reason;
415
+ return message;
416
+ }
417
+ if (messageRule.reasonOverride)
418
+ return { override: messageRule.reasonOverride };
419
+ if (messageRule.reason)
420
+ return messageRule.reason;
421
+ return messageString;
422
+ }
423
+ function isNodeCalleeOfParent(node) {
424
+ switch (node.parent?.type) {
425
+ case utils_1.AST_NODE_TYPES.NewExpression:
426
+ case utils_1.AST_NODE_TYPES.CallExpression:
427
+ return node.parent.callee === node;
428
+ case utils_1.AST_NODE_TYPES.TaggedTemplateExpression:
429
+ return node.parent.tag === node;
430
+ case utils_1.AST_NODE_TYPES.JSXOpeningElement:
431
+ return node.parent.name === node;
432
+ default:
433
+ return false;
434
+ }
435
+ }
436
+ function getCallLikeNode(node) {
437
+ let callee = node;
438
+ while (callee.parent?.type === utils_1.AST_NODE_TYPES.MemberExpression && callee.parent.property === callee) {
439
+ callee = callee.parent;
440
+ }
441
+ return isNodeCalleeOfParent(callee) ? callee : undefined;
442
+ }
443
+ function getCallLikeBugged(node) {
444
+ const tsNode = services.esTreeNodeToTSNodeMap.get(node.parent);
445
+ // If the node is a direct function call, we look for its signature.
446
+ const signature = (0, eslint_utils_1.nullThrows)(checker.getResolvedSignature(tsNode), "Expected call like node to have signature");
447
+ const symbol = services.getSymbolAtLocation(node);
448
+ const aliasedSymbol = symbol != null && tsutils.isSymbolFlagSet(symbol, typescript_1.default.SymbolFlags.Alias) ? checker.getAliasedSymbol(symbol) : symbol;
449
+ const symbolDeclarationKind = aliasedSymbol?.declarations?.[0]?.kind;
450
+ // Properties with function-like types have "deprecated" jsdoc
451
+ // on their symbols, not on their signatures:
452
+ //
453
+ // interface Props {
454
+ // /** @deprecated */
455
+ // property: () => 'foo'
456
+ // ^symbol^ ^signature^
457
+ // }
458
+ if (symbolDeclarationKind !== typescript_1.default.SyntaxKind.MethodDeclaration &&
459
+ symbolDeclarationKind !== typescript_1.default.SyntaxKind.FunctionDeclaration &&
460
+ symbolDeclarationKind !== typescript_1.default.SyntaxKind.MethodSignature) {
461
+ return searchForBuggedInAliasesChain(symbol, true) ?? getJsDocBugged(signature) ?? getJsDocBugged(aliasedSymbol);
462
+ }
463
+ return (searchForBuggedInAliasesChain(symbol,
464
+ // Here we're working with a function declaration or method.
465
+ // Both can have 1 or more overloads, each overload creates one
466
+ // ts.Declaration which is placed in symbol.declarations.
467
+ //
468
+ // Imagine the following code:
469
+ //
470
+ // function foo(): void
471
+ // /** @deprecated Some Reason */
472
+ // function foo(arg: string): void
473
+ // function foo(arg?: string): void {}
474
+ //
475
+ // foo() // <- foo is our symbol
476
+ //
477
+ // If we call getJsDocDeprecation(checker.getAliasedSymbol(symbol)),
478
+ // we get 'Some Reason', but after all, we are calling foo with
479
+ // a signature that is not deprecated!
480
+ // It works this way because symbol.getJsDocTags returns tags from
481
+ // all symbol declarations combined into one array. And AFAIK there is
482
+ // no publicly exported TS function that can tell us if a particular
483
+ // declaration is deprecated or not.
484
+ //
485
+ // So, in case of function and method declarations, we don't check original
486
+ // aliased symbol, but rely on the getJsDocDeprecation(signature) call below.
487
+ false) ?? getJsDocBugged(signature));
488
+ }
489
+ function getJSXAttributeBugged(openingElement, propertyName) {
490
+ const tsNode = services.esTreeNodeToTSNodeMap.get(openingElement.name);
491
+ const contextualType = (0, eslint_utils_1.nullThrows)(checker.getContextualType(tsNode), "Expected JSX opening element name to have contextualType");
492
+ const symbol = contextualType.getProperty(propertyName);
493
+ return getJsDocBugged(symbol);
494
+ }
495
+ function getBuggedReason(node) {
496
+ const callLikeNode = getCallLikeNode(node);
497
+ if (callLikeNode) {
498
+ return getCallLikeBugged(callLikeNode);
499
+ }
500
+ if (node.parent.type === utils_1.AST_NODE_TYPES.JSXAttribute && node.type !== utils_1.AST_NODE_TYPES.Super) {
501
+ return getJSXAttributeBugged(node.parent.parent, node.name);
502
+ }
503
+ if (node.parent.type === utils_1.AST_NODE_TYPES.Property && node.type !== utils_1.AST_NODE_TYPES.Super) {
504
+ const property = services.getTypeAtLocation(node.parent.parent).getProperty(node.name);
505
+ const propertySymbol = services.getSymbolAtLocation(node);
506
+ const valueSymbol = checker.getShorthandAssignmentValueSymbol(propertySymbol?.valueDeclaration);
507
+ return (searchForBuggedInAliasesChain(propertySymbol, true) ??
508
+ getJsDocBugged(property) ??
509
+ getJsDocBugged(propertySymbol) ??
510
+ getJsDocBugged(valueSymbol));
511
+ }
512
+ return searchForBuggedInAliasesChain(services.getSymbolAtLocation(node), true);
513
+ }
514
+ function checkIdentifier(node) {
515
+ if (isDeclaration(node) || isInsideImport(node)) {
516
+ return;
517
+ }
518
+ const reason = getBuggedReason(node);
519
+ if (reason == null) {
520
+ return;
521
+ }
522
+ const type = services.getTypeAtLocation(node);
523
+ if ((0, type_utils_1.typeMatchesSomeSpecifier)(type, allow, services.program) || (0, type_utils_1.valueMatchesSomeSpecifier)(node, allow, services.program, type)) {
524
+ return;
525
+ }
526
+ const name = getReportedNodeName(node);
527
+ context.report({
528
+ ...(reason ?
529
+ typeof reason === "object" ?
530
+ {
531
+ messageId: "buggedReasonOverride",
532
+ data: { name, reason: reason.override },
533
+ }
534
+ : {
535
+ messageId: "buggedWithReason",
536
+ data: { name, reason },
537
+ }
538
+ : {
539
+ messageId: "bugged",
540
+ data: { name },
541
+ }),
542
+ node,
543
+ });
544
+ }
545
+ function checkMemberExpression(node) {
546
+ if (!node.computed) {
547
+ return;
548
+ }
549
+ const propertyType = services.getTypeAtLocation(node.property);
550
+ if (propertyType.isLiteral()) {
551
+ const objectType = services.getTypeAtLocation(node.object);
552
+ const propertyName = propertyType.isStringLiteral() ? propertyType.value : String(propertyType.value);
553
+ const property = objectType.getProperty(propertyName);
554
+ const reason = getJsDocBugged(property);
555
+ if (reason == null) {
556
+ return;
557
+ }
558
+ if ((0, type_utils_1.typeMatchesSomeSpecifier)(objectType, allow, services.program)) {
559
+ return;
560
+ }
561
+ context.report({
562
+ ...(reason ?
563
+ typeof reason === "object" ?
564
+ {
565
+ messageId: "buggedReasonOverride",
566
+ data: { name: propertyName, reason: reason.override },
567
+ }
568
+ : {
569
+ messageId: "buggedWithReason",
570
+ data: { name: propertyName, reason },
571
+ }
572
+ : {
573
+ messageId: "bugged",
574
+ data: { name: propertyName },
575
+ }),
576
+ node: node.property,
577
+ });
578
+ }
579
+ }
580
+ return {
581
+ Identifier(node) {
582
+ const { parent } = node;
583
+ if (parent.type === utils_1.AST_NODE_TYPES.ExportNamedDeclaration || parent.type === utils_1.AST_NODE_TYPES.ExportAllDeclaration) {
584
+ return;
585
+ }
586
+ // Computed identifier expressions are handled by checkMemberExpression
587
+ if (parent.type === utils_1.AST_NODE_TYPES.MemberExpression && parent.computed && parent.property === node) {
588
+ return;
589
+ }
590
+ if (parent.type === utils_1.AST_NODE_TYPES.ExportSpecifier) {
591
+ // only deal with the alias (exported) side, not the local binding
592
+ if (parent.exported !== node) {
593
+ return;
594
+ }
595
+ const symbol = services.getSymbolAtLocation(node);
596
+ const aliasDeprecation = getJsDocBugged(symbol);
597
+ if (aliasDeprecation != null) {
598
+ return;
599
+ }
600
+ }
601
+ // whether it's a plain identifier or the exported alias
602
+ checkIdentifier(node);
603
+ },
604
+ JSXIdentifier(node) {
605
+ if (node.parent.type !== utils_1.AST_NODE_TYPES.JSXClosingElement) {
606
+ checkIdentifier(node);
607
+ }
608
+ },
609
+ MemberExpression(node) {
610
+ checkMemberExpression(node);
611
+ },
612
+ PrivateIdentifier(node) {
613
+ checkIdentifier(node);
614
+ },
615
+ Super(node) {
616
+ checkIdentifier(node);
617
+ },
618
+ };
619
+ },
620
+ });
621
+ //# sourceMappingURL=no-bugged.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-bugged.cjs","sourceRoot":"","sources":["../../src/rules/no-bugged.cts"],"names":[],"mappings":"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"}