hermes-transform 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.
Files changed (74) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -0
  3. package/dist/detachedNode.js +128 -0
  4. package/dist/detachedNode.js.flow +113 -0
  5. package/dist/generated/TransformCloneSignatures.js.flow +19 -0
  6. package/dist/generated/TransformReplaceSignatures.js.flow +943 -0
  7. package/dist/generated/node-types.js +2071 -0
  8. package/dist/generated/node-types.js.flow +3149 -0
  9. package/dist/generated/special-case-node-types.js +178 -0
  10. package/dist/generated/special-case-node-types.js.flow +248 -0
  11. package/dist/getVisitorKeys.js +35 -0
  12. package/dist/getVisitorKeys.js.flow +31 -0
  13. package/dist/index.js +41 -0
  14. package/dist/index.js.flow +15 -0
  15. package/dist/transform/Errors.js +151 -0
  16. package/dist/transform/Errors.js.flow +17 -0
  17. package/dist/transform/MutationContext.js +94 -0
  18. package/dist/transform/MutationContext.js.flow +80 -0
  19. package/dist/transform/TransformContext.js +136 -0
  20. package/dist/transform/TransformContext.js.flow +378 -0
  21. package/dist/transform/comments/comments.js +140 -0
  22. package/dist/transform/comments/comments.js.flow +145 -0
  23. package/dist/transform/comments/prettier/README.md +6 -0
  24. package/dist/transform/comments/prettier/common/util.js +365 -0
  25. package/dist/transform/comments/prettier/common/util.js.flow +349 -0
  26. package/dist/transform/comments/prettier/language-js/comments.js +777 -0
  27. package/dist/transform/comments/prettier/language-js/comments.js.flow +950 -0
  28. package/dist/transform/comments/prettier/language-js/loc.js +41 -0
  29. package/dist/transform/comments/prettier/language-js/loc.js.flow +41 -0
  30. package/dist/transform/comments/prettier/language-js/printer-estree.js +31 -0
  31. package/dist/transform/comments/prettier/language-js/printer-estree.js.flow +37 -0
  32. package/dist/transform/comments/prettier/language-js/utils.js +131 -0
  33. package/dist/transform/comments/prettier/language-js/utils.js.flow +135 -0
  34. package/dist/transform/comments/prettier/main/comments.js +513 -0
  35. package/dist/transform/comments/prettier/main/comments.js.flow +436 -0
  36. package/dist/transform/comments/prettier/utils/get-last.js +15 -0
  37. package/dist/transform/comments/prettier/utils/get-last.js.flow +14 -0
  38. package/dist/transform/getTransformedAST.js +159 -0
  39. package/dist/transform/getTransformedAST.js.flow +128 -0
  40. package/dist/transform/mutations/AddLeadingComments.js +47 -0
  41. package/dist/transform/mutations/AddLeadingComments.js.flow +49 -0
  42. package/dist/transform/mutations/AddTrailingComments.js +47 -0
  43. package/dist/transform/mutations/AddTrailingComments.js.flow +49 -0
  44. package/dist/transform/mutations/CloneCommentsTo.js +46 -0
  45. package/dist/transform/mutations/CloneCommentsTo.js.flow +51 -0
  46. package/dist/transform/mutations/InsertStatement.js +92 -0
  47. package/dist/transform/mutations/InsertStatement.js.flow +113 -0
  48. package/dist/transform/mutations/RemoveComment.js +96 -0
  49. package/dist/transform/mutations/RemoveComment.js.flow +80 -0
  50. package/dist/transform/mutations/RemoveStatement.js +61 -0
  51. package/dist/transform/mutations/RemoveStatement.js.flow +68 -0
  52. package/dist/transform/mutations/ReplaceNode.js +96 -0
  53. package/dist/transform/mutations/ReplaceNode.js.flow +113 -0
  54. package/dist/transform/mutations/ReplaceStatementWithMany.js +81 -0
  55. package/dist/transform/mutations/ReplaceStatementWithMany.js.flow +102 -0
  56. package/dist/transform/mutations/utils/arrayUtils.js +41 -0
  57. package/dist/transform/mutations/utils/arrayUtils.js.flow +35 -0
  58. package/dist/transform/mutations/utils/getStatementParent.js +147 -0
  59. package/dist/transform/mutations/utils/getStatementParent.js.flow +143 -0
  60. package/dist/transform/mutations/utils/isValidModuleDeclarationParent.js +53 -0
  61. package/dist/transform/mutations/utils/isValidModuleDeclarationParent.js.flow +50 -0
  62. package/dist/transform/transform.js +69 -0
  63. package/dist/transform/transform.js.flow +60 -0
  64. package/dist/traverse/NodeEventGenerator.js +427 -0
  65. package/dist/traverse/NodeEventGenerator.js.flow +406 -0
  66. package/dist/traverse/SafeEmitter.js +70 -0
  67. package/dist/traverse/SafeEmitter.js.flow +46 -0
  68. package/dist/traverse/SimpleTraverser.js +149 -0
  69. package/dist/traverse/SimpleTraverser.js.flow +109 -0
  70. package/dist/traverse/esquery.js +37 -0
  71. package/dist/traverse/esquery.js.flow +173 -0
  72. package/dist/traverse/traverse.js +139 -0
  73. package/dist/traverse/traverse.js.flow +149 -0
  74. package/package.json +22 -0
