/
ScopeManager.ts
60 lines (52 loc) · 1.93 KB
/
ScopeManager.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { TSESTree } from '@typescript-eslint/typescript-estree';
import ESLintScopeManager from 'eslint-scope/lib/scope-manager';
import { Scope } from './Scope';
import { Variable } from './Variable';
interface ScopeManagerOptions {
directive?: boolean;
optimistic?: boolean;
ignoreEval?: boolean;
nodejsScope?: boolean;
sourceType?: 'module' | 'script';
impliedStrict?: boolean;
ecmaVersion?: number;
}
interface ScopeManager {
__options: ScopeManagerOptions;
__currentScope: Scope;
__nodeToScope: WeakMap<TSESTree.Node, Scope[]>;
__declaredVariables: WeakMap<TSESTree.Node, Variable[]>;
scopes: Scope[];
globalScope: Scope;
__useDirective(): boolean;
__isOptimistic(): boolean;
__ignoreEval(): boolean;
__isNodejsScope(): boolean;
isModule(): boolean;
isImpliedStrict(): boolean;
isStrictModeSupported(): boolean;
// Returns appropriate scope for this node.
__get(node: TSESTree.Node): Scope | undefined;
getDeclaredVariables(node: TSESTree.Node): Variable[];
acquire(node: TSESTree.Node, inner?: boolean): Scope | null;
acquireAll(node: TSESTree.Node): Scope | null;
release(node: TSESTree.Node, inner?: boolean): Scope | null;
attach(): void;
detach(): void;
__nestScope<T extends Scope>(scope: T): T;
__nestGlobalScope(node: TSESTree.Node): Scope;
__nestBlockScope(node: TSESTree.Node): Scope;
__nestFunctionScope(node: TSESTree.Node, isMethodDefinition: boolean): Scope;
__nestForScope(node: TSESTree.Node): Scope;
__nestCatchScope(node: TSESTree.Node): Scope;
__nestWithScope(node: TSESTree.Node): Scope;
__nestClassScope(node: TSESTree.Node): Scope;
__nestSwitchScope(node: TSESTree.Node): Scope;
__nestModuleScope(node: TSESTree.Node): Scope;
__nestFunctionExpressionNameScope(node: TSESTree.Node): Scope;
__isES6(): boolean;
}
const ScopeManager = ESLintScopeManager as {
new (options: ScopeManagerOptions): ScopeManager;
};
export { ScopeManager, ScopeManagerOptions };