1
- import type { Identifier } from "estree"
2
- import type { Scope , ScopeManager } from "eslint-scope"
1
+ import type { Identifier , Node } from "estree"
2
+ import type {
3
+ Scope ,
4
+ ScopeManager ,
5
+ Variable ,
6
+ VariableDefinition ,
7
+ } from "eslint-scope"
3
8
import type { ESLintProgram , Token } from "../src/ast"
4
9
import type { ParserOptions } from "../src/common/parser-options"
5
10
import escope from "eslint-scope"
@@ -41,7 +46,7 @@ export function getAllTokens(ast: ESLintProgram): Token[] {
41
46
export function scopeToJSON ( scopeManager : ScopeManager ) {
42
47
return JSON . stringify ( normalizeScope ( scopeManager . globalScope ) , replacer , 4 )
43
48
44
- function normalizeScope ( scope : Scope ) {
49
+ function normalizeScope ( scope : Scope ) : any {
45
50
return {
46
51
type : scope . type ,
47
52
variables : scope . variables . map ( normalizeVar ) ,
@@ -51,7 +56,7 @@ export function scopeToJSON(scopeManager: ScopeManager) {
51
56
}
52
57
}
53
58
54
- function normalizeVar ( v ) {
59
+ function normalizeVar ( v : Variable ) {
55
60
return {
56
61
name : v . name ,
57
62
identifiers : v . identifiers . map ( normalizeId ) ,
@@ -60,7 +65,7 @@ export function scopeToJSON(scopeManager: ScopeManager) {
60
65
}
61
66
}
62
67
63
- function normalizeReference ( reference ) {
68
+ function normalizeReference ( reference : any ) {
64
69
return {
65
70
identifier : normalizeId ( reference . identifier ) ,
66
71
from : reference . from . type ,
@@ -77,15 +82,15 @@ export function scopeToJSON(scopeManager: ScopeManager) {
77
82
}
78
83
}
79
84
80
- function normalizeDef ( def ) {
85
+ function normalizeDef ( def : VariableDefinition ) {
81
86
return {
82
87
type : def . type ,
83
88
node : normalizeDefNode ( def . node ) ,
84
89
name : def . name . name ,
85
90
}
86
91
}
87
92
88
- function normalizeId ( identifier : Identifier ) {
93
+ function normalizeId ( identifier : Identifier | null ) {
89
94
return (
90
95
identifier && {
91
96
type : identifier . type ,
@@ -95,7 +100,7 @@ export function scopeToJSON(scopeManager: ScopeManager) {
95
100
)
96
101
}
97
102
98
- function normalizeDefNode ( node ) {
103
+ function normalizeDefNode ( node : Node ) {
99
104
return {
100
105
type : node . type ,
101
106
loc : node . loc ,
@@ -106,7 +111,10 @@ export function scopeToJSON(scopeManager: ScopeManager) {
106
111
/**
107
112
* Analyze scope
108
113
*/
109
- export function analyze ( ast : ESLintProgram , parserOptions : ParserOptions ) {
114
+ export function analyze (
115
+ ast : ESLintProgram ,
116
+ parserOptions : ParserOptions ,
117
+ ) : ScopeManager {
110
118
const ecmaVersion = parserOptions . ecmaVersion ?? 2022
111
119
const ecmaFeatures = parserOptions . ecmaFeatures ?? { }
112
120
const sourceType = parserOptions . sourceType ?? "script"
@@ -121,11 +129,11 @@ export function analyze(ast: ESLintProgram, parserOptions: ParserOptions) {
121
129
122
130
return result
123
131
124
- function getFallbackKeys ( node ) {
132
+ function getFallbackKeys ( node : any ) {
125
133
return Object . keys ( node ) . filter ( fallbackKeysFilter , node )
126
134
}
127
135
128
- function fallbackKeysFilter ( key ) {
136
+ function fallbackKeysFilter ( key : string ) {
129
137
const value = null
130
138
return (
131
139
key !== "comments" &&
0 commit comments