@@ -0,0 +1,3149 @@
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-local
8
+ * @format
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ import type {
14
+ ESNode,
15
+ AnyTypeAnnotation as AnyTypeAnnotationType,
16
+ ArrayExpression as ArrayExpressionType,
17
+ ArrayPattern as ArrayPatternType,
18
+ ArrayTypeAnnotation as ArrayTypeAnnotationType,
19
+ AssignmentExpression as AssignmentExpressionType,
20
+ AssignmentPattern as AssignmentPatternType,
21
+ AwaitExpression as AwaitExpressionType,
22
+ BinaryExpression as BinaryExpressionType,
23
+ BlockStatement as BlockStatementType,
24
+ BooleanLiteralTypeAnnotation as BooleanLiteralTypeAnnotationType,
25
+ BooleanTypeAnnotation as BooleanTypeAnnotationType,
26
+ BreakStatement as BreakStatementType,
27
+ CallExpression as CallExpressionType,
28
+ CatchClause as CatchClauseType,
29
+ ClassBody as ClassBodyType,
30
+ ClassDeclaration as ClassDeclarationType,
31
+ ClassExpression as ClassExpressionType,
32
+ ClassImplements as ClassImplementsType,
33
+ ClassPrivateProperty as ClassPrivatePropertyType,
34
+ ClassProperty as ClassPropertyType,
35
+ ConditionalExpression as ConditionalExpressionType,
36
+ ContinueStatement as ContinueStatementType,
37
+ DebuggerStatement as DebuggerStatementType,
38
+ DeclareClass as DeclareClassType,
39
+ DeclaredPredicate as DeclaredPredicateType,
40
+ DeclareExportAllDeclaration as DeclareExportAllDeclarationType,
41
+ DeclareExportDeclaration as DeclareExportDeclarationType,
42
+ DeclareFunction as DeclareFunctionType,
43
+ DeclareInterface as DeclareInterfaceType,
44
+ DeclareModule as DeclareModuleType,
45
+ DeclareModuleExports as DeclareModuleExportsType,
46
+ DeclareOpaqueType as DeclareOpaqueTypeType,
47
+ DeclareTypeAlias as DeclareTypeAliasType,
48
+ DeclareVariable as DeclareVariableType,
49
+ DoWhileStatement as DoWhileStatementType,
50
+ EmptyStatement as EmptyStatementType,
51
+ EmptyTypeAnnotation as EmptyTypeAnnotationType,
52
+ EnumBooleanBody as EnumBooleanBodyType,
53
+ EnumBooleanMember as EnumBooleanMemberType,
54
+ EnumDeclaration as EnumDeclarationType,
55
+ EnumDefaultedMember as EnumDefaultedMemberType,
56
+ EnumNumberBody as EnumNumberBodyType,
57
+ EnumNumberMember as EnumNumberMemberType,
58
+ EnumStringBody as EnumStringBodyType,
59
+ EnumStringMember as EnumStringMemberType,
60
+ EnumSymbolBody as EnumSymbolBodyType,
61
+ ExistsTypeAnnotation as ExistsTypeAnnotationType,
62
+ ExportAllDeclaration as ExportAllDeclarationType,
63
+ ExportDefaultDeclaration as ExportDefaultDeclarationType,
64
+ ExportNamedDeclaration as ExportNamedDeclarationType,
65
+ ExportNamespaceSpecifier as ExportNamespaceSpecifierType,
66
+ ExportSpecifier as ExportSpecifierType,
67
+ ExpressionStatement as ExpressionStatementType,
68
+ ForInStatement as ForInStatementType,
69
+ ForOfStatement as ForOfStatementType,
70
+ ForStatement as ForStatementType,
71
+ FunctionDeclaration as FunctionDeclarationType,
72
+ FunctionExpression as FunctionExpressionType,
73
+ FunctionTypeAnnotation as FunctionTypeAnnotationType,
74
+ FunctionTypeParam as FunctionTypeParamType,
75
+ GenericTypeAnnotation as GenericTypeAnnotationType,
76
+ IfStatement as IfStatementType,
77
+ ImportAttribute as ImportAttributeType,
78
+ ImportDeclaration as ImportDeclarationType,
79
+ ImportDefaultSpecifier as ImportDefaultSpecifierType,
80
+ ImportExpression as ImportExpressionType,
81
+ ImportNamespaceSpecifier as ImportNamespaceSpecifierType,
82
+ ImportSpecifier as ImportSpecifierType,
83
+ IndexedAccessType as IndexedAccessTypeType,
84
+ InferredPredicate as InferredPredicateType,
85
+ InterfaceDeclaration as InterfaceDeclarationType,
86
+ InterfaceExtends as InterfaceExtendsType,
87
+ InterfaceTypeAnnotation as InterfaceTypeAnnotationType,
88
+ IntersectionTypeAnnotation as IntersectionTypeAnnotationType,
89
+ JSXAttribute as JSXAttributeType,
90
+ JSXClosingElement as JSXClosingElementType,
91
+ JSXClosingFragment as JSXClosingFragmentType,
92
+ JSXElement as JSXElementType,
93
+ JSXEmptyExpression as JSXEmptyExpressionType,
94
+ JSXExpressionContainer as JSXExpressionContainerType,
95
+ JSXFragment as JSXFragmentType,
96
+ JSXIdentifier as JSXIdentifierType,
97
+ JSXMemberExpression as JSXMemberExpressionType,
98
+ JSXNamespacedName as JSXNamespacedNameType,
99
+ JSXOpeningElement as JSXOpeningElementType,
100
+ JSXOpeningFragment as JSXOpeningFragmentType,
101
+ JSXSpreadAttribute as JSXSpreadAttributeType,
102
+ JSXSpreadChild as JSXSpreadChildType,
103
+ JSXText as JSXTextType,
104
+ LabeledStatement as LabeledStatementType,
105
+ LogicalExpression as LogicalExpressionType,
106
+ MemberExpression as MemberExpressionType,
107
+ MetaProperty as MetaPropertyType,
108
+ MethodDefinition as MethodDefinitionType,
109
+ MixedTypeAnnotation as MixedTypeAnnotationType,
110
+ NewExpression as NewExpressionType,
111
+ NullableTypeAnnotation as NullableTypeAnnotationType,
112
+ NullLiteralTypeAnnotation as NullLiteralTypeAnnotationType,
113
+ NumberLiteralTypeAnnotation as NumberLiteralTypeAnnotationType,
114
+ NumberTypeAnnotation as NumberTypeAnnotationType,
115
+ ObjectExpression as ObjectExpressionType,
116
+ ObjectPattern as ObjectPatternType,
117
+ ObjectTypeAnnotation as ObjectTypeAnnotationType,
118
+ ObjectTypeCallProperty as ObjectTypeCallPropertyType,
119
+ ObjectTypeIndexer as ObjectTypeIndexerType,
120
+ ObjectTypeInternalSlot as ObjectTypeInternalSlotType,
121
+ ObjectTypeProperty as ObjectTypePropertyType,
122
+ ObjectTypeSpreadProperty as ObjectTypeSpreadPropertyType,
123
+ OpaqueType as OpaqueTypeType,
124
+ OptionalCallExpression as OptionalCallExpressionType,
125
+ OptionalIndexedAccessType as OptionalIndexedAccessTypeType,
126
+ OptionalMemberExpression as OptionalMemberExpressionType,
127
+ PrivateName as PrivateNameType,
128
+ Property as PropertyType,
129
+ QualifiedTypeIdentifier as QualifiedTypeIdentifierType,
130
+ RestElement as RestElementType,
131
+ ReturnStatement as ReturnStatementType,
132
+ SequenceExpression as SequenceExpressionType,
133
+ SpreadElement as SpreadElementType,
134
+ StringLiteralTypeAnnotation as StringLiteralTypeAnnotationType,
135
+ StringTypeAnnotation as StringTypeAnnotationType,
136
+ Super as SuperType,
137
+ SwitchCase as SwitchCaseType,
138
+ SwitchStatement as SwitchStatementType,
139
+ SymbolTypeAnnotation as SymbolTypeAnnotationType,
140
+ TaggedTemplateExpression as TaggedTemplateExpressionType,
141
+ TemplateLiteral as TemplateLiteralType,
142
+ ThisExpression as ThisExpressionType,
143
+ ThisTypeAnnotation as ThisTypeAnnotationType,
144
+ ThrowStatement as ThrowStatementType,
145
+ TryStatement as TryStatementType,
146
+ TupleTypeAnnotation as TupleTypeAnnotationType,
147
+ TypeAlias as TypeAliasType,
148
+ TypeAnnotation as TypeAnnotationType,
149
+ TypeCastExpression as TypeCastExpressionType,
150
+ TypeofTypeAnnotation as TypeofTypeAnnotationType,
151
+ TypeParameter as TypeParameterType,
152
+ TypeParameterDeclaration as TypeParameterDeclarationType,
153
+ TypeParameterInstantiation as TypeParameterInstantiationType,
154
+ UnaryExpression as UnaryExpressionType,
155
+ UnionTypeAnnotation as UnionTypeAnnotationType,
156
+ UpdateExpression as UpdateExpressionType,
157
+ VariableDeclaration as VariableDeclarationType,
158
+ VariableDeclarator as VariableDeclaratorType,
159
+ Variance as VarianceType,
160
+ VoidTypeAnnotation as VoidTypeAnnotationType,
161
+ WhileStatement as WhileStatementType,
162
+ WithStatement as WithStatementType,
163
+ YieldExpression as YieldExpressionType,
164
+ } from 'hermes-estree';
165
+ import type {DetachedNode} from '../detachedNode';
166
+
167
+ import {
168
+ detachedProps,
169
+ setParentPointersInDirectChildren,
170
+ } from '../detachedNode';
171
+
172
+ export type AnyTypeAnnotationProps = {};
173
+
174
+ export type ArrayExpressionProps = {
175
+ +elements: $ReadOnlyArray<
176
+ DetachedNode<ArrayExpressionType['elements'][number]>,
177
+ >,
178
+ +trailingComma: ArrayExpressionType['trailingComma'],
179
+ };
180
+
181
+ export type ArrayPatternProps = {
182
+ +elements: $ReadOnlyArray<DetachedNode<ArrayPatternType['elements'][number]>>,
183
+ +typeAnnotation?: ?DetachedNode<ArrayPatternType['typeAnnotation']>,
184
+ };
185
+
186
+ export type ArrayTypeAnnotationProps = {
187
+ +elementType: DetachedNode<ArrayTypeAnnotationType['elementType']>,
188
+ };
189
+
190
+ export type AssignmentExpressionProps = {
191
+ +operator: AssignmentExpressionType['operator'],
192
+ +left: DetachedNode<AssignmentExpressionType['left']>,
193
+ +right: DetachedNode<AssignmentExpressionType['right']>,
194
+ };
195
+
196
+ export type AssignmentPatternProps = {
197
+ +left: DetachedNode<AssignmentPatternType['left']>,
198
+ +right: DetachedNode<AssignmentPatternType['right']>,
199
+ };
200
+
201
+ export type AwaitExpressionProps = {
202
+ +argument: DetachedNode<AwaitExpressionType['argument']>,
203
+ };
204
+
205
+ export type BinaryExpressionProps = {
206
+ +left: DetachedNode<BinaryExpressionType['left']>,
207
+ +right: DetachedNode<BinaryExpressionType['right']>,
208
+ +operator: BinaryExpressionType['operator'],
209
+ };
210
+
211
+ export type BlockStatementProps = {
212
+ +body: $ReadOnlyArray<DetachedNode<BlockStatementType['body'][number]>>,
213
+ };
214
+
215
+ export type BooleanLiteralTypeAnnotationProps = {
216
+ +value: BooleanLiteralTypeAnnotationType['value'],
217
+ +raw: BooleanLiteralTypeAnnotationType['raw'],
218
+ };
219
+
220
+ export type BooleanTypeAnnotationProps = {};
221
+
222
+ export type BreakStatementProps = {
223
+ +label?: ?DetachedNode<BreakStatementType['label']>,
224
+ };
225
+
226
+ export type CallExpressionProps = {
227
+ +callee: DetachedNode<CallExpressionType['callee']>,
228
+ +typeArguments?: ?DetachedNode<CallExpressionType['typeArguments']>,
229
+ +arguments: $ReadOnlyArray<
230
+ DetachedNode<CallExpressionType['arguments'][number]>,
231
+ >,
232
+ };
233
+
234
+ export type CatchClauseProps = {
235
+ +param?: ?DetachedNode<CatchClauseType['param']>,
236
+ +body: DetachedNode<CatchClauseType['body']>,
237
+ };
238
+
239
+ export type ClassBodyProps = {
240
+ +body: $ReadOnlyArray<DetachedNode<ClassBodyType['body'][number]>>,
241
+ };
242
+
243
+ export type ClassDeclarationProps = {
244
+ +id?: ?DetachedNode<ClassDeclarationType['id']>,
245
+ +typeParameters?: ?DetachedNode<ClassDeclarationType['typeParameters']>,
246
+ +superClass?: ?DetachedNode<ClassDeclarationType['superClass']>,
247
+ +superTypeParameters?: ?DetachedNode<
248
+ ClassDeclarationType['superTypeParameters'],
249
+ >,
250
+ +implements: $ReadOnlyArray<
251
+ DetachedNode<ClassDeclarationType['implements'][number]>,
252
+ >,
253
+ +decorators: $ReadOnlyArray<
254
+ DetachedNode<ClassDeclarationType['decorators'][number]>,
255
+ >,
256
+ +body: DetachedNode<ClassDeclarationType['body']>,
257
+ };
258
+
259
+ export type ClassExpressionProps = {
260
+ +id?: ?DetachedNode<ClassExpressionType['id']>,
261
+ +typeParameters?: ?DetachedNode<ClassExpressionType['typeParameters']>,
262
+ +superClass?: ?DetachedNode<ClassExpressionType['superClass']>,
263
+ +superTypeParameters?: ?DetachedNode<
264
+ ClassExpressionType['superTypeParameters'],
265
+ >,
266
+ +implements: $ReadOnlyArray<
267
+ DetachedNode<ClassExpressionType['implements'][number]>,
268
+ >,
269
+ +decorators: $ReadOnlyArray<
270
+ DetachedNode<ClassExpressionType['decorators'][number]>,
271
+ >,
272
+ +body: DetachedNode<ClassExpressionType['body']>,
273
+ };
274
+
275
+ export type ClassImplementsProps = {
276
+ +id: DetachedNode<ClassImplementsType['id']>,
277
+ +typeParameters?: ?DetachedNode<ClassImplementsType['typeParameters']>,
278
+ };
279
+
280
+ export type ClassPrivatePropertyProps = {
281
+ +key: DetachedNode<ClassPrivatePropertyType['key']>,
282
+ +value?: ?DetachedNode<ClassPrivatePropertyType['value']>,
283
+ +static: ClassPrivatePropertyType['static'],
284
+ +declare: ClassPrivatePropertyType['declare'],
285
+ +optional: ClassPrivatePropertyType['optional'],
286
+ +variance?: ?DetachedNode<ClassPrivatePropertyType['variance']>,
287
+ +typeAnnotation?: ?DetachedNode<ClassPrivatePropertyType['typeAnnotation']>,
288
+ };
289
+
290
+ export type ClassPropertyProps = {
291
+ +key: DetachedNode<ClassPropertyType['key']>,
292
+ +value?: ?DetachedNode<ClassPropertyType['value']>,
293
+ +computed: ClassPropertyType['computed'],
294
+ +static: ClassPropertyType['static'],
295
+ +declare: ClassPropertyType['declare'],
296
+ +optional: ClassPropertyType['optional'],
297
+ +variance?: ?DetachedNode<ClassPropertyType['variance']>,
298
+ +typeAnnotation?: ?DetachedNode<ClassPropertyType['typeAnnotation']>,
299
+ };
300
+
301
+ export type ConditionalExpressionProps = {
302
+ +test: DetachedNode<ConditionalExpressionType['test']>,
303
+ +alternate: DetachedNode<ConditionalExpressionType['alternate']>,
304
+ +consequent: DetachedNode<ConditionalExpressionType['consequent']>,
305
+ };
306
+
307
+ export type ContinueStatementProps = {
308
+ +label?: ?DetachedNode<ContinueStatementType['label']>,
309
+ };
310
+
311
+ export type DebuggerStatementProps = {};
312
+
313
+ export type DeclareClassProps = {
314
+ +id: DetachedNode<DeclareClassType['id']>,
315
+ +typeParameters?: ?DetachedNode<DeclareClassType['typeParameters']>,
316
+ +extends: $ReadOnlyArray<DetachedNode<DeclareClassType['extends'][number]>>,
317
+ +implements: $ReadOnlyArray<
318
+ DetachedNode<DeclareClassType['implements'][number]>,
319
+ >,
320
+ +mixins: $ReadOnlyArray<DetachedNode<DeclareClassType['mixins'][number]>>,
321
+ +body: DetachedNode<DeclareClassType['body']>,
322
+ };
323
+
324
+ export type DeclaredPredicateProps = {
325
+ +value: DetachedNode<DeclaredPredicateType['value']>,
326
+ };
327
+
328
+ export type DeclareExportAllDeclarationProps = {
329
+ +source: DetachedNode<DeclareExportAllDeclarationType['source']>,
330
+ };
331
+
332
+ export type DeclareExportDeclarationProps = {
333
+ +declaration?: ?DetachedNode<DeclareExportDeclarationType['declaration']>,
334
+ +specifiers: $ReadOnlyArray<
335
+ DetachedNode<DeclareExportDeclarationType['specifiers'][number]>,
336
+ >,
337
+ +source?: ?DetachedNode<DeclareExportDeclarationType['source']>,
338
+ +default: DeclareExportDeclarationType['default'],
339
+ };
340
+
341
+ export type DeclareFunctionProps = {
342
+ +id: DetachedNode<DeclareFunctionType['id']>,
343
+ +predicate?: ?DetachedNode<DeclareFunctionType['predicate']>,
344
+ };
345
+
346
+ export type DeclareInterfaceProps = {
347
+ +id: DetachedNode<DeclareInterfaceType['id']>,
348
+ +typeParameters?: ?DetachedNode<DeclareInterfaceType['typeParameters']>,
349
+ +extends: $ReadOnlyArray<
350
+ DetachedNode<DeclareInterfaceType['extends'][number]>,
351
+ >,
352
+ +body: DetachedNode<DeclareInterfaceType['body']>,
353
+ };
354
+
355
+ export type DeclareModuleProps = {
356
+ +id: DetachedNode<DeclareModuleType['id']>,
357
+ +body: DetachedNode<DeclareModuleType['body']>,
358
+ +kind: DeclareModuleType['kind'],
359
+ };
360
+
361
+ export type DeclareModuleExportsProps = {
362
+ +typeAnnotation: DetachedNode<DeclareModuleExportsType['typeAnnotation']>,
363
+ };
364
+
365
+ export type DeclareOpaqueTypeProps = {
366
+ +id: DetachedNode<DeclareOpaqueTypeType['id']>,
367
+ +typeParameters?: ?DetachedNode<DeclareOpaqueTypeType['typeParameters']>,
368
+ +impltype?: ?DetachedNode<DeclareOpaqueTypeType['impltype']>,
369
+ +supertype?: ?DetachedNode<DeclareOpaqueTypeType['supertype']>,
370
+ };
371
+
372
+ export type DeclareTypeAliasProps = {
373
+ +id: DetachedNode<DeclareTypeAliasType['id']>,
374
+ +typeParameters?: ?DetachedNode<DeclareTypeAliasType['typeParameters']>,
375
+ +right: DetachedNode<DeclareTypeAliasType['right']>,
376
+ };
377
+
378
+ export type DeclareVariableProps = {
379
+ +id: DetachedNode<DeclareVariableType['id']>,
380
+ };
381
+
382
+ export type DoWhileStatementProps = {
383
+ +body: DetachedNode<DoWhileStatementType['body']>,
384
+ +test: DetachedNode<DoWhileStatementType['test']>,
385
+ };
386
+
387
+ export type EmptyStatementProps = {};
388
+
389
+ export type EmptyTypeAnnotationProps = {};
390
+
391
+ export type EnumBooleanBodyProps = {
392
+ +members: $ReadOnlyArray<
393
+ DetachedNode<EnumBooleanBodyType['members'][number]>,
394
+ >,
395
+ +explicitType: EnumBooleanBodyType['explicitType'],
396
+ +hasUnknownMembers: EnumBooleanBodyType['hasUnknownMembers'],
397
+ };
398
+
399
+ export type EnumBooleanMemberProps = {
400
+ +id: DetachedNode<EnumBooleanMemberType['id']>,
401
+ +init: DetachedNode<EnumBooleanMemberType['init']>,
402
+ };
403
+
404
+ export type EnumDeclarationProps = {
405
+ +id: DetachedNode<EnumDeclarationType['id']>,
406
+ +body: DetachedNode<EnumDeclarationType['body']>,
407
+ };
408
+
409
+ export type EnumDefaultedMemberProps = {
410
+ +id: DetachedNode<EnumDefaultedMemberType['id']>,
411
+ };
412
+
413
+ export type EnumNumberBodyProps = {
414
+ +members: $ReadOnlyArray<DetachedNode<EnumNumberBodyType['members'][number]>>,
415
+ +explicitType: EnumNumberBodyType['explicitType'],
416
+ +hasUnknownMembers: EnumNumberBodyType['hasUnknownMembers'],
417
+ };
418
+
419
+ export type EnumNumberMemberProps = {
420
+ +id: DetachedNode<EnumNumberMemberType['id']>,
421
+ +init: DetachedNode<EnumNumberMemberType['init']>,
422
+ };
423
+
424
+ export type EnumStringBodyProps = {
425
+ +members: $ReadOnlyArray<DetachedNode<EnumStringBodyType['members'][number]>>,
426
+ +explicitType: EnumStringBodyType['explicitType'],
427
+ +hasUnknownMembers: EnumStringBodyType['hasUnknownMembers'],
428
+ };
429
+
430
+ export type EnumStringMemberProps = {
431
+ +id: DetachedNode<EnumStringMemberType['id']>,
432
+ +init: DetachedNode<EnumStringMemberType['init']>,
433
+ };
434
+
435
+ export type EnumSymbolBodyProps = {
436
+ +members: $ReadOnlyArray<DetachedNode<EnumSymbolBodyType['members'][number]>>,
437
+ +hasUnknownMembers: EnumSymbolBodyType['hasUnknownMembers'],
438
+ };
439
+
440
+ export type ExistsTypeAnnotationProps = {};
441
+
442
+ export type ExportAllDeclarationProps = {
443
+ +source: DetachedNode<ExportAllDeclarationType['source']>,
444
+ +exportKind: ExportAllDeclarationType['exportKind'],
445
+ };
446
+
447
+ export type ExportDefaultDeclarationProps = {
448
+ +declaration: DetachedNode<ExportDefaultDeclarationType['declaration']>,
449
+ };
450
+
451
+ export type ExportNamedDeclarationProps = {
452
+ +declaration?: ?DetachedNode<ExportNamedDeclarationType['declaration']>,
453
+ +specifiers: $ReadOnlyArray<
454
+ DetachedNode<ExportNamedDeclarationType['specifiers'][number]>,
455
+ >,
456
+ +source?: ?DetachedNode<ExportNamedDeclarationType['source']>,
457
+ +exportKind: ExportNamedDeclarationType['exportKind'],
458
+ };
459
+
460
+ export type ExportNamespaceSpecifierProps = {
461
+ +exported: DetachedNode<ExportNamespaceSpecifierType['exported']>,
462
+ };
463
+
464
+ export type ExportSpecifierProps = {
465
+ +exported: DetachedNode<ExportSpecifierType['exported']>,
466
+ +local: DetachedNode<ExportSpecifierType['local']>,
467
+ };
468
+
469
+ export type ExpressionStatementProps = {
470
+ +expression: DetachedNode<ExpressionStatementType['expression']>,
471
+ +directive?: ?ExpressionStatementType['directive'],
472
+ };
473
+
474
+ export type ForInStatementProps = {
475
+ +left: DetachedNode<ForInStatementType['left']>,
476
+ +right: DetachedNode<ForInStatementType['right']>,
477
+ +body: DetachedNode<ForInStatementType['body']>,
478
+ };
479
+
480
+ export type ForOfStatementProps = {
481
+ +left: DetachedNode<ForOfStatementType['left']>,
482
+ +right: DetachedNode<ForOfStatementType['right']>,
483
+ +body: DetachedNode<ForOfStatementType['body']>,
484
+ +await: ForOfStatementType['await'],
485
+ };
486
+
487
+ export type ForStatementProps = {
488
+ +init?: ?DetachedNode<ForStatementType['init']>,
489
+ +test?: ?DetachedNode<ForStatementType['test']>,
490
+ +update?: ?DetachedNode<ForStatementType['update']>,
491
+ +body: DetachedNode<ForStatementType['body']>,
492
+ };
493
+
494
+ export type FunctionDeclarationProps = {
495
+ +id?: ?DetachedNode<FunctionDeclarationType['id']>,
496
+ +params: $ReadOnlyArray<
497
+ DetachedNode<FunctionDeclarationType['params'][number]>,
498
+ >,
499
+ +body: DetachedNode<FunctionDeclarationType['body']>,
500
+ +typeParameters?: ?DetachedNode<FunctionDeclarationType['typeParameters']>,
501
+ +returnType?: ?DetachedNode<FunctionDeclarationType['returnType']>,
502
+ +predicate?: ?DetachedNode<FunctionDeclarationType['predicate']>,
503
+ +generator: FunctionDeclarationType['generator'],
504
+ +async: FunctionDeclarationType['async'],
505
+ };
506
+
507
+ export type FunctionExpressionProps = {
508
+ +id?: ?DetachedNode<FunctionExpressionType['id']>,
509
+ +params: $ReadOnlyArray<
510
+ DetachedNode<FunctionExpressionType['params'][number]>,
511
+ >,
512
+ +body: DetachedNode<FunctionExpressionType['body']>,
513
+ +typeParameters?: ?DetachedNode<FunctionExpressionType['typeParameters']>,
514
+ +returnType?: ?DetachedNode<FunctionExpressionType['returnType']>,
515
+ +predicate?: ?DetachedNode<FunctionExpressionType['predicate']>,
516
+ +generator: FunctionExpressionType['generator'],
517
+ +async: FunctionExpressionType['async'],
518
+ };
519
+
520
+ export type FunctionTypeAnnotationProps = {
521
+ +params: $ReadOnlyArray<
522
+ DetachedNode<FunctionTypeAnnotationType['params'][number]>,
523
+ >,
524
+ +this?: ?DetachedNode<FunctionTypeAnnotationType['this']>,
525
+ +returnType: DetachedNode<FunctionTypeAnnotationType['returnType']>,
526
+ +rest?: ?DetachedNode<FunctionTypeAnnotationType['rest']>,
527
+ +typeParameters?: ?DetachedNode<FunctionTypeAnnotationType['typeParameters']>,
528
+ };
529
+
530
+ export type FunctionTypeParamProps = {
531
+ +name?: ?DetachedNode<FunctionTypeParamType['name']>,
532
+ +typeAnnotation: DetachedNode<FunctionTypeParamType['typeAnnotation']>,
533
+ +optional: FunctionTypeParamType['optional'],
534
+ };
535
+
536
+ export type GenericTypeAnnotationProps = {
537
+ +id: DetachedNode<GenericTypeAnnotationType['id']>,
538
+ +typeParameters?: ?DetachedNode<GenericTypeAnnotationType['typeParameters']>,
539
+ };
540
+
541
+ export type IfStatementProps = {
542
+ +test: DetachedNode<IfStatementType['test']>,
543
+ +consequent: DetachedNode<IfStatementType['consequent']>,
544
+ +alternate?: ?DetachedNode<IfStatementType['alternate']>,
545
+ };
546
+
547
+ export type ImportAttributeProps = {
548
+ +key: DetachedNode<ImportAttributeType['key']>,
549
+ +value: DetachedNode<ImportAttributeType['value']>,
550
+ };
551
+
552
+ export type ImportDeclarationProps = {
553
+ +specifiers: $ReadOnlyArray<
554
+ DetachedNode<ImportDeclarationType['specifiers'][number]>,
555
+ >,
556
+ +source: DetachedNode<ImportDeclarationType['source']>,
557
+ +assertions?: ?$ReadOnlyArray<
558
+ DetachedNode<ImportDeclarationType['assertions'][number]>,
559
+ >,
560
+ +importKind: ImportDeclarationType['importKind'],
561
+ };
562
+
563
+ export type ImportDefaultSpecifierProps = {
564
+ +local: DetachedNode<ImportDefaultSpecifierType['local']>,
565
+ };
566
+
567
+ export type ImportExpressionProps = {
568
+ +source: DetachedNode<ImportExpressionType['source']>,
569
+ +attributes?: ?DetachedNode<ImportExpressionType['attributes']>,
570
+ };
571
+
572
+ export type ImportNamespaceSpecifierProps = {
573
+ +local: DetachedNode<ImportNamespaceSpecifierType['local']>,
574
+ };
575
+
576
+ export type ImportSpecifierProps = {
577
+ +imported: DetachedNode<ImportSpecifierType['imported']>,
578
+ +local: DetachedNode<ImportSpecifierType['local']>,
579
+ +importKind: ImportSpecifierType['importKind'],
580
+ };
581
+
582
+ export type IndexedAccessTypeProps = {
583
+ +objectType: DetachedNode<IndexedAccessTypeType['objectType']>,
584
+ +indexType: DetachedNode<IndexedAccessTypeType['indexType']>,
585
+ };
586
+
587
+ export type InferredPredicateProps = {};
588
+
589
+ export type InterfaceDeclarationProps = {
590
+ +id: DetachedNode<InterfaceDeclarationType['id']>,
591
+ +typeParameters?: ?DetachedNode<InterfaceDeclarationType['typeParameters']>,
592
+ +extends: $ReadOnlyArray<
593
+ DetachedNode<InterfaceDeclarationType['extends'][number]>,
594
+ >,
595
+ +body: DetachedNode<InterfaceDeclarationType['body']>,
596
+ };
597
+
598
+ export type InterfaceExtendsProps = {
599
+ +id: DetachedNode<InterfaceExtendsType['id']>,
600
+ +typeParameters?: ?DetachedNode<InterfaceExtendsType['typeParameters']>,
601
+ };
602
+
603
+ export type InterfaceTypeAnnotationProps = {
604
+ +extends: $ReadOnlyArray<
605
+ DetachedNode<InterfaceTypeAnnotationType['extends'][number]>,
606
+ >,
607
+ +body?: ?DetachedNode<InterfaceTypeAnnotationType['body']>,
608
+ };
609
+
610
+ export type IntersectionTypeAnnotationProps = {
611
+ +types: $ReadOnlyArray<
612
+ DetachedNode<IntersectionTypeAnnotationType['types'][number]>,
613
+ >,
614
+ };
615
+
616
+ export type JSXAttributeProps = {
617
+ +name: DetachedNode<JSXAttributeType['name']>,
618
+ +value?: ?DetachedNode<JSXAttributeType['value']>,
619
+ };
620
+
621
+ export type JSXClosingElementProps = {
622
+ +name: DetachedNode<JSXClosingElementType['name']>,
623
+ };
624
+
625
+ export type JSXClosingFragmentProps = {};
626
+
627
+ export type JSXElementProps = {
628
+ +openingElement: DetachedNode<JSXElementType['openingElement']>,
629
+ +children: $ReadOnlyArray<DetachedNode<JSXElementType['children'][number]>>,
630
+ +closingElement?: ?DetachedNode<JSXElementType['closingElement']>,
631
+ };
632
+
633
+ export type JSXEmptyExpressionProps = {};
634
+
635
+ export type JSXExpressionContainerProps = {
636
+ +expression: DetachedNode<JSXExpressionContainerType['expression']>,
637
+ };
638
+
639
+ export type JSXFragmentProps = {
640
+ +openingFragment: DetachedNode<JSXFragmentType['openingFragment']>,
641
+ +children: $ReadOnlyArray<DetachedNode<JSXFragmentType['children'][number]>>,
642
+ +closingFragment: DetachedNode<JSXFragmentType['closingFragment']>,
643
+ };
644
+
645
+ export type JSXIdentifierProps = {
646
+ +name: JSXIdentifierType['name'],
647
+ };
648
+
649
+ export type JSXMemberExpressionProps = {
650
+ +object: DetachedNode<JSXMemberExpressionType['object']>,
651
+ +property: DetachedNode<JSXMemberExpressionType['property']>,
652
+ };
653
+
654
+ export type JSXNamespacedNameProps = {
655
+ +namespace: DetachedNode<JSXNamespacedNameType['namespace']>,
656
+ +name: DetachedNode<JSXNamespacedNameType['name']>,
657
+ };
658
+
659
+ export type JSXOpeningElementProps = {
660
+ +name: DetachedNode<JSXOpeningElementType['name']>,
661
+ +attributes: $ReadOnlyArray<
662
+ DetachedNode<JSXOpeningElementType['attributes'][number]>,
663
+ >,
664
+ +selfClosing: JSXOpeningElementType['selfClosing'],
665
+ };
666
+
667
+ export type JSXOpeningFragmentProps = {};
668
+
669
+ export type JSXSpreadAttributeProps = {
670
+ +argument: DetachedNode<JSXSpreadAttributeType['argument']>,
671
+ };
672
+
673
+ export type JSXSpreadChildProps = {
674
+ +expression: DetachedNode<JSXSpreadChildType['expression']>,
675
+ };
676
+
677
+ export type JSXTextProps = {
678
+ +value: JSXTextType['value'],
679
+ +raw: JSXTextType['raw'],
680
+ };
681
+
682
+ export type LabeledStatementProps = {
683
+ +label: DetachedNode<LabeledStatementType['label']>,
684
+ +body: DetachedNode<LabeledStatementType['body']>,
685
+ };
686
+
687
+ export type LogicalExpressionProps = {
688
+ +left: DetachedNode<LogicalExpressionType['left']>,
689
+ +right: DetachedNode<LogicalExpressionType['right']>,
690
+ +operator: LogicalExpressionType['operator'],
691
+ };
692
+
693
+ export type MemberExpressionProps = {
694
+ +object: DetachedNode<MemberExpressionType['object']>,
695
+ +property: DetachedNode<MemberExpressionType['property']>,
696
+ +computed: MemberExpressionType['computed'],
697
+ };
698
+
699
+ export type MetaPropertyProps = {
700
+ +meta: DetachedNode<MetaPropertyType['meta']>,
701
+ +property: DetachedNode<MetaPropertyType['property']>,
702
+ };
703
+
704
+ export type MethodDefinitionProps = {
705
+ +key: DetachedNode<MethodDefinitionType['key']>,
706
+ +value: DetachedNode<MethodDefinitionType['value']>,
707
+ +kind: MethodDefinitionType['kind'],
708
+ +computed: MethodDefinitionType['computed'],
709
+ +static: MethodDefinitionType['static'],
710
+ };
711
+
712
+ export type MixedTypeAnnotationProps = {};
713
+
714
+ export type NewExpressionProps = {
715
+ +callee: DetachedNode<NewExpressionType['callee']>,
716
+ +typeArguments?: ?DetachedNode<NewExpressionType['typeArguments']>,
717
+ +arguments: $ReadOnlyArray<
718
+ DetachedNode<NewExpressionType['arguments'][number]>,
719
+ >,
720
+ };
721
+
722
+ export type NullableTypeAnnotationProps = {
723
+ +typeAnnotation: DetachedNode<NullableTypeAnnotationType['typeAnnotation']>,
724
+ };
725
+
726
+ export type NullLiteralTypeAnnotationProps = {};
727
+
728
+ export type NumberLiteralTypeAnnotationProps = {
729
+ +value: NumberLiteralTypeAnnotationType['value'],
730
+ +raw: NumberLiteralTypeAnnotationType['raw'],
731
+ };
732
+
733
+ export type NumberTypeAnnotationProps = {};
734
+
735
+ export type ObjectExpressionProps = {
736
+ +properties: $ReadOnlyArray<
737
+ DetachedNode<ObjectExpressionType['properties'][number]>,
738
+ >,
739
+ };
740
+
741
+ export type ObjectPatternProps = {
742
+ +properties: $ReadOnlyArray<
743
+ DetachedNode<ObjectPatternType['properties'][number]>,
744
+ >,
745
+ +typeAnnotation?: ?DetachedNode<ObjectPatternType['typeAnnotation']>,
746
+ };
747
+
748
+ export type ObjectTypeAnnotationProps = {
749
+ +properties: $ReadOnlyArray<
750
+ DetachedNode<ObjectTypeAnnotationType['properties'][number]>,
751
+ >,
752
+ +indexers: $ReadOnlyArray<
753
+ DetachedNode<ObjectTypeAnnotationType['indexers'][number]>,
754
+ >,
755
+ +callProperties: $ReadOnlyArray<
756
+ DetachedNode<ObjectTypeAnnotationType['callProperties'][number]>,
757
+ >,
758
+ +internalSlots: $ReadOnlyArray<
759
+ DetachedNode<ObjectTypeAnnotationType['internalSlots'][number]>,
760
+ >,
761
+ +inexact: ObjectTypeAnnotationType['inexact'],
762
+ +exact: ObjectTypeAnnotationType['exact'],
763
+ };
764
+
765
+ export type ObjectTypeCallPropertyProps = {
766
+ +value: DetachedNode<ObjectTypeCallPropertyType['value']>,
767
+ +static: ObjectTypeCallPropertyType['static'],
768
+ };
769
+
770
+ export type ObjectTypeIndexerProps = {
771
+ +id?: ?DetachedNode<ObjectTypeIndexerType['id']>,
772
+ +key: DetachedNode<ObjectTypeIndexerType['key']>,
773
+ +value: DetachedNode<ObjectTypeIndexerType['value']>,
774
+ +static: ObjectTypeIndexerType['static'],
775
+ +variance?: ?DetachedNode<ObjectTypeIndexerType['variance']>,
776
+ };
777
+
778
+ export type ObjectTypeInternalSlotProps = {
779
+ +id: DetachedNode<ObjectTypeInternalSlotType['id']>,
780
+ +value: DetachedNode<ObjectTypeInternalSlotType['value']>,
781
+ +optional: ObjectTypeInternalSlotType['optional'],
782
+ +static: ObjectTypeInternalSlotType['static'],
783
+ +method: ObjectTypeInternalSlotType['method'],
784
+ };
785
+
786
+ export type ObjectTypePropertyProps = {
787
+ +key: DetachedNode<ObjectTypePropertyType['key']>,
788
+ +value: DetachedNode<ObjectTypePropertyType['value']>,
789
+ +method: ObjectTypePropertyType['method'],
790
+ +optional: ObjectTypePropertyType['optional'],
791
+ +static: ObjectTypePropertyType['static'],
792
+ +proto: ObjectTypePropertyType['proto'],
793
+ +variance?: ?DetachedNode<ObjectTypePropertyType['variance']>,
794
+ +kind: ObjectTypePropertyType['kind'],
795
+ };
796
+
797
+ export type ObjectTypeSpreadPropertyProps = {
798
+ +argument: DetachedNode<ObjectTypeSpreadPropertyType['argument']>,
799
+ };
800
+
801
+ export type OpaqueTypeProps = {
802
+ +id: DetachedNode<OpaqueTypeType['id']>,
803
+ +typeParameters?: ?DetachedNode<OpaqueTypeType['typeParameters']>,
804
+ +impltype: DetachedNode<OpaqueTypeType['impltype']>,
805
+ +supertype?: ?DetachedNode<OpaqueTypeType['supertype']>,
806
+ };
807
+
808
+ export type OptionalCallExpressionProps = {
809
+ +callee: DetachedNode<OptionalCallExpressionType['callee']>,
810
+ +typeArguments?: ?DetachedNode<OptionalCallExpressionType['typeArguments']>,
811
+ +arguments: $ReadOnlyArray<
812
+ DetachedNode<OptionalCallExpressionType['arguments'][number]>,
813
+ >,
814
+ +optional: OptionalCallExpressionType['optional'],
815
+ };
816
+
817
+ export type OptionalIndexedAccessTypeProps = {
818
+ +objectType: DetachedNode<OptionalIndexedAccessTypeType['objectType']>,
819
+ +indexType: DetachedNode<OptionalIndexedAccessTypeType['indexType']>,
820
+ +optional: OptionalIndexedAccessTypeType['optional'],
821
+ };
822
+
823
+ export type OptionalMemberExpressionProps = {
824
+ +object: DetachedNode<OptionalMemberExpressionType['object']>,
825
+ +property: DetachedNode<OptionalMemberExpressionType['property']>,
826
+ +computed: OptionalMemberExpressionType['computed'],
827
+ +optional: OptionalMemberExpressionType['optional'],
828
+ };
829
+
830
+ export type PrivateNameProps = {
831
+ +id: DetachedNode<PrivateNameType['id']>,
832
+ };
833
+
834
+ export type PropertyProps = {
835
+ +key: DetachedNode<PropertyType['key']>,
836
+ +value: DetachedNode<PropertyType['value']>,
837
+ +kind: PropertyType['kind'],
838
+ +computed: PropertyType['computed'],
839
+ +method: PropertyType['method'],
840
+ +shorthand: PropertyType['shorthand'],
841
+ };
842
+
843
+ export type QualifiedTypeIdentifierProps = {
844
+ +qualification: DetachedNode<QualifiedTypeIdentifierType['qualification']>,
845
+ +id: DetachedNode<QualifiedTypeIdentifierType['id']>,
846
+ };
847
+
848
+ export type RestElementProps = {
849
+ +argument: DetachedNode<RestElementType['argument']>,
850
+ };
851
+
852
+ export type ReturnStatementProps = {
853
+ +argument?: ?DetachedNode<ReturnStatementType['argument']>,
854
+ };
855
+
856
+ export type SequenceExpressionProps = {
857
+ +expressions: $ReadOnlyArray<
858
+ DetachedNode<SequenceExpressionType['expressions'][number]>,
859
+ >,
860
+ };
861
+
862
+ export type SpreadElementProps = {
863
+ +argument: DetachedNode<SpreadElementType['argument']>,
864
+ };
865
+
866
+ export type StringLiteralTypeAnnotationProps = {
867
+ +value: StringLiteralTypeAnnotationType['value'],
868
+ };
869
+
870
+ export type StringTypeAnnotationProps = {};
871
+
872
+ export type SuperProps = {};
873
+
874
+ export type SwitchCaseProps = {
875
+ +test?: ?DetachedNode<SwitchCaseType['test']>,
876
+ +consequent: $ReadOnlyArray<
877
+ DetachedNode<SwitchCaseType['consequent'][number]>,
878
+ >,
879
+ };
880
+
881
+ export type SwitchStatementProps = {
882
+ +discriminant: DetachedNode<SwitchStatementType['discriminant']>,
883
+ +cases: $ReadOnlyArray<DetachedNode<SwitchStatementType['cases'][number]>>,
884
+ };
885
+
886
+ export type SymbolTypeAnnotationProps = {};
887
+
888
+ export type TaggedTemplateExpressionProps = {
889
+ +tag: DetachedNode<TaggedTemplateExpressionType['tag']>,
890
+ +quasi: DetachedNode<TaggedTemplateExpressionType['quasi']>,
891
+ };
892
+
893
+ export type TemplateLiteralProps = {
894
+ +quasis: $ReadOnlyArray<DetachedNode<TemplateLiteralType['quasis'][number]>>,
895
+ +expressions: $ReadOnlyArray<
896
+ DetachedNode<TemplateLiteralType['expressions'][number]>,
897
+ >,
898
+ };
899
+
900
+ export type ThisExpressionProps = {};
901
+
902
+ export type ThisTypeAnnotationProps = {};
903
+
904
+ export type ThrowStatementProps = {
905
+ +argument: DetachedNode<ThrowStatementType['argument']>,
906
+ };
907
+
908
+ export type TryStatementProps = {
909
+ +block: DetachedNode<TryStatementType['block']>,
910
+ +handler?: ?DetachedNode<TryStatementType['handler']>,
911
+ +finalizer?: ?DetachedNode<TryStatementType['finalizer']>,
912
+ };
913
+
914
+ export type TupleTypeAnnotationProps = {
915
+ +types: $ReadOnlyArray<
916
+ DetachedNode<TupleTypeAnnotationType['types'][number]>,
917
+ >,
918
+ };
919
+
920
+ export type TypeAliasProps = {
921
+ +id: DetachedNode<TypeAliasType['id']>,
922
+ +typeParameters?: ?DetachedNode<TypeAliasType['typeParameters']>,
923
+ +right: DetachedNode<TypeAliasType['right']>,
924
+ };
925
+
926
+ export type TypeAnnotationProps = {
927
+ +typeAnnotation: DetachedNode<TypeAnnotationType['typeAnnotation']>,
928
+ };
929
+
930
+ export type TypeCastExpressionProps = {
931
+ +expression: DetachedNode<TypeCastExpressionType['expression']>,
932
+ +typeAnnotation: DetachedNode<TypeCastExpressionType['typeAnnotation']>,
933
+ };
934
+
935
+ export type TypeofTypeAnnotationProps = {
936
+ +argument: DetachedNode<TypeofTypeAnnotationType['argument']>,
937
+ };
938
+
939
+ export type TypeParameterProps = {
940
+ +name: TypeParameterType['name'],
941
+ +bound?: ?DetachedNode<TypeParameterType['bound']>,
942
+ +variance?: ?DetachedNode<TypeParameterType['variance']>,
943
+ +default?: ?DetachedNode<TypeParameterType['default']>,
944
+ };
945
+
946
+ export type TypeParameterDeclarationProps = {
947
+ +params: $ReadOnlyArray<
948
+ DetachedNode<TypeParameterDeclarationType['params'][number]>,
949
+ >,
950
+ };
951
+
952
+ export type TypeParameterInstantiationProps = {
953
+ +params: $ReadOnlyArray<
954
+ DetachedNode<TypeParameterInstantiationType['params'][number]>,
955
+ >,
956
+ };
957
+
958
+ export type UnaryExpressionProps = {
959
+ +operator: UnaryExpressionType['operator'],
960
+ +argument: DetachedNode<UnaryExpressionType['argument']>,
961
+ +prefix: UnaryExpressionType['prefix'],
962
+ };
963
+
964
+ export type UnionTypeAnnotationProps = {
965
+ +types: $ReadOnlyArray<
966
+ DetachedNode<UnionTypeAnnotationType['types'][number]>,
967
+ >,
968
+ };
969
+
970
+ export type UpdateExpressionProps = {
971
+ +operator: UpdateExpressionType['operator'],
972
+ +argument: DetachedNode<UpdateExpressionType['argument']>,
973
+ +prefix: UpdateExpressionType['prefix'],
974
+ };
975
+
976
+ export type VariableDeclarationProps = {
977
+ +kind: VariableDeclarationType['kind'],
978
+ +declarations: $ReadOnlyArray<
979
+ DetachedNode<VariableDeclarationType['declarations'][number]>,
980
+ >,
981
+ };
982
+
983
+ export type VariableDeclaratorProps = {
984
+ +init?: ?DetachedNode<VariableDeclaratorType['init']>,
985
+ +id: DetachedNode<VariableDeclaratorType['id']>,
986
+ };
987
+
988
+ export type VarianceProps = {
989
+ +kind: VarianceType['kind'],
990
+ };
991
+
992
+ export type VoidTypeAnnotationProps = {};
993
+
994
+ export type WhileStatementProps = {
995
+ +body: DetachedNode<WhileStatementType['body']>,
996
+ +test: DetachedNode<WhileStatementType['test']>,
997
+ };
998
+
999
+ export type WithStatementProps = {
1000
+ +object: DetachedNode<WithStatementType['object']>,
1001
+ +body: DetachedNode<WithStatementType['body']>,
1002
+ };
1003
+
1004
+ export type YieldExpressionProps = {
1005
+ +argument?: ?DetachedNode<YieldExpressionType['argument']>,
1006
+ +delegate?: ?YieldExpressionType['delegate'],
1007
+ };
1008
+
1009
+ export function AnyTypeAnnotation({
1010
+ parent,
1011
+ }: {
1012
+ +parent?: ESNode,
1013
+ } = {}): DetachedNode<AnyTypeAnnotationType> {
1014
+ return detachedProps<AnyTypeAnnotationType>(parent, {
1015
+ type: 'AnyTypeAnnotation',
1016
+ });
1017
+ }
1018
+
1019
+ export function ArrayExpression({
1020
+ parent,
1021
+ ...props
1022
+ }: {
1023
+ ...$ReadOnly<ArrayExpressionProps>,
1024
+ +parent?: ESNode,
1025
+ }): DetachedNode<ArrayExpressionType> {
1026
+ const node = detachedProps<ArrayExpressionType>(parent, {
1027
+ type: 'ArrayExpression',
1028
+ ...props,
1029
+ });
1030
+ setParentPointersInDirectChildren(node);
1031
+ return node;
1032
+ }
1033
+
1034
+ export function ArrayPattern({
1035
+ parent,
1036
+ ...props
1037
+ }: {
1038
+ ...$ReadOnly<ArrayPatternProps>,
1039
+ +parent?: ESNode,
1040
+ }): DetachedNode<ArrayPatternType> {
1041
+ const node = detachedProps<ArrayPatternType>(parent, {
1042
+ type: 'ArrayPattern',
1043
+ ...props,
1044
+ });
1045
+ setParentPointersInDirectChildren(node);
1046
+ return node;
1047
+ }
1048
+
1049
+ export function ArrayTypeAnnotation({
1050
+ parent,
1051
+ ...props
1052
+ }: {
1053
+ ...$ReadOnly<ArrayTypeAnnotationProps>,
1054
+ +parent?: ESNode,
1055
+ }): DetachedNode<ArrayTypeAnnotationType> {
1056
+ const node = detachedProps<ArrayTypeAnnotationType>(parent, {
1057
+ type: 'ArrayTypeAnnotation',
1058
+ ...props,
1059
+ });
1060
+ setParentPointersInDirectChildren(node);
1061
+ return node;
1062
+ }
1063
+
1064
+ export function AssignmentExpression({
1065
+ parent,
1066
+ ...props
1067
+ }: {
1068
+ ...$ReadOnly<AssignmentExpressionProps>,
1069
+ +parent?: ESNode,
1070
+ }): DetachedNode<AssignmentExpressionType> {
1071
+ const node = detachedProps<AssignmentExpressionType>(parent, {
1072
+ type: 'AssignmentExpression',
1073
+ ...props,
1074
+ });
1075
+ setParentPointersInDirectChildren(node);
1076
+ return node;
1077
+ }
1078
+
1079
+ export function AssignmentPattern({
1080
+ parent,
1081
+ ...props
1082
+ }: {
1083
+ ...$ReadOnly<AssignmentPatternProps>,
1084
+ +parent?: ESNode,
1085
+ }): DetachedNode<AssignmentPatternType> {
1086
+ const node = detachedProps<AssignmentPatternType>(parent, {
1087
+ type: 'AssignmentPattern',
1088
+ ...props,
1089
+ });
1090
+ setParentPointersInDirectChildren(node);
1091
+ return node;
1092
+ }
1093
+
1094
+ export function AwaitExpression({
1095
+ parent,
1096
+ ...props
1097
+ }: {
1098
+ ...$ReadOnly<AwaitExpressionProps>,
1099
+ +parent?: ESNode,
1100
+ }): DetachedNode<AwaitExpressionType> {
1101
+ const node = detachedProps<AwaitExpressionType>(parent, {
1102
+ type: 'AwaitExpression',
1103
+ ...props,
1104
+ });
1105
+ setParentPointersInDirectChildren(node);
1106
+ return node;
1107
+ }
1108
+
1109
+ export function BinaryExpression({
1110
+ parent,
1111
+ ...props
1112
+ }: {
1113
+ ...$ReadOnly<BinaryExpressionProps>,
1114
+ +parent?: ESNode,
1115
+ }): DetachedNode<BinaryExpressionType> {
1116
+ const node = detachedProps<BinaryExpressionType>(parent, {
1117
+ type: 'BinaryExpression',
1118
+ ...props,
1119
+ });
1120
+ setParentPointersInDirectChildren(node);
1121
+ return node;
1122
+ }
1123
+
1124
+ export function BlockStatement({
1125
+ parent,
1126
+ ...props
1127
+ }: {
1128
+ ...$ReadOnly<BlockStatementProps>,
1129
+ +parent?: ESNode,
1130
+ }): DetachedNode<BlockStatementType> {
1131
+ const node = detachedProps<BlockStatementType>(parent, {
1132
+ type: 'BlockStatement',
1133
+ ...props,
1134
+ });
1135
+ setParentPointersInDirectChildren(node);
1136
+ return node;
1137
+ }
1138
+
1139
+ export function BooleanLiteralTypeAnnotation({
1140
+ parent,
1141
+ ...props
1142
+ }: {
1143
+ ...$ReadOnly<BooleanLiteralTypeAnnotationProps>,
1144
+ +parent?: ESNode,
1145
+ }): DetachedNode<BooleanLiteralTypeAnnotationType> {
1146
+ const node = detachedProps<BooleanLiteralTypeAnnotationType>(parent, {
1147
+ type: 'BooleanLiteralTypeAnnotation',
1148
+ ...props,
1149
+ });
1150
+ setParentPointersInDirectChildren(node);
1151
+ return node;
1152
+ }
1153
+
1154
+ export function BooleanTypeAnnotation({
1155
+ parent,
1156
+ }: {
1157
+ +parent?: ESNode,
1158
+ } = {}): DetachedNode<BooleanTypeAnnotationType> {
1159
+ return detachedProps<BooleanTypeAnnotationType>(parent, {
1160
+ type: 'BooleanTypeAnnotation',
1161
+ });
1162
+ }
1163
+
1164
+ export function BreakStatement({
1165
+ parent,
1166
+ ...props
1167
+ }: {
1168
+ ...$ReadOnly<BreakStatementProps>,
1169
+ +parent?: ESNode,
1170
+ }): DetachedNode<BreakStatementType> {
1171
+ const node = detachedProps<BreakStatementType>(parent, {
1172
+ type: 'BreakStatement',
1173
+ ...props,
1174
+ });
1175
+ setParentPointersInDirectChildren(node);
1176
+ return node;
1177
+ }
1178
+
1179
+ export function CallExpression({
1180
+ parent,
1181
+ ...props
1182
+ }: {
1183
+ ...$ReadOnly<CallExpressionProps>,
1184
+ +parent?: ESNode,
1185
+ }): DetachedNode<CallExpressionType> {
1186
+ const node = detachedProps<CallExpressionType>(parent, {
1187
+ type: 'CallExpression',
1188
+ ...props,
1189
+ });
1190
+ setParentPointersInDirectChildren(node);
1191
+ return node;
1192
+ }
1193
+
1194
+ export function CatchClause({
1195
+ parent,
1196
+ ...props
1197
+ }: {
1198
+ ...$ReadOnly<CatchClauseProps>,
1199
+ +parent?: ESNode,
1200
+ }): DetachedNode<CatchClauseType> {
1201
+ const node = detachedProps<CatchClauseType>(parent, {
1202
+ type: 'CatchClause',
1203
+ ...props,
1204
+ });
1205
+ setParentPointersInDirectChildren(node);
1206
+ return node;
1207
+ }
1208
+
1209
+ export function ClassBody({
1210
+ parent,
1211
+ ...props
1212
+ }: {
1213
+ ...$ReadOnly<ClassBodyProps>,
1214
+ +parent?: ESNode,
1215
+ }): DetachedNode<ClassBodyType> {
1216
+ const node = detachedProps<ClassBodyType>(parent, {
1217
+ type: 'ClassBody',
1218
+ ...props,
1219
+ });
1220
+ setParentPointersInDirectChildren(node);
1221
+ return node;
1222
+ }
1223
+
1224
+ export function ClassDeclaration({
1225
+ parent,
1226
+ ...props
1227
+ }: {
1228
+ ...$ReadOnly<ClassDeclarationProps>,
1229
+ +parent?: ESNode,
1230
+ }): DetachedNode<ClassDeclarationType> {
1231
+ const node = detachedProps<ClassDeclarationType>(parent, {
1232
+ type: 'ClassDeclaration',
1233
+ ...props,
1234
+ });
1235
+ setParentPointersInDirectChildren(node);
1236
+ return node;
1237
+ }
1238
+
1239
+ export function ClassExpression({
1240
+ parent,
1241
+ ...props
1242
+ }: {
1243
+ ...$ReadOnly<ClassExpressionProps>,
1244
+ +parent?: ESNode,
1245
+ }): DetachedNode<ClassExpressionType> {
1246
+ const node = detachedProps<ClassExpressionType>(parent, {
1247
+ type: 'ClassExpression',
1248
+ ...props,
1249
+ });
1250
+ setParentPointersInDirectChildren(node);
1251
+ return node;
1252
+ }
1253
+
1254
+ export function ClassImplements({
1255
+ parent,
1256
+ ...props
1257
+ }: {
1258
+ ...$ReadOnly<ClassImplementsProps>,
1259
+ +parent?: ESNode,
1260
+ }): DetachedNode<ClassImplementsType> {
1261
+ const node = detachedProps<ClassImplementsType>(parent, {
1262
+ type: 'ClassImplements',
1263
+ ...props,
1264
+ });
1265
+ setParentPointersInDirectChildren(node);
1266
+ return node;
1267
+ }
1268
+
1269
+ export function ClassPrivateProperty({
1270
+ parent,
1271
+ ...props
1272
+ }: {
1273
+ ...$ReadOnly<ClassPrivatePropertyProps>,
1274
+ +parent?: ESNode,
1275
+ }): DetachedNode<ClassPrivatePropertyType> {
1276
+ const node = detachedProps<ClassPrivatePropertyType>(parent, {
1277
+ type: 'ClassPrivateProperty',
1278
+ ...props,
1279
+ });
1280
+ setParentPointersInDirectChildren(node);
1281
+ return node;
1282
+ }
1283
+
1284
+ export function ClassProperty({
1285
+ parent,
1286
+ ...props
1287
+ }: {
1288
+ ...$ReadOnly<ClassPropertyProps>,
1289
+ +parent?: ESNode,
1290
+ }): DetachedNode<ClassPropertyType> {
1291
+ const node = detachedProps<ClassPropertyType>(parent, {
1292
+ type: 'ClassProperty',
1293
+ ...props,
1294
+ });
1295
+ setParentPointersInDirectChildren(node);
1296
+ return node;
1297
+ }
1298
+
1299
+ export function ConditionalExpression({
1300
+ parent,
1301
+ ...props
1302
+ }: {
1303
+ ...$ReadOnly<ConditionalExpressionProps>,
1304
+ +parent?: ESNode,
1305
+ }): DetachedNode<ConditionalExpressionType> {
1306
+ const node = detachedProps<ConditionalExpressionType>(parent, {
1307
+ type: 'ConditionalExpression',
1308
+ ...props,
1309
+ });
1310
+ setParentPointersInDirectChildren(node);
1311
+ return node;
1312
+ }
1313
+
1314
+ export function ContinueStatement({
1315
+ parent,
1316
+ ...props
1317
+ }: {
1318
+ ...$ReadOnly<ContinueStatementProps>,
1319
+ +parent?: ESNode,
1320
+ }): DetachedNode<ContinueStatementType> {
1321
+ const node = detachedProps<ContinueStatementType>(parent, {
1322
+ type: 'ContinueStatement',
1323
+ ...props,
1324
+ });
1325
+ setParentPointersInDirectChildren(node);
1326
+ return node;
1327
+ }
1328
+
1329
+ export function DebuggerStatement({
1330
+ parent,
1331
+ }: {
1332
+ +parent?: ESNode,
1333
+ } = {}): DetachedNode<DebuggerStatementType> {
1334
+ return detachedProps<DebuggerStatementType>(parent, {
1335
+ type: 'DebuggerStatement',
1336
+ });
1337
+ }
1338
+
1339
+ export function DeclareClass({
1340
+ parent,
1341
+ ...props
1342
+ }: {
1343
+ ...$ReadOnly<DeclareClassProps>,
1344
+ +parent?: ESNode,
1345
+ }): DetachedNode<DeclareClassType> {
1346
+ const node = detachedProps<DeclareClassType>(parent, {
1347
+ type: 'DeclareClass',
1348
+ ...props,
1349
+ });
1350
+ setParentPointersInDirectChildren(node);
1351
+ return node;
1352
+ }
1353
+
1354
+ export function DeclaredPredicate({
1355
+ parent,
1356
+ ...props
1357
+ }: {
1358
+ ...$ReadOnly<DeclaredPredicateProps>,
1359
+ +parent?: ESNode,
1360
+ }): DetachedNode<DeclaredPredicateType> {
1361
+ const node = detachedProps<DeclaredPredicateType>(parent, {
1362
+ type: 'DeclaredPredicate',
1363
+ ...props,
1364
+ });
1365
+ setParentPointersInDirectChildren(node);
1366
+ return node;
1367
+ }
1368
+
1369
+ export function DeclareExportAllDeclaration({
1370
+ parent,
1371
+ ...props
1372
+ }: {
1373
+ ...$ReadOnly<DeclareExportAllDeclarationProps>,
1374
+ +parent?: ESNode,
1375
+ }): DetachedNode<DeclareExportAllDeclarationType> {
1376
+ const node = detachedProps<DeclareExportAllDeclarationType>(parent, {
1377
+ type: 'DeclareExportAllDeclaration',
1378
+ ...props,
1379
+ });
1380
+ setParentPointersInDirectChildren(node);
1381
+ return node;
1382
+ }
1383
+
1384
+ export function DeclareExportDeclaration({
1385
+ parent,
1386
+ ...props
1387
+ }: {
1388
+ ...$ReadOnly<DeclareExportDeclarationProps>,
1389
+ +parent?: ESNode,
1390
+ }): DetachedNode<DeclareExportDeclarationType> {
1391
+ const node = detachedProps<DeclareExportDeclarationType>(parent, {
1392
+ type: 'DeclareExportDeclaration',
1393
+ ...props,
1394
+ });
1395
+ setParentPointersInDirectChildren(node);
1396
+ return node;
1397
+ }
1398
+
1399
+ export function DeclareFunction({
1400
+ parent,
1401
+ ...props
1402
+ }: {
1403
+ ...$ReadOnly<DeclareFunctionProps>,
1404
+ +parent?: ESNode,
1405
+ }): DetachedNode<DeclareFunctionType> {
1406
+ const node = detachedProps<DeclareFunctionType>(parent, {
1407
+ type: 'DeclareFunction',
1408
+ ...props,
1409
+ });
1410
+ setParentPointersInDirectChildren(node);
1411
+ return node;
1412
+ }
1413
+
1414
+ export function DeclareInterface({
1415
+ parent,
1416
+ ...props
1417
+ }: {
1418
+ ...$ReadOnly<DeclareInterfaceProps>,
1419
+ +parent?: ESNode,
1420
+ }): DetachedNode<DeclareInterfaceType> {
1421
+ const node = detachedProps<DeclareInterfaceType>(parent, {
1422
+ type: 'DeclareInterface',
1423
+ ...props,
1424
+ });
1425
+ setParentPointersInDirectChildren(node);
1426
+ return node;
1427
+ }
1428
+
1429
+ export function DeclareModule({
1430
+ parent,
1431
+ ...props
1432
+ }: {
1433
+ ...$ReadOnly<DeclareModuleProps>,
1434
+ +parent?: ESNode,
1435
+ }): DetachedNode<DeclareModuleType> {
1436
+ const node = detachedProps<DeclareModuleType>(parent, {
1437
+ type: 'DeclareModule',
1438
+ ...props,
1439
+ });
1440
+ setParentPointersInDirectChildren(node);
1441
+ return node;
1442
+ }
1443
+
1444
+ export function DeclareModuleExports({
1445
+ parent,
1446
+ ...props
1447
+ }: {
1448
+ ...$ReadOnly<DeclareModuleExportsProps>,
1449
+ +parent?: ESNode,
1450
+ }): DetachedNode<DeclareModuleExportsType> {
1451
+ const node = detachedProps<DeclareModuleExportsType>(parent, {
1452
+ type: 'DeclareModuleExports',
1453
+ ...props,
1454
+ });
1455
+ setParentPointersInDirectChildren(node);
1456
+ return node;
1457
+ }
1458
+
1459
+ export function DeclareOpaqueType({
1460
+ parent,
1461
+ ...props
1462
+ }: {
1463
+ ...$ReadOnly<DeclareOpaqueTypeProps>,
1464
+ +parent?: ESNode,
1465
+ }): DetachedNode<DeclareOpaqueTypeType> {
1466
+ const node = detachedProps<DeclareOpaqueTypeType>(parent, {
1467
+ type: 'DeclareOpaqueType',
1468
+ ...props,
1469
+ });
1470
+ setParentPointersInDirectChildren(node);
1471
+ return node;
1472
+ }
1473
+
1474
+ export function DeclareTypeAlias({
1475
+ parent,
1476
+ ...props
1477
+ }: {
1478
+ ...$ReadOnly<DeclareTypeAliasProps>,
1479
+ +parent?: ESNode,
1480
+ }): DetachedNode<DeclareTypeAliasType> {
1481
+ const node = detachedProps<DeclareTypeAliasType>(parent, {
1482
+ type: 'DeclareTypeAlias',
1483
+ ...props,
1484
+ });
1485
+ setParentPointersInDirectChildren(node);
1486
+ return node;
1487
+ }
1488
+
1489
+ export function DeclareVariable({
1490
+ parent,
1491
+ ...props
1492
+ }: {
1493
+ ...$ReadOnly<DeclareVariableProps>,
1494
+ +parent?: ESNode,
1495
+ }): DetachedNode<DeclareVariableType> {
1496
+ const node = detachedProps<DeclareVariableType>(parent, {
1497
+ type: 'DeclareVariable',
1498
+ ...props,
1499
+ });
1500
+ setParentPointersInDirectChildren(node);
1501
+ return node;
1502
+ }
1503
+
1504
+ export function DoWhileStatement({
1505
+ parent,
1506
+ ...props
1507
+ }: {
1508
+ ...$ReadOnly<DoWhileStatementProps>,
1509
+ +parent?: ESNode,
1510
+ }): DetachedNode<DoWhileStatementType> {
1511
+ const node = detachedProps<DoWhileStatementType>(parent, {
1512
+ type: 'DoWhileStatement',
1513
+ ...props,
1514
+ });
1515
+ setParentPointersInDirectChildren(node);
1516
+ return node;
1517
+ }
1518
+
1519
+ export function EmptyStatement({
1520
+ parent,
1521
+ }: {
1522
+ +parent?: ESNode,
1523
+ } = {}): DetachedNode<EmptyStatementType> {
1524
+ return detachedProps<EmptyStatementType>(parent, {
1525
+ type: 'EmptyStatement',
1526
+ });
1527
+ }
1528
+
1529
+ export function EmptyTypeAnnotation({
1530
+ parent,
1531
+ }: {
1532
+ +parent?: ESNode,
1533
+ } = {}): DetachedNode<EmptyTypeAnnotationType> {
1534
+ return detachedProps<EmptyTypeAnnotationType>(parent, {
1535
+ type: 'EmptyTypeAnnotation',
1536
+ });
1537
+ }
1538
+
1539
+ export function EnumBooleanBody({
1540
+ parent,
1541
+ ...props
1542
+ }: {
1543
+ ...$ReadOnly<EnumBooleanBodyProps>,
1544
+ +parent?: ESNode,
1545
+ }): DetachedNode<EnumBooleanBodyType> {
1546
+ const node = detachedProps<EnumBooleanBodyType>(parent, {
1547
+ type: 'EnumBooleanBody',
1548
+ ...props,
1549
+ });
1550
+ setParentPointersInDirectChildren(node);
1551
+ return node;
1552
+ }
1553
+
1554
+ export function EnumBooleanMember({
1555
+ parent,
1556
+ ...props
1557
+ }: {
1558
+ ...$ReadOnly<EnumBooleanMemberProps>,
1559
+ +parent?: ESNode,
1560
+ }): DetachedNode<EnumBooleanMemberType> {
1561
+ const node = detachedProps<EnumBooleanMemberType>(parent, {
1562
+ type: 'EnumBooleanMember',
1563
+ ...props,
1564
+ });
1565
+ setParentPointersInDirectChildren(node);
1566
+ return node;
1567
+ }
1568
+
1569
+ export function EnumDeclaration({
1570
+ parent,
1571
+ ...props
1572
+ }: {
1573
+ ...$ReadOnly<EnumDeclarationProps>,
1574
+ +parent?: ESNode,
1575
+ }): DetachedNode<EnumDeclarationType> {
1576
+ const node = detachedProps<EnumDeclarationType>(parent, {
1577
+ type: 'EnumDeclaration',
1578
+ ...props,
1579
+ });
1580
+ setParentPointersInDirectChildren(node);
1581
+ return node;
1582
+ }
1583
+
1584
+ export function EnumDefaultedMember({
1585
+ parent,
1586
+ ...props
1587
+ }: {
1588
+ ...$ReadOnly<EnumDefaultedMemberProps>,
1589
+ +parent?: ESNode,
1590
+ }): DetachedNode<EnumDefaultedMemberType> {
1591
+ const node = detachedProps<EnumDefaultedMemberType>(parent, {
1592
+ type: 'EnumDefaultedMember',
1593
+ ...props,
1594
+ });
1595
+ setParentPointersInDirectChildren(node);
1596
+ return node;
1597
+ }
1598
+
1599
+ export function EnumNumberBody({
1600
+ parent,
1601
+ ...props
1602
+ }: {
1603
+ ...$ReadOnly<EnumNumberBodyProps>,
1604
+ +parent?: ESNode,
1605
+ }): DetachedNode<EnumNumberBodyType> {
1606
+ const node = detachedProps<EnumNumberBodyType>(parent, {
1607
+ type: 'EnumNumberBody',
1608
+ ...props,
1609
+ });
1610
+ setParentPointersInDirectChildren(node);
1611
+ return node;
1612
+ }
1613
+
1614
+ export function EnumNumberMember({
1615
+ parent,
1616
+ ...props
1617
+ }: {
1618
+ ...$ReadOnly<EnumNumberMemberProps>,
1619
+ +parent?: ESNode,
1620
+ }): DetachedNode<EnumNumberMemberType> {
1621
+ const node = detachedProps<EnumNumberMemberType>(parent, {
1622
+ type: 'EnumNumberMember',
1623
+ ...props,
1624
+ });
1625
+ setParentPointersInDirectChildren(node);
1626
+ return node;
1627
+ }
1628
+
1629
+ export function EnumStringBody({
1630
+ parent,
1631
+ ...props
1632
+ }: {
1633
+ ...$ReadOnly<EnumStringBodyProps>,
1634
+ +parent?: ESNode,
1635
+ }): DetachedNode<EnumStringBodyType> {
1636
+ const node = detachedProps<EnumStringBodyType>(parent, {
1637
+ type: 'EnumStringBody',
1638
+ ...props,
1639
+ });
1640
+ setParentPointersInDirectChildren(node);
1641
+ return node;
1642
+ }
1643
+
1644
+ export function EnumStringMember({
1645
+ parent,
1646
+ ...props
1647
+ }: {
1648
+ ...$ReadOnly<EnumStringMemberProps>,
1649
+ +parent?: ESNode,
1650
+ }): DetachedNode<EnumStringMemberType> {
1651
+ const node = detachedProps<EnumStringMemberType>(parent, {
1652
+ type: 'EnumStringMember',
1653
+ ...props,
1654
+ });
1655
+ setParentPointersInDirectChildren(node);
1656
+ return node;
1657
+ }
1658
+
1659
+ export function EnumSymbolBody({
1660
+ parent,
1661
+ ...props
1662
+ }: {
1663
+ ...$ReadOnly<EnumSymbolBodyProps>,
1664
+ +parent?: ESNode,
1665
+ }): DetachedNode<EnumSymbolBodyType> {
1666
+ const node = detachedProps<EnumSymbolBodyType>(parent, {
1667
+ type: 'EnumSymbolBody',
1668
+ ...props,
1669
+ });
1670
+ setParentPointersInDirectChildren(node);
1671
+ return node;
1672
+ }
1673
+
1674
+ export function ExistsTypeAnnotation({
1675
+ parent,
1676
+ }: {
1677
+ +parent?: ESNode,
1678
+ } = {}): DetachedNode<ExistsTypeAnnotationType> {
1679
+ return detachedProps<ExistsTypeAnnotationType>(parent, {
1680
+ type: 'ExistsTypeAnnotation',
1681
+ });
1682
+ }
1683
+
1684
+ export function ExportAllDeclaration({
1685
+ parent,
1686
+ ...props
1687
+ }: {
1688
+ ...$ReadOnly<ExportAllDeclarationProps>,
1689
+ +parent?: ESNode,
1690
+ }): DetachedNode<ExportAllDeclarationType> {
1691
+ const node = detachedProps<ExportAllDeclarationType>(parent, {
1692
+ type: 'ExportAllDeclaration',
1693
+ ...props,
1694
+ });
1695
+ setParentPointersInDirectChildren(node);
1696
+ return node;
1697
+ }
1698
+
1699
+ export function ExportDefaultDeclaration({
1700
+ parent,
1701
+ ...props
1702
+ }: {
1703
+ ...$ReadOnly<ExportDefaultDeclarationProps>,
1704
+ +parent?: ESNode,
1705
+ }): DetachedNode<ExportDefaultDeclarationType> {
1706
+ const node = detachedProps<ExportDefaultDeclarationType>(parent, {
1707
+ type: 'ExportDefaultDeclaration',
1708
+ ...props,
1709
+ });
1710
+ setParentPointersInDirectChildren(node);
1711
+ return node;
1712
+ }
1713
+
1714
+ export function ExportNamedDeclaration({
1715
+ parent,
1716
+ ...props
1717
+ }: {
1718
+ ...$ReadOnly<ExportNamedDeclarationProps>,
1719
+ +parent?: ESNode,
1720
+ }): DetachedNode<ExportNamedDeclarationType> {
1721
+ const node = detachedProps<ExportNamedDeclarationType>(parent, {
1722
+ type: 'ExportNamedDeclaration',
1723
+ ...props,
1724
+ });
1725
+ setParentPointersInDirectChildren(node);
1726
+ return node;
1727
+ }
1728
+
1729
+ export function ExportNamespaceSpecifier({
1730
+ parent,
1731
+ ...props
1732
+ }: {
1733
+ ...$ReadOnly<ExportNamespaceSpecifierProps>,
1734
+ +parent?: ESNode,
1735
+ }): DetachedNode<ExportNamespaceSpecifierType> {
1736
+ const node = detachedProps<ExportNamespaceSpecifierType>(parent, {
1737
+ type: 'ExportNamespaceSpecifier',
1738
+ ...props,
1739
+ });
1740
+ setParentPointersInDirectChildren(node);
1741
+ return node;
1742
+ }
1743
+
1744
+ export function ExportSpecifier({
1745
+ parent,
1746
+ ...props
1747
+ }: {
1748
+ ...$ReadOnly<ExportSpecifierProps>,
1749
+ +parent?: ESNode,
1750
+ }): DetachedNode<ExportSpecifierType> {
1751
+ const node = detachedProps<ExportSpecifierType>(parent, {
1752
+ type: 'ExportSpecifier',
1753
+ ...props,
1754
+ });
1755
+ setParentPointersInDirectChildren(node);
1756
+ return node;
1757
+ }
1758
+
1759
+ export function ExpressionStatement({
1760
+ parent,
1761
+ ...props
1762
+ }: {
1763
+ ...$ReadOnly<ExpressionStatementProps>,
1764
+ +parent?: ESNode,
1765
+ }): DetachedNode<ExpressionStatementType> {
1766
+ const node = detachedProps<ExpressionStatementType>(parent, {
1767
+ type: 'ExpressionStatement',
1768
+ ...props,
1769
+ });
1770
+ setParentPointersInDirectChildren(node);
1771
+ return node;
1772
+ }
1773
+
1774
+ export function ForInStatement({
1775
+ parent,
1776
+ ...props
1777
+ }: {
1778
+ ...$ReadOnly<ForInStatementProps>,
1779
+ +parent?: ESNode,
1780
+ }): DetachedNode<ForInStatementType> {
1781
+ const node = detachedProps<ForInStatementType>(parent, {
1782
+ type: 'ForInStatement',
1783
+ ...props,
1784
+ });
1785
+ setParentPointersInDirectChildren(node);
1786
+ return node;
1787
+ }
1788
+
1789
+ export function ForOfStatement({
1790
+ parent,
1791
+ ...props
1792
+ }: {
1793
+ ...$ReadOnly<ForOfStatementProps>,
1794
+ +parent?: ESNode,
1795
+ }): DetachedNode<ForOfStatementType> {
1796
+ const node = detachedProps<ForOfStatementType>(parent, {
1797
+ type: 'ForOfStatement',
1798
+ ...props,
1799
+ });
1800
+ setParentPointersInDirectChildren(node);
1801
+ return node;
1802
+ }
1803
+
1804
+ export function ForStatement({
1805
+ parent,
1806
+ ...props
1807
+ }: {
1808
+ ...$ReadOnly<ForStatementProps>,
1809
+ +parent?: ESNode,
1810
+ }): DetachedNode<ForStatementType> {
1811
+ const node = detachedProps<ForStatementType>(parent, {
1812
+ type: 'ForStatement',
1813
+ ...props,
1814
+ });
1815
+ setParentPointersInDirectChildren(node);
1816
+ return node;
1817
+ }
1818
+
1819
+ export function FunctionDeclaration({
1820
+ parent,
1821
+ ...props
1822
+ }: {
1823
+ ...$ReadOnly<FunctionDeclarationProps>,
1824
+ +parent?: ESNode,
1825
+ }): DetachedNode<FunctionDeclarationType> {
1826
+ const node = detachedProps<FunctionDeclarationType>(parent, {
1827
+ type: 'FunctionDeclaration',
1828
+ ...props,
1829
+ });
1830
+ setParentPointersInDirectChildren(node);
1831
+ return node;
1832
+ }
1833
+
1834
+ export function FunctionExpression({
1835
+ parent,
1836
+ ...props
1837
+ }: {
1838
+ ...$ReadOnly<FunctionExpressionProps>,
1839
+ +parent?: ESNode,
1840
+ }): DetachedNode<FunctionExpressionType> {
1841
+ const node = detachedProps<FunctionExpressionType>(parent, {
1842
+ type: 'FunctionExpression',
1843
+ ...props,
1844
+ });
1845
+ setParentPointersInDirectChildren(node);
1846
+ return node;
1847
+ }
1848
+
1849
+ export function FunctionTypeAnnotation({
1850
+ parent,
1851
+ ...props
1852
+ }: {
1853
+ ...$ReadOnly<FunctionTypeAnnotationProps>,
1854
+ +parent?: ESNode,
1855
+ }): DetachedNode<FunctionTypeAnnotationType> {
1856
+ const node = detachedProps<FunctionTypeAnnotationType>(parent, {
1857
+ type: 'FunctionTypeAnnotation',
1858
+ ...props,
1859
+ });
1860
+ setParentPointersInDirectChildren(node);
1861
+ return node;
1862
+ }
1863
+
1864
+ export function FunctionTypeParam({
1865
+ parent,
1866
+ ...props
1867
+ }: {
1868
+ ...$ReadOnly<FunctionTypeParamProps>,
1869
+ +parent?: ESNode,
1870
+ }): DetachedNode<FunctionTypeParamType> {
1871
+ const node = detachedProps<FunctionTypeParamType>(parent, {
1872
+ type: 'FunctionTypeParam',
1873
+ ...props,
1874
+ });
1875
+ setParentPointersInDirectChildren(node);
1876
+ return node;
1877
+ }
1878
+
1879
+ export function GenericTypeAnnotation({
1880
+ parent,
1881
+ ...props
1882
+ }: {
1883
+ ...$ReadOnly<GenericTypeAnnotationProps>,
1884
+ +parent?: ESNode,
1885
+ }): DetachedNode<GenericTypeAnnotationType> {
1886
+ const node = detachedProps<GenericTypeAnnotationType>(parent, {
1887
+ type: 'GenericTypeAnnotation',
1888
+ ...props,
1889
+ });
1890
+ setParentPointersInDirectChildren(node);
1891
+ return node;
1892
+ }
1893
+
1894
+ export function IfStatement({
1895
+ parent,
1896
+ ...props
1897
+ }: {
1898
+ ...$ReadOnly<IfStatementProps>,
1899
+ +parent?: ESNode,
1900
+ }): DetachedNode<IfStatementType> {
1901
+ const node = detachedProps<IfStatementType>(parent, {
1902
+ type: 'IfStatement',
1903
+ ...props,
1904
+ });
1905
+ setParentPointersInDirectChildren(node);
1906
+ return node;
1907
+ }
1908
+
1909
+ export function ImportAttribute({
1910
+ parent,
1911
+ ...props
1912
+ }: {
1913
+ ...$ReadOnly<ImportAttributeProps>,
1914
+ +parent?: ESNode,
1915
+ }): DetachedNode<ImportAttributeType> {
1916
+ const node = detachedProps<ImportAttributeType>(parent, {
1917
+ type: 'ImportAttribute',
1918
+ ...props,
1919
+ });
1920
+ setParentPointersInDirectChildren(node);
1921
+ return node;
1922
+ }
1923
+
1924
+ export function ImportDeclaration({
1925
+ parent,
1926
+ ...props
1927
+ }: {
1928
+ ...$ReadOnly<ImportDeclarationProps>,
1929
+ +parent?: ESNode,
1930
+ }): DetachedNode<ImportDeclarationType> {
1931
+ const node = detachedProps<ImportDeclarationType>(parent, {
1932
+ type: 'ImportDeclaration',
1933
+ ...props,
1934
+ });
1935
+ setParentPointersInDirectChildren(node);
1936
+ return node;
1937
+ }
1938
+
1939
+ export function ImportDefaultSpecifier({
1940
+ parent,
1941
+ ...props
1942
+ }: {
1943
+ ...$ReadOnly<ImportDefaultSpecifierProps>,
1944
+ +parent?: ESNode,
1945
+ }): DetachedNode<ImportDefaultSpecifierType> {
1946
+ const node = detachedProps<ImportDefaultSpecifierType>(parent, {
1947
+ type: 'ImportDefaultSpecifier',
1948
+ ...props,
1949
+ });
1950
+ setParentPointersInDirectChildren(node);
1951
+ return node;
1952
+ }
1953
+
1954
+ export function ImportExpression({
1955
+ parent,
1956
+ ...props
1957
+ }: {
1958
+ ...$ReadOnly<ImportExpressionProps>,
1959
+ +parent?: ESNode,
1960
+ }): DetachedNode<ImportExpressionType> {
1961
+ const node = detachedProps<ImportExpressionType>(parent, {
1962
+ type: 'ImportExpression',
1963
+ ...props,
1964
+ });
1965
+ setParentPointersInDirectChildren(node);
1966
+ return node;
1967
+ }
1968
+
1969
+ export function ImportNamespaceSpecifier({
1970
+ parent,
1971
+ ...props
1972
+ }: {
1973
+ ...$ReadOnly<ImportNamespaceSpecifierProps>,
1974
+ +parent?: ESNode,
1975
+ }): DetachedNode<ImportNamespaceSpecifierType> {
1976
+ const node = detachedProps<ImportNamespaceSpecifierType>(parent, {
1977
+ type: 'ImportNamespaceSpecifier',
1978
+ ...props,
1979
+ });
1980
+ setParentPointersInDirectChildren(node);
1981
+ return node;
1982
+ }
1983
+
1984
+ export function ImportSpecifier({
1985
+ parent,
1986
+ ...props
1987
+ }: {
1988
+ ...$ReadOnly<ImportSpecifierProps>,
1989
+ +parent?: ESNode,
1990
+ }): DetachedNode<ImportSpecifierType> {
1991
+ const node = detachedProps<ImportSpecifierType>(parent, {
1992
+ type: 'ImportSpecifier',
1993
+ ...props,
1994
+ });
1995
+ setParentPointersInDirectChildren(node);
1996
+ return node;
1997
+ }
1998
+
1999
+ export function IndexedAccessType({
2000
+ parent,
2001
+ ...props
2002
+ }: {
2003
+ ...$ReadOnly<IndexedAccessTypeProps>,
2004
+ +parent?: ESNode,
2005
+ }): DetachedNode<IndexedAccessTypeType> {
2006
+ const node = detachedProps<IndexedAccessTypeType>(parent, {
2007
+ type: 'IndexedAccessType',
2008
+ ...props,
2009
+ });
2010
+ setParentPointersInDirectChildren(node);
2011
+ return node;
2012
+ }
2013
+
2014
+ export function InferredPredicate({
2015
+ parent,
2016
+ }: {
2017
+ +parent?: ESNode,
2018
+ } = {}): DetachedNode<InferredPredicateType> {
2019
+ return detachedProps<InferredPredicateType>(parent, {
2020
+ type: 'InferredPredicate',
2021
+ });
2022
+ }
2023
+
2024
+ export function InterfaceDeclaration({
2025
+ parent,
2026
+ ...props
2027
+ }: {
2028
+ ...$ReadOnly<InterfaceDeclarationProps>,
2029
+ +parent?: ESNode,
2030
+ }): DetachedNode<InterfaceDeclarationType> {
2031
+ const node = detachedProps<InterfaceDeclarationType>(parent, {
2032
+ type: 'InterfaceDeclaration',
2033
+ ...props,
2034
+ });
2035
+ setParentPointersInDirectChildren(node);
2036
+ return node;
2037
+ }
2038
+
2039
+ export function InterfaceExtends({
2040
+ parent,
2041
+ ...props
2042
+ }: {
2043
+ ...$ReadOnly<InterfaceExtendsProps>,
2044
+ +parent?: ESNode,
2045
+ }): DetachedNode<InterfaceExtendsType> {
2046
+ const node = detachedProps<InterfaceExtendsType>(parent, {
2047
+ type: 'InterfaceExtends',
2048
+ ...props,
2049
+ });
2050
+ setParentPointersInDirectChildren(node);
2051
+ return node;
2052
+ }
2053
+
2054
+ export function InterfaceTypeAnnotation({
2055
+ parent,
2056
+ ...props
2057
+ }: {
2058
+ ...$ReadOnly<InterfaceTypeAnnotationProps>,
2059
+ +parent?: ESNode,
2060
+ }): DetachedNode<InterfaceTypeAnnotationType> {
2061
+ const node = detachedProps<InterfaceTypeAnnotationType>(parent, {
2062
+ type: 'InterfaceTypeAnnotation',
2063
+ ...props,
2064
+ });
2065
+ setParentPointersInDirectChildren(node);
2066
+ return node;
2067
+ }
2068
+
2069
+ export function IntersectionTypeAnnotation({
2070
+ parent,
2071
+ ...props
2072
+ }: {
2073
+ ...$ReadOnly<IntersectionTypeAnnotationProps>,
2074
+ +parent?: ESNode,
2075
+ }): DetachedNode<IntersectionTypeAnnotationType> {
2076
+ const node = detachedProps<IntersectionTypeAnnotationType>(parent, {
2077
+ type: 'IntersectionTypeAnnotation',
2078
+ ...props,
2079
+ });
2080
+ setParentPointersInDirectChildren(node);
2081
+ return node;
2082
+ }
2083
+
2084
+ export function JSXAttribute({
2085
+ parent,
2086
+ ...props
2087
+ }: {
2088
+ ...$ReadOnly<JSXAttributeProps>,
2089
+ +parent?: ESNode,
2090
+ }): DetachedNode<JSXAttributeType> {
2091
+ const node = detachedProps<JSXAttributeType>(parent, {
2092
+ type: 'JSXAttribute',
2093
+ ...props,
2094
+ });
2095
+ setParentPointersInDirectChildren(node);
2096
+ return node;
2097
+ }
2098
+
2099
+ export function JSXClosingElement({
2100
+ parent,
2101
+ ...props
2102
+ }: {
2103
+ ...$ReadOnly<JSXClosingElementProps>,
2104
+ +parent?: ESNode,
2105
+ }): DetachedNode<JSXClosingElementType> {
2106
+ const node = detachedProps<JSXClosingElementType>(parent, {
2107
+ type: 'JSXClosingElement',
2108
+ ...props,
2109
+ });
2110
+ setParentPointersInDirectChildren(node);
2111
+ return node;
2112
+ }
2113
+
2114
+ export function JSXClosingFragment({
2115
+ parent,
2116
+ }: {
2117
+ +parent?: ESNode,
2118
+ } = {}): DetachedNode<JSXClosingFragmentType> {
2119
+ return detachedProps<JSXClosingFragmentType>(parent, {
2120
+ type: 'JSXClosingFragment',
2121
+ });
2122
+ }
2123
+
2124
+ export function JSXElement({
2125
+ parent,
2126
+ ...props
2127
+ }: {
2128
+ ...$ReadOnly<JSXElementProps>,
2129
+ +parent?: ESNode,
2130
+ }): DetachedNode<JSXElementType> {
2131
+ const node = detachedProps<JSXElementType>(parent, {
2132
+ type: 'JSXElement',
2133
+ ...props,
2134
+ });
2135
+ setParentPointersInDirectChildren(node);
2136
+ return node;
2137
+ }
2138
+
2139
+ export function JSXEmptyExpression({
2140
+ parent,
2141
+ }: {
2142
+ +parent?: ESNode,
2143
+ } = {}): DetachedNode<JSXEmptyExpressionType> {
2144
+ return detachedProps<JSXEmptyExpressionType>(parent, {
2145
+ type: 'JSXEmptyExpression',
2146
+ });
2147
+ }
2148
+
2149
+ export function JSXExpressionContainer({
2150
+ parent,
2151
+ ...props
2152
+ }: {
2153
+ ...$ReadOnly<JSXExpressionContainerProps>,
2154
+ +parent?: ESNode,
2155
+ }): DetachedNode<JSXExpressionContainerType> {
2156
+ const node = detachedProps<JSXExpressionContainerType>(parent, {
2157
+ type: 'JSXExpressionContainer',
2158
+ ...props,
2159
+ });
2160
+ setParentPointersInDirectChildren(node);
2161
+ return node;
2162
+ }
2163
+
2164
+ export function JSXFragment({
2165
+ parent,
2166
+ ...props
2167
+ }: {
2168
+ ...$ReadOnly<JSXFragmentProps>,
2169
+ +parent?: ESNode,
2170
+ }): DetachedNode<JSXFragmentType> {
2171
+ const node = detachedProps<JSXFragmentType>(parent, {
2172
+ type: 'JSXFragment',
2173
+ ...props,
2174
+ });
2175
+ setParentPointersInDirectChildren(node);
2176
+ return node;
2177
+ }
2178
+
2179
+ export function JSXIdentifier({
2180
+ parent,
2181
+ ...props
2182
+ }: {
2183
+ ...$ReadOnly<JSXIdentifierProps>,
2184
+ +parent?: ESNode,
2185
+ }): DetachedNode<JSXIdentifierType> {
2186
+ const node = detachedProps<JSXIdentifierType>(parent, {
2187
+ type: 'JSXIdentifier',
2188
+ ...props,
2189
+ });
2190
+ setParentPointersInDirectChildren(node);
2191
+ return node;
2192
+ }
2193
+
2194
+ export function JSXMemberExpression({
2195
+ parent,
2196
+ ...props
2197
+ }: {
2198
+ ...$ReadOnly<JSXMemberExpressionProps>,
2199
+ +parent?: ESNode,
2200
+ }): DetachedNode<JSXMemberExpressionType> {
2201
+ const node = detachedProps<JSXMemberExpressionType>(parent, {
2202
+ type: 'JSXMemberExpression',
2203
+ ...props,
2204
+ });
2205
+ setParentPointersInDirectChildren(node);
2206
+ return node;
2207
+ }
2208
+
2209
+ export function JSXNamespacedName({
2210
+ parent,
2211
+ ...props
2212
+ }: {
2213
+ ...$ReadOnly<JSXNamespacedNameProps>,
2214
+ +parent?: ESNode,
2215
+ }): DetachedNode<JSXNamespacedNameType> {
2216
+ const node = detachedProps<JSXNamespacedNameType>(parent, {
2217
+ type: 'JSXNamespacedName',
2218
+ ...props,
2219
+ });
2220
+ setParentPointersInDirectChildren(node);
2221
+ return node;
2222
+ }
2223
+
2224
+ export function JSXOpeningElement({
2225
+ parent,
2226
+ ...props
2227
+ }: {
2228
+ ...$ReadOnly<JSXOpeningElementProps>,
2229
+ +parent?: ESNode,
2230
+ }): DetachedNode<JSXOpeningElementType> {
2231
+ const node = detachedProps<JSXOpeningElementType>(parent, {
2232
+ type: 'JSXOpeningElement',
2233
+ ...props,
2234
+ });
2235
+ setParentPointersInDirectChildren(node);
2236
+ return node;
2237
+ }
2238
+
2239
+ export function JSXOpeningFragment({
2240
+ parent,
2241
+ }: {
2242
+ +parent?: ESNode,
2243
+ } = {}): DetachedNode<JSXOpeningFragmentType> {
2244
+ return detachedProps<JSXOpeningFragmentType>(parent, {
2245
+ type: 'JSXOpeningFragment',
2246
+ });
2247
+ }
2248
+
2249
+ export function JSXSpreadAttribute({
2250
+ parent,
2251
+ ...props
2252
+ }: {
2253
+ ...$ReadOnly<JSXSpreadAttributeProps>,
2254
+ +parent?: ESNode,
2255
+ }): DetachedNode<JSXSpreadAttributeType> {
2256
+ const node = detachedProps<JSXSpreadAttributeType>(parent, {
2257
+ type: 'JSXSpreadAttribute',
2258
+ ...props,
2259
+ });
2260
+ setParentPointersInDirectChildren(node);
2261
+ return node;
2262
+ }
2263
+
2264
+ export function JSXSpreadChild({
2265
+ parent,
2266
+ ...props
2267
+ }: {
2268
+ ...$ReadOnly<JSXSpreadChildProps>,
2269
+ +parent?: ESNode,
2270
+ }): DetachedNode<JSXSpreadChildType> {
2271
+ const node = detachedProps<JSXSpreadChildType>(parent, {
2272
+ type: 'JSXSpreadChild',
2273
+ ...props,
2274
+ });
2275
+ setParentPointersInDirectChildren(node);
2276
+ return node;
2277
+ }
2278
+
2279
+ export function JSXText({
2280
+ parent,
2281
+ ...props
2282
+ }: {
2283
+ ...$ReadOnly<JSXTextProps>,
2284
+ +parent?: ESNode,
2285
+ }): DetachedNode<JSXTextType> {
2286
+ const node = detachedProps<JSXTextType>(parent, {
2287
+ type: 'JSXText',
2288
+ ...props,
2289
+ });
2290
+ setParentPointersInDirectChildren(node);
2291
+ return node;
2292
+ }
2293
+
2294
+ export function LabeledStatement({
2295
+ parent,
2296
+ ...props
2297
+ }: {
2298
+ ...$ReadOnly<LabeledStatementProps>,
2299
+ +parent?: ESNode,
2300
+ }): DetachedNode<LabeledStatementType> {
2301
+ const node = detachedProps<LabeledStatementType>(parent, {
2302
+ type: 'LabeledStatement',
2303
+ ...props,
2304
+ });
2305
+ setParentPointersInDirectChildren(node);
2306
+ return node;
2307
+ }
2308
+
2309
+ export function LogicalExpression({
2310
+ parent,
2311
+ ...props
2312
+ }: {
2313
+ ...$ReadOnly<LogicalExpressionProps>,
2314
+ +parent?: ESNode,
2315
+ }): DetachedNode<LogicalExpressionType> {
2316
+ const node = detachedProps<LogicalExpressionType>(parent, {
2317
+ type: 'LogicalExpression',
2318
+ ...props,
2319
+ });
2320
+ setParentPointersInDirectChildren(node);
2321
+ return node;
2322
+ }
2323
+
2324
+ export function MemberExpression({
2325
+ parent,
2326
+ ...props
2327
+ }: {
2328
+ ...$ReadOnly<MemberExpressionProps>,
2329
+ +parent?: ESNode,
2330
+ }): DetachedNode<MemberExpressionType> {
2331
+ const node = detachedProps<MemberExpressionType>(parent, {
2332
+ type: 'MemberExpression',
2333
+ ...props,
2334
+ });
2335
+ setParentPointersInDirectChildren(node);
2336
+ return node;
2337
+ }
2338
+
2339
+ export function MetaProperty({
2340
+ parent,
2341
+ ...props
2342
+ }: {
2343
+ ...$ReadOnly<MetaPropertyProps>,
2344
+ +parent?: ESNode,
2345
+ }): DetachedNode<MetaPropertyType> {
2346
+ const node = detachedProps<MetaPropertyType>(parent, {
2347
+ type: 'MetaProperty',
2348
+ ...props,
2349
+ });
2350
+ setParentPointersInDirectChildren(node);
2351
+ return node;
2352
+ }
2353
+
2354
+ export function MethodDefinition({
2355
+ parent,
2356
+ ...props
2357
+ }: {
2358
+ ...$ReadOnly<MethodDefinitionProps>,
2359
+ +parent?: ESNode,
2360
+ }): DetachedNode<MethodDefinitionType> {
2361
+ const node = detachedProps<MethodDefinitionType>(parent, {
2362
+ type: 'MethodDefinition',
2363
+ ...props,
2364
+ });
2365
+ setParentPointersInDirectChildren(node);
2366
+ return node;
2367
+ }
2368
+
2369
+ export function MixedTypeAnnotation({
2370
+ parent,
2371
+ }: {
2372
+ +parent?: ESNode,
2373
+ } = {}): DetachedNode<MixedTypeAnnotationType> {
2374
+ return detachedProps<MixedTypeAnnotationType>(parent, {
2375
+ type: 'MixedTypeAnnotation',
2376
+ });
2377
+ }
2378
+
2379
+ export function NewExpression({
2380
+ parent,
2381
+ ...props
2382
+ }: {
2383
+ ...$ReadOnly<NewExpressionProps>,
2384
+ +parent?: ESNode,
2385
+ }): DetachedNode<NewExpressionType> {
2386
+ const node = detachedProps<NewExpressionType>(parent, {
2387
+ type: 'NewExpression',
2388
+ ...props,
2389
+ });
2390
+ setParentPointersInDirectChildren(node);
2391
+ return node;
2392
+ }
2393
+
2394
+ export function NullableTypeAnnotation({
2395
+ parent,
2396
+ ...props
2397
+ }: {
2398
+ ...$ReadOnly<NullableTypeAnnotationProps>,
2399
+ +parent?: ESNode,
2400
+ }): DetachedNode<NullableTypeAnnotationType> {
2401
+ const node = detachedProps<NullableTypeAnnotationType>(parent, {
2402
+ type: 'NullableTypeAnnotation',
2403
+ ...props,
2404
+ });
2405
+ setParentPointersInDirectChildren(node);
2406
+ return node;
2407
+ }
2408
+
2409
+ export function NullLiteralTypeAnnotation({
2410
+ parent,
2411
+ }: {
2412
+ +parent?: ESNode,
2413
+ } = {}): DetachedNode<NullLiteralTypeAnnotationType> {
2414
+ return detachedProps<NullLiteralTypeAnnotationType>(parent, {
2415
+ type: 'NullLiteralTypeAnnotation',
2416
+ });
2417
+ }
2418
+
2419
+ export function NumberLiteralTypeAnnotation({
2420
+ parent,
2421
+ ...props
2422
+ }: {
2423
+ ...$ReadOnly<NumberLiteralTypeAnnotationProps>,
2424
+ +parent?: ESNode,
2425
+ }): DetachedNode<NumberLiteralTypeAnnotationType> {
2426
+ const node = detachedProps<NumberLiteralTypeAnnotationType>(parent, {
2427
+ type: 'NumberLiteralTypeAnnotation',
2428
+ ...props,
2429
+ });
2430
+ setParentPointersInDirectChildren(node);
2431
+ return node;
2432
+ }
2433
+
2434
+ export function NumberTypeAnnotation({
2435
+ parent,
2436
+ }: {
2437
+ +parent?: ESNode,
2438
+ } = {}): DetachedNode<NumberTypeAnnotationType> {
2439
+ return detachedProps<NumberTypeAnnotationType>(parent, {
2440
+ type: 'NumberTypeAnnotation',
2441
+ });
2442
+ }
2443
+
2444
+ export function ObjectExpression({
2445
+ parent,
2446
+ ...props
2447
+ }: {
2448
+ ...$ReadOnly<ObjectExpressionProps>,
2449
+ +parent?: ESNode,
2450
+ }): DetachedNode<ObjectExpressionType> {
2451
+ const node = detachedProps<ObjectExpressionType>(parent, {
2452
+ type: 'ObjectExpression',
2453
+ ...props,
2454
+ });
2455
+ setParentPointersInDirectChildren(node);
2456
+ return node;
2457
+ }
2458
+
2459
+ export function ObjectPattern({
2460
+ parent,
2461
+ ...props
2462
+ }: {
2463
+ ...$ReadOnly<ObjectPatternProps>,
2464
+ +parent?: ESNode,
2465
+ }): DetachedNode<ObjectPatternType> {
2466
+ const node = detachedProps<ObjectPatternType>(parent, {
2467
+ type: 'ObjectPattern',
2468
+ ...props,
2469
+ });
2470
+ setParentPointersInDirectChildren(node);
2471
+ return node;
2472
+ }
2473
+
2474
+ export function ObjectTypeAnnotation({
2475
+ parent,
2476
+ ...props
2477
+ }: {
2478
+ ...$ReadOnly<ObjectTypeAnnotationProps>,
2479
+ +parent?: ESNode,
2480
+ }): DetachedNode<ObjectTypeAnnotationType> {
2481
+ const node = detachedProps<ObjectTypeAnnotationType>(parent, {
2482
+ type: 'ObjectTypeAnnotation',
2483
+ ...props,
2484
+ });
2485
+ setParentPointersInDirectChildren(node);
2486
+ return node;
2487
+ }
2488
+
2489
+ export function ObjectTypeCallProperty({
2490
+ parent,
2491
+ ...props
2492
+ }: {
2493
+ ...$ReadOnly<ObjectTypeCallPropertyProps>,
2494
+ +parent?: ESNode,
2495
+ }): DetachedNode<ObjectTypeCallPropertyType> {
2496
+ const node = detachedProps<ObjectTypeCallPropertyType>(parent, {
2497
+ type: 'ObjectTypeCallProperty',
2498
+ ...props,
2499
+ });
2500
+ setParentPointersInDirectChildren(node);
2501
+ return node;
2502
+ }
2503
+
2504
+ export function ObjectTypeIndexer({
2505
+ parent,
2506
+ ...props
2507
+ }: {
2508
+ ...$ReadOnly<ObjectTypeIndexerProps>,
2509
+ +parent?: ESNode,
2510
+ }): DetachedNode<ObjectTypeIndexerType> {
2511
+ const node = detachedProps<ObjectTypeIndexerType>(parent, {
2512
+ type: 'ObjectTypeIndexer',
2513
+ ...props,
2514
+ });
2515
+ setParentPointersInDirectChildren(node);
2516
+ return node;
2517
+ }
2518
+
2519
+ export function ObjectTypeInternalSlot({
2520
+ parent,
2521
+ ...props
2522
+ }: {
2523
+ ...$ReadOnly<ObjectTypeInternalSlotProps>,
2524
+ +parent?: ESNode,
2525
+ }): DetachedNode<ObjectTypeInternalSlotType> {
2526
+ const node = detachedProps<ObjectTypeInternalSlotType>(parent, {
2527
+ type: 'ObjectTypeInternalSlot',
2528
+ ...props,
2529
+ });
2530
+ setParentPointersInDirectChildren(node);
2531
+ return node;
2532
+ }
2533
+
2534
+ export function ObjectTypeProperty({
2535
+ parent,
2536
+ ...props
2537
+ }: {
2538
+ ...$ReadOnly<ObjectTypePropertyProps>,
2539
+ +parent?: ESNode,
2540
+ }): DetachedNode<ObjectTypePropertyType> {
2541
+ const node = detachedProps<ObjectTypePropertyType>(parent, {
2542
+ type: 'ObjectTypeProperty',
2543
+ ...props,
2544
+ });
2545
+ setParentPointersInDirectChildren(node);
2546
+ return node;
2547
+ }
2548
+
2549
+ export function ObjectTypeSpreadProperty({
2550
+ parent,
2551
+ ...props
2552
+ }: {
2553
+ ...$ReadOnly<ObjectTypeSpreadPropertyProps>,
2554
+ +parent?: ESNode,
2555
+ }): DetachedNode<ObjectTypeSpreadPropertyType> {
2556
+ const node = detachedProps<ObjectTypeSpreadPropertyType>(parent, {
2557
+ type: 'ObjectTypeSpreadProperty',
2558
+ ...props,
2559
+ });
2560
+ setParentPointersInDirectChildren(node);
2561
+ return node;
2562
+ }
2563
+
2564
+ export function OpaqueType({
2565
+ parent,
2566
+ ...props
2567
+ }: {
2568
+ ...$ReadOnly<OpaqueTypeProps>,
2569
+ +parent?: ESNode,
2570
+ }): DetachedNode<OpaqueTypeType> {
2571
+ const node = detachedProps<OpaqueTypeType>(parent, {
2572
+ type: 'OpaqueType',
2573
+ ...props,
2574
+ });
2575
+ setParentPointersInDirectChildren(node);
2576
+ return node;
2577
+ }
2578
+
2579
+ export function OptionalCallExpression({
2580
+ parent,
2581
+ ...props
2582
+ }: {
2583
+ ...$ReadOnly<OptionalCallExpressionProps>,
2584
+ +parent?: ESNode,
2585
+ }): DetachedNode<OptionalCallExpressionType> {
2586
+ const node = detachedProps<OptionalCallExpressionType>(parent, {
2587
+ type: 'OptionalCallExpression',
2588
+ ...props,
2589
+ });
2590
+ setParentPointersInDirectChildren(node);
2591
+ return node;
2592
+ }
2593
+
2594
+ export function OptionalIndexedAccessType({
2595
+ parent,
2596
+ ...props
2597
+ }: {
2598
+ ...$ReadOnly<OptionalIndexedAccessTypeProps>,
2599
+ +parent?: ESNode,
2600
+ }): DetachedNode<OptionalIndexedAccessTypeType> {
2601
+ const node = detachedProps<OptionalIndexedAccessTypeType>(parent, {
2602
+ type: 'OptionalIndexedAccessType',
2603
+ ...props,
2604
+ });
2605
+ setParentPointersInDirectChildren(node);
2606
+ return node;
2607
+ }
2608
+
2609
+ export function OptionalMemberExpression({
2610
+ parent,
2611
+ ...props
2612
+ }: {
2613
+ ...$ReadOnly<OptionalMemberExpressionProps>,
2614
+ +parent?: ESNode,
2615
+ }): DetachedNode<OptionalMemberExpressionType> {
2616
+ const node = detachedProps<OptionalMemberExpressionType>(parent, {
2617
+ type: 'OptionalMemberExpression',
2618
+ ...props,
2619
+ });
2620
+ setParentPointersInDirectChildren(node);
2621
+ return node;
2622
+ }
2623
+
2624
+ export function PrivateName({
2625
+ parent,
2626
+ ...props
2627
+ }: {
2628
+ ...$ReadOnly<PrivateNameProps>,
2629
+ +parent?: ESNode,
2630
+ }): DetachedNode<PrivateNameType> {
2631
+ const node = detachedProps<PrivateNameType>(parent, {
2632
+ type: 'PrivateName',
2633
+ ...props,
2634
+ });
2635
+ setParentPointersInDirectChildren(node);
2636
+ return node;
2637
+ }
2638
+
2639
+ export function Property({
2640
+ parent,
2641
+ ...props
2642
+ }: {
2643
+ ...$ReadOnly<PropertyProps>,
2644
+ +parent?: ESNode,
2645
+ }): DetachedNode<PropertyType> {
2646
+ const node = detachedProps<PropertyType>(parent, {
2647
+ type: 'Property',
2648
+ ...props,
2649
+ });
2650
+ setParentPointersInDirectChildren(node);
2651
+ return node;
2652
+ }
2653
+
2654
+ export function QualifiedTypeIdentifier({
2655
+ parent,
2656
+ ...props
2657
+ }: {
2658
+ ...$ReadOnly<QualifiedTypeIdentifierProps>,
2659
+ +parent?: ESNode,
2660
+ }): DetachedNode<QualifiedTypeIdentifierType> {
2661
+ const node = detachedProps<QualifiedTypeIdentifierType>(parent, {
2662
+ type: 'QualifiedTypeIdentifier',
2663
+ ...props,
2664
+ });
2665
+ setParentPointersInDirectChildren(node);
2666
+ return node;
2667
+ }
2668
+
2669
+ export function RestElement({
2670
+ parent,
2671
+ ...props
2672
+ }: {
2673
+ ...$ReadOnly<RestElementProps>,
2674
+ +parent?: ESNode,
2675
+ }): DetachedNode<RestElementType> {
2676
+ const node = detachedProps<RestElementType>(parent, {
2677
+ type: 'RestElement',
2678
+ ...props,
2679
+ });
2680
+ setParentPointersInDirectChildren(node);
2681
+ return node;
2682
+ }
2683
+
2684
+ export function ReturnStatement({
2685
+ parent,
2686
+ ...props
2687
+ }: {
2688
+ ...$ReadOnly<ReturnStatementProps>,
2689
+ +parent?: ESNode,
2690
+ }): DetachedNode<ReturnStatementType> {
2691
+ const node = detachedProps<ReturnStatementType>(parent, {
2692
+ type: 'ReturnStatement',
2693
+ ...props,
2694
+ });
2695
+ setParentPointersInDirectChildren(node);
2696
+ return node;
2697
+ }
2698
+
2699
+ export function SequenceExpression({
2700
+ parent,
2701
+ ...props
2702
+ }: {
2703
+ ...$ReadOnly<SequenceExpressionProps>,
2704
+ +parent?: ESNode,
2705
+ }): DetachedNode<SequenceExpressionType> {
2706
+ const node = detachedProps<SequenceExpressionType>(parent, {
2707
+ type: 'SequenceExpression',
2708
+ ...props,
2709
+ });
2710
+ setParentPointersInDirectChildren(node);
2711
+ return node;
2712
+ }
2713
+
2714
+ export function SpreadElement({
2715
+ parent,
2716
+ ...props
2717
+ }: {
2718
+ ...$ReadOnly<SpreadElementProps>,
2719
+ +parent?: ESNode,
2720
+ }): DetachedNode<SpreadElementType> {
2721
+ const node = detachedProps<SpreadElementType>(parent, {
2722
+ type: 'SpreadElement',
2723
+ ...props,
2724
+ });
2725
+ setParentPointersInDirectChildren(node);
2726
+ return node;
2727
+ }
2728
+
2729
+ export function StringLiteralTypeAnnotation({
2730
+ parent,
2731
+ ...props
2732
+ }: {
2733
+ ...$ReadOnly<StringLiteralTypeAnnotationProps>,
2734
+ +parent?: ESNode,
2735
+ }): DetachedNode<StringLiteralTypeAnnotationType> {
2736
+ const node = detachedProps<StringLiteralTypeAnnotationType>(parent, {
2737
+ type: 'StringLiteralTypeAnnotation',
2738
+ ...props,
2739
+ });
2740
+ setParentPointersInDirectChildren(node);
2741
+ return node;
2742
+ }
2743
+
2744
+ export function StringTypeAnnotation({
2745
+ parent,
2746
+ }: {
2747
+ +parent?: ESNode,
2748
+ } = {}): DetachedNode<StringTypeAnnotationType> {
2749
+ return detachedProps<StringTypeAnnotationType>(parent, {
2750
+ type: 'StringTypeAnnotation',
2751
+ });
2752
+ }
2753
+
2754
+ export function Super({
2755
+ parent,
2756
+ }: {
2757
+ +parent?: ESNode,
2758
+ } = {}): DetachedNode<SuperType> {
2759
+ return detachedProps<SuperType>(parent, {
2760
+ type: 'Super',
2761
+ });
2762
+ }
2763
+
2764
+ export function SwitchCase({
2765
+ parent,
2766
+ ...props
2767
+ }: {
2768
+ ...$ReadOnly<SwitchCaseProps>,
2769
+ +parent?: ESNode,
2770
+ }): DetachedNode<SwitchCaseType> {
2771
+ const node = detachedProps<SwitchCaseType>(parent, {
2772
+ type: 'SwitchCase',
2773
+ ...props,
2774
+ });
2775
+ setParentPointersInDirectChildren(node);
2776
+ return node;
2777
+ }
2778
+
2779
+ export function SwitchStatement({
2780
+ parent,
2781
+ ...props
2782
+ }: {
2783
+ ...$ReadOnly<SwitchStatementProps>,
2784
+ +parent?: ESNode,
2785
+ }): DetachedNode<SwitchStatementType> {
2786
+ const node = detachedProps<SwitchStatementType>(parent, {
2787
+ type: 'SwitchStatement',
2788
+ ...props,
2789
+ });
2790
+ setParentPointersInDirectChildren(node);
2791
+ return node;
2792
+ }
2793
+
2794
+ export function SymbolTypeAnnotation({
2795
+ parent,
2796
+ }: {
2797
+ +parent?: ESNode,
2798
+ } = {}): DetachedNode<SymbolTypeAnnotationType> {
2799
+ return detachedProps<SymbolTypeAnnotationType>(parent, {
2800
+ type: 'SymbolTypeAnnotation',
2801
+ });
2802
+ }
2803
+
2804
+ export function TaggedTemplateExpression({
2805
+ parent,
2806
+ ...props
2807
+ }: {
2808
+ ...$ReadOnly<TaggedTemplateExpressionProps>,
2809
+ +parent?: ESNode,
2810
+ }): DetachedNode<TaggedTemplateExpressionType> {
2811
+ const node = detachedProps<TaggedTemplateExpressionType>(parent, {
2812
+ type: 'TaggedTemplateExpression',
2813
+ ...props,
2814
+ });
2815
+ setParentPointersInDirectChildren(node);
2816
+ return node;
2817
+ }
2818
+
2819
+ export function TemplateLiteral({
2820
+ parent,
2821
+ ...props
2822
+ }: {
2823
+ ...$ReadOnly<TemplateLiteralProps>,
2824
+ +parent?: ESNode,
2825
+ }): DetachedNode<TemplateLiteralType> {
2826
+ const node = detachedProps<TemplateLiteralType>(parent, {
2827
+ type: 'TemplateLiteral',
2828
+ ...props,
2829
+ });
2830
+ setParentPointersInDirectChildren(node);
2831
+ return node;
2832
+ }
2833
+
2834
+ export function ThisExpression({
2835
+ parent,
2836
+ }: {
2837
+ +parent?: ESNode,
2838
+ } = {}): DetachedNode<ThisExpressionType> {
2839
+ return detachedProps<ThisExpressionType>(parent, {
2840
+ type: 'ThisExpression',
2841
+ });
2842
+ }
2843
+
2844
+ export function ThisTypeAnnotation({
2845
+ parent,
2846
+ }: {
2847
+ +parent?: ESNode,
2848
+ } = {}): DetachedNode<ThisTypeAnnotationType> {
2849
+ return detachedProps<ThisTypeAnnotationType>(parent, {
2850
+ type: 'ThisTypeAnnotation',
2851
+ });
2852
+ }
2853
+
2854
+ export function ThrowStatement({
2855
+ parent,
2856
+ ...props
2857
+ }: {
2858
+ ...$ReadOnly<ThrowStatementProps>,
2859
+ +parent?: ESNode,
2860
+ }): DetachedNode<ThrowStatementType> {
2861
+ const node = detachedProps<ThrowStatementType>(parent, {
2862
+ type: 'ThrowStatement',
2863
+ ...props,
2864
+ });
2865
+ setParentPointersInDirectChildren(node);
2866
+ return node;
2867
+ }
2868
+
2869
+ export function TryStatement({
2870
+ parent,
2871
+ ...props
2872
+ }: {
2873
+ ...$ReadOnly<TryStatementProps>,
2874
+ +parent?: ESNode,
2875
+ }): DetachedNode<TryStatementType> {
2876
+ const node = detachedProps<TryStatementType>(parent, {
2877
+ type: 'TryStatement',
2878
+ ...props,
2879
+ });
2880
+ setParentPointersInDirectChildren(node);
2881
+ return node;
2882
+ }
2883
+
2884
+ export function TupleTypeAnnotation({
2885
+ parent,
2886
+ ...props
2887
+ }: {
2888
+ ...$ReadOnly<TupleTypeAnnotationProps>,
2889
+ +parent?: ESNode,
2890
+ }): DetachedNode<TupleTypeAnnotationType> {
2891
+ const node = detachedProps<TupleTypeAnnotationType>(parent, {
2892
+ type: 'TupleTypeAnnotation',
2893
+ ...props,
2894
+ });
2895
+ setParentPointersInDirectChildren(node);
2896
+ return node;
2897
+ }
2898
+
2899
+ export function TypeAlias({
2900
+ parent,
2901
+ ...props
2902
+ }: {
2903
+ ...$ReadOnly<TypeAliasProps>,
2904
+ +parent?: ESNode,
2905
+ }): DetachedNode<TypeAliasType> {
2906
+ const node = detachedProps<TypeAliasType>(parent, {
2907
+ type: 'TypeAlias',
2908
+ ...props,
2909
+ });
2910
+ setParentPointersInDirectChildren(node);
2911
+ return node;
2912
+ }
2913
+
2914
+ export function TypeAnnotation({
2915
+ parent,
2916
+ ...props
2917
+ }: {
2918
+ ...$ReadOnly<TypeAnnotationProps>,
2919
+ +parent?: ESNode,
2920
+ }): DetachedNode<TypeAnnotationType> {
2921
+ const node = detachedProps<TypeAnnotationType>(parent, {
2922
+ type: 'TypeAnnotation',
2923
+ ...props,
2924
+ });
2925
+ setParentPointersInDirectChildren(node);
2926
+ return node;
2927
+ }
2928
+
2929
+ export function TypeCastExpression({
2930
+ parent,
2931
+ ...props
2932
+ }: {
2933
+ ...$ReadOnly<TypeCastExpressionProps>,
2934
+ +parent?: ESNode,
2935
+ }): DetachedNode<TypeCastExpressionType> {
2936
+ const node = detachedProps<TypeCastExpressionType>(parent, {
2937
+ type: 'TypeCastExpression',
2938
+ ...props,
2939
+ });
2940
+ setParentPointersInDirectChildren(node);
2941
+ return node;
2942
+ }
2943
+
2944
+ export function TypeofTypeAnnotation({
2945
+ parent,
2946
+ ...props
2947
+ }: {
2948
+ ...$ReadOnly<TypeofTypeAnnotationProps>,
2949
+ +parent?: ESNode,
2950
+ }): DetachedNode<TypeofTypeAnnotationType> {
2951
+ const node = detachedProps<TypeofTypeAnnotationType>(parent, {
2952
+ type: 'TypeofTypeAnnotation',
2953
+ ...props,
2954
+ });
2955
+ setParentPointersInDirectChildren(node);
2956
+ return node;
2957
+ }
2958
+
2959
+ export function TypeParameter({
2960
+ parent,
2961
+ ...props
2962
+ }: {
2963
+ ...$ReadOnly<TypeParameterProps>,
2964
+ +parent?: ESNode,
2965
+ }): DetachedNode<TypeParameterType> {
2966
+ const node = detachedProps<TypeParameterType>(parent, {
2967
+ type: 'TypeParameter',
2968
+ ...props,
2969
+ });
2970
+ setParentPointersInDirectChildren(node);
2971
+ return node;
2972
+ }
2973
+
2974
+ export function TypeParameterDeclaration({
2975
+ parent,
2976
+ ...props
2977
+ }: {
2978
+ ...$ReadOnly<TypeParameterDeclarationProps>,
2979
+ +parent?: ESNode,
2980
+ }): DetachedNode<TypeParameterDeclarationType> {
2981
+ const node = detachedProps<TypeParameterDeclarationType>(parent, {
2982
+ type: 'TypeParameterDeclaration',
2983
+ ...props,
2984
+ });
2985
+ setParentPointersInDirectChildren(node);
2986
+ return node;
2987
+ }
2988
+
2989
+ export function TypeParameterInstantiation({
2990
+ parent,
2991
+ ...props
2992
+ }: {
2993
+ ...$ReadOnly<TypeParameterInstantiationProps>,
2994
+ +parent?: ESNode,
2995
+ }): DetachedNode<TypeParameterInstantiationType> {
2996
+ const node = detachedProps<TypeParameterInstantiationType>(parent, {
2997
+ type: 'TypeParameterInstantiation',
2998
+ ...props,
2999
+ });
3000
+ setParentPointersInDirectChildren(node);
3001
+ return node;
3002
+ }
3003
+
3004
+ export function UnaryExpression({
3005
+ parent,
3006
+ ...props
3007
+ }: {
3008
+ ...$ReadOnly<UnaryExpressionProps>,
3009
+ +parent?: ESNode,
3010
+ }): DetachedNode<UnaryExpressionType> {
3011
+ const node = detachedProps<UnaryExpressionType>(parent, {
3012
+ type: 'UnaryExpression',
3013
+ ...props,
3014
+ });
3015
+ setParentPointersInDirectChildren(node);
3016
+ return node;
3017
+ }
3018
+
3019
+ export function UnionTypeAnnotation({
3020
+ parent,
3021
+ ...props
3022
+ }: {
3023
+ ...$ReadOnly<UnionTypeAnnotationProps>,
3024
+ +parent?: ESNode,
3025
+ }): DetachedNode<UnionTypeAnnotationType> {
3026
+ const node = detachedProps<UnionTypeAnnotationType>(parent, {
3027
+ type: 'UnionTypeAnnotation',
3028
+ ...props,
3029
+ });
3030
+ setParentPointersInDirectChildren(node);
3031
+ return node;
3032
+ }
3033
+
3034
+ export function UpdateExpression({
3035
+ parent,
3036
+ ...props
3037
+ }: {
3038
+ ...$ReadOnly<UpdateExpressionProps>,
3039
+ +parent?: ESNode,
3040
+ }): DetachedNode<UpdateExpressionType> {
3041
+ const node = detachedProps<UpdateExpressionType>(parent, {
3042
+ type: 'UpdateExpression',
3043
+ ...props,
3044
+ });
3045
+ setParentPointersInDirectChildren(node);
3046
+ return node;
3047
+ }
3048
+
3049
+ export function VariableDeclaration({
3050
+ parent,
3051
+ ...props
3052
+ }: {
3053
+ ...$ReadOnly<VariableDeclarationProps>,
3054
+ +parent?: ESNode,
3055
+ }): DetachedNode<VariableDeclarationType> {
3056
+ const node = detachedProps<VariableDeclarationType>(parent, {
3057
+ type: 'VariableDeclaration',
3058
+ ...props,
3059
+ });
3060
+ setParentPointersInDirectChildren(node);
3061
+ return node;
3062
+ }
3063
+
3064
+ export function VariableDeclarator({
3065
+ parent,
3066
+ ...props
3067
+ }: {
3068
+ ...$ReadOnly<VariableDeclaratorProps>,
3069
+ +parent?: ESNode,
3070
+ }): DetachedNode<VariableDeclaratorType> {
3071
+ const node = detachedProps<VariableDeclaratorType>(parent, {
3072
+ type: 'VariableDeclarator',
3073
+ ...props,
3074
+ });
3075
+ setParentPointersInDirectChildren(node);
3076
+ return node;
3077
+ }
3078
+
3079
+ export function Variance({
3080
+ parent,
3081
+ ...props
3082
+ }: {
3083
+ ...$ReadOnly<VarianceProps>,
3084
+ +parent?: ESNode,
3085
+ }): DetachedNode<VarianceType> {
3086
+ const node = detachedProps<VarianceType>(parent, {
3087
+ type: 'Variance',
3088
+ ...props,
3089
+ });
3090
+ setParentPointersInDirectChildren(node);
3091
+ return node;
3092
+ }
3093
+
3094
+ export function VoidTypeAnnotation({
3095
+ parent,
3096
+ }: {
3097
+ +parent?: ESNode,
3098
+ } = {}): DetachedNode<VoidTypeAnnotationType> {
3099
+ return detachedProps<VoidTypeAnnotationType>(parent, {
3100
+ type: 'VoidTypeAnnotation',
3101
+ });
3102
+ }
3103
+
3104
+ export function WhileStatement({
3105
+ parent,
3106
+ ...props
3107
+ }: {
3108
+ ...$ReadOnly<WhileStatementProps>,
3109
+ +parent?: ESNode,
3110
+ }): DetachedNode<WhileStatementType> {
3111
+ const node = detachedProps<WhileStatementType>(parent, {
3112
+ type: 'WhileStatement',
3113
+ ...props,
3114
+ });
3115
+ setParentPointersInDirectChildren(node);
3116
+ return node;
3117
+ }
3118
+
3119
+ export function WithStatement({
3120
+ parent,
3121
+ ...props
3122
+ }: {
3123
+ ...$ReadOnly<WithStatementProps>,
3124
+ +parent?: ESNode,
3125
+ }): DetachedNode<WithStatementType> {
3126
+ const node = detachedProps<WithStatementType>(parent, {
3127
+ type: 'WithStatement',
3128
+ ...props,
3129
+ });
3130
+ setParentPointersInDirectChildren(node);
3131
+ return node;
3132
+ }
3133
+
3134
+ export function YieldExpression({
3135
+ parent,
3136
+ ...props
3137
+ }: {
3138
+ ...$ReadOnly<YieldExpressionProps>,
3139
+ +parent?: ESNode,
3140
+ }): DetachedNode<YieldExpressionType> {
3141
+ const node = detachedProps<YieldExpressionType>(parent, {
3142
+ type: 'YieldExpression',
3143
+ ...props,
3144
+ });
3145
+ setParentPointersInDirectChildren(node);
3146
+ return node;
3147
+ }
3148
+
3149
+ export * from './special-case-node-types';