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