2020-01-28 13:08:03 +08:00
|
|
|
import * as ts from 'typescript';
|
|
|
|
export interface VariableInfo {
|
|
|
|
domain: DeclarationDomain;
|
|
|
|
exported: boolean;
|
|
|
|
uses: VariableUse[];
|
|
|
|
inGlobalScope: boolean;
|
|
|
|
declarations: ts.Identifier[];
|
|
|
|
}
|
|
|
|
export interface VariableUse {
|
|
|
|
domain: UsageDomain;
|
|
|
|
location: ts.Identifier;
|
|
|
|
}
|
2020-03-07 11:45:40 +08:00
|
|
|
export declare enum DeclarationDomain {
|
2020-01-28 13:08:03 +08:00
|
|
|
Namespace = 1,
|
|
|
|
Type = 2,
|
|
|
|
Value = 4,
|
|
|
|
Import = 8,
|
|
|
|
Any = 7
|
|
|
|
}
|
2020-03-07 11:45:40 +08:00
|
|
|
export declare enum UsageDomain {
|
2020-01-28 13:08:03 +08:00
|
|
|
Namespace = 1,
|
|
|
|
Type = 2,
|
|
|
|
Value = 4,
|
|
|
|
ValueOrNamespace = 5,
|
|
|
|
Any = 7,
|
|
|
|
TypeQuery = 8
|
|
|
|
}
|
|
|
|
export declare function getUsageDomain(node: ts.Identifier): UsageDomain | undefined;
|
|
|
|
export declare function getDeclarationDomain(node: ts.Identifier): DeclarationDomain | undefined;
|
|
|
|
export declare function collectVariableUsage(sourceFile: ts.SourceFile): Map<ts.Identifier, VariableInfo>;
|