📄 prefer-ast-types-enum¶
📊 Analysis Summary¶
| Metric | Count |
|---|---|
| 🔧 Functions | 3 |
| 📦 Imports | 5 |
📚 Table of Contents¶
🛠️ File Location:¶
📂 packages/eslint-plugin-internal/src/rules/prefer-ast-types-enum.ts
📤 Default Export¶
| Property | Value |
|---|---|
name |
'prefer-ast-types-enum' |
meta.type |
'problem' |
meta.docs.description |
'Enforce consistent usage of AST_NODE_TYPES, AST_TOKEN_TYPES and DefinitionType enums' |
meta.fixable |
'code' |
meta.messages.preferEnum |
'Prefer {{ enumName }}.{{ literal }} over raw literal' |
meta.schema |
[] |
defaultOptions |
[] |
Entry point: create — documented under Functions.
📦 Imports¶
| Name | Source |
|---|---|
TSESTree |
@typescript-eslint/utils |
DefinitionType |
@typescript-eslint/scope-manager |
AST_NODE_TYPES |
@typescript-eslint/utils |
AST_TOKEN_TYPES |
@typescript-eslint/utils |
createRule |
../util/index.js |
Functions¶
create(context: any): { Literal(node: TSESTree.Literal): void; }¶
Parameters:
contextany
Returns: { Literal(node: TSESTree.Literal): void; }
Calls:
context.reportfixer.replaceText['AST_NODE_TYPES', 'AST_TOKEN_TYPES', 'DefinitionType'].includesisStringLiteralObject.hasOwnreport
Code
create(context) {
const report = (
enumName: 'AST_NODE_TYPES' | 'AST_TOKEN_TYPES' | 'DefinitionType',
literal: TSESTree.StringLiteral,
): void =>
context.report({
node: literal,
messageId: 'preferEnum',
data: { enumName, literal: literal.value },
fix: fixer =>
fixer.replaceText(literal, `${enumName}.${literal.value}`),
});
return {
Literal(node: TSESTree.Literal): void {
if (
node.parent.type === AST_NODE_TYPES.TSEnumMember &&
['AST_NODE_TYPES', 'AST_TOKEN_TYPES', 'DefinitionType'].includes(
node.parent.parent.parent.id.name,
)
) {
return;
}
if (!isStringLiteral(node)) {
return;
}
const value = node.value;
if (Object.hasOwn(AST_NODE_TYPES, value)) {
report('AST_NODE_TYPES', node);
}
if (Object.hasOwn(AST_TOKEN_TYPES, value)) {
report('AST_TOKEN_TYPES', node);
}
if (Object.hasOwn(DefinitionType, value)) {
report('DefinitionType', node);
}
},
};
}
isStringLiteral(node: TSESTree.Literal): node is TSESTree.StringLiteral¶
Parameters:
nodeTSESTree.Literal
Returns: node is TSESTree.StringLiteral
Internal helpers¶
Declared inside another function in this file.
report(enumName: 'AST_NODE_TYPES' | 'AST_TOKEN_TYPES' | …, literal: TSESTree.StringLiteral): void¶
Parameters:
enumName'AST_NODE_TYPES' | 'AST_TOKEN_TYPES' | 'DefinitionType'literalTSESTree.StringLiteral
Returns: void
Calls:
context.report
Code
Generated by Syntax Scribe