astro-eslint-parser 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +345 -9
- package/lib/index.js +1745 -42
- package/lib/index.mjs +1719 -0
- package/package.json +12 -9
- package/lib/ast/astro.d.ts +0 -49
- package/lib/ast/astro.js +0 -2
- package/lib/ast/base.d.ts +0 -6
- package/lib/ast/base.js +0 -2
- package/lib/ast/index.d.ts +0 -8
- package/lib/ast/index.js +0 -18
- package/lib/ast/jsx.d.ts +0 -91
- package/lib/ast/jsx.js +0 -2
- package/lib/astro/index.d.ts +0 -56
- package/lib/astro/index.js +0 -357
- package/lib/astro-tools/index.d.ts +0 -21
- package/lib/astro-tools/index.js +0 -26
- package/lib/context/index.d.ts +0 -55
- package/lib/context/index.js +0 -158
- package/lib/context/parser-options.d.ts +0 -8
- package/lib/context/parser-options.js +0 -77
- package/lib/context/resolve-parser/espree.d.ts +0 -6
- package/lib/context/resolve-parser/espree.js +0 -41
- package/lib/context/resolve-parser/index.d.ts +0 -7
- package/lib/context/resolve-parser/index.js +0 -34
- package/lib/context/resolve-parser/parser-object.d.ts +0 -33
- package/lib/context/resolve-parser/parser-object.js +0 -27
- package/lib/context/script.d.ts +0 -34
- package/lib/context/script.js +0 -178
- package/lib/debug.d.ts +0 -2
- package/lib/debug.js +0 -8
- package/lib/errors.d.ts +0 -14
- package/lib/errors.js +0 -20
- package/lib/parser/astro-parser/astrojs-compiler-service.d.ts +0 -5
- package/lib/parser/astro-parser/astrojs-compiler-service.js +0 -12
- package/lib/parser/astro-parser/astrojs-compiler-worker.d.ts +0 -1
- package/lib/parser/astro-parser/astrojs-compiler-worker.js +0 -11
- package/lib/parser/astro-parser/parse.d.ts +0 -6
- package/lib/parser/astro-parser/parse.js +0 -270
- package/lib/parser/index.d.ts +0 -21
- package/lib/parser/index.js +0 -72
- package/lib/parser/lru-cache.d.ts +0 -7
- package/lib/parser/lru-cache.js +0 -32
- package/lib/parser/process-template.d.ts +0 -7
- package/lib/parser/process-template.js +0 -381
- package/lib/parser/script.d.ts +0 -7
- package/lib/parser/script.js +0 -44
- package/lib/parser/sort.d.ts +0 -6
- package/lib/parser/sort.js +0 -15
- package/lib/parser/template.d.ts +0 -10
- package/lib/parser/template.js +0 -102
- package/lib/parser/ts-patch.d.ts +0 -8
- package/lib/parser/ts-patch.js +0 -65
- package/lib/traverse.d.ts +0 -27
- package/lib/traverse.js +0 -93
- package/lib/types.d.ts +0 -17
- package/lib/types.js +0 -2
- package/lib/visitor-keys.d.ts +0 -2
- package/lib/visitor-keys.js +0 -14
package/lib/index.d.ts
CHANGED
|
@@ -1,12 +1,348 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
1
|
+
import * as eslint from 'eslint';
|
|
2
|
+
import { TSESTree } from '@typescript-eslint/types';
|
|
3
|
+
import { ScopeManager } from 'eslint-scope';
|
|
4
|
+
import { ParseResult } from '@astrojs/compiler';
|
|
5
|
+
import { Node, AttributeNode, ParentNode } from '@astrojs/compiler/types';
|
|
6
|
+
import { VisitorKeys as VisitorKeys$1 } from 'eslint-visitor-keys';
|
|
7
|
+
|
|
8
|
+
declare type RangeAndLoc = {
|
|
9
|
+
range: TSESTree.Range;
|
|
10
|
+
loc: TSESTree.SourceLocation;
|
|
11
|
+
};
|
|
12
|
+
declare class Context {
|
|
13
|
+
readonly code: string;
|
|
14
|
+
readonly locs: LinesAndColumns;
|
|
15
|
+
private readonly locsMap;
|
|
16
|
+
private readonly state;
|
|
17
|
+
constructor(code: string);
|
|
18
|
+
getLocFromIndex(index: number): {
|
|
19
|
+
line: number;
|
|
20
|
+
column: number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Get the location information of the given indexes.
|
|
24
|
+
*/
|
|
25
|
+
getLocations(start: number, end: number): RangeAndLoc;
|
|
26
|
+
/**
|
|
27
|
+
* Build token
|
|
28
|
+
*/
|
|
29
|
+
buildToken(type: TSESTree.Token["type"], range: TSESTree.Range): TSESTree.Token;
|
|
30
|
+
/**
|
|
31
|
+
* get text
|
|
32
|
+
*/
|
|
33
|
+
getText(range: TSESTree.Range): string;
|
|
34
|
+
get originalAST(): any;
|
|
35
|
+
set originalAST(originalAST: any);
|
|
36
|
+
}
|
|
37
|
+
declare class LinesAndColumns {
|
|
38
|
+
private readonly lineStartIndices;
|
|
39
|
+
private readonly normalizedLineFeed;
|
|
40
|
+
constructor(origCode: string);
|
|
41
|
+
getLocFromIndex(index: number): {
|
|
42
|
+
line: number;
|
|
43
|
+
column: number;
|
|
44
|
+
};
|
|
45
|
+
getIndexFromLoc(loc: {
|
|
46
|
+
line: number;
|
|
47
|
+
column: number;
|
|
48
|
+
}): number;
|
|
49
|
+
getNormalizedLineFeed(): NormalizedLineFeed;
|
|
50
|
+
}
|
|
51
|
+
declare class NormalizedLineFeed {
|
|
52
|
+
readonly code: string;
|
|
53
|
+
private readonly offsets;
|
|
54
|
+
get needRemap(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Remap index
|
|
57
|
+
*/
|
|
58
|
+
readonly remapIndex: (index: number) => number;
|
|
59
|
+
constructor(code: string, offsets: number[]);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
interface BaseNode {
|
|
63
|
+
loc: TSESTree.SourceLocation;
|
|
64
|
+
range: TSESTree.Range;
|
|
65
|
+
type: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare type JSXNode = JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXText;
|
|
69
|
+
declare type JSXChild = JSXElement | JSXFragment | JSXExpression | JSXText | AstroHTMLComment | AstroRawText;
|
|
70
|
+
declare type JSXParentNode = JSXElement | JSXFragment | AstroFragment;
|
|
71
|
+
interface JSXElement extends BaseNode {
|
|
72
|
+
type: "JSXElement";
|
|
73
|
+
openingElement: JSXOpeningElement;
|
|
74
|
+
closingElement: JSXClosingElement | null;
|
|
75
|
+
children: JSXChild[];
|
|
76
|
+
parent?: JSXParentNode;
|
|
77
|
+
}
|
|
78
|
+
interface JSXFragment extends BaseNode {
|
|
79
|
+
type: "JSXFragment";
|
|
80
|
+
openingFragment: JSXOpeningFragment;
|
|
81
|
+
closingFragment: JSXClosingFragment;
|
|
82
|
+
children: JSXChild[];
|
|
83
|
+
parent?: JSXParentNode;
|
|
84
|
+
}
|
|
85
|
+
interface JSXOpeningElement extends BaseNode {
|
|
86
|
+
type: "JSXOpeningElement";
|
|
87
|
+
typeParameters?: TSESTree.TSTypeParameterInstantiation;
|
|
88
|
+
selfClosing: boolean;
|
|
89
|
+
name: JSXTagNameExpression;
|
|
90
|
+
attributes: (JSXAttribute | JSXSpreadAttribute | AstroShorthandAttribute | AstroTemplateLiteralAttribute)[];
|
|
91
|
+
parent?: JSXElement;
|
|
92
|
+
}
|
|
93
|
+
interface JSXClosingElement extends BaseNode {
|
|
94
|
+
type: "JSXClosingElement";
|
|
95
|
+
name: JSXTagNameExpression;
|
|
96
|
+
parent?: JSXElement;
|
|
97
|
+
}
|
|
98
|
+
interface JSXClosingFragment extends BaseNode {
|
|
99
|
+
type: "JSXClosingFragment";
|
|
100
|
+
parent?: JSXFragment;
|
|
101
|
+
}
|
|
102
|
+
interface JSXOpeningFragment extends BaseNode {
|
|
103
|
+
type: "JSXOpeningFragment";
|
|
104
|
+
parent?: JSXFragment;
|
|
105
|
+
}
|
|
106
|
+
interface JSXAttribute extends BaseNode {
|
|
107
|
+
type: "JSXAttribute";
|
|
108
|
+
name: JSXIdentifier | JSXNamespacedName;
|
|
109
|
+
value: JSXExpression | TSESTree.Literal | null;
|
|
110
|
+
parent?: JSXOpeningElement;
|
|
111
|
+
}
|
|
112
|
+
interface JSXSpreadAttribute extends BaseNode {
|
|
113
|
+
type: "JSXSpreadAttribute";
|
|
114
|
+
argument: TSESTree.Expression;
|
|
115
|
+
parent?: JSXOpeningElement;
|
|
116
|
+
}
|
|
117
|
+
declare type JSXTagNameExpression = JSXIdentifier | JSXMemberExpression | JSXNamespacedName;
|
|
118
|
+
interface JSXIdentifier extends BaseNode {
|
|
119
|
+
type: "JSXIdentifier";
|
|
120
|
+
name: string;
|
|
121
|
+
parent?: JSXAttribute | AstroShorthandAttribute | AstroTemplateLiteralAttribute | JSXMemberExpression | JSXNamespacedName | JSXOpeningElement | JSXClosingElement;
|
|
122
|
+
}
|
|
123
|
+
interface JSXMemberExpression extends BaseNode {
|
|
124
|
+
type: "JSXMemberExpression";
|
|
125
|
+
object: JSXTagNameExpression;
|
|
126
|
+
property: JSXIdentifier;
|
|
127
|
+
parent?: JSXMemberExpression | JSXOpeningElement | JSXClosingElement;
|
|
128
|
+
}
|
|
129
|
+
interface JSXNamespacedName extends BaseNode {
|
|
130
|
+
type: "JSXNamespacedName";
|
|
131
|
+
namespace: JSXIdentifier;
|
|
132
|
+
name: JSXIdentifier;
|
|
133
|
+
parent?: JSXAttribute | AstroShorthandAttribute | AstroTemplateLiteralAttribute | JSXMemberExpression | JSXOpeningElement | JSXClosingElement;
|
|
134
|
+
}
|
|
135
|
+
declare type JSXExpression = JSXExpressionContainer | JSXSpreadChild;
|
|
136
|
+
interface JSXExpressionContainer extends BaseNode {
|
|
137
|
+
type: "JSXExpressionContainer";
|
|
138
|
+
expression: TSESTree.Expression | JSXEmptyExpression;
|
|
139
|
+
parent?: JSXAttribute | AstroShorthandAttribute | AstroTemplateLiteralAttribute | JSXParentNode;
|
|
140
|
+
}
|
|
141
|
+
interface JSXSpreadChild extends BaseNode {
|
|
142
|
+
type: "JSXSpreadChild";
|
|
143
|
+
expression: TSESTree.Expression;
|
|
144
|
+
parent?: JSXAttribute | JSXParentNode;
|
|
145
|
+
}
|
|
146
|
+
interface JSXEmptyExpression extends BaseNode {
|
|
147
|
+
type: "JSXEmptyExpression";
|
|
148
|
+
parent?: JSXExpressionContainer;
|
|
149
|
+
}
|
|
150
|
+
interface JSXText extends BaseNode {
|
|
151
|
+
type: "JSXText";
|
|
152
|
+
value: string;
|
|
153
|
+
raw: string;
|
|
154
|
+
parent?: JSXParentNode;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
declare type AstroNode = AstroProgram | AstroFragment | AstroHTMLComment | AstroDoctype | AstroShorthandAttribute | AstroTemplateLiteralAttribute | AstroRawText;
|
|
158
|
+
declare type AstroChild = JSXElement | JSXFragment | JSXExpression | JSXText | AstroHTMLComment | AstroRawText;
|
|
159
|
+
declare type AstroParentNode = JSXElement | JSXFragment | AstroFragment;
|
|
160
|
+
/** Node of Astro program root */
|
|
161
|
+
interface AstroProgram extends Omit<TSESTree.Program, "type" | "body"> {
|
|
162
|
+
type: "Program";
|
|
163
|
+
body: (TSESTree.Program["body"][number] | AstroFragment)[];
|
|
164
|
+
sourceType: "script" | "module";
|
|
165
|
+
comments: TSESTree.Comment[];
|
|
166
|
+
tokens: TSESTree.Token[];
|
|
167
|
+
parent?: undefined;
|
|
168
|
+
}
|
|
169
|
+
/** Node of Astro fragment */
|
|
170
|
+
interface AstroFragment extends BaseNode {
|
|
171
|
+
type: "AstroFragment";
|
|
172
|
+
children: AstroChild[];
|
|
173
|
+
parent?: AstroParentNode;
|
|
174
|
+
}
|
|
175
|
+
/** Node of Astro html comment */
|
|
176
|
+
interface AstroHTMLComment extends BaseNode {
|
|
177
|
+
type: "AstroHTMLComment";
|
|
178
|
+
value: string;
|
|
179
|
+
parent?: AstroParentNode;
|
|
180
|
+
}
|
|
181
|
+
/** Node of Astro doctype */
|
|
182
|
+
interface AstroDoctype extends BaseNode {
|
|
183
|
+
type: "AstroDoctype";
|
|
184
|
+
parent?: AstroFragment;
|
|
185
|
+
}
|
|
186
|
+
/** Node of Astro shorthand attribute */
|
|
187
|
+
interface AstroShorthandAttribute extends Omit<JSXAttribute, "type"> {
|
|
188
|
+
type: "AstroShorthandAttribute";
|
|
189
|
+
value: JSXExpressionContainer;
|
|
190
|
+
}
|
|
191
|
+
/** Node of Astro template-literal attribute */
|
|
192
|
+
interface AstroTemplateLiteralAttribute extends Omit<JSXAttribute, "type"> {
|
|
193
|
+
type: "AstroTemplateLiteralAttribute";
|
|
194
|
+
value: JSXExpressionContainer & {
|
|
195
|
+
expression: TSESTree.TemplateLiteral;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/** Node of Astro raw text */
|
|
199
|
+
interface AstroRawText extends Omit<JSXText, "type"> {
|
|
200
|
+
type: "AstroRawText";
|
|
201
|
+
parent?: JSXElement;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
declare type Comment = TSESTree.Comment;
|
|
205
|
+
declare type Token = TSESTree.Token;
|
|
206
|
+
declare type SourceLocation = TSESTree.SourceLocation;
|
|
207
|
+
declare type Range = TSESTree.Range;
|
|
208
|
+
declare type Position = TSESTree.Position;
|
|
209
|
+
|
|
210
|
+
type index_Comment = Comment;
|
|
211
|
+
type index_Token = Token;
|
|
212
|
+
type index_SourceLocation = SourceLocation;
|
|
213
|
+
type index_Range = Range;
|
|
214
|
+
type index_Position = Position;
|
|
215
|
+
type index_AstroNode = AstroNode;
|
|
216
|
+
type index_AstroChild = AstroChild;
|
|
217
|
+
type index_AstroParentNode = AstroParentNode;
|
|
218
|
+
type index_AstroProgram = AstroProgram;
|
|
219
|
+
type index_AstroFragment = AstroFragment;
|
|
220
|
+
type index_AstroHTMLComment = AstroHTMLComment;
|
|
221
|
+
type index_AstroDoctype = AstroDoctype;
|
|
222
|
+
type index_AstroShorthandAttribute = AstroShorthandAttribute;
|
|
223
|
+
type index_AstroTemplateLiteralAttribute = AstroTemplateLiteralAttribute;
|
|
224
|
+
type index_AstroRawText = AstroRawText;
|
|
225
|
+
type index_JSXNode = JSXNode;
|
|
226
|
+
type index_JSXChild = JSXChild;
|
|
227
|
+
type index_JSXParentNode = JSXParentNode;
|
|
228
|
+
type index_JSXElement = JSXElement;
|
|
229
|
+
type index_JSXFragment = JSXFragment;
|
|
230
|
+
type index_JSXOpeningElement = JSXOpeningElement;
|
|
231
|
+
type index_JSXClosingElement = JSXClosingElement;
|
|
232
|
+
type index_JSXClosingFragment = JSXClosingFragment;
|
|
233
|
+
type index_JSXOpeningFragment = JSXOpeningFragment;
|
|
234
|
+
type index_JSXAttribute = JSXAttribute;
|
|
235
|
+
type index_JSXSpreadAttribute = JSXSpreadAttribute;
|
|
236
|
+
type index_JSXTagNameExpression = JSXTagNameExpression;
|
|
237
|
+
type index_JSXIdentifier = JSXIdentifier;
|
|
238
|
+
type index_JSXMemberExpression = JSXMemberExpression;
|
|
239
|
+
type index_JSXNamespacedName = JSXNamespacedName;
|
|
240
|
+
type index_JSXExpression = JSXExpression;
|
|
241
|
+
type index_JSXExpressionContainer = JSXExpressionContainer;
|
|
242
|
+
type index_JSXSpreadChild = JSXSpreadChild;
|
|
243
|
+
type index_JSXEmptyExpression = JSXEmptyExpression;
|
|
244
|
+
type index_JSXText = JSXText;
|
|
245
|
+
declare namespace index {
|
|
246
|
+
export {
|
|
247
|
+
index_Comment as Comment,
|
|
248
|
+
index_Token as Token,
|
|
249
|
+
index_SourceLocation as SourceLocation,
|
|
250
|
+
index_Range as Range,
|
|
251
|
+
index_Position as Position,
|
|
252
|
+
index_AstroNode as AstroNode,
|
|
253
|
+
index_AstroChild as AstroChild,
|
|
254
|
+
index_AstroParentNode as AstroParentNode,
|
|
255
|
+
index_AstroProgram as AstroProgram,
|
|
256
|
+
index_AstroFragment as AstroFragment,
|
|
257
|
+
index_AstroHTMLComment as AstroHTMLComment,
|
|
258
|
+
index_AstroDoctype as AstroDoctype,
|
|
259
|
+
index_AstroShorthandAttribute as AstroShorthandAttribute,
|
|
260
|
+
index_AstroTemplateLiteralAttribute as AstroTemplateLiteralAttribute,
|
|
261
|
+
index_AstroRawText as AstroRawText,
|
|
262
|
+
index_JSXNode as JSXNode,
|
|
263
|
+
index_JSXChild as JSXChild,
|
|
264
|
+
index_JSXParentNode as JSXParentNode,
|
|
265
|
+
index_JSXElement as JSXElement,
|
|
266
|
+
index_JSXFragment as JSXFragment,
|
|
267
|
+
index_JSXOpeningElement as JSXOpeningElement,
|
|
268
|
+
index_JSXClosingElement as JSXClosingElement,
|
|
269
|
+
index_JSXClosingFragment as JSXClosingFragment,
|
|
270
|
+
index_JSXOpeningFragment as JSXOpeningFragment,
|
|
271
|
+
index_JSXAttribute as JSXAttribute,
|
|
272
|
+
index_JSXSpreadAttribute as JSXSpreadAttribute,
|
|
273
|
+
index_JSXTagNameExpression as JSXTagNameExpression,
|
|
274
|
+
index_JSXIdentifier as JSXIdentifier,
|
|
275
|
+
index_JSXMemberExpression as JSXMemberExpression,
|
|
276
|
+
index_JSXNamespacedName as JSXNamespacedName,
|
|
277
|
+
index_JSXExpression as JSXExpression,
|
|
278
|
+
index_JSXExpressionContainer as JSXExpressionContainer,
|
|
279
|
+
index_JSXSpreadChild as JSXSpreadChild,
|
|
280
|
+
index_JSXEmptyExpression as JSXEmptyExpression,
|
|
281
|
+
index_JSXText as JSXText,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
|
|
7
285
|
/**
|
|
8
286
|
* Parse source code
|
|
9
287
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
288
|
+
declare function parseForESLint$1(code: string, options?: any): {
|
|
289
|
+
ast: AstroProgram;
|
|
290
|
+
services: Record<string, any> & {
|
|
291
|
+
isAstro: true;
|
|
292
|
+
getAstroAst: () => ParseResult;
|
|
293
|
+
};
|
|
294
|
+
visitorKeys: {
|
|
295
|
+
[type: string]: string[];
|
|
296
|
+
};
|
|
297
|
+
scopeManager: ScopeManager;
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
interface ParseTemplateResult {
|
|
301
|
+
result: ParseResult;
|
|
302
|
+
getEndOffset: (node: Node) => number;
|
|
303
|
+
calcAttributeValueStartOffset: (node: AttributeNode) => number;
|
|
304
|
+
calcAttributeEndOffset: (node: AttributeNode) => number;
|
|
305
|
+
walk: (parent: ParentNode, enter: (n: Node | AttributeNode, parents: ParentNode[]) => void, leave?: (n: Node | AttributeNode, parents: ParentNode[]) => void) => void;
|
|
306
|
+
getLocFromIndex: (index: number) => {
|
|
307
|
+
line: number;
|
|
308
|
+
column: number;
|
|
309
|
+
};
|
|
310
|
+
getIndexFromLoc: (loc: {
|
|
311
|
+
line: number;
|
|
312
|
+
column: number;
|
|
313
|
+
}) => number;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Parse the astro component template.
|
|
317
|
+
*/
|
|
318
|
+
declare function parseTemplate(code: string): ParseTemplateResult;
|
|
319
|
+
|
|
320
|
+
interface Visitor<N> {
|
|
321
|
+
visitorKeys?: VisitorKeys$1;
|
|
322
|
+
enterNode(node: N, parent: N | null): void;
|
|
323
|
+
leaveNode(node: N, parent: N | null): void;
|
|
324
|
+
}
|
|
325
|
+
declare function traverseNodes(node: AstroNode, visitor: Visitor<AstroNode | TSESTree.Node>): void;
|
|
326
|
+
declare function traverseNodes(node: TSESTree.Node, visitor: Visitor<TSESTree.Node>): void;
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Astro parse errors.
|
|
330
|
+
*/
|
|
331
|
+
declare class ParseError extends SyntaxError {
|
|
332
|
+
index: number;
|
|
333
|
+
lineNumber: number;
|
|
334
|
+
column: number;
|
|
335
|
+
originalAST: any;
|
|
336
|
+
/**
|
|
337
|
+
* Initialize this ParseError instance.
|
|
338
|
+
*/
|
|
339
|
+
constructor(message: string, offset: number, ctx: Context);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Parse source code
|
|
344
|
+
*/
|
|
345
|
+
declare function parseForESLint(code: string, options?: any): ReturnType<typeof parseForESLint$1>;
|
|
346
|
+
declare const VisitorKeys: eslint.SourceCode.VisitorKeys;
|
|
347
|
+
|
|
348
|
+
export { index as AST, ParseError, ParseTemplateResult, VisitorKeys, parseForESLint, parseTemplate, traverseNodes };
|