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
package/README.md CHANGED
@@ -9,3 +9,6 @@ The Hermes parser exposes a single `parse(code, [options])` function, where `cod
9
9
  - **sourceFilename**: `string`, defaults to `null`. The filename corresponding to the code that is to be parsed. If non-null, the filename will be added to all source locations in the output AST.
10
10
  - **sourceType**: `"module"`, `"script"`, or `"unambiguous"` (default). If `"unambiguous"`, source type will be automatically detected and set to `"module"` if any ES6 imports or exports are present in the code, otherwise source type will be set to `"script"`.
11
11
  - **tokens**: `boolean`, defaults to `false`. If `true`, add all tokens to a `tokens` property on the root node.
12
+ - **transformOptions**: `object`. Options to be supplied to relevant transforms.
13
+ - `TransformEnumSyntax`
14
+ - `getRuntime` (optional): `() => Expression` - The expression which should be a reference to the Flow Enums runtime. By default, is `require('flow-enums-runtime')`.
@@ -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
 
@@ -125,7 +125,7 @@ export default class HermesASTAdapter {
125
125
  }
126
126
 
127
127
  mapEmpty(_node: HermesNode): HermesNode {
128
- // $FlowExpectedError
128
+ // $FlowExpectedError[incompatible-type]
129
129
  return null;
130
130
  }
131
131
 
@@ -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
@@ -55,6 +55,7 @@ function initHermesParserWASM() {
55
55
  'number',
56
56
  'number',
57
57
  'number',
58
+ 'number',
58
59
  ]);
59
60
 
60
61
  hermesParseResult_free = HermesParserWASM.cwrap(
@@ -126,6 +127,7 @@ export function parse(source: string, options: ParserOptions): HermesNode {
126
127
  options.flow === 'detect',
127
128
  options.enableExperimentalComponentSyntax,
128
129
  options.enableExperimentalFlowMatchSyntax,
130
+ options.enableExperimentalFlowRecordSyntax,
129
131
  options.tokens,
130
132
  options.allowReturnOutsideFunction,
131
133
  );
@@ -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;
@@ -223,7 +223,6 @@ export default class HermesParserDeserializer {
223
223
  * objects that are filled after the AST has been deserialized.
224
224
  */
225
225
  addEmptyLoc(): HermesSourceLocation {
226
- // $FlowExpectedError
227
226
  const loc: HermesSourceLocation = {};
228
227
  this.locMap[this.next()] = loc;
229
228
  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];