UNPKG

@angular/core

Version:

Angular - the core framework

46 lines (45 loc) 2.03 kB
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ /// <amd-module name="@angular/core/schematics/migrations/static-queries/angular/ng_query_visitor" /> import * as ts from 'typescript'; import { ResolvedTemplate } from '../../../utils/ng_component_template'; import { NgQueryDefinition } from './query-definition'; /** Resolved metadata of a given class. */ export interface ClassMetadata { /** List of class declarations that derive from the given class. */ derivedClasses: ts.ClassDeclaration[]; /** Super class of the given class. */ superClass: ts.ClassDeclaration | null; /** List of property names that declare an Angular input within the given class. */ ngInputNames: string[]; /** Component template that belongs to that class if present. */ template?: ResolvedTemplate; } /** Type that describes a map which can be used to get a class declaration's metadata. */ export declare type ClassMetadataMap = Map<ts.ClassDeclaration, ClassMetadata>; /** * Visitor that can be used to determine Angular queries within given TypeScript nodes. * Besides resolving queries, the visitor also records class relations and searches for * Angular input setters which can be used to analyze the timing usage of a given query. */ export declare class NgQueryResolveVisitor { typeChecker: ts.TypeChecker; /** Resolved Angular query definitions. */ resolvedQueries: Map<ts.SourceFile, NgQueryDefinition[]>; /** Maps a class declaration to its class metadata. */ classMetadata: ClassMetadataMap; constructor(typeChecker: ts.TypeChecker); visitNode(node: ts.Node): void; private visitPropertyDeclaration; private visitAccessorDeclaration; private visitClassDeclaration; private _recordQueryDeclaration; private _recordClassInputSetters; private _recordClassInheritances; private _getClassMetadata; }