blob: d15d0d14c42bf57989afe1628848fd761380c9f4 [file] [log] [blame]
/**
* @license
* Copyright Google Inc. 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/strategies/usage_strategy/usage_strategy" />
import * as ts from 'typescript';
import { ClassMetadataMap } from '../../angular/ng_query_visitor';
import { NgQueryDefinition } from '../../angular/query-definition';
import { TimingResult, TimingStrategy } from '../timing-strategy';
/**
* Query timing strategy that determines the timing of a given query by inspecting how
* the query is accessed within the project's TypeScript source files. Read more about
* this strategy here: https://hackmd.io/s/Hymvc2OKE
*/
export declare class QueryUsageStrategy implements TimingStrategy {
private classMetadata;
private typeChecker;
constructor(classMetadata: ClassMetadataMap, typeChecker: ts.TypeChecker);
setup(): void;
/**
* Analyzes the usage of the given query and determines the query timing based
* on the current usage of the query.
*/
detectTiming(query: NgQueryDefinition): TimingResult;
/**
* Checks whether a given query is used statically within the given class, its super
* class or derived classes.
*/
private analyzeQueryUsage;
}