Nebulous Puffy Marshmallows

    @typescript-eslint/scope-manager
    TypeScript icon, indicating that this package has built-in type declarations

    5.5.0 • Public • Published

    TypeScript Scope Manager

    CI NPM Version NPM Downloads

    This is a fork of eslint-scope, enhanced to support TypeScript functionality. You can view the original licence for the code here.

    This package is consumed automatically by @typescript-eslint/parser. You probably don't want to use it directly.

    Getting Started

    You can find our Getting Started docs here

    Installation

    $ yarn add -D typescript @typescript-eslint/scope-manager
    $ npm i --save-dev typescript @typescript-eslint/scope-manager

    API

    analyze(tree, options)

    Analyses a given AST and returns the resulting ScopeManager.

    interface AnalyzeOptions {
      /**
       * Known visitor keys.
       */
      childVisitorKeys?: Record<string, string[]> | null;
    
      /**
       * Which ECMAScript version is considered.
       * Defaults to `2018`.
       * `'latest'` is converted to 1e8 at parser.
       */
      ecmaVersion?: EcmaVersion | 1e8;
    
      /**
       * Whether the whole script is executed under node.js environment.
       * When enabled, the scope manager adds a function scope immediately following the global scope.
       * Defaults to `false`.
       */
      globalReturn?: boolean;
    
      /**
       * Implied strict mode (if ecmaVersion >= 5).
       * Defaults to `false`.
       */
      impliedStrict?: boolean;
    
      /**
       * The identifier that's used for JSX Element creation (after transpilation).
       * This should not be a member expression - just the root identifier (i.e. use "React" instead of "React.createElement").
       * Defaults to `"React"`.
       */
      jsxPragma?: string;
    
      /**
       * The identifier that's used for JSX fragment elements (after transpilation).
       * If `null`, assumes transpilation will always use a member on `jsxFactory` (i.e. React.Fragment).
       * This should not be a member expression - just the root identifier (i.e. use "h" instead of "h.Fragment").
       * Defaults to `null`.
       */
      jsxFragmentName?: string | null;
    
      /**
       * The lib used by the project.
       * This automatically defines a type variable for any types provided by the configured TS libs.
       * For more information, see https://www.typescriptlang.org/tsconfig#lib
       *
       * Defaults to the lib for the provided `ecmaVersion`.
       */
      lib?: Lib[];
    
      /**
       * The source type of the script.
       */
      sourceType?: 'script' | 'module';
    
      /**
       * Emit design-type metadata for decorated declarations in source.
       * Defaults to `false`.
       */
      emitDecoratorMetadata?: boolean;
    }

    Example usage:

    import { analyze } from '@typescript-eslint/scope-manager';
    import { parse } from '@typescript-eslint/typescript-estree';
    
    const code = `const hello: string = 'world';`;
    const ast = parse(code, {
      // note that scope-manager requires ranges on the AST
      range: true,
    });
    const scope = analyze(ast, {
      ecmaVersion: 2020,
      sourceType: 'module',
    });

    References

    Contributing

    See the contributing guide here

    Install

    npm i @typescript-eslint/scope-manager

    DownloadsWeekly Downloads

    13,887,582

    Version

    5.5.0

    License

    MIT

    Unpacked Size

    546 kB

    Total Files

    503

    Last publish

    Collaborators

    • jameshenry