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