hermes-parser 0.4.4 → 0.5.0

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.
@@ -4,23 +4,82 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * @flow
7
+ * @flow strict-local
8
8
  * @format
9
9
  */
10
10
 
11
11
  'use strict';
12
12
 
13
- declare type Options = {
14
- allowReturnOutsideFunction?: boolean,
15
- babel?: boolean,
16
- flow?: 'all' | 'detect',
17
- sourceFilename?: string,
18
- sourceType?: 'module' | 'script' | 'unambiguous',
19
- tokens?: boolean,
20
- };
13
+ import type {Program as ESTreeProgram} from 'hermes-estree';
14
+ import type {ParserOptions} from './ParserOptions';
21
15
 
22
- declare type Program = Object;
16
+ import * as HermesParser from './HermesParser';
17
+ import HermesToBabelAdapter from './HermesToBabelAdapter';
18
+ import HermesToESTreeAdapter from './HermesToESTreeAdapter';
23
19
 
24
- declare module.exports: {
25
- parse(code: string, opts: Options): Program,
20
+ const DEFAULTS = {
21
+ flow: 'detect',
26
22
  };
23
+
24
+ function getOptions(options?: ParserOptions = {...DEFAULTS}) {
25
+ // Default to detecting whether to parse Flow syntax by the presence
26
+ // of an @flow pragma.
27
+ if (options.flow == null) {
28
+ options.flow = DEFAULTS.flow;
29
+ } else if (options.flow != 'all' && options.flow != 'detect') {
30
+ throw new Error('flow option must be "all" or "detect"');
31
+ }
32
+
33
+ if (options.sourceType === 'unambiguous') {
34
+ // Clear source type so that it will be detected from the contents of the file
35
+ delete options.sourceType;
36
+ } else if (
37
+ options.sourceType != null &&
38
+ options.sourceType !== 'script' &&
39
+ options.sourceType !== 'module'
40
+ ) {
41
+ throw new Error(
42
+ 'sourceType option must be "script", "module", or "unambiguous" if set',
43
+ );
44
+ }
45
+
46
+ options.tokens = options.tokens === true;
47
+ options.allowReturnOutsideFunction =
48
+ options.allowReturnOutsideFunction === true;
49
+
50
+ return options;
51
+ }
52
+
53
+ function getAdapter(options: ParserOptions, code: string) {
54
+ return options.babel === true
55
+ ? new HermesToBabelAdapter(options)
56
+ : new HermesToESTreeAdapter(options, code);
57
+ }
58
+
59
+ // $FlowExpectedError[unclear-type]
60
+ type BabelProgram = Object;
61
+ declare function parse(
62
+ code: string,
63
+ opts: {...ParserOptions, babel: true},
64
+ ): BabelProgram;
65
+ // eslint-disable-next-line no-redeclare
66
+ declare function parse(
67
+ code: string,
68
+ opts?:
69
+ | {...ParserOptions, babel?: false | void}
70
+ | {...ParserOptions, babel: false},
71
+ ): ESTreeProgram;
72
+
73
+ // eslint-disable-next-line no-redeclare
74
+ export function parse(
75
+ code: string,
76
+ opts?: ParserOptions,
77
+ ): BabelProgram | ESTreeProgram {
78
+ const options = getOptions(opts);
79
+ const ast = HermesParser.parse(code, options);
80
+ const adapter = getAdapter(options, code);
81
+
82
+ return adapter.transform(ast);
83
+ }
84
+
85
+ export type {ParserOptions} from './ParserOptions';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hermes-parser",
3
- "version": "0.4.4",
3
+ "version": "0.5.0",
4
4
  "description": "A JavaScript parser built from the Hermes engine",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",
@@ -8,6 +8,9 @@
8
8
  "type": "git",
9
9
  "url": "git@github.com:facebook/hermes.git"
10
10
  },
11
+ "dependencies": {
12
+ "hermes-estree": "0.5.0"
13
+ },
11
14
  "files": [
12
15
  "dist"
13
16
  ]
