eslint-type-tracer
The type tracer for ESLint rules.
Last updated 8 months ago by ota-meshi .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install eslint-type-tracer 
SYNC missed versions from official npm registry.

Introduction

eslint-type-tracer is the type tracer for ESLint rules.

NPM license NPM version NPM downloads NPM downloads NPM downloads NPM downloads NPM downloads Build Status

???? Features

Trace and infer types of expression nodes for ESLint rules.

???? Limitations

This tool cannot always infer the complete or exact type of an expression. In particular, ESLint analyzes one file at a time, so types that are defined or imported from other files cannot be inferred. As a result, type inference is limited to what can be determined within the current file only.

???? Installation

npm install eslint-type-tracer

Requirements

  • ESLint v8.57.0 and above
  • Node.js v14.18.0, v16.0.0 and above

???? Usage

API

buildTypeTracer

import { buildTypeTracer } from "eslint-type-tracer";

Builds a type tracer function for use in ESLint rules. This function infers the type name of a given AST expression node.

Signature:

function buildTypeTracer(
  sourceCode: SourceCode
): (node: TSESTree.Expression) => TypeName[];
  • sourceCode: The ESLint SourceCode object.

Returns:

A function that takes an expression node and returns an array of inferred type names (e.g., ["Array"]). If the type cannot be determined, it returns an empty array []

Example:

const typeTrace = buildTypeTracer(context.sourceCode);
const typeNames = typeTrace(node);
if (typeNames.includes("Array")) {
  // node is inferred as Array
}

buildTypeChecker

import { buildTypeChecker } from "eslint-type-tracer";

Builds a type checker function for use in ESLint rules. This function helps you determine if a given AST node is of a specific type.

Signature:

function buildTypeChecker(
  sourceCode: SourceCode,
  options?: { aggressive?: boolean }
): (
  node: TSESTree.Expression,
  className: TypeName,
  memberAccessNode?: TSESTree.MemberExpression | TSESTree.Property
) => boolean | "aggressive";
  • sourceCode: The ESLint SourceCode object.
  • options.aggressive: If set to true, returns "aggressive" when the type cannot be determined. Default is false.

Returns:

A function that takes an expression node, a type name, and optionally a member access node, and returns true if the node is of the specified type, false if not, or "aggressive" if undetermined and the option is set.

Example:

const typeChecker = buildTypeChecker(context.sourceCode);
if (typeChecker(node, "Array")) {
  // node is an Array
}

???? Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

Development Tools

  • npm run test runs tests.

???? License

See the LICENSE file for license rights and limitations (MIT).

Current Tags

  • 0.4.1                                ...           latest (8 months ago)

6 Versions

  • 0.4.1                                ...           8 months ago
  • 0.4.0                                ...           10 months ago
  • 0.3.0                                ...           10 months ago
  • 0.2.0                                ...           10 months ago
  • 0.1.0                                ...           10 months ago
  • 0.0.0                                ...           10 months ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (1)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |