1 import { TSESTree } from '../../ts-estree';
\r
2 import * as TSESLint from '../../ts-eslint';
\r
3 declare const ReferenceTrackerREAD: unique symbol;
\r
4 declare const ReferenceTrackerCALL: unique symbol;
\r
5 declare const ReferenceTrackerCONSTRUCT: unique symbol;
\r
6 interface ReferenceTracker {
\r
8 * Iterate the references that the given `traceMap` determined.
\r
9 * This method starts to search from global variables.
\r
11 * @see {@link https://eslint-utils.mysticatea.dev/api/scope-utils.html#tracker-iterateglobalreferences}
\r
13 iterateGlobalReferences<T>(traceMap: ReferenceTracker.TraceMap<T>): IterableIterator<ReferenceTracker.FoundReference<T>>;
\r
15 * Iterate the references that the given `traceMap` determined.
\r
16 * This method starts to search from `require()` expression.
\r
18 * @see {@link https://eslint-utils.mysticatea.dev/api/scope-utils.html#tracker-iteratecjsreferences}
\r
20 iterateCjsReferences<T>(traceMap: ReferenceTracker.TraceMap<T>): IterableIterator<ReferenceTracker.FoundReference<T>>;
\r
22 * Iterate the references that the given `traceMap` determined.
\r
23 * This method starts to search from `import`/`export` declarations.
\r
25 * @see {@link https://eslint-utils.mysticatea.dev/api/scope-utils.html#tracker-iterateesmreferences}
\r
27 iterateEsmReferences<T>(traceMap: ReferenceTracker.TraceMap<T>): IterableIterator<ReferenceTracker.FoundReference<T>>;
\r
29 interface ReferenceTrackerStatic {
\r
30 new (globalScope: TSESLint.Scope.Scope, options?: {
\r
32 * The mode which determines how the `tracker.iterateEsmReferences()` method scans CommonJS modules.
\r
33 * If this is `"strict"`, the method binds CommonJS modules to the default export. Otherwise, the method binds
\r
34 * CommonJS modules to both the default export and named exports. Optional. Default is `"strict"`.
\r
36 mode: 'strict' | 'legacy';
\r
38 * The name list of Global Object. Optional. Default is `["global", "globalThis", "self", "window"]`.
\r
40 globalObjectNames: readonly string[];
\r
41 }): ReferenceTracker;
\r
42 readonly READ: typeof ReferenceTrackerREAD;
\r
43 readonly CALL: typeof ReferenceTrackerCALL;
\r
44 readonly CONSTRUCT: typeof ReferenceTrackerCONSTRUCT;
\r
46 declare namespace ReferenceTracker {
\r
47 type READ = ReferenceTrackerStatic['READ'];
\r
48 type CALL = ReferenceTrackerStatic['CALL'];
\r
49 type CONSTRUCT = ReferenceTrackerStatic['CONSTRUCT'];
\r
50 type ReferenceType = READ | CALL | CONSTRUCT;
\r
51 type TraceMap<T = any> = Record<string, TraceMapElement<T>>;
\r
52 interface TraceMapElement<T> {
\r
53 [ReferenceTrackerREAD]?: T;
\r
54 [ReferenceTrackerCALL]?: T;
\r
55 [ReferenceTrackerCONSTRUCT]?: T;
\r
56 [key: string]: TraceMapElement<T>;
\r
58 interface FoundReference<T = any> {
\r
59 node: TSESTree.Node;
\r
60 path: readonly string[];
\r
61 type: ReferenceType;
\r
66 * The tracker for references. This provides reference tracking for global variables, CommonJS modules, and ES modules.
\r
68 * @see {@link https://eslint-utils.mysticatea.dev/api/scope-utils.html#referencetracker-class}
\r
70 declare const ReferenceTracker: ReferenceTrackerStatic;
\r
71 export { ReferenceTracker };
\r
72 //# sourceMappingURL=ReferenceTracker.d.ts.map
\r