@@ -1,579 +0,0 @@
1
- /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- * @format
8
- */
9
- 'use strict';
10
-
11
- var HERMES_AST_VISITOR_KEYS = {};
12
- var NODE_CHILD = 'Node';
13
- var NODE_LIST_CHILD = 'NodeList';
14
- HERMES_AST_VISITOR_KEYS['Empty'] = {};
15
- HERMES_AST_VISITOR_KEYS['Metadata'] = {};
16
- HERMES_AST_VISITOR_KEYS['Program'] = {
17
- body: NODE_LIST_CHILD
18
- };
19
- HERMES_AST_VISITOR_KEYS['FunctionExpression'] = {
20
- id: NODE_CHILD,
21
- params: NODE_LIST_CHILD,
22
- body: NODE_CHILD,
23
- typeParameters: NODE_CHILD,
24
- returnType: NODE_CHILD,
25
- predicate: NODE_CHILD
26
- };
27
- HERMES_AST_VISITOR_KEYS['ArrowFunctionExpression'] = {
28
- id: NODE_CHILD,
29
- params: NODE_LIST_CHILD,
30
- body: NODE_CHILD,
31
- typeParameters: NODE_CHILD,
32
- returnType: NODE_CHILD,
33
- predicate: NODE_CHILD
34
- };
35
- HERMES_AST_VISITOR_KEYS['FunctionDeclaration'] = {
36
- id: NODE_CHILD,
37
- params: NODE_LIST_CHILD,
38
- body: NODE_CHILD,
39
- typeParameters: NODE_CHILD,
40
- returnType: NODE_CHILD,
41
- predicate: NODE_CHILD
42
- };
43
- HERMES_AST_VISITOR_KEYS['WhileStatement'] = {
44
- body: NODE_CHILD,
45
- test: NODE_CHILD
46
- };
47
- HERMES_AST_VISITOR_KEYS['DoWhileStatement'] = {
48
- body: NODE_CHILD,
49
- test: NODE_CHILD
50
- };
51
- HERMES_AST_VISITOR_KEYS['ForInStatement'] = {
52
- left: NODE_CHILD,
53
- right: NODE_CHILD,
54
- body: NODE_CHILD
55
- };
56
- HERMES_AST_VISITOR_KEYS['ForOfStatement'] = {
57
- left: NODE_CHILD,
58
- right: NODE_CHILD,
59
- body: NODE_CHILD
60
- };
61
- HERMES_AST_VISITOR_KEYS['ForStatement'] = {
62
- init: NODE_CHILD,
63
- test: NODE_CHILD,
64
- update: NODE_CHILD,
65
- body: NODE_CHILD
66
- };
67
- HERMES_AST_VISITOR_KEYS['DebuggerStatement'] = {};
68
- HERMES_AST_VISITOR_KEYS['EmptyStatement'] = {};
69
- HERMES_AST_VISITOR_KEYS['BlockStatement'] = {
70
- body: NODE_LIST_CHILD
71
- };
72
- HERMES_AST_VISITOR_KEYS['BreakStatement'] = {
73
- label: NODE_CHILD
74
- };
75
- HERMES_AST_VISITOR_KEYS['ContinueStatement'] = {
76
- label: NODE_CHILD
77
- };
78
- HERMES_AST_VISITOR_KEYS['ThrowStatement'] = {
79
- argument: NODE_CHILD
80
- };
81
- HERMES_AST_VISITOR_KEYS['ReturnStatement'] = {
82
- argument: NODE_CHILD
83
- };
84
- HERMES_AST_VISITOR_KEYS['WithStatement'] = {
85
- object: NODE_CHILD,
86
- body: NODE_CHILD
87
- };
88
- HERMES_AST_VISITOR_KEYS['SwitchStatement'] = {
89
- discriminant: NODE_CHILD,
90
- cases: NODE_LIST_CHILD
91
- };
92
- HERMES_AST_VISITOR_KEYS['LabeledStatement'] = {
93
- label: NODE_CHILD,
94
- body: NODE_CHILD
95
- };
96
- HERMES_AST_VISITOR_KEYS['ExpressionStatement'] = {
97
- expression: NODE_CHILD
98
- };
99
- HERMES_AST_VISITOR_KEYS['TryStatement'] = {
100
- block: NODE_CHILD,
101
- handler: NODE_CHILD,
102
- finalizer: NODE_CHILD
103
- };
104
- HERMES_AST_VISITOR_KEYS['IfStatement'] = {
105
- test: NODE_CHILD,
106
- consequent: NODE_CHILD,
107
- alternate: NODE_CHILD
108
- };
109
- HERMES_AST_VISITOR_KEYS['NullLiteral'] = {};
110
- HERMES_AST_VISITOR_KEYS['BooleanLiteral'] = {};
111
- HERMES_AST_VISITOR_KEYS['StringLiteral'] = {};
112
- HERMES_AST_VISITOR_KEYS['NumericLiteral'] = {};
113
- HERMES_AST_VISITOR_KEYS['RegExpLiteral'] = {};
114
- HERMES_AST_VISITOR_KEYS['ThisExpression'] = {};
115
- HERMES_AST_VISITOR_KEYS['Super'] = {};
116
- HERMES_AST_VISITOR_KEYS['SequenceExpression'] = {
117
- expressions: NODE_LIST_CHILD
118
- };
119
- HERMES_AST_VISITOR_KEYS['ObjectExpression'] = {
120
- properties: NODE_LIST_CHILD
121
- };
122
- HERMES_AST_VISITOR_KEYS['ArrayExpression'] = {
123
- elements: NODE_LIST_CHILD
124
- };
125
- HERMES_AST_VISITOR_KEYS['SpreadElement'] = {
126
- argument: NODE_CHILD
127
- };
128
- HERMES_AST_VISITOR_KEYS['NewExpression'] = {
129
- callee: NODE_CHILD,
130
- typeArguments: NODE_CHILD,
131
- arguments: NODE_LIST_CHILD
132
- };
133
- HERMES_AST_VISITOR_KEYS['YieldExpression'] = {
134
- argument: NODE_CHILD
135
- };
136
- HERMES_AST_VISITOR_KEYS['AwaitExpression'] = {
137
- argument: NODE_CHILD
138
- };
139
- HERMES_AST_VISITOR_KEYS['ImportExpression'] = {
140
- source: NODE_CHILD
141
- };
142
- HERMES_AST_VISITOR_KEYS['CallExpression'] = {
143
- callee: NODE_CHILD,
144
- typeArguments: NODE_CHILD,
145
- arguments: NODE_LIST_CHILD
146
- };
147
- HERMES_AST_VISITOR_KEYS['OptionalCallExpression'] = {
148
- callee: NODE_CHILD,
149
- typeArguments: NODE_CHILD,
150
- arguments: NODE_LIST_CHILD
151
- };
152
- HERMES_AST_VISITOR_KEYS['AssignmentExpression'] = {
153
- left: NODE_CHILD,
154
- right: NODE_CHILD
155
- };
156
- HERMES_AST_VISITOR_KEYS['UnaryExpression'] = {
157
- argument: NODE_CHILD
158
- };
159
- HERMES_AST_VISITOR_KEYS['UpdateExpression'] = {
160
- argument: NODE_CHILD
161
- };
162
- HERMES_AST_VISITOR_KEYS['MemberExpression'] = {
163
- object: NODE_CHILD,
164
- property: NODE_CHILD
165
- };
166
- HERMES_AST_VISITOR_KEYS['OptionalMemberExpression'] = {
167
- object: NODE_CHILD,
168
- property: NODE_CHILD
169
- };
170
- HERMES_AST_VISITOR_KEYS['LogicalExpression'] = {
171
- left: NODE_CHILD,
172
- right: NODE_CHILD
173
- };
174
- HERMES_AST_VISITOR_KEYS['ConditionalExpression'] = {
175
- test: NODE_CHILD,
176
- alternate: NODE_CHILD,
177
- consequent: NODE_CHILD
178
- };
179
- HERMES_AST_VISITOR_KEYS['BinaryExpression'] = {
180
- left: NODE_CHILD,
181
- right: NODE_CHILD
182
- };
183
- HERMES_AST_VISITOR_KEYS['Directive'] = {
184
- value: NODE_CHILD
185
- };
186
- HERMES_AST_VISITOR_KEYS['DirectiveLiteral'] = {};
187
- HERMES_AST_VISITOR_KEYS['Identifier'] = {
188
- typeAnnotation: NODE_CHILD
189
- };
190
- HERMES_AST_VISITOR_KEYS['PrivateName'] = {
191
- id: NODE_CHILD
192
- };
193
- HERMES_AST_VISITOR_KEYS['MetaProperty'] = {
194
- meta: NODE_CHILD,
195
- property: NODE_CHILD
196
- };
197
- HERMES_AST_VISITOR_KEYS['SwitchCase'] = {
198
- test: NODE_CHILD,
199
- consequent: NODE_LIST_CHILD
200
- };
201
- HERMES_AST_VISITOR_KEYS['CatchClause'] = {
202
- param: NODE_CHILD,
203
- body: NODE_CHILD
204
- };
205
- HERMES_AST_VISITOR_KEYS['VariableDeclarator'] = {
206
- init: NODE_CHILD,
207
- id: NODE_CHILD
208
- };
209
- HERMES_AST_VISITOR_KEYS['VariableDeclaration'] = {
210
- declarations: NODE_LIST_CHILD
211
- };
212
- HERMES_AST_VISITOR_KEYS['TemplateLiteral'] = {
213
- quasis: NODE_LIST_CHILD,
214
- expressions: NODE_LIST_CHILD
215
- };
216
- HERMES_AST_VISITOR_KEYS['TaggedTemplateExpression'] = {
217
- tag: NODE_CHILD,
218
- quasi: NODE_CHILD
219
- };
220
- HERMES_AST_VISITOR_KEYS['TemplateElement'] = {};
221
- HERMES_AST_VISITOR_KEYS['Property'] = {
222
- key: NODE_CHILD,
223
- value: NODE_CHILD
224
- };
225
- HERMES_AST_VISITOR_KEYS['ClassDeclaration'] = {
226
- id: NODE_CHILD,
227
- typeParameters: NODE_CHILD,
228
- superClass: NODE_CHILD,
229
- superTypeParameters: NODE_CHILD,
230
- "implements": NODE_LIST_CHILD,
231
- decorators: NODE_LIST_CHILD,
232
- body: NODE_CHILD
233
- };
234
- HERMES_AST_VISITOR_KEYS['ClassExpression'] = {
235
- id: NODE_CHILD,
236
- typeParameters: NODE_CHILD,
237
- superClass: NODE_CHILD,
238
- superTypeParameters: NODE_CHILD,
239
- "implements": NODE_LIST_CHILD,
240
- decorators: NODE_LIST_CHILD,
241
- body: NODE_CHILD
242
- };
243
- HERMES_AST_VISITOR_KEYS['ClassBody'] = {
244
- body: NODE_LIST_CHILD
245
- };
246
- HERMES_AST_VISITOR_KEYS['ClassProperty'] = {
247
- key: NODE_CHILD,
248
- value: NODE_CHILD,
249
- variance: NODE_CHILD,
250
- typeAnnotation: NODE_CHILD
251
- };
252
- HERMES_AST_VISITOR_KEYS['ClassPrivateProperty'] = {
253
- key: NODE_CHILD,
254
- value: NODE_CHILD,
255
- variance: NODE_CHILD,
256
- typeAnnotation: NODE_CHILD
257
- };
258
- HERMES_AST_VISITOR_KEYS['MethodDefinition'] = {
259
- key: NODE_CHILD,
260
- value: NODE_CHILD
261
- };
262
- HERMES_AST_VISITOR_KEYS['ImportDeclaration'] = {
263
- specifiers: NODE_LIST_CHILD,
264
- source: NODE_CHILD
265
- };
266
- HERMES_AST_VISITOR_KEYS['ImportSpecifier'] = {
267
- imported: NODE_CHILD,
268
- local: NODE_CHILD
269
- };
270
- HERMES_AST_VISITOR_KEYS['ImportDefaultSpecifier'] = {
271
- local: NODE_CHILD
272
- };
273
- HERMES_AST_VISITOR_KEYS['ImportNamespaceSpecifier'] = {
274
- local: NODE_CHILD
275
- };
276
- HERMES_AST_VISITOR_KEYS['ExportNamedDeclaration'] = {
277
- declaration: NODE_CHILD,
278
- specifiers: NODE_LIST_CHILD,
279
- source: NODE_CHILD
280
- };
281
- HERMES_AST_VISITOR_KEYS['ExportSpecifier'] = {
282
- exported: NODE_CHILD,
283
- local: NODE_CHILD
284
- };
285
- HERMES_AST_VISITOR_KEYS['ExportNamespaceSpecifier'] = {
286
- exported: NODE_CHILD
287
- };
288
- HERMES_AST_VISITOR_KEYS['ExportDefaultDeclaration'] = {
289
- declaration: NODE_CHILD
290
- };
291
- HERMES_AST_VISITOR_KEYS['ExportAllDeclaration'] = {
292
- source: NODE_CHILD
293
- };
294
- HERMES_AST_VISITOR_KEYS['ObjectPattern'] = {
295
- properties: NODE_LIST_CHILD,
296
- typeAnnotation: NODE_CHILD
297
- };
298
- HERMES_AST_VISITOR_KEYS['ArrayPattern'] = {
299
- elements: NODE_LIST_CHILD,
300
- typeAnnotation: NODE_CHILD
301
- };
302
- HERMES_AST_VISITOR_KEYS['RestElement'] = {
303
- argument: NODE_CHILD
304
- };
305
- HERMES_AST_VISITOR_KEYS['AssignmentPattern'] = {
306
- left: NODE_CHILD,
307
- right: NODE_CHILD
308
- };
309
- HERMES_AST_VISITOR_KEYS['JSXIdentifier'] = {};
310
- HERMES_AST_VISITOR_KEYS['JSXMemberExpression'] = {
311
- object: NODE_CHILD,
312
- property: NODE_CHILD
313
- };
314
- HERMES_AST_VISITOR_KEYS['JSXNamespacedName'] = {
315
- namespace: NODE_CHILD,
316
- name: NODE_CHILD
317
- };
318
- HERMES_AST_VISITOR_KEYS['JSXEmptyExpression'] = {};
319
- HERMES_AST_VISITOR_KEYS['JSXExpressionContainer'] = {
320
- expression: NODE_CHILD
321
- };
322
- HERMES_AST_VISITOR_KEYS['JSXSpreadChild'] = {
323
- expression: NODE_CHILD
324
- };
325
- HERMES_AST_VISITOR_KEYS['JSXOpeningElement'] = {
326
- name: NODE_CHILD,
327
- attributes: NODE_LIST_CHILD
328
- };
329
- HERMES_AST_VISITOR_KEYS['JSXClosingElement'] = {
330
- name: NODE_CHILD
331
- };
332
- HERMES_AST_VISITOR_KEYS['JSXAttribute'] = {
333
- name: NODE_CHILD,
334
- value: NODE_CHILD
335
- };
336
- HERMES_AST_VISITOR_KEYS['JSXSpreadAttribute'] = {
337
- argument: NODE_CHILD
338
- };
339
- HERMES_AST_VISITOR_KEYS['JSXText'] = {};
340
- HERMES_AST_VISITOR_KEYS['JSXElement'] = {
341
- openingElement: NODE_CHILD,
342
- children: NODE_LIST_CHILD,
343
- closingElement: NODE_CHILD
344
- };
345
- HERMES_AST_VISITOR_KEYS['JSXFragment'] = {
346
- openingFragment: NODE_CHILD,
347
- children: NODE_LIST_CHILD,
348
- closingFragment: NODE_CHILD
349
- };
350
- HERMES_AST_VISITOR_KEYS['JSXOpeningFragment'] = {};
351
- HERMES_AST_VISITOR_KEYS['JSXClosingFragment'] = {};
352
- HERMES_AST_VISITOR_KEYS['ExistsTypeAnnotation'] = {};
353
- HERMES_AST_VISITOR_KEYS['EmptyTypeAnnotation'] = {};
354
- HERMES_AST_VISITOR_KEYS['StringTypeAnnotation'] = {};
355
- HERMES_AST_VISITOR_KEYS['NumberTypeAnnotation'] = {};
356
- HERMES_AST_VISITOR_KEYS['StringLiteralTypeAnnotation'] = {};
357
- HERMES_AST_VISITOR_KEYS['NumberLiteralTypeAnnotation'] = {};
358
- HERMES_AST_VISITOR_KEYS['BooleanTypeAnnotation'] = {};
359
- HERMES_AST_VISITOR_KEYS['BooleanLiteralTypeAnnotation'] = {};
360
- HERMES_AST_VISITOR_KEYS['NullLiteralTypeAnnotation'] = {};
361
- HERMES_AST_VISITOR_KEYS['SymbolTypeAnnotation'] = {};
362
- HERMES_AST_VISITOR_KEYS['AnyTypeAnnotation'] = {};
363
- HERMES_AST_VISITOR_KEYS['MixedTypeAnnotation'] = {};
364
- HERMES_AST_VISITOR_KEYS['VoidTypeAnnotation'] = {};
365
- HERMES_AST_VISITOR_KEYS['FunctionTypeAnnotation'] = {
366
- params: NODE_LIST_CHILD,
367
- "this": NODE_CHILD,
368
- returnType: NODE_CHILD,
369
- rest: NODE_CHILD,
370
- typeParameters: NODE_CHILD
371
- };
372
- HERMES_AST_VISITOR_KEYS['FunctionTypeParam'] = {
373
- name: NODE_CHILD,
374
- typeAnnotation: NODE_CHILD
375
- };
376
- HERMES_AST_VISITOR_KEYS['NullableTypeAnnotation'] = {
377
- typeAnnotation: NODE_CHILD
378
- };
379
- HERMES_AST_VISITOR_KEYS['QualifiedTypeIdentifier'] = {
380
- qualification: NODE_CHILD,
381
- id: NODE_CHILD
382
- };
383
- HERMES_AST_VISITOR_KEYS['TypeofTypeAnnotation'] = {
384
- argument: NODE_CHILD
385
- };
386
- HERMES_AST_VISITOR_KEYS['TupleTypeAnnotation'] = {
387
- types: NODE_LIST_CHILD
388
- };
389
- HERMES_AST_VISITOR_KEYS['ArrayTypeAnnotation'] = {
390
- elementType: NODE_CHILD
391
- };
392
- HERMES_AST_VISITOR_KEYS['UnionTypeAnnotation'] = {
393
- types: NODE_LIST_CHILD
394
- };
395
- HERMES_AST_VISITOR_KEYS['IntersectionTypeAnnotation'] = {
396
- types: NODE_LIST_CHILD
397
- };
398
- HERMES_AST_VISITOR_KEYS['GenericTypeAnnotation'] = {
399
- id: NODE_CHILD,
400
- typeParameters: NODE_CHILD
401
- };
402
- HERMES_AST_VISITOR_KEYS['IndexedAccessType'] = {
403
- objectType: NODE_CHILD,
404
- indexType: NODE_CHILD
405
- };
406
- HERMES_AST_VISITOR_KEYS['InterfaceTypeAnnotation'] = {
407
- "extends": NODE_LIST_CHILD,
408
- body: NODE_CHILD
409
- };
410
- HERMES_AST_VISITOR_KEYS['TypeAlias'] = {
411
- id: NODE_CHILD,
412
- typeParameters: NODE_CHILD,
413
- right: NODE_CHILD
414
- };
415
- HERMES_AST_VISITOR_KEYS['OpaqueType'] = {
416
- id: NODE_CHILD,
417
- typeParameters: NODE_CHILD,
418
- impltype: NODE_CHILD,
419
- supertype: NODE_CHILD
420
- };
421
- HERMES_AST_VISITOR_KEYS['InterfaceDeclaration'] = {
422
- id: NODE_CHILD,
423
- typeParameters: NODE_CHILD,
424
- "extends": NODE_LIST_CHILD,
425
- body: NODE_CHILD
426
- };
427
- HERMES_AST_VISITOR_KEYS['DeclareTypeAlias'] = {
428
- id: NODE_CHILD,
429
- typeParameters: NODE_CHILD,
430
- right: NODE_CHILD
431
- };
432
- HERMES_AST_VISITOR_KEYS['DeclareOpaqueType'] = {
433
- id: NODE_CHILD,
434
- typeParameters: NODE_CHILD,
435
- impltype: NODE_CHILD,
436
- supertype: NODE_CHILD
437
- };
438
- HERMES_AST_VISITOR_KEYS['DeclareInterface'] = {
439
- id: NODE_CHILD,
440
- typeParameters: NODE_CHILD,
441
- "extends": NODE_LIST_CHILD,
442
- body: NODE_CHILD
443
- };
444
- HERMES_AST_VISITOR_KEYS['DeclareClass'] = {
445
- id: NODE_CHILD,
446
- typeParameters: NODE_CHILD,
447
- "extends": NODE_LIST_CHILD,
448
- "implements": NODE_LIST_CHILD,
449
- mixins: NODE_LIST_CHILD,
450
- body: NODE_CHILD
451
- };
452
- HERMES_AST_VISITOR_KEYS['DeclareFunction'] = {
453
- id: NODE_CHILD,
454
- predicate: NODE_CHILD
455
- };
456
- HERMES_AST_VISITOR_KEYS['DeclareVariable'] = {
457
- id: NODE_CHILD
458
- };
459
- HERMES_AST_VISITOR_KEYS['DeclareExportDeclaration'] = {
460
- declaration: NODE_CHILD,
461
- specifiers: NODE_LIST_CHILD,
462
- source: NODE_CHILD
463
- };
464
- HERMES_AST_VISITOR_KEYS['DeclareExportAllDeclaration'] = {
465
- source: NODE_CHILD
466
- };
467
- HERMES_AST_VISITOR_KEYS['DeclareModule'] = {
468
- id: NODE_CHILD,
469
- body: NODE_CHILD
470
- };
471
- HERMES_AST_VISITOR_KEYS['DeclareModuleExports'] = {
472
- typeAnnotation: NODE_CHILD
473
- };
474
- HERMES_AST_VISITOR_KEYS['InterfaceExtends'] = {
475
- id: NODE_CHILD,
476
- typeParameters: NODE_CHILD
477
- };
478
- HERMES_AST_VISITOR_KEYS['ClassImplements'] = {
479
- id: NODE_CHILD,
480
- typeParameters: NODE_CHILD
481
- };
482
- HERMES_AST_VISITOR_KEYS['TypeAnnotation'] = {
483
- typeAnnotation: NODE_CHILD
484
- };
485
- HERMES_AST_VISITOR_KEYS['ObjectTypeAnnotation'] = {
486
- properties: NODE_LIST_CHILD,
487
- indexers: NODE_LIST_CHILD,
488
- callProperties: NODE_LIST_CHILD,
489
- internalSlots: NODE_LIST_CHILD
490
- };
491
- HERMES_AST_VISITOR_KEYS['ObjectTypeProperty'] = {
492
- key: NODE_CHILD,
493
- value: NODE_CHILD,
494
- variance: NODE_CHILD
495
- };
496
- HERMES_AST_VISITOR_KEYS['ObjectTypeSpreadProperty'] = {
497
- argument: NODE_CHILD
498
- };
499
- HERMES_AST_VISITOR_KEYS['ObjectTypeInternalSlot'] = {
500
- id: NODE_CHILD,
501
- value: NODE_CHILD
502
- };
503
- HERMES_AST_VISITOR_KEYS['ObjectTypeCallProperty'] = {
504
- value: NODE_CHILD
505
- };
506
- HERMES_AST_VISITOR_KEYS['ObjectTypeIndexer'] = {
507
- id: NODE_CHILD,
508
- key: NODE_CHILD,
509
- value: NODE_CHILD,
510
- variance: NODE_CHILD
511
- };
512
- HERMES_AST_VISITOR_KEYS['Variance'] = {};
513
- HERMES_AST_VISITOR_KEYS['TypeParameterDeclaration'] = {
514
- params: NODE_LIST_CHILD
515
- };
516
- HERMES_AST_VISITOR_KEYS['TypeParameter'] = {
517
- bound: NODE_CHILD,
518
- variance: NODE_CHILD,
519
- "default": NODE_CHILD
520
- };
521
- HERMES_AST_VISITOR_KEYS['TypeParameterInstantiation'] = {
522
- params: NODE_LIST_CHILD
523
- };
524
- HERMES_AST_VISITOR_KEYS['TypeCastExpression'] = {
525
- expression: NODE_CHILD,
526
- typeAnnotation: NODE_CHILD
527
- };
528
- HERMES_AST_VISITOR_KEYS['InferredPredicate'] = {};
529
- HERMES_AST_VISITOR_KEYS['DeclaredPredicate'] = {
530
- value: NODE_CHILD
531
- };
532
- HERMES_AST_VISITOR_KEYS['EnumDeclaration'] = {
533
- id: NODE_CHILD,
534
- body: NODE_CHILD
535
- };
536
- HERMES_AST_VISITOR_KEYS['EnumStringBody'] = {
537
- members: NODE_LIST_CHILD
538
- };
539
- HERMES_AST_VISITOR_KEYS['EnumNumberBody'] = {
540
- members: NODE_LIST_CHILD
541
- };
542
- HERMES_AST_VISITOR_KEYS['EnumBooleanBody'] = {
543
- members: NODE_LIST_CHILD
544
- };
545
- HERMES_AST_VISITOR_KEYS['EnumSymbolBody'] = {
546
- members: NODE_LIST_CHILD
547
- };
548
- HERMES_AST_VISITOR_KEYS['EnumDefaultedMember'] = {
549
- id: NODE_CHILD
550
- };
551
- HERMES_AST_VISITOR_KEYS['EnumStringMember'] = {
552
- id: NODE_CHILD,
553
- init: NODE_CHILD
554
- };
555
- HERMES_AST_VISITOR_KEYS['EnumNumberMember'] = {
556
- id: NODE_CHILD,
557
- init: NODE_CHILD
558
- };
559
- HERMES_AST_VISITOR_KEYS['EnumBooleanMember'] = {
560
- id: NODE_CHILD,
561
- init: NODE_CHILD
562
- };
563
- HERMES_AST_VISITOR_KEYS['CoverEmptyArgs'] = {};
564
- HERMES_AST_VISITOR_KEYS['CoverTrailingComma'] = {};
565
- HERMES_AST_VISITOR_KEYS['CoverInitializer'] = {
566
- init: NODE_CHILD
567
- };
568
- HERMES_AST_VISITOR_KEYS['CoverRestElement'] = {
569
- rest: NODE_CHILD
570
- };
571
- HERMES_AST_VISITOR_KEYS['CoverTypedIdentifier'] = {
572
- left: NODE_CHILD,
573
- right: NODE_CHILD
574
- };
575
- module.exports = {
576
- HERMES_AST_VISITOR_KEYS: HERMES_AST_VISITOR_KEYS,
577
- NODE_CHILD: NODE_CHILD,
578
- NODE_LIST_CHILD: NODE_LIST_CHILD
579
- };