Skip to content

⬅️ Back to Table of Contents

📄 no-dynamic-delete.ts

📊 Analysis Summary

Metric Count
🔧 Functions 4
📦 Imports 6

📚 Table of Contents

🛠️ File Location:

📂 packages/eslint-plugin/src/rules/no-dynamic-delete.ts

📦 Imports

Name Source
TSESLint @typescript-eslint/utils
TSESTree @typescript-eslint/utils
AST_NODE_TYPES @typescript-eslint/utils
createRule ../util
nullThrows ../util
NullThrowsReasons ../util

Functions

createFixer(member: TSESTree.MemberExpression): TSESLint.ReportFixFunction | undefined

Code
function createFixer(
      member: TSESTree.MemberExpression,
    ): TSESLint.ReportFixFunction | undefined {
      if (
        member.property.type === AST_NODE_TYPES.Literal &&
        typeof member.property.value === 'string'
      ) {
        return createPropertyReplacement(
          member.property,
          `.${member.property.value}`,
        );
      }

      return undefined;
    }
  • Parameters:
  • member: TSESTree.MemberExpression
  • Return Type: TSESLint.ReportFixFunction | undefined
  • Calls:
  • createPropertyReplacement

createPropertyReplacement(property: TSESTree.Expression, replacement: string): (fixer: TSESLint.RuleFixer) => TSESLint.RuleFix

Code
function createPropertyReplacement(
      property: TSESTree.Expression,
      replacement: string,
    ) {
      return (fixer: TSESLint.RuleFixer): TSESLint.RuleFix =>
        fixer.replaceTextRange(getTokenRange(property), replacement);
    }
  • Parameters:
  • property: TSESTree.Expression
  • replacement: string
  • Return Type: (fixer: TSESLint.RuleFixer) => TSESLint.RuleFix
  • Calls:
  • fixer.replaceTextRange
  • getTokenRange

getTokenRange(property: TSESTree.Expression): [number, number]

Code
function getTokenRange(property: TSESTree.Expression): [number, number] {
      return [
        nullThrows(
          context.sourceCode.getTokenBefore(property),
          NullThrowsReasons.MissingToken('token before', 'property'),
        ).range[0],
        nullThrows(
          context.sourceCode.getTokenAfter(property),
          NullThrowsReasons.MissingToken('token after', 'property'),
        ).range[1],
      ];
    }
  • Parameters:
  • property: TSESTree.Expression
  • Return Type: [number, number]
  • Calls:
  • nullThrows (from ../util)
  • context.sourceCode.getTokenBefore
  • NullThrowsReasons.MissingToken
  • context.sourceCode.getTokenAfter

isAcceptableIndexExpression(property: TSESTree.Expression): boolean

Code
function isAcceptableIndexExpression(property: TSESTree.Expression): boolean {
  return (
    (property.type === AST_NODE_TYPES.Literal &&
      ['number', 'string'].includes(typeof property.value)) ||
    (property.type === AST_NODE_TYPES.UnaryExpression &&
      property.operator === '-' &&
      property.argument.type === AST_NODE_TYPES.Literal &&
      typeof property.argument.value === 'number')
  );
}
  • Parameters:
  • property: TSESTree.Expression
  • Return Type: boolean
  • Calls:
  • ['number', 'string'].includes