hermes-parser 0.32.0 → 0.33.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.
Files changed (55) hide show
  1. package/README.md +3 -0
  2. package/dist/HermesASTAdapter.js +1 -1
  3. package/dist/HermesASTAdapter.js.flow +1 -1
  4. package/dist/HermesParser.js +2 -2
  5. package/dist/HermesParser.js.flow +2 -0
  6. package/dist/HermesParserDeserializer.js +0 -1
  7. package/dist/HermesParserDeserializer.js.flow +0 -1
  8. package/dist/HermesParserNodeDeserializers.js +109 -5
  9. package/dist/HermesParserWASM.js +1 -1
  10. package/dist/HermesParserWASM.js.flow +11 -1
  11. package/dist/ParserOptions.js +1 -1
  12. package/dist/ParserOptions.js.flow +10 -0
  13. package/dist/babel/TransformESTreeToBabel.js +79 -3
  14. package/dist/babel/TransformESTreeToBabel.js.flow +76 -2
  15. package/dist/estree/StripFlowTypes.js +1 -1
  16. package/dist/estree/StripFlowTypes.js.flow +1 -1
  17. package/dist/estree/{StripComponentSyntax.js → TransformComponentSyntax.js} +1 -1
  18. package/dist/estree/{StripComponentSyntax.js.flow → TransformComponentSyntax.js.flow} +1 -1
  19. package/dist/estree/TransformEnumSyntax.js +106 -0
  20. package/dist/estree/TransformEnumSyntax.js.flow +125 -0
  21. package/dist/estree/TransformMatchSyntax.js +124 -56
  22. package/dist/estree/TransformMatchSyntax.js.flow +124 -46
  23. package/dist/estree/TransformRecordSyntax.js +294 -0
  24. package/dist/estree/TransformRecordSyntax.js.flow +308 -0
  25. package/dist/generated/ESTreeVisitorKeys.js +16 -4
  26. package/dist/generated/ParserVisitorKeys.js +45 -4
  27. package/dist/index.js +13 -3
  28. package/dist/index.js.flow +13 -3
  29. package/dist/src/HermesASTAdapter.js +1 -1
  30. package/dist/src/HermesParser.js +2 -2
  31. package/dist/src/HermesParserDeserializer.js +0 -1
  32. package/dist/src/HermesParserNodeDeserializers.js +109 -5
  33. package/dist/src/ParserOptions.js +1 -1
  34. package/dist/src/babel/TransformESTreeToBabel.js +79 -3
  35. package/dist/src/estree/StripFlowTypes.js +1 -1
  36. package/dist/src/estree/{StripComponentSyntax.js → TransformComponentSyntax.js} +1 -1
  37. package/dist/src/estree/TransformEnumSyntax.js +106 -0
  38. package/dist/src/estree/TransformMatchSyntax.js +124 -56
  39. package/dist/src/estree/TransformRecordSyntax.js +294 -0
  40. package/dist/src/generated/ESTreeVisitorKeys.js +16 -4
  41. package/dist/src/generated/ParserVisitorKeys.js +45 -4
  42. package/dist/src/index.js +13 -3
  43. package/dist/src/transform/SimpleTransform.js +20 -4
  44. package/dist/src/transform/astNodeMutationHelpers.js +7 -2
  45. package/dist/src/utils/GenID.js +28 -23
  46. package/dist/src/utils/isReservedWord.js +62 -0
  47. package/dist/transform/SimpleTransform.js +20 -4
  48. package/dist/transform/SimpleTransform.js.flow +34 -8
  49. package/dist/transform/astNodeMutationHelpers.js +7 -2
  50. package/dist/transform/astNodeMutationHelpers.js.flow +10 -2
  51. package/dist/utils/GenID.js +28 -23
  52. package/dist/utils/GenID.js.flow +23 -22
  53. package/dist/utils/isReservedWord.js +62 -0
  54. package/dist/utils/isReservedWord.js.flow +57 -0
  55. package/package.json +2 -2
@@ -42,7 +42,6 @@ const HERMES_AST_VISITOR_KEYS = {
42
42
  elementType: 'Node'
43
43
  },
