Skip to main content

Typed service path inventory

This page inventories the current typed callpaths that can reach parser services or the TypeScript checker.

Source document: docs/internal/typed-paths.md

Guard modelโ€‹

All type-aware rule execution enters through explicit gates:

  • createTypedRule(...) short-circuits typed rules (meta.docs.requiresTypeChecking: true) when full type services are unavailable.
  • Optional typed flows in non-type-checked rules call hasTypeServices(context) before calling getTypedRuleServices(context).
  • Type-dependent helpers no longer discover typed services internally.

Core typed helpersโ€‹

PathTyped dependencyGuard entryFallback behaviorMax expected expensive calls/file
src/_internal/typed-rule.ts#getTypedRuleServicesparserServices.program, checkerhasTypeServices(context) or typed-rule create short-circuitThrows if called without program1 (rule create path)
src/_internal/constrained-type-at-location.ts#getConstrainedTypeAtLocationWithFallbackparserServices, checkerCaller must pass prevalidated checker/parser servicesAttempts constrained API first, then checker/node-map fallbackO(number of callsites invoking type resolution)
src/_internal/array-like-expression.ts#createIsArrayLikeExpressionCheckerchecker + parser-services node mapCaller must pass typed services objectReturns false on safe operation failureO(array-like candidate expressions)
src/_internal/typescript-eslint-node-autofix.ts#createTypeScriptEslintNodeExpressionSkipCheckeroptional typed servicesCaller passes typedServices explicitly (or omits for definition-only mode)Definition-only path when no typed services are suppliedO(guard candidate expressions)
src/_internal/type-checker-compat.ts helperschecker compatibility methodsOnly called from typed helper/rule pathsReturns undefined when host checker API is unavailableO(type graph traversal within caller)

Rule callpath inventoryโ€‹

Rules that require type checking (meta.docs.requiresTypeChecking: true)โ€‹

  • src/rules/prefer-ts-extras-array-at.ts
  • src/rules/prefer-ts-extras-array-concat.ts
  • src/rules/prefer-ts-extras-array-find.ts
  • src/rules/prefer-ts-extras-array-find-last.ts
  • src/rules/prefer-ts-extras-array-find-last-index.ts
  • src/rules/prefer-ts-extras-array-includes.ts
  • src/rules/prefer-ts-extras-array-join.ts
  • src/rules/prefer-ts-extras-array-first.ts
  • src/rules/prefer-ts-extras-array-last.ts
  • src/rules/prefer-ts-extras-is-empty.ts
  • src/rules/prefer-ts-extras-safe-cast-to.ts
  • src/rules/prefer-ts-extras-set-has.ts
  • src/rules/prefer-ts-extras-string-split.ts

Rules with optional typed branch (meta.docs.requiresTypeChecking: false)โ€‹

These rules always run a definition-only check and only run checker-backed logic when services are explicitly prevalidated:

  • src/rules/prefer-ts-extras-is-defined.ts
  • src/rules/prefer-ts-extras-is-infinite.ts
  • src/rules/prefer-ts-extras-is-present.ts

Telemetry countersโ€‹

Typed hot-path counters are recorded in src/_internal/typed-path-telemetry.ts:

  • prefilterChecks
  • prefilterHits
  • expensiveTypeCalls
  • fallbackInvocations

Snapshot API:

  • getTypedPathTelemetrySnapshot()
  • resetTypedPathTelemetry()

Derived rates included in snapshot totals:

  • prefilterHitRate = prefilterHits / prefilterChecks
  • fallbackInvocationRate = fallbackInvocations / expensiveTypeCalls
  • averageExpensiveCallsPerFile = expensiveTypeCalls / fileCount