44
44
  ArrowFunctionExpression: {
45
- id: 'Node',
46
45
  params: 'NodeList',
47
46
  body: 'Node',
48
47
  typeParameters: 'Node',
@@ -102,7 +101,7 @@ const HERMES_AST_VISITOR_KEYS = {
102
101
  id: 'Node',
103
102
  typeParameters: 'Node',
104
103
  superClass: 'Node',
105
- superTypeParameters: 'Node',
104
+ superTypeArguments: 'Node',
106
105
  implements: 'NodeList',
107
106
  decorators: 'NodeList',
108
107
  body: 'Node'
@@ -111,7 +110,7 @@ const HERMES_AST_VISITOR_KEYS = {
111
110
  id: 'Node',
112
111
  typeParameters: 'Node',
113
112
  superClass: 'Node',
114
- superTypeParameters: 'Node',
113
+ superTypeArguments: 'Node',
115
114
  implements: 'NodeList',
116
115
  decorators: 'NodeList',
117
116
  body: 'Node'
@@ -484,6 +483,14 @@ const HERMES_AST_VISITOR_KEYS = {
484
483
  MatchIdentifierPattern: {
485
484
  id: 'Node'
486
485
  },
486
+ MatchInstanceObjectPattern: {
487
+ properties: 'NodeList',
488
+ rest: 'Node'
489
+ },
490
+ MatchInstancePattern: {
491
+ targetConstructor: 'Node',
492
+ properties: 'Node'
493
+ },
487
494
  MatchLiteralPattern: {
488
495
  literal: 'Node'
489
496
  },
@@ -531,6 +538,7 @@ const HERMES_AST_VISITOR_KEYS = {
531
538
  value: 'Node'
532
539
  },
533
540
  MixedTypeAnnotation: {},
541
+ NeverTypeAnnotation: {},
534
542
  NewExpression: {
535
543
  callee: 'Node',
536
544
  typeArguments: 'Node',
@@ -618,6 +626,37 @@ const HERMES_AST_VISITOR_KEYS = {
618
626
  qualification: 'Node',
619
627
  id: 'Node'
620
628
  },
629
+ RecordDeclaration: {
630
+ id: 'Node',
631
+ typeParameters: 'Node',
632
+ implements: 'NodeList',
633
+ body: 'Node'
634
+ },
635
+ RecordDeclarationBody: {
636
+ elements: 'NodeList'
637
+ },
638
+ RecordDeclarationImplements: {
639
+ id: 'Node',
640
+ typeArguments: 'Node'
641
+ },
642
+ RecordDeclarationProperty: {
643
+ key: 'Node',
644
+ typeAnnotation: 'Node',
645
+ defaultValue: 'Node'
646
+ },
647
+ RecordDeclarationStaticProperty: {
648
+ key: 'Node',
649
+ typeAnnotation: 'Node',
650
+ value: 'Node'
651
+ },
652
+ RecordExpression: {
653
+ recordConstructor: 'Node',
654
+ typeArguments: 'Node',
655
+ properties: 'Node'
656
+ },
657
+ RecordExpressionProperties: {
658
+ properties: 'NodeList'
659
+ },
621
660
  RegExpLiteral: {},
622
661
  RestElement: {
623
662
  argument: 'Node'
@@ -667,7 +706,7 @@ const HERMES_AST_VISITOR_KEYS = {
667
706
  finalizer: 'Node'
668
707
  },
669
708
  TupleTypeAnnotation: {
670
- types: 'NodeList'
709
+ elementTypes: 'NodeList'
671
710
  },
672
711
  TupleTypeLabeledElement: {
673
712
  label: 'Node',
@@ -715,9 +754,11 @@ const HERMES_AST_VISITOR_KEYS = {
715
754
  UnaryExpression: {
716
755
  argument: 'Node'
717
756
  },
757
+ UndefinedTypeAnnotation: {},
718
758
  UnionTypeAnnotation: {
719
759
  types: 'NodeList'
720
760
  },
761
+ UnknownTypeAnnotation: {},
721
762
  UpdateExpression: {
722
763
  argument: 'Node'
723
764
  },
package/dist/index.js CHANGED
@@ -31,10 +31,14 @@ var _ESTreeVisitorKeys = _interopRequireDefault(require("./generated/ESTreeVisit
31
31
 
32
32
  exports.FlowVisitorKeys = _ESTreeVisitorKeys.default;
33
33
 
34
- var StripComponentSyntax = _interopRequireWildcard(require("./estree/StripComponentSyntax"));
34
+ var TransformComponentSyntax = _interopRequireWildcard(require("./estree/TransformComponentSyntax"));
35
+
36
+ var TransformEnumSyntax = _interopRequireWildcard(require("./estree/TransformEnumSyntax"));
35
37
 
36
38
  var TransformMatchSyntax = _interopRequireWildcard(require("./estree/TransformMatchSyntax"));
37
39
 
40
+ var TransformRecordSyntax = _interopRequireWildcard(require("./estree/TransformRecordSyntax"));
41
+
38
42
  var StripFlowTypesForBabel = _interopRequireWildcard(require("./estree/StripFlowTypesForBabel"));
39
43
 
40
44
  var TransformESTreeToBabel = _interopRequireWildcard(require("./babel/TransformESTreeToBabel"));
@@ -124,6 +128,10 @@ function getOptions(options = { ...DEFAULTS
124
128
  options.enableExperimentalFlowMatchSyntax = true; // Enable by default
125
129
  }
126
130
 
131
+ if (options.enableExperimentalFlowRecordSyntax == null) {
132
+ options.enableExperimentalFlowRecordSyntax = true; // Enable by default
133
+ }
134
+
127
135
  options.tokens = options.tokens === true;
128
136
  options.allowReturnOutsideFunction = options.allowReturnOutsideFunction === true;
129
137
  return options;
@@ -140,13 +148,15 @@ function parse(code, opts) {
140
148
  return estreeAST;
141
149
  }
142
150
 
143
- const loweredESTreeAST = [TransformMatchSyntax.transformProgram, StripComponentSyntax.transformProgram, StripFlowTypesForBabel.transformProgram].reduce((ast, transform) => transform(ast, options), estreeAST);
151
+ const loweredESTreeAST = [TransformEnumSyntax.transformProgram, TransformMatchSyntax.transformProgram, TransformComponentSyntax.transformProgram, TransformRecordSyntax.transformProgram, StripFlowTypesForBabel.transformProgram].reduce((ast, transform) => transform(ast, options), estreeAST);
144
152
  return TransformESTreeToBabel.transformProgram(loweredESTreeAST, options);
145
153
  }
146
154
 
147
155
  const Transforms = {
156
+ transformEnumSyntax: TransformEnumSyntax.transformProgram,
148
157
  transformMatchSyntax: TransformMatchSyntax.transformProgram,
149
- stripComponentSyntax: StripComponentSyntax.transformProgram,
158
+ transformComponentSyntax: TransformComponentSyntax.transformProgram,
159
+ transformRecordSyntax: TransformRecordSyntax.transformProgram,
150
160
  stripFlowTypesForBabel: StripFlowTypesForBabel.transformProgram,
151
161
  stripFlowTypes: StripFlowTypes.transformProgram
152
162
  };
@@ -17,8 +17,10 @@ import type {BabelFile} from './babel/TransformESTreeToBabel';
17
17
  import * as HermesParser from './HermesParser';
18
18
  import HermesToESTreeAdapter from './HermesToESTreeAdapter';
19
19
  import FlowVisitorKeys from './generated/ESTreeVisitorKeys';
20
- import * as StripComponentSyntax from './estree/StripComponentSyntax';
20
+ import * as TransformComponentSyntax from './estree/TransformComponentSyntax';
21
+ import * as TransformEnumSyntax from './estree/TransformEnumSyntax';
21
22
  import * as TransformMatchSyntax from './estree/TransformMatchSyntax';
23
+ import * as TransformRecordSyntax from './estree/TransformRecordSyntax';
22
24
  import * as StripFlowTypesForBabel from './estree/StripFlowTypesForBabel';
23
25
  import * as TransformESTreeToBabel from './babel/TransformESTreeToBabel';
24
26
  import * as StripFlowTypes from './estree/StripFlowTypes';
@@ -57,6 +59,10 @@ function getOptions(options?: ParserOptions = {...DEFAULTS}) {
57
59
  options.enableExperimentalFlowMatchSyntax = true; // Enable by default
58
60
  }
59
61
 
62
+ if (options.enableExperimentalFlowRecordSyntax == null) {
63
+ options.enableExperimentalFlowRecordSyntax = true; // Enable by default
64
+ }
65
+
60
66
  options.tokens = options.tokens === true;
61
67
  options.allowReturnOutsideFunction =
62
68
  options.allowReturnOutsideFunction === true;
@@ -92,8 +98,10 @@ export function parse(
92
98
  }
93
99
 
94
100
  const loweredESTreeAST = [
101
+ TransformEnumSyntax.transformProgram,
95
102
  TransformMatchSyntax.transformProgram,
96
- StripComponentSyntax.transformProgram,
103
+ TransformComponentSyntax.transformProgram,
104
+ TransformRecordSyntax.transformProgram,
97
105
  StripFlowTypesForBabel.transformProgram,
98
106
  ].reduce((ast, transform) => transform(ast, options), estreeAST);
99
107
 
@@ -111,8 +119,10 @@ export * as astNodeMutationHelpers from './transform/astNodeMutationHelpers';
111
119
  export {default as mutateESTreeASTForPrettier} from './utils/mutateESTreeASTForPrettier';
112
120
 
113
121
  const Transforms = {
122
+ transformEnumSyntax: TransformEnumSyntax.transformProgram,
114
123
  transformMatchSyntax: TransformMatchSyntax.transformProgram,
115
- stripComponentSyntax: StripComponentSyntax.transformProgram,
124
+ transformComponentSyntax: TransformComponentSyntax.transformProgram,
125
+ transformRecordSyntax: TransformRecordSyntax.transformProgram,
116
126
  stripFlowTypesForBabel: StripFlowTypesForBabel.transformProgram,
117
127
  stripFlowTypes: StripFlowTypes.transformProgram,
118
128
  };
@@ -130,7 +130,7 @@ class HermesASTAdapter {
130
130
  }
131
131
 
132
132
  mapEmpty(_node) {
133
- // $FlowExpectedError
133
+ // $FlowExpectedError[incompatible-type]
134
134
  return null;
135
135
  }
136
136
 
@@ -51,7 +51,7 @@ function initHermesParserWASM() {
51
51
  }
52
52
 
53
53
  });
54
- hermesParse = HermesParserWASM.cwrap('hermesParse', 'number', ['number', 'number', 'number', 'number', 'number', 'number', 'number']);
54
+ hermesParse = HermesParserWASM.cwrap('hermesParse', 'number', ['number', 'number', 'number', 'number', 'number', 'number', 'number', 'number']);
55
55
  hermesParseResult_free = HermesParserWASM.cwrap('hermesParseResult_free', 'void', ['number']);
56
56
  hermesParseResult_getError = HermesParserWASM.cwrap('hermesParseResult_getError', 'string', ['number']);
57
57
  hermesParseResult_getErrorLine = HermesParserWASM.cwrap('hermesParseResult_getErrorLine', 'number', ['number']);
@@ -81,7 +81,7 @@ function parse(source, options) {
81
81
  try {
82
82
  // Copy source text onto WASM heap
83
83
  copyToHeap(sourceBuffer, sourceAddr);
84
- const parseResult = hermesParse(sourceAddr, sourceBuffer.length + 1, options.flow === 'detect', options.enableExperimentalComponentSyntax, options.enableExperimentalFlowMatchSyntax, options.tokens, options.allowReturnOutsideFunction);
84
+ const parseResult = hermesParse(sourceAddr, sourceBuffer.length + 1, options.flow === 'detect', options.enableExperimentalComponentSyntax, options.enableExperimentalFlowMatchSyntax, options.enableExperimentalFlowRecordSyntax, options.tokens, options.allowReturnOutsideFunction);
85
85
 
86
86
  try {
87
87
  // Extract and throw error from parse result if parsing failed
@@ -201,7 +201,6 @@ class HermesParserDeserializer {
201
201
 
202
202
 
203
203
  addEmptyLoc() {
204
- // $FlowExpectedError
205
204
  const loc = {};
206
205
  this.locMap[this.next()] = loc;
207
206
  return loc;
@@ -66,7 +66,6 @@ function deserializeArrowFunctionExpression() {
66
66
  return {
67
67
  type: 'ArrowFunctionExpression',
68
68
  loc: this.addEmptyLoc(),
69
- id: this.deserializeNode(),
70
69
  params: this.deserializeNodeList(),
71
70
  body: this.deserializeNode(),
72
71
  typeParameters: this.deserializeNode(),
@@ -694,7 +693,7 @@ function deserializeClassDeclaration() {
694
693
  id: this.deserializeNode(),
695
694
  typeParameters: this.deserializeNode(),
696
695
  superClass: this.deserializeNode(),
697
- superTypeParameters: this.deserializeNode(),
696
+ superTypeArguments: this.deserializeNode(),
698
697
  implements: this.deserializeNodeList(),
699
698
  decorators: this.deserializeNodeList(),
700
699
  body: this.deserializeNode()
@@ -708,7 +707,7 @@ function deserializeClassExpression() {
708
707
  id: this.deserializeNode(),
709
708
  typeParameters: this.deserializeNode(),
710
709
  superClass: this.deserializeNode(),
711
- superTypeParameters: this.deserializeNode(),
710
+ superTypeArguments: this.deserializeNode(),
712
711
  implements: this.deserializeNodeList(),
713
712
  decorators: this.deserializeNodeList(),
714
713
  body: this.deserializeNode()
@@ -1022,6 +1021,15 @@ function deserializeMatchMemberPattern() {
1022
1021
  };
1023
1022
  }
1024
1023
 
1024
+ function deserializeMatchInstancePattern() {
1025
+ return {
1026
+ type: 'MatchInstancePattern',
1027
+ loc: this.addEmptyLoc(),
1028
+ targetConstructor: this.deserializeNode(),
1029
+ properties: this.deserializeNode()
1030
+ };
1031
+ }
1032
+
1025
1033
  function deserializeMatchPatternLast() {
1026
1034
  throw new Error('MatchPattern' + ' should not appear in program buffer');
1027
1035
  }
@@ -1036,6 +1044,15 @@ function deserializeMatchObjectPatternProperty() {
1036
1044
  };
1037
1045
  }
1038
1046
 
1047
+ function deserializeMatchInstanceObjectPattern() {
1048
+ return {
1049
+ type: 'MatchInstanceObjectPattern',
1050
+ loc: this.addEmptyLoc(),
1051
+ properties: this.deserializeNodeList(),
1052
+ rest: this.deserializeNode()
1053
+ };
1054
+ }
1055
+
1039
1056
  function deserializeMatchRestPattern() {
1040
1057
  return {
1041
1058
  type: 'MatchRestPattern',
@@ -1305,6 +1322,27 @@ function deserializeVoidTypeAnnotation() {
1305
1322
  };
1306
1323
  }
1307
1324
 
1325
+ function deserializeNeverTypeAnnotation() {
1326
+ return {
1327
+ type: 'NeverTypeAnnotation',
1328
+ loc: this.addEmptyLoc()
1329
+ };
1330
+ }
1331
+
1332
+ function deserializeUnknownTypeAnnotation() {
1333
+ return {
1334
+ type: 'UnknownTypeAnnotation',
1335
+ loc: this.addEmptyLoc()
1336
+ };
1337
+ }
1338
+
1339
+ function deserializeUndefinedTypeAnnotation() {
1340
+ return {
1341
+ type: 'UndefinedTypeAnnotation',
1342
+ loc: this.addEmptyLoc()
1343
+ };
1344
+ }
1345
+
1308
1346
  function deserializeFunctionTypeAnnotation() {
1309
1347
  return {
1310
1348
  type: 'FunctionTypeAnnotation',
@@ -1415,7 +1453,7 @@ function deserializeTupleTypeAnnotation() {
1415
1453
  return {
1416
1454
  type: 'TupleTypeAnnotation',
1417
1455
  loc: this.addEmptyLoc(),
1418
- types: this.deserializeNodeList(),
1456
+ elementTypes: this.deserializeNodeList(),
1419
1457
  inexact: this.deserializeBoolean()
1420
1458
  };
1421
1459
  }
@@ -2000,6 +2038,72 @@ function deserializeComponentParameter() {
2000
2038
  };
2001
2039
  }
2002
2040
 
2041
+ function deserializeRecordDeclaration() {
2042
+ return {
2043
+ type: 'RecordDeclaration',
2044
+ loc: this.addEmptyLoc(),
2045
+ id: this.deserializeNode(),
2046
+ typeParameters: this.deserializeNode(),
2047
+ implements: this.deserializeNodeList(),
2048
+ body: this.deserializeNode()
2049
+ };
2050
+ }
2051
+
2052
+ function deserializeRecordDeclarationImplements() {
2053
+ return {
2054
+ type: 'RecordDeclarationImplements',
2055
+ loc: this.addEmptyLoc(),
2056
+ id: this.deserializeNode(),
2057
+ typeArguments: this.deserializeNode()
2058
+ };
2059
+ }
2060
+
2061
+ function deserializeRecordDeclarationBody() {
2062
+ return {
2063
+ type: 'RecordDeclarationBody',
2064
+ loc: this.addEmptyLoc(),
2065
+ elements: this.deserializeNodeList()
2066
+ };
2067
+ }
2068
+
2069
+ function deserializeRecordDeclarationProperty() {
2070
+ return {
2071
+ type: 'RecordDeclarationProperty',
2072
+ loc: this.addEmptyLoc(),
2073
+ key: this.deserializeNode(),
2074
+ typeAnnotation: this.deserializeNode(),
2075
+ defaultValue: this.deserializeNode()
2076
+ };
2077
+ }
2078
+
2079
+ function deserializeRecordDeclarationStaticProperty() {
2080
+ return {
2081
+ type: 'RecordDeclarationStaticProperty',
2082
+ loc: this.addEmptyLoc(),
2083
+ key: this.deserializeNode(),
2084
+ typeAnnotation: this.deserializeNode(),
2085
+ value: this.deserializeNode()
2086
+ };
2087
+ }
2088
+
2089
+ function deserializeRecordExpression() {
2090
+ return {
2091
+ type: 'RecordExpression',
2092
+ loc: this.addEmptyLoc(),
2093
+ recordConstructor: this.deserializeNode(),
2094
+ typeArguments: this.deserializeNode(),
2095
+ properties: this.deserializeNode()
2096
+ };
2097
+ }
2098
+
2099
+ function deserializeRecordExpressionProperties() {
2100
+ return {
2101
+ type: 'RecordExpressionProperties',
2102
+ loc: this.addEmptyLoc(),
2103
+ properties: this.deserializeNodeList()
2104
+ };
2105
+ }
2106
+
2003
2107
  function deserializeFlowLast() {
2004
2108
  throw new Error('Flow' + ' should not appear in program buffer');
2005
2109
  }
@@ -2474,4 +2578,4 @@ function deserializeImplicitCheckedCast() {
2474
2578
  };
2475
2579
  }
2476
2580
 
2477
- module.exports = [deserializeEmpty, deserializeMetadata, deserializeFunctionLikeFirst, deserializeProgram, deserializeFunctionExpression, deserializeArrowFunctionExpression, deserializeFunctionDeclaration, deserializeComponentDeclaration, deserializeHookDeclaration, deserializeFunctionLikeLast, deserializeStatementFirst, deserializeMatchStatement, deserializeLoopStatementFirst, deserializeWhileStatement, deserializeDoWhileStatement, deserializeForInStatement, deserializeForOfStatement, deserializeForStatement, deserializeLoopStatementLast, deserializeDebuggerStatement, deserializeEmptyStatement, deserializeBlockStatement, deserializeStaticBlock, deserializeBreakStatement, deserializeContinueStatement, deserializeThrowStatement, deserializeReturnStatement, deserializeWithStatement, deserializeSwitchStatement, deserializeLabeledStatement, deserializeExpressionStatement, deserializeTryStatement, deserializeIfStatement, deserializeStatementLast, deserializeNullLiteral, deserializeBooleanLiteral, deserializeStringLiteral, deserializeNumericLiteral, deserializeRegExpLiteral, deserializeBigIntLiteral, deserializeThisExpression, deserializeSuper, deserializeSequenceExpression, deserializeObjectExpression, deserializeArrayExpression, deserializeSpreadElement, deserializeNewExpression, deserializeYieldExpression, deserializeAwaitExpression, deserializeImportExpression, deserializeCallExpressionLikeFirst, deserializeCallExpression, deserializeOptionalCallExpression, deserializeCallExpressionLikeLast, deserializeAssignmentExpression, deserializeUnaryExpression, deserializeUpdateExpression, deserializeMemberExpressionLikeFirst, deserializeMemberExpression, deserializeOptionalMemberExpression, deserializeMemberExpressionLikeLast, deserializeLogicalExpression, deserializeConditionalExpression, deserializeBinaryExpression, deserializeDirective, deserializeDirectiveLiteral, deserializeIdentifier, deserializePrivateName, deserializeMetaProperty, deserializeSwitchCase, deserializeCatchClause, deserializeVariableDeclarator, deserializeVariableDeclaration, deserializeTemplateLiteral, deserializeTaggedTemplateExpression, deserializeTemplateElement, deserializeProperty, deserializeClassLikeFirst, deserializeClassDeclaration, deserializeClassExpression, deserializeClassLikeLast, deserializeClassBody, deserializeClassProperty, deserializeClassPrivateProperty, deserializeMethodDefinition, deserializeImportDeclaration, deserializeImportSpecifier, deserializeImportDefaultSpecifier, deserializeImportNamespaceSpecifier, deserializeImportAttribute, deserializeExportNamedDeclaration, deserializeExportSpecifier, deserializeExportNamespaceSpecifier, deserializeExportDefaultDeclaration, deserializeExportAllDeclaration, deserializePatternFirst, deserializeObjectPattern, deserializeArrayPattern, deserializeRestElement, deserializeAssignmentPattern, deserializePatternLast, deserializeMatchStatementCase, deserializeMatchExpression, deserializeMatchExpressionCase, deserializeMatchPatternFirst, deserializeMatchWildcardPattern, deserializeMatchLiteralPattern, deserializeMatchUnaryPattern, deserializeMatchIdentifierPattern, deserializeMatchBindingPattern, deserializeMatchObjectPattern, deserializeMatchArrayPattern, deserializeMatchOrPattern, deserializeMatchAsPattern, deserializeMatchMemberPattern, deserializeMatchPatternLast, deserializeMatchObjectPatternProperty, deserializeMatchRestPattern, deserializeJSXFirst, deserializeJSXIdentifier, deserializeJSXMemberExpression, deserializeJSXNamespacedName, deserializeJSXEmptyExpression, deserializeJSXExpressionContainer, deserializeJSXSpreadChild, deserializeJSXOpeningElement, deserializeJSXClosingElement, deserializeJSXAttribute, deserializeJSXSpreadAttribute, deserializeJSXStringLiteral, deserializeJSXText, deserializeJSXElement, deserializeJSXFragment, deserializeJSXOpeningFragment, deserializeJSXClosingFragment, deserializeJSXLast, deserializeFlowFirst, deserializeExistsTypeAnnotation, deserializeEmptyTypeAnnotation, deserializeStringTypeAnnotation, deserializeNumberTypeAnnotation, deserializeStringLiteralTypeAnnotation, deserializeNumberLiteralTypeAnnotation, deserializeBigIntLiteralTypeAnnotation, deserializeBooleanTypeAnnotation, deserializeBooleanLiteralTypeAnnotation, deserializeNullLiteralTypeAnnotation, deserializeSymbolTypeAnnotation, deserializeAnyTypeAnnotation, deserializeMixedTypeAnnotation, deserializeBigIntTypeAnnotation, deserializeVoidTypeAnnotation, deserializeFunctionTypeAnnotation, deserializeHookTypeAnnotation, deserializeFunctionTypeParam, deserializeComponentTypeAnnotation, deserializeComponentTypeParameter, deserializeNullableTypeAnnotation, deserializeQualifiedTypeIdentifier, deserializeTypeofTypeAnnotation, deserializeKeyofTypeAnnotation, deserializeTypeOperator, deserializeQualifiedTypeofIdentifier, deserializeTupleTypeAnnotation, deserializeTupleTypeSpreadElement, deserializeTupleTypeLabeledElement, deserializeArrayTypeAnnotation, deserializeInferTypeAnnotation, deserializeUnionTypeAnnotation, deserializeIntersectionTypeAnnotation, deserializeGenericTypeAnnotation, deserializeIndexedAccessType, deserializeOptionalIndexedAccessType, deserializeConditionalTypeAnnotation, deserializeTypePredicate, deserializeInterfaceTypeAnnotation, deserializeTypeAlias, deserializeOpaqueType, deserializeInterfaceDeclaration, deserializeDeclareTypeAlias, deserializeDeclareOpaqueType, deserializeDeclareInterface, deserializeDeclareClass, deserializeDeclareFunction, deserializeDeclareHook, deserializeDeclareComponent, deserializeDeclareVariable, deserializeDeclareEnum, deserializeDeclareExportDeclaration, deserializeDeclareExportAllDeclaration, deserializeDeclareModule, deserializeDeclareNamespace, deserializeDeclareModuleExports, deserializeInterfaceExtends, deserializeClassImplements, deserializeTypeAnnotation, deserializeObjectTypeAnnotation, deserializeObjectTypeProperty, deserializeObjectTypeSpreadProperty, deserializeObjectTypeInternalSlot, deserializeObjectTypeCallProperty, deserializeObjectTypeIndexer, deserializeObjectTypeMappedTypeProperty, deserializeVariance, deserializeTypeParameterDeclaration, deserializeTypeParameter, deserializeTypeParameterInstantiation, deserializeTypeCastExpression, deserializeAsExpression, deserializeAsConstExpression, deserializeInferredPredicate, deserializeDeclaredPredicate, deserializeEnumDeclaration, deserializeEnumStringBody, deserializeEnumNumberBody, deserializeEnumBigIntBody, deserializeEnumBooleanBody, deserializeEnumSymbolBody, deserializeEnumDefaultedMember, deserializeEnumStringMember, deserializeEnumNumberMember, deserializeEnumBigIntMember, deserializeEnumBooleanMember, deserializeComponentParameter, deserializeFlowLast, deserializeTSFirst, deserializeTSTypeAnnotation, deserializeTSAnyKeyword, deserializeTSNumberKeyword, deserializeTSBooleanKeyword, deserializeTSStringKeyword, deserializeTSSymbolKeyword, deserializeTSVoidKeyword, deserializeTSUndefinedKeyword, deserializeTSUnknownKeyword, deserializeTSNeverKeyword, deserializeTSBigIntKeyword, deserializeTSThisType, deserializeTSLiteralType, deserializeTSIndexedAccessType, deserializeTSArrayType, deserializeTSTypeReference, deserializeTSQualifiedName, deserializeTSFunctionType, deserializeTSConstructorType, deserializeTSTypePredicate, deserializeTSTupleType, deserializeTSTypeAssertion, deserializeTSAsExpression, deserializeTSParameterProperty, deserializeTSTypeAliasDeclaration, deserializeTSInterfaceDeclaration, deserializeTSInterfaceHeritage, deserializeTSInterfaceBody, deserializeTSEnumDeclaration, deserializeTSEnumMember, deserializeTSModuleDeclaration, deserializeTSModuleBlock, deserializeTSModuleMember, deserializeTSTypeParameterDeclaration, deserializeTSTypeParameter, deserializeTSTypeParameterInstantiation, deserializeTSUnionType, deserializeTSIntersectionType, deserializeTSTypeQuery, deserializeTSConditionalType, deserializeTSTypeLiteral, deserializeTSPropertySignature, deserializeTSMethodSignature, deserializeTSIndexSignature, deserializeTSCallSignatureDeclaration, deserializeTSModifiers, deserializeTSLast, deserializeCoverFirst, deserializeCoverEmptyArgs, deserializeCoverTrailingComma, deserializeCoverInitializer, deserializeCoverRestElement, deserializeCoverTypedIdentifier, deserializeCoverLast, deserializeSHBuiltin, deserializeImplicitCheckedCast];
2581
+ module.exports = [deserializeEmpty, deserializeMetadata, deserializeFunctionLikeFirst, deserializeProgram, deserializeFunctionExpression, deserializeArrowFunctionExpression, deserializeFunctionDeclaration, deserializeComponentDeclaration, deserializeHookDeclaration, deserializeFunctionLikeLast, deserializeStatementFirst, deserializeMatchStatement, deserializeLoopStatementFirst, deserializeWhileStatement, deserializeDoWhileStatement, deserializeForInStatement, deserializeForOfStatement, deserializeForStatement, deserializeLoopStatementLast, deserializeDebuggerStatement, deserializeEmptyStatement, deserializeBlockStatement, deserializeStaticBlock, deserializeBreakStatement, deserializeContinueStatement, deserializeThrowStatement, deserializeReturnStatement, deserializeWithStatement, deserializeSwitchStatement, deserializeLabeledStatement, deserializeExpressionStatement, deserializeTryStatement, deserializeIfStatement, deserializeStatementLast, deserializeNullLiteral, deserializeBooleanLiteral, deserializeStringLiteral, deserializeNumericLiteral, deserializeRegExpLiteral, deserializeBigIntLiteral, deserializeThisExpression, deserializeSuper, deserializeSequenceExpression, deserializeObjectExpression, deserializeArrayExpression, deserializeSpreadElement, deserializeNewExpression, deserializeYieldExpression, deserializeAwaitExpression, deserializeImportExpression, deserializeCallExpressionLikeFirst, deserializeCallExpression, deserializeOptionalCallExpression, deserializeCallExpressionLikeLast, deserializeAssignmentExpression, deserializeUnaryExpression, deserializeUpdateExpression, deserializeMemberExpressionLikeFirst, deserializeMemberExpression, deserializeOptionalMemberExpression, deserializeMemberExpressionLikeLast, deserializeLogicalExpression, deserializeConditionalExpression, deserializeBinaryExpression, deserializeDirective, deserializeDirectiveLiteral, deserializeIdentifier, deserializePrivateName, deserializeMetaProperty, deserializeSwitchCase, deserializeCatchClause, deserializeVariableDeclarator, deserializeVariableDeclaration, deserializeTemplateLiteral, deserializeTaggedTemplateExpression, deserializeTemplateElement, deserializeProperty, deserializeClassLikeFirst, deserializeClassDeclaration, deserializeClassExpression, deserializeClassLikeLast, deserializeClassBody, deserializeClassProperty, deserializeClassPrivateProperty, deserializeMethodDefinition, deserializeImportDeclaration, deserializeImportSpecifier, deserializeImportDefaultSpecifier, deserializeImportNamespaceSpecifier, deserializeImportAttribute, deserializeExportNamedDeclaration, deserializeExportSpecifier, deserializeExportNamespaceSpecifier, deserializeExportDefaultDeclaration, deserializeExportAllDeclaration, deserializePatternFirst, deserializeObjectPattern, deserializeArrayPattern, deserializeRestElement, deserializeAssignmentPattern, deserializePatternLast, deserializeMatchStatementCase, deserializeMatchExpression, deserializeMatchExpressionCase, deserializeMatchPatternFirst, deserializeMatchWildcardPattern, deserializeMatchLiteralPattern, deserializeMatchUnaryPattern, deserializeMatchIdentifierPattern, deserializeMatchBindingPattern, deserializeMatchObjectPattern, deserializeMatchArrayPattern, deserializeMatchOrPattern, deserializeMatchAsPattern, deserializeMatchMemberPattern, deserializeMatchInstancePattern, deserializeMatchPatternLast, deserializeMatchObjectPatternProperty, deserializeMatchInstanceObjectPattern, deserializeMatchRestPattern, deserializeJSXFirst, deserializeJSXIdentifier, deserializeJSXMemberExpression, deserializeJSXNamespacedName, deserializeJSXEmptyExpression, deserializeJSXExpressionContainer, deserializeJSXSpreadChild, deserializeJSXOpeningElement, deserializeJSXClosingElement, deserializeJSXAttribute, deserializeJSXSpreadAttribute, deserializeJSXStringLiteral, deserializeJSXText, deserializeJSXElement, deserializeJSXFragment, deserializeJSXOpeningFragment, deserializeJSXClosingFragment, deserializeJSXLast, deserializeFlowFirst, deserializeExistsTypeAnnotation, deserializeEmptyTypeAnnotation, deserializeStringTypeAnnotation, deserializeNumberTypeAnnotation, deserializeStringLiteralTypeAnnotation, deserializeNumberLiteralTypeAnnotation, deserializeBigIntLiteralTypeAnnotation, deserializeBooleanTypeAnnotation, deserializeBooleanLiteralTypeAnnotation, deserializeNullLiteralTypeAnnotation, deserializeSymbolTypeAnnotation, deserializeAnyTypeAnnotation, deserializeMixedTypeAnnotation, deserializeBigIntTypeAnnotation, deserializeVoidTypeAnnotation, deserializeNeverTypeAnnotation, deserializeUnknownTypeAnnotation, deserializeUndefinedTypeAnnotation, deserializeFunctionTypeAnnotation, deserializeHookTypeAnnotation, deserializeFunctionTypeParam, deserializeComponentTypeAnnotation, deserializeComponentTypeParameter, deserializeNullableTypeAnnotation, deserializeQualifiedTypeIdentifier, deserializeTypeofTypeAnnotation, deserializeKeyofTypeAnnotation, deserializeTypeOperator, deserializeQualifiedTypeofIdentifier, deserializeTupleTypeAnnotation, deserializeTupleTypeSpreadElement, deserializeTupleTypeLabeledElement, deserializeArrayTypeAnnotation, deserializeInferTypeAnnotation, deserializeUnionTypeAnnotation, deserializeIntersectionTypeAnnotation, deserializeGenericTypeAnnotation, deserializeIndexedAccessType, deserializeOptionalIndexedAccessType, deserializeConditionalTypeAnnotation, deserializeTypePredicate, deserializeInterfaceTypeAnnotation, deserializeTypeAlias, deserializeOpaqueType, deserializeInterfaceDeclaration, deserializeDeclareTypeAlias, deserializeDeclareOpaqueType, deserializeDeclareInterface, deserializeDeclareClass, deserializeDeclareFunction, deserializeDeclareHook, deserializeDeclareComponent, deserializeDeclareVariable, deserializeDeclareEnum, deserializeDeclareExportDeclaration, deserializeDeclareExportAllDeclaration, deserializeDeclareModule, deserializeDeclareNamespace, deserializeDeclareModuleExports, deserializeInterfaceExtends, deserializeClassImplements, deserializeTypeAnnotation, deserializeObjectTypeAnnotation, deserializeObjectTypeProperty, deserializeObjectTypeSpreadProperty, deserializeObjectTypeInternalSlot, deserializeObjectTypeCallProperty, deserializeObjectTypeIndexer, deserializeObjectTypeMappedTypeProperty, deserializeVariance, deserializeTypeParameterDeclaration, deserializeTypeParameter, deserializeTypeParameterInstantiation, deserializeTypeCastExpression, deserializeAsExpression, deserializeAsConstExpression, deserializeInferredPredicate, deserializeDeclaredPredicate, deserializeEnumDeclaration, deserializeEnumStringBody, deserializeEnumNumberBody, deserializeEnumBigIntBody, deserializeEnumBooleanBody, deserializeEnumSymbolBody, deserializeEnumDefaultedMember, deserializeEnumStringMember, deserializeEnumNumberMember, deserializeEnumBigIntMember, deserializeEnumBooleanMember, deserializeComponentParameter, deserializeRecordDeclaration, deserializeRecordDeclarationImplements, deserializeRecordDeclarationBody, deserializeRecordDeclarationProperty, deserializeRecordDeclarationStaticProperty, deserializeRecordExpression, deserializeRecordExpressionProperties, deserializeFlowLast, deserializeTSFirst, deserializeTSTypeAnnotation, deserializeTSAnyKeyword, deserializeTSNumberKeyword, deserializeTSBooleanKeyword, deserializeTSStringKeyword, deserializeTSSymbolKeyword, deserializeTSVoidKeyword, deserializeTSUndefinedKeyword, deserializeTSUnknownKeyword, deserializeTSNeverKeyword, deserializeTSBigIntKeyword, deserializeTSThisType, deserializeTSLiteralType, deserializeTSIndexedAccessType, deserializeTSArrayType, deserializeTSTypeReference, deserializeTSQualifiedName, deserializeTSFunctionType, deserializeTSConstructorType, deserializeTSTypePredicate, deserializeTSTupleType, deserializeTSTypeAssertion, deserializeTSAsExpression, deserializeTSParameterProperty, deserializeTSTypeAliasDeclaration, deserializeTSInterfaceDeclaration, deserializeTSInterfaceHeritage, deserializeTSInterfaceBody, deserializeTSEnumDeclaration, deserializeTSEnumMember, deserializeTSModuleDeclaration, deserializeTSModuleBlock, deserializeTSModuleMember, deserializeTSTypeParameterDeclaration, deserializeTSTypeParameter, deserializeTSTypeParameterInstantiation, deserializeTSUnionType, deserializeTSIntersectionType, deserializeTSTypeQuery, deserializeTSConditionalType, deserializeTSTypeLiteral, deserializeTSPropertySignature, deserializeTSMethodSignature, deserializeTSIndexSignature, deserializeTSCallSignatureDeclaration, deserializeTSModifiers, deserializeTSLast, deserializeCoverFirst, deserializeCoverEmptyArgs, deserializeCoverTrailingComma, deserializeCoverInitializer, deserializeCoverRestElement, deserializeCoverTypedIdentifier, deserializeCoverLast, deserializeSHBuiltin, deserializeImplicitCheckedCast];
@@ -14,5 +14,5 @@ exports.ParserOptionsKeys = void 0;
14
14
  *
15
15
  * @format
16
16
  */
17
- const ParserOptionsKeys = new Set(['allowReturnOutsideFunction', 'babel', 'flow', 'enableExperimentalComponentSyntax', 'enableExperimentalFlowMatchSyntax', 'reactRuntimeTarget', 'sourceFilename', 'sourceType', 'tokens']);
17
+ const ParserOptionsKeys = new Set(['allowReturnOutsideFunction', 'babel', 'flow', 'enableExperimentalComponentSyntax', 'enableExperimentalFlowMatchSyntax', 'enableExperimentalFlowRecordSyntax', 'reactRuntimeTarget', 'sourceFilename', 'sourceType', 'tokens', 'transformOptions']);
18
18
  exports.ParserOptionsKeys = ParserOptionsKeys;
@@ -30,6 +30,8 @@ const FlowESTreeAndBabelVisitorKeys = { ..._ESTreeVisitorKeys.default,
30
30
  BigIntLiteral: [],
31
31
  BlockStatement: ['directives', ..._ESTreeVisitorKeys.default.BlockStatement],
32
32
  BooleanLiteral: [],
33
+ ClassExpression: ['superTypeParameters', ..._ESTreeVisitorKeys.default.ClassExpression],
34
+ ClassDeclaration: ['superTypeParameters', ..._ESTreeVisitorKeys.default.ClassDeclaration],
33
35
  ClassMethod: ['key', 'params', 'body', 'returnType', 'typeParameters'],
34
36
  ClassPrivateMethod: ['key', 'params', 'body', 'returnType', 'typeParameters'],
35
37
  ClassProperty: ['key', 'value', 'typeAnnotation', 'variance'],
@@ -50,6 +52,7 @@ const FlowESTreeAndBabelVisitorKeys = { ..._ESTreeVisitorKeys.default,
50
52
  RegExpLiteral: [],
51
53
  RestElement: [..._ESTreeVisitorKeys.default.RestElement, 'typeAnnotation'],
52
54
  StringLiteral: [],
55
+ TupleTypeAnnotation: ['types'],
53
56
  CommentBlock: [],
54
57
  CommentLine: []
55
58
  };
@@ -480,6 +483,7 @@ function mapPropertyDefinition(node) {
480
483
  function mapTypeofTypeAnnotation(node) {
481
484
  // $FlowExpectedError[cannot-write]
482
485
  delete node.typeArguments; // $FlowFixMe[incompatible-type]
486
+ // $FlowFixMe[invalid-compare]
483
487
 
484
488
  if (node.argument.type !== 'GenericTypeAnnotation') {
485
489
  return nodeWith(node, {
@@ -656,6 +660,7 @@ function transformNode(node) {
656
660
 
657
661
  // Check if we have already processed this node.
658
662
  // $FlowFixMe[incompatible-type]
663
+ // $FlowFixMe[invalid-compare]
659
664
  if (((_node$parent = node.parent) == null ? void 0 : _node$parent.type) === 'File') {
660
665
  return node;
661
666
  }
@@ -819,10 +824,74 @@ function transformNode(node) {
819
824
  case 'TupleTypeAnnotation':
820
825
  {
821
826
  // $FlowExpectedError[cannot-write]
822
- delete node.inexact;
827
+ delete node.inexact; // $FlowExpectedError[prop-missing]
828
+
829
+ node.types = node.elementTypes; // $FlowExpectedError[cannot-write]
830
+
831
+ delete node.elementTypes;
823
832
  return node;
824
833
  }
825
834
 
835
+ case 'UnknownTypeAnnotation':
836
+ {
837
+ return {
838
+ type: 'GenericTypeAnnotation',
839
+ id: {
840
+ type: 'Identifier',
841
+ name: 'unknown',
842
+ optional: false,
843
+ typeAnnotation: null,
844
+ loc: node.loc,
845
+ range: node.range,
846
+ parent: EMPTY_PARENT
847
+ },
848
+ typeParameters: null,
849
+ loc: node.loc,
850
+ range: node.range,
851
+ parent: EMPTY_PARENT
852
+ };
853
+ }
854
+
855
+ case 'NeverTypeAnnotation':
856
+ {
857
+ return {
858
+ type: 'GenericTypeAnnotation',
859
+ id: {
860
+ type: 'Identifier',
861
+ name: 'never',
862
+ optional: false,
863
+ typeAnnotation: null,
864
+ loc: node.loc,
865
+ range: node.range,
866
+ parent: EMPTY_PARENT
867
+ },
868
+ typeParameters: null,
869
+ loc: node.loc,
870
+ range: node.range,
871
+ parent: EMPTY_PARENT
872
+ };
873
+ }
874
+
875
+ case 'UndefinedTypeAnnotation':
876
+ {
877
+ return {
878
+ type: 'GenericTypeAnnotation',
879
+ id: {
880
+ type: 'Identifier',
881
+ name: 'undefined',
882
+ optional: false,
883
+ typeAnnotation: null,
884
+ loc: node.loc,
885
+ range: node.range,
886
+ parent: EMPTY_PARENT
887
+ },
888
+ typeParameters: null,
889
+ loc: node.loc,
890
+ range: node.range,
891
+ parent: EMPTY_PARENT
892
+ };
893
+ }
894
+
826
895
  case 'JSXText':
827
896
  {
828
897
  // $FlowExpectedError[prop-missing]
@@ -985,9 +1054,15 @@ function transformNode(node) {
985
1054
  delete node.implements;
986
1055
  }
987
1056
 
988
- if (node.superTypeParameters == null) {
1057
+ if (node.superTypeArguments == null) {
1058
+ // $FlowExpectedError[cannot-write]
1059
+ delete node.superTypeArguments;
1060
+ } else {
989
1061
  // $FlowExpectedError[cannot-write]
990
- delete node.superTypeParameters;
1062
+ // $FlowExpectedError[prop-missing]
1063
+ node.superTypeParameters = node.superTypeArguments; // $FlowExpectedError[cannot-write]
1064
+
1065
+ delete node.superTypeArguments;
991
1066
  }
992
1067
 
993
1068
  if (node.typeParameters == null) {
@@ -1110,6 +1185,7 @@ function transformProgram(program, options) {
1110
1185
 
1111
1186
  visitorKeys: FlowESTreeAndBabelVisitorKeys
1112
1187
  }); // $FlowFixMe[incompatible-type]
1188
+ // $FlowFixMe[invalid-compare]
1113
1189
 
1114
1190
 
1115
1191
  if ((resultNode == null ? void 0 : resultNode.type) === 'File') {
@@ -117,7 +117,7 @@ function transformProgram(program, _options) {
117
117
  {
118
118
  return nodeWith(node, {
119
119
  typeParameters: null,
120
- superTypeParameters: null,
120
+ superTypeArguments: null,
121
121
  implements: [],
122
122
  decorators: []
123
123
  });
@@ -191,7 +191,7 @@ function mapComponentParameters(params, options) {
191
191
 
192
192
  if (propsProperties.length === 0) {
193
193
  if (refParam == null) {
194
- throw new Error('StripComponentSyntax: Invalid state, ref should always be set at this point if props are empty');
194
+ throw new Error('TransformComponentSyntax: Invalid state, ref should always be set at this point if props are empty');
195
195
  }
196
196
 
197
197
  const emptyParamsLoc = {