oxc-parser 0.75.0 → 0.75.1

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.
@@ -43,11 +43,11 @@ function deserializeProgram(pos) {
43
43
 
44
44
  const program = {
45
45
  type: 'Program',
46
- start,
47
- end,
48
46
  body,
49
47
  sourceType: deserializeModuleKind(pos + 125),
50
48
  hashbang: deserializeOptionHashbang(pos + 48),
49
+ start,
50
+ end,
51
51
  };
52
52
  return program;
53
53
  }
@@ -55,36 +55,36 @@ function deserializeProgram(pos) {
55
55
  function deserializeIdentifierName(pos) {
56
56
  return {
57
57
  type: 'Identifier',
58
+ name: deserializeStr(pos + 8),
58
59
  start: deserializeU32(pos),
59
60
  end: deserializeU32(pos + 4),
60
- name: deserializeStr(pos + 8),
61
61
  };
62
62
  }
63
63
 
64
64
  function deserializeIdentifierReference(pos) {
65
65
  return {
66
66
  type: 'Identifier',
67
+ name: deserializeStr(pos + 8),
67
68
  start: deserializeU32(pos),
68
69
  end: deserializeU32(pos + 4),
69
- name: deserializeStr(pos + 8),
70
70
  };
71
71
  }
72
72
 
73
73
  function deserializeBindingIdentifier(pos) {
74
74
  return {
75
75
  type: 'Identifier',
76
+ name: deserializeStr(pos + 8),
76
77
  start: deserializeU32(pos),
77
78
  end: deserializeU32(pos + 4),
78
- name: deserializeStr(pos + 8),
79
79
  };
80
80
  }
81
81
 
82
82
  function deserializeLabelIdentifier(pos) {
83
83
  return {
84
84
  type: 'Identifier',
85
+ name: deserializeStr(pos + 8),
85
86
  start: deserializeU32(pos),
86
87
  end: deserializeU32(pos + 4),
87
- name: deserializeStr(pos + 8),
88
88
  };
89
89
  }
90
90
 
@@ -99,9 +99,9 @@ function deserializeThisExpression(pos) {
99
99
  function deserializeArrayExpression(pos) {
100
100
  return {
101
101
  type: 'ArrayExpression',
102
+ elements: deserializeVecArrayExpressionElement(pos + 8),
102
103
  start: deserializeU32(pos),
103
104
  end: deserializeU32(pos + 4),
104
- elements: deserializeVecArrayExpressionElement(pos + 8),
105
105
  };
106
106
  }
107
107
 
@@ -112,43 +112,43 @@ function deserializeElision(pos) {
112
112
  function deserializeObjectExpression(pos) {
113
113
  return {
114
114
  type: 'ObjectExpression',
115
+ properties: deserializeVecObjectPropertyKind(pos + 8),
115
116
  start: deserializeU32(pos),
116
117
  end: deserializeU32(pos + 4),
117
- properties: deserializeVecObjectPropertyKind(pos + 8),
118
118
  };
119
119
  }
120
120
 
121
121
  function deserializeObjectProperty(pos) {
122
122
  return {
123
123
  type: 'Property',
124
- start: deserializeU32(pos),
125
- end: deserializeU32(pos + 4),
126
124
  kind: deserializePropertyKind(pos + 40),
127
125
  key: deserializePropertyKey(pos + 8),
128
126
  value: deserializeExpression(pos + 24),
129
127
  method: deserializeBool(pos + 41),
130
128
  shorthand: deserializeBool(pos + 42),
131
129
  computed: deserializeBool(pos + 43),
130
+ start: deserializeU32(pos),
131
+ end: deserializeU32(pos + 4),
132
132
  };
133
133
  }
134
134
 
135
135
  function deserializeTemplateLiteral(pos) {
136
136
  return {
137
137
  type: 'TemplateLiteral',
138
- start: deserializeU32(pos),
139
- end: deserializeU32(pos + 4),
140
138
  quasis: deserializeVecTemplateElement(pos + 8),
141
139
  expressions: deserializeVecExpression(pos + 32),
140
+ start: deserializeU32(pos),
141
+ end: deserializeU32(pos + 4),
142
142
  };
143
143
  }
144
144
 
145
145
  function deserializeTaggedTemplateExpression(pos) {
146
146
  return {
147
147
  type: 'TaggedTemplateExpression',
148
- start: deserializeU32(pos),
149
- end: deserializeU32(pos + 4),
150
148
  tag: deserializeExpression(pos + 8),
151
149
  quasi: deserializeTemplateLiteral(pos + 32),
150
+ start: deserializeU32(pos),
151
+ end: deserializeU32(pos + 4),
152
152
  };
153
153
  }
154
154
 
@@ -161,7 +161,7 @@ function deserializeTemplateElement(pos) {
161
161
  value.cooked = value.cooked
162
162
  .replace(/\uFFFD(.{4})/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)));
163
163
  }
164
- return { type: 'TemplateElement', start, end, value, tail };
164
+ return { type: 'TemplateElement', value, tail, start, end };
165
165
  }
166
166
 
167
167
  function deserializeTemplateElementValue(pos) {
@@ -174,153 +174,153 @@ function deserializeTemplateElementValue(pos) {
174
174
  function deserializeComputedMemberExpression(pos) {
175
175
  return {
176
176
  type: 'MemberExpression',
177
- start: deserializeU32(pos),
178
- end: deserializeU32(pos + 4),
179
177
  object: deserializeExpression(pos + 8),
180
178
  property: deserializeExpression(pos + 24),
181
179
  optional: deserializeBool(pos + 40),
182
180
  computed: true,
181
+ start: deserializeU32(pos),
182
+ end: deserializeU32(pos + 4),
183
183
  };
184
184
  }
185
185
 
186
186
  function deserializeStaticMemberExpression(pos) {
187
187
  return {
188
188
  type: 'MemberExpression',
189
- start: deserializeU32(pos),
190
- end: deserializeU32(pos + 4),
191
189
  object: deserializeExpression(pos + 8),
192
190
  property: deserializeIdentifierName(pos + 24),
193
191
  optional: deserializeBool(pos + 48),
194
192
  computed: false,
193
+ start: deserializeU32(pos),
194
+ end: deserializeU32(pos + 4),
195
195
  };
196
196
  }
197
197
 
198
198
  function deserializePrivateFieldExpression(pos) {
199
199
  return {
200
200
  type: 'MemberExpression',
201
- start: deserializeU32(pos),
202
- end: deserializeU32(pos + 4),
203
201
  object: deserializeExpression(pos + 8),
204
202
  property: deserializePrivateIdentifier(pos + 24),
205
203
  optional: deserializeBool(pos + 48),
206
204
  computed: false,
205
+ start: deserializeU32(pos),
206
+ end: deserializeU32(pos + 4),
207
207
  };
208
208
  }
209
209
 
210
210
  function deserializeCallExpression(pos) {
211
211
  return {
212
212
  type: 'CallExpression',
213
- start: deserializeU32(pos),
214
- end: deserializeU32(pos + 4),
215
213
  callee: deserializeExpression(pos + 8),
216
214
  arguments: deserializeVecArgument(pos + 32),
217
215
  optional: deserializeBool(pos + 56),
216
+ start: deserializeU32(pos),
217
+ end: deserializeU32(pos + 4),
218
218
  };
219
219
  }
220
220
 
221
221
  function deserializeNewExpression(pos) {
222
222
  return {
223
223
  type: 'NewExpression',
224
- start: deserializeU32(pos),
225
- end: deserializeU32(pos + 4),
226
224
  callee: deserializeExpression(pos + 8),
227
225
  arguments: deserializeVecArgument(pos + 32),
226
+ start: deserializeU32(pos),
227
+ end: deserializeU32(pos + 4),
228
228
  };
229
229
  }
230
230
 
231
231
  function deserializeMetaProperty(pos) {
232
232
  return {
233
233
  type: 'MetaProperty',
234
- start: deserializeU32(pos),
235
- end: deserializeU32(pos + 4),
236
234
  meta: deserializeIdentifierName(pos + 8),
237
235
  property: deserializeIdentifierName(pos + 32),
236
+ start: deserializeU32(pos),
237
+ end: deserializeU32(pos + 4),
238
238
  };
239
239
  }
240
240
 
241
241
  function deserializeSpreadElement(pos) {
242
242
  return {
243
243
  type: 'SpreadElement',
244
+ argument: deserializeExpression(pos + 8),
244
245
  start: deserializeU32(pos),
245
246
  end: deserializeU32(pos + 4),
246
- argument: deserializeExpression(pos + 8),
247
247
  };
248
248
  }
249
249
 
250
250
  function deserializeUpdateExpression(pos) {
251
251
  return {
252
252
  type: 'UpdateExpression',
253
- start: deserializeU32(pos),
254
- end: deserializeU32(pos + 4),
255
253
  operator: deserializeUpdateOperator(pos + 24),
256
254
  prefix: deserializeBool(pos + 25),
257
255
  argument: deserializeSimpleAssignmentTarget(pos + 8),
256
+ start: deserializeU32(pos),
257
+ end: deserializeU32(pos + 4),
258
258
  };
259
259
  }
260
260
 
261
261
  function deserializeUnaryExpression(pos) {
262
262
  return {
263
263
  type: 'UnaryExpression',
264
- start: deserializeU32(pos),
265
- end: deserializeU32(pos + 4),
266
264
  operator: deserializeUnaryOperator(pos + 24),
267
265
  argument: deserializeExpression(pos + 8),
268
266
  prefix: true,
267
+ start: deserializeU32(pos),
268
+ end: deserializeU32(pos + 4),
269
269
  };
270
270
  }
271
271
 
272
272
  function deserializeBinaryExpression(pos) {
273
273
  return {
274
274
  type: 'BinaryExpression',
275
- start: deserializeU32(pos),
276
- end: deserializeU32(pos + 4),
277
275
  left: deserializeExpression(pos + 8),
278
276
  operator: deserializeBinaryOperator(pos + 40),
279
277
  right: deserializeExpression(pos + 24),
278
+ start: deserializeU32(pos),
279
+ end: deserializeU32(pos + 4),
280
280
  };
281
281
  }
282
282
 
283
283
  function deserializePrivateInExpression(pos) {
284
284
  return {
285
285
  type: 'BinaryExpression',
286
- start: deserializeU32(pos),
287
- end: deserializeU32(pos + 4),
288
286
  left: deserializePrivateIdentifier(pos + 8),
289
287
  operator: 'in',
290
288
  right: deserializeExpression(pos + 32),
289
+ start: deserializeU32(pos),
290
+ end: deserializeU32(pos + 4),
291
291
  };
292
292
  }
293
293
 
294
294
  function deserializeLogicalExpression(pos) {
295
295
  return {
296
296
  type: 'LogicalExpression',
297
- start: deserializeU32(pos),
298
- end: deserializeU32(pos + 4),
299
297
  left: deserializeExpression(pos + 8),
300
298
  operator: deserializeLogicalOperator(pos + 40),
301
299
  right: deserializeExpression(pos + 24),
300
+ start: deserializeU32(pos),
301
+ end: deserializeU32(pos + 4),
302
302
  };
303
303
  }
304
304
 
305
305
  function deserializeConditionalExpression(pos) {
306
306
  return {
307
307
  type: 'ConditionalExpression',
308
- start: deserializeU32(pos),
309
- end: deserializeU32(pos + 4),
310
308
  test: deserializeExpression(pos + 8),
311
309
  consequent: deserializeExpression(pos + 24),
312
310
  alternate: deserializeExpression(pos + 40),
311
+ start: deserializeU32(pos),
312
+ end: deserializeU32(pos + 4),
313
313
  };
314
314
  }
315
315
 
316
316
  function deserializeAssignmentExpression(pos) {
317
317
  return {
318
318
  type: 'AssignmentExpression',
319
- start: deserializeU32(pos),
320
- end: deserializeU32(pos + 4),
321
319
  operator: deserializeAssignmentOperator(pos + 40),
322
320
  left: deserializeAssignmentTarget(pos + 8),
323
321
  right: deserializeExpression(pos + 24),
322
+ start: deserializeU32(pos),
323
+ end: deserializeU32(pos + 4),
324
324
  };
325
325
  }
326
326
 
@@ -330,9 +330,9 @@ function deserializeArrayAssignmentTarget(pos) {
330
330
  if (rest !== null) elements.push(rest);
331
331
  return {
332
332
  type: 'ArrayPattern',
333
+ elements,
333
334
  start: deserializeU32(pos),
334
335
  end: deserializeU32(pos + 4),
335
- elements,
336
336
  };
337
337
  }
338
338
 
@@ -342,79 +342,79 @@ function deserializeObjectAssignmentTarget(pos) {
342
342
  if (rest !== null) properties.push(rest);
343
343
  return {
344
344
  type: 'ObjectPattern',
345
+ properties,
345
346
  start: deserializeU32(pos),
346
347
  end: deserializeU32(pos + 4),
347
- properties,
348
348
  };
349
349
  }
350
350
 
351
351
  function deserializeAssignmentTargetRest(pos) {
352
352
  return {
353
353
  type: 'RestElement',
354
+ argument: deserializeAssignmentTarget(pos + 8),
354
355
  start: deserializeU32(pos),
355
356
  end: deserializeU32(pos + 4),
356
- argument: deserializeAssignmentTarget(pos + 8),
357
357
  };
358
358
  }
359
359
 
360
360
  function deserializeAssignmentTargetWithDefault(pos) {
361
361
  return {
362
362
  type: 'AssignmentPattern',
363
- start: deserializeU32(pos),
364
- end: deserializeU32(pos + 4),
365
363
  left: deserializeAssignmentTarget(pos + 8),
366
364
  right: deserializeExpression(pos + 24),
365
+ start: deserializeU32(pos),
366
+ end: deserializeU32(pos + 4),
367
367
  };
368
368
  }
369
369
 
370
370
  function deserializeAssignmentTargetPropertyIdentifier(pos) {
371
- const start = deserializeU32(pos),
372
- end = deserializeU32(pos + 4),
373
- key = deserializeIdentifierReference(pos + 8);
371
+ const key = deserializeIdentifierReference(pos + 8),
372
+ start = deserializeU32(pos),
373
+ end = deserializeU32(pos + 4);
374
374
  const init = deserializeOptionExpression(pos + 40),
375
375
  keyCopy = { ...key },
376
376
  value = init === null
377
377
  ? keyCopy
378
378
  : {
379
379
  type: 'AssignmentPattern',
380
- start: start,
381
- end: end,
382
380
  left: keyCopy,
383
381
  right: init,
382
+ start: start,
383
+ end: end,
384
384
  };
385
385
  return {
386
386
  type: 'Property',
387
- start,
388
- end,
389
387
  kind: 'init',
390
388
  key,
391
389
  value,
392
390
  method: false,
393
391
  shorthand: true,
394
392
  computed: false,
393
+ start,
394
+ end,
395
395
  };
396
396
  }
397
397
 
398
398
  function deserializeAssignmentTargetPropertyProperty(pos) {
399
399
  return {
400
400
  type: 'Property',
401
- start: deserializeU32(pos),
402
- end: deserializeU32(pos + 4),
403
401
  kind: 'init',
404
402
  key: deserializePropertyKey(pos + 8),
405
403
  value: deserializeAssignmentTargetMaybeDefault(pos + 24),
406
404
  method: false,
407
405
  shorthand: false,
408
406
  computed: deserializeBool(pos + 40),
407
+ start: deserializeU32(pos),
408
+ end: deserializeU32(pos + 4),
409
409
  };
410
410
  }
411
411
 
412
412
  function deserializeSequenceExpression(pos) {
413
413
  return {
414
414
  type: 'SequenceExpression',
415
+ expressions: deserializeVecExpression(pos + 8),
415
416
  start: deserializeU32(pos),
416
417
  end: deserializeU32(pos + 4),
417
- expressions: deserializeVecExpression(pos + 8),
418
418
  };
419
419
  }
420
420
 
@@ -429,75 +429,75 @@ function deserializeSuper(pos) {
429
429
  function deserializeAwaitExpression(pos) {
430
430
  return {
431
431
  type: 'AwaitExpression',
432
+ argument: deserializeExpression(pos + 8),
432
433
  start: deserializeU32(pos),
433
434
  end: deserializeU32(pos + 4),
434
- argument: deserializeExpression(pos + 8),
435
435
  };
436
436
  }
437
437
 
438
438
  function deserializeChainExpression(pos) {
439
439
  return {
440
440
  type: 'ChainExpression',
441
+ expression: deserializeChainElement(pos + 8),
441
442
  start: deserializeU32(pos),
442
443
  end: deserializeU32(pos + 4),
443
- expression: deserializeChainElement(pos + 8),
444
444
  };
445
445
  }
446
446
 
447
447
  function deserializeParenthesizedExpression(pos) {
448
448
  return {
449
449
  type: 'ParenthesizedExpression',
450
+ expression: deserializeExpression(pos + 8),
450
451
  start: deserializeU32(pos),
451
452
  end: deserializeU32(pos + 4),
452
- expression: deserializeExpression(pos + 8),
453
453
  };
454
454
  }
455
455
 
456
456
  function deserializeDirective(pos) {
457
457
  return {
458
458
  type: 'ExpressionStatement',
459
- start: deserializeU32(pos),
460
- end: deserializeU32(pos + 4),
461
459
  expression: deserializeStringLiteral(pos + 8),
462
460
  directive: deserializeStr(pos + 56),
461
+ start: deserializeU32(pos),
462
+ end: deserializeU32(pos + 4),
463
463
  };
464
464
  }
465
465
 
466
466
  function deserializeHashbang(pos) {
467
467
  return {
468
468
  type: 'Hashbang',
469
+ value: deserializeStr(pos + 8),
469
470
  start: deserializeU32(pos),
470
471
  end: deserializeU32(pos + 4),
471
- value: deserializeStr(pos + 8),
472
472
  };
473
473
  }
474
474
 
475
475
  function deserializeBlockStatement(pos) {
476
476
  return {
477
477
  type: 'BlockStatement',
478
+ body: deserializeVecStatement(pos + 8),
478
479
  start: deserializeU32(pos),
479
480
  end: deserializeU32(pos + 4),
480
- body: deserializeVecStatement(pos + 8),
481
481
  };
482
482
  }
483
483
 
484
484
  function deserializeVariableDeclaration(pos) {
485
485
  return {
486
486
  type: 'VariableDeclaration',
487
- start: deserializeU32(pos),
488
- end: deserializeU32(pos + 4),
489
487
  kind: deserializeVariableDeclarationKind(pos + 32),
490
488
  declarations: deserializeVecVariableDeclarator(pos + 8),
489
+ start: deserializeU32(pos),
490
+ end: deserializeU32(pos + 4),
491
491
  };
492
492
  }
493
493
 
494
494
  function deserializeVariableDeclarator(pos) {
495
495
  return {
496
496
  type: 'VariableDeclarator',
497
- start: deserializeU32(pos),
498
- end: deserializeU32(pos + 4),
499
497
  id: deserializeBindingPattern(pos + 8),
500
498
  init: deserializeOptionExpression(pos + 40),
499
+ start: deserializeU32(pos),
500
+ end: deserializeU32(pos + 4),
501
501
  };
502
502
  }
503
503
 
@@ -512,172 +512,172 @@ function deserializeEmptyStatement(pos) {
512
512
  function deserializeExpressionStatement(pos) {
513
513
  return {
514
514
  type: 'ExpressionStatement',
515
+ expression: deserializeExpression(pos + 8),
515
516
  start: deserializeU32(pos),
516
517
  end: deserializeU32(pos + 4),
517
- expression: deserializeExpression(pos + 8),
518
518
  };
519
519
  }
520
520
 
521
521
  function deserializeIfStatement(pos) {
522
522
  return {
523
523
  type: 'IfStatement',
524
- start: deserializeU32(pos),
525
- end: deserializeU32(pos + 4),
526
524
  test: deserializeExpression(pos + 8),
527
525
  consequent: deserializeStatement(pos + 24),
528
526
  alternate: deserializeOptionStatement(pos + 40),
527
+ start: deserializeU32(pos),
528
+ end: deserializeU32(pos + 4),
529
529
  };
530
530
  }
531
531
 
532
532
  function deserializeDoWhileStatement(pos) {
533
533
  return {
534
534
  type: 'DoWhileStatement',
535
- start: deserializeU32(pos),
536
- end: deserializeU32(pos + 4),
537
535
  body: deserializeStatement(pos + 8),
538
536
  test: deserializeExpression(pos + 24),
537
+ start: deserializeU32(pos),
538
+ end: deserializeU32(pos + 4),
539
539
  };
540
540
  }
541
541
 
542
542
  function deserializeWhileStatement(pos) {
543
543
  return {
544
544
  type: 'WhileStatement',
545
- start: deserializeU32(pos),
546
- end: deserializeU32(pos + 4),
547
545
  test: deserializeExpression(pos + 8),
548
546
  body: deserializeStatement(pos + 24),
547
+ start: deserializeU32(pos),
548
+ end: deserializeU32(pos + 4),
549
549
  };
550
550
  }
551
551
 
552
552
  function deserializeForStatement(pos) {
553
553
  return {
554
554
  type: 'ForStatement',
555
- start: deserializeU32(pos),
556
- end: deserializeU32(pos + 4),
557
555
  init: deserializeOptionForStatementInit(pos + 8),
558
556
  test: deserializeOptionExpression(pos + 24),
559
557
  update: deserializeOptionExpression(pos + 40),
560
558
  body: deserializeStatement(pos + 56),
559
+ start: deserializeU32(pos),
560
+ end: deserializeU32(pos + 4),
561
561
  };
562
562
  }
563
563
 
564
564
  function deserializeForInStatement(pos) {
565
565
  return {
566
566
  type: 'ForInStatement',
567
- start: deserializeU32(pos),
568
- end: deserializeU32(pos + 4),
569
567
  left: deserializeForStatementLeft(pos + 8),
570
568
  right: deserializeExpression(pos + 24),
571
569
  body: deserializeStatement(pos + 40),
570
+ start: deserializeU32(pos),
571
+ end: deserializeU32(pos + 4),
572
572
  };
573
573
  }
574
574
 
575
575
  function deserializeForOfStatement(pos) {
576
576
  return {
577
577
  type: 'ForOfStatement',
578
- start: deserializeU32(pos),
579
- end: deserializeU32(pos + 4),
580
578
  await: deserializeBool(pos + 60),
581
579
  left: deserializeForStatementLeft(pos + 8),
582
580
  right: deserializeExpression(pos + 24),
583
581
  body: deserializeStatement(pos + 40),
582
+ start: deserializeU32(pos),
583
+ end: deserializeU32(pos + 4),
584
584
  };
585
585
  }
586
586
 
587
587
  function deserializeContinueStatement(pos) {
588
588
  return {
589
589
  type: 'ContinueStatement',
590
+ label: deserializeOptionLabelIdentifier(pos + 8),
590
591
  start: deserializeU32(pos),
591
592
  end: deserializeU32(pos + 4),
592
- label: deserializeOptionLabelIdentifier(pos + 8),
593
593
  };
594
594
  }
595
595
 
596
596
  function deserializeBreakStatement(pos) {
597
597
  return {
598
598
  type: 'BreakStatement',
599
+ label: deserializeOptionLabelIdentifier(pos + 8),
599
600
  start: deserializeU32(pos),
600
601
  end: deserializeU32(pos + 4),
601
- label: deserializeOptionLabelIdentifier(pos + 8),
602
602
  };
603
603
  }
604
604
 
605
605
  function deserializeReturnStatement(pos) {
606
606
  return {
607
607
  type: 'ReturnStatement',
608
+ argument: deserializeOptionExpression(pos + 8),
608
609
  start: deserializeU32(pos),
609
610
  end: deserializeU32(pos + 4),
610
- argument: deserializeOptionExpression(pos + 8),
611
611
  };
612
612
  }
613
613
 
614
614
  function deserializeWithStatement(pos) {
615
615
  return {
616
616
  type: 'WithStatement',
617
- start: deserializeU32(pos),
618
- end: deserializeU32(pos + 4),
619
617
  object: deserializeExpression(pos + 8),
620
618
  body: deserializeStatement(pos + 24),
619
+ start: deserializeU32(pos),
620
+ end: deserializeU32(pos + 4),
621
621
  };
622
622
  }
623
623
 
624
624
  function deserializeSwitchStatement(pos) {
625
625
  return {
626
626
  type: 'SwitchStatement',
627
- start: deserializeU32(pos),
628
- end: deserializeU32(pos + 4),
629
627
  discriminant: deserializeExpression(pos + 8),
630
628
  cases: deserializeVecSwitchCase(pos + 24),
629
+ start: deserializeU32(pos),
630
+ end: deserializeU32(pos + 4),
631
631
  };
632
632
  }
633
633
 
634
634
  function deserializeSwitchCase(pos) {
635
635
  return {
636
636
  type: 'SwitchCase',
637
- start: deserializeU32(pos),
638
- end: deserializeU32(pos + 4),
639
637
  test: deserializeOptionExpression(pos + 8),
640
638
  consequent: deserializeVecStatement(pos + 24),
639
+ start: deserializeU32(pos),
640
+ end: deserializeU32(pos + 4),
641
641
  };
642
642
  }
643
643
 
644
644
  function deserializeLabeledStatement(pos) {
645
645
  return {
646
646
  type: 'LabeledStatement',
647
- start: deserializeU32(pos),
648
- end: deserializeU32(pos + 4),
649
647
  label: deserializeLabelIdentifier(pos + 8),
650
648
  body: deserializeStatement(pos + 32),
649
+ start: deserializeU32(pos),
650
+ end: deserializeU32(pos + 4),
651
651
  };
652
652
  }
653
653
 
654
654
  function deserializeThrowStatement(pos) {
655
655
  return {
656
656
  type: 'ThrowStatement',
657
+ argument: deserializeExpression(pos + 8),
657
658
  start: deserializeU32(pos),
658
659
  end: deserializeU32(pos + 4),
659
- argument: deserializeExpression(pos + 8),
660
660
  };
661
661
  }
662
662
 
663
663
  function deserializeTryStatement(pos) {
664
664
  return {
665
665
  type: 'TryStatement',
666
- start: deserializeU32(pos),
667
- end: deserializeU32(pos + 4),
668
666
  block: deserializeBoxBlockStatement(pos + 8),
669
667
  handler: deserializeOptionBoxCatchClause(pos + 16),
670
668
  finalizer: deserializeOptionBoxBlockStatement(pos + 24),
669
+ start: deserializeU32(pos),
670
+ end: deserializeU32(pos + 4),
671
671
  };
672
672
  }
673
673
 
674
674
  function deserializeCatchClause(pos) {
675
675
  return {
676
676
  type: 'CatchClause',
677
- start: deserializeU32(pos),
678
- end: deserializeU32(pos + 4),
679
677
  param: deserializeOptionCatchParameter(pos + 8),
680
678
  body: deserializeBoxBlockStatement(pos + 48),
679
+ start: deserializeU32(pos),
680
+ end: deserializeU32(pos + 4),
681
681
  };
682
682
  }
683
683
 
@@ -701,10 +701,10 @@ function deserializeBindingPattern(pos) {
701
701
  function deserializeAssignmentPattern(pos) {
702
702
  return {
703
703
  type: 'AssignmentPattern',
704
- start: deserializeU32(pos),
705
- end: deserializeU32(pos + 4),
706
704
  left: deserializeBindingPattern(pos + 8),
707
705
  right: deserializeExpression(pos + 40),
706
+ start: deserializeU32(pos),
707
+ end: deserializeU32(pos + 4),
708
708
  };
709
709
  }
710
710
 
@@ -714,23 +714,23 @@ function deserializeObjectPattern(pos) {
714
714
  if (rest !== null) properties.push(rest);
715
715
  return {
716
716
  type: 'ObjectPattern',
717
+ properties,
717
718
  start: deserializeU32(pos),
718
719
  end: deserializeU32(pos + 4),
719
- properties,
720
720
  };
721
721
  }
722
722
 
723
723
  function deserializeBindingProperty(pos) {
724
724
  return {
725
725
  type: 'Property',
726
- start: deserializeU32(pos),
727
- end: deserializeU32(pos + 4),
728
726
  kind: 'init',
729
727
  key: deserializePropertyKey(pos + 8),
730
728
  value: deserializeBindingPattern(pos + 24),
731
729
  method: false,
732
730
  shorthand: deserializeBool(pos + 56),
733
731
  computed: deserializeBool(pos + 57),
732
+ start: deserializeU32(pos),
733
+ end: deserializeU32(pos + 4),
734
734
  };
735
735
  }
736
736
 
@@ -740,18 +740,18 @@ function deserializeArrayPattern(pos) {
740
740
  if (rest !== null) elements.push(rest);
741
741
  return {
742
742
  type: 'ArrayPattern',
743
+ elements,
743
744
  start: deserializeU32(pos),
744
745
  end: deserializeU32(pos + 4),
745
- elements,
746
746
  };
747
747
  }
748
748
 
749
749
  function deserializeBindingRestElement(pos) {
750
750
  return {
751
751
  type: 'RestElement',
752
+ argument: deserializeBindingPattern(pos + 8),
752
753
  start: deserializeU32(pos),
753
754
  end: deserializeU32(pos + 4),
754
- argument: deserializeBindingPattern(pos + 8),
755
755
  };
756
756
  }
757
757
 
@@ -759,14 +759,14 @@ function deserializeFunction(pos) {
759
759
  const params = deserializeBoxFormalParameters(pos + 56);
760
760
  return {
761
761
  type: deserializeFunctionType(pos + 84),
762
- start: deserializeU32(pos),
763
- end: deserializeU32(pos + 4),
764
762
  id: deserializeOptionBindingIdentifier(pos + 8),
765
763
  generator: deserializeBool(pos + 85),
766
764
  async: deserializeBool(pos + 86),
767
765
  params,
768
766
  body: deserializeOptionBoxFunctionBody(pos + 72),
769
767
  expression: false,
768
+ start: deserializeU32(pos),
769
+ end: deserializeU32(pos + 4),
770
770
  };
771
771
  }
772
772
 
@@ -776,9 +776,9 @@ function deserializeFormalParameters(pos) {
776
776
  pos = uint32[(pos + 32) >> 2];
777
777
  params.push({
778
778
  type: 'RestElement',
779
+ argument: deserializeBindingPatternKind(pos + 8),
779
780
  start: deserializeU32(pos),
780
781
  end: deserializeU32(pos + 4),
781
- argument: deserializeBindingPatternKind(pos + 8),
782
782
  });
783
783
  }
784
784
  return params;
@@ -793,9 +793,9 @@ function deserializeFunctionBody(pos) {
793
793
  body.push(...deserializeVecStatement(pos + 32));
794
794
  return {
795
795
  type: 'BlockStatement',
796
+ body,
796
797
  start: deserializeU32(pos),
797
798
  end: deserializeU32(pos + 4),
798
- body,
799
799
  };
800
800
  }
801
801
 
@@ -804,114 +804,114 @@ function deserializeArrowFunctionExpression(pos) {
804
804
  let body = deserializeBoxFunctionBody(pos + 32);
805
805
  return {
806
806
  type: 'ArrowFunctionExpression',
807
- start: deserializeU32(pos),
808
- end: deserializeU32(pos + 4),
809
807
  expression,
810
808
  async: deserializeBool(pos + 45),
811
809
  params: deserializeBoxFormalParameters(pos + 16),
812
810
  body: expression ? body.body[0].expression : body,
813
811
  id: null,
814
812
  generator: false,
813
+ start: deserializeU32(pos),
814
+ end: deserializeU32(pos + 4),
815
815
  };
816
816
  }
817
817
 
818
818
  function deserializeYieldExpression(pos) {
819
819
  return {
820
820
  type: 'YieldExpression',
821
- start: deserializeU32(pos),
822
- end: deserializeU32(pos + 4),
823
821
  delegate: deserializeBool(pos + 24),
824
822
  argument: deserializeOptionExpression(pos + 8),
823
+ start: deserializeU32(pos),
824
+ end: deserializeU32(pos + 4),
825
825
  };
826
826
  }
827
827
 
828
828
  function deserializeClass(pos) {
829
829
  return {
830
830
  type: deserializeClassType(pos + 132),
831
- start: deserializeU32(pos),
832
- end: deserializeU32(pos + 4),
833
831
  decorators: deserializeVecDecorator(pos + 8),
834
832
  id: deserializeOptionBindingIdentifier(pos + 32),
835
833
  superClass: deserializeOptionExpression(pos + 72),
836
834
  body: deserializeBoxClassBody(pos + 120),
835
+ start: deserializeU32(pos),
836
+ end: deserializeU32(pos + 4),
837
837
  };
838
838
  }
839
839
 
840
840
  function deserializeClassBody(pos) {
841
841
  return {
842
842
  type: 'ClassBody',
843
+ body: deserializeVecClassElement(pos + 8),
843
844
  start: deserializeU32(pos),
844
845
  end: deserializeU32(pos + 4),
845
- body: deserializeVecClassElement(pos + 8),
846
846
  };
847
847
  }
848
848
 
849
849
  function deserializeMethodDefinition(pos) {
850
850
  return {
851
851
  type: deserializeMethodDefinitionType(pos + 56),
852
- start: deserializeU32(pos),
853
- end: deserializeU32(pos + 4),
854
852
  decorators: deserializeVecDecorator(pos + 8),
855
853
  key: deserializePropertyKey(pos + 32),
856
854
  value: deserializeBoxFunction(pos + 48),
857
855
  kind: deserializeMethodDefinitionKind(pos + 57),
858
856
  computed: deserializeBool(pos + 58),
859
857
  static: deserializeBool(pos + 59),
858
+ start: deserializeU32(pos),
859
+ end: deserializeU32(pos + 4),
860
860
  };
861
861
  }
862
862
 
863
863
  function deserializePropertyDefinition(pos) {
864
864
  return {
865
865
  type: deserializePropertyDefinitionType(pos + 72),
866
- start: deserializeU32(pos),
867
- end: deserializeU32(pos + 4),
868
866
  decorators: deserializeVecDecorator(pos + 8),
869
867
  key: deserializePropertyKey(pos + 32),
870
868
  value: deserializeOptionExpression(pos + 56),
871
869
  computed: deserializeBool(pos + 73),
872
870
  static: deserializeBool(pos + 74),
871
+ start: deserializeU32(pos),
872
+ end: deserializeU32(pos + 4),
873
873
  };
874
874
  }
875
875
 
876
876
  function deserializePrivateIdentifier(pos) {
877
877
  return {
878
878
  type: 'PrivateIdentifier',
879
+ name: deserializeStr(pos + 8),
879
880
  start: deserializeU32(pos),
880
881
  end: deserializeU32(pos + 4),
881
- name: deserializeStr(pos + 8),
882
882
  };
883
883
  }
884
884
 
885
885
  function deserializeStaticBlock(pos) {
886
886
  return {
887
887
  type: 'StaticBlock',
888
+ body: deserializeVecStatement(pos + 8),
888
889
  start: deserializeU32(pos),
889
890
  end: deserializeU32(pos + 4),
890
- body: deserializeVecStatement(pos + 8),
891
891
  };
892
892
  }
893
893
 
894
894
  function deserializeAccessorProperty(pos) {
895
895
  return {
896
896
  type: deserializeAccessorPropertyType(pos + 72),
897
- start: deserializeU32(pos),
898
- end: deserializeU32(pos + 4),
899
897
  decorators: deserializeVecDecorator(pos + 8),
900
898
  key: deserializePropertyKey(pos + 32),
901
899
  value: deserializeOptionExpression(pos + 56),
902
900
  computed: deserializeBool(pos + 73),
903
901
  static: deserializeBool(pos + 74),
902
+ start: deserializeU32(pos),
903
+ end: deserializeU32(pos + 4),
904
904
  };
905
905
  }
906
906
 
907
907
  function deserializeImportExpression(pos) {
908
908
  return {
909
909
  type: 'ImportExpression',
910
- start: deserializeU32(pos),
911
- end: deserializeU32(pos + 4),
912
910
  source: deserializeExpression(pos + 8),
913
911
  options: deserializeOptionExpression(pos + 24),
914
912
  phase: deserializeOptionImportPhase(pos + 40),
913
+ start: deserializeU32(pos),
914
+ end: deserializeU32(pos + 4),
915
915
  };
916
916
  }
917
917
 
@@ -921,40 +921,40 @@ function deserializeImportDeclaration(pos) {
921
921
  const withClause = deserializeOptionBoxWithClause(pos + 80);
922
922
  return {
923
923
  type: 'ImportDeclaration',
924
- start: deserializeU32(pos),
925
- end: deserializeU32(pos + 4),
926
924
  specifiers,
927
925
  source: deserializeStringLiteral(pos + 32),
928
926
  phase: deserializeOptionImportPhase(pos + 88),
929
927
  attributes: withClause === null ? [] : withClause.attributes,
928
+ start: deserializeU32(pos),
929
+ end: deserializeU32(pos + 4),
930
930
  };
931
931
  }
932
932
 
933
933
  function deserializeImportSpecifier(pos) {
934
934
  return {
935
935
  type: 'ImportSpecifier',
936
- start: deserializeU32(pos),
937
- end: deserializeU32(pos + 4),
938
936
  imported: deserializeModuleExportName(pos + 8),
939
937
  local: deserializeBindingIdentifier(pos + 64),
938
+ start: deserializeU32(pos),
939
+ end: deserializeU32(pos + 4),
940
940
  };
941
941
  }
942
942
 
943
943
  function deserializeImportDefaultSpecifier(pos) {
944
944
  return {
945
945
  type: 'ImportDefaultSpecifier',
946
+ local: deserializeBindingIdentifier(pos + 8),
946
947
  start: deserializeU32(pos),
947
948
  end: deserializeU32(pos + 4),
948
- local: deserializeBindingIdentifier(pos + 8),
949
949
  };
950
950
  }
951
951
 
952
952
  function deserializeImportNamespaceSpecifier(pos) {
953
953
  return {
954
954
  type: 'ImportNamespaceSpecifier',
955
+ local: deserializeBindingIdentifier(pos + 8),
955
956
  start: deserializeU32(pos),
956
957
  end: deserializeU32(pos + 4),
957
- local: deserializeBindingIdentifier(pos + 8),
958
958
  };
959
959
  }
960
960
 
@@ -967,10 +967,10 @@ function deserializeWithClause(pos) {
967
967
  function deserializeImportAttribute(pos) {
968
968
  return {
969
969
  type: 'ImportAttribute',
970
- start: deserializeU32(pos),
971
- end: deserializeU32(pos + 4),
972
970
  key: deserializeImportAttributeKey(pos + 8),
973
971
  value: deserializeStringLiteral(pos + 64),
972
+ start: deserializeU32(pos),
973
+ end: deserializeU32(pos + 4),
974
974
  };
975
975
  }
976
976
 
@@ -978,21 +978,21 @@ function deserializeExportNamedDeclaration(pos) {
978
978
  const withClause = deserializeOptionBoxWithClause(pos + 96);
979
979
  return {
980
980
  type: 'ExportNamedDeclaration',
981
- start: deserializeU32(pos),
982
- end: deserializeU32(pos + 4),
983
981
  declaration: deserializeOptionDeclaration(pos + 8),
984
982
  specifiers: deserializeVecExportSpecifier(pos + 24),
985
983
  source: deserializeOptionStringLiteral(pos + 48),
986
984
  attributes: withClause === null ? [] : withClause.attributes,
985
+ start: deserializeU32(pos),
986
+ end: deserializeU32(pos + 4),
987
987
  };
988
988
  }
989
989
 
990
990
  function deserializeExportDefaultDeclaration(pos) {
991
991
  return {
992
992
  type: 'ExportDefaultDeclaration',
993
+ declaration: deserializeExportDefaultDeclarationKind(pos + 64),
993
994
  start: deserializeU32(pos),
994
995
  end: deserializeU32(pos + 4),
995
- declaration: deserializeExportDefaultDeclarationKind(pos + 64),
996
996
  };
997
997
  }
998
998
 
@@ -1000,44 +1000,44 @@ function deserializeExportAllDeclaration(pos) {
1000
1000
  const withClause = deserializeOptionBoxWithClause(pos + 112);
1001
1001
  return {
1002
1002
  type: 'ExportAllDeclaration',
1003
- start: deserializeU32(pos),
1004
- end: deserializeU32(pos + 4),
1005
1003
  exported: deserializeOptionModuleExportName(pos + 8),
1006
1004
  source: deserializeStringLiteral(pos + 64),
1007
1005
  attributes: withClause === null ? [] : withClause.attributes,
1006
+ start: deserializeU32(pos),
1007
+ end: deserializeU32(pos + 4),
1008
1008
  };
1009
1009
  }
1010
1010
 
1011
1011
  function deserializeExportSpecifier(pos) {
1012
1012
  return {
1013
1013
  type: 'ExportSpecifier',
1014
- start: deserializeU32(pos),
1015
- end: deserializeU32(pos + 4),
1016
1014
  local: deserializeModuleExportName(pos + 8),
1017
1015
  exported: deserializeModuleExportName(pos + 64),
1016
+ start: deserializeU32(pos),
1017
+ end: deserializeU32(pos + 4),
1018
1018
  };
1019
1019
  }
1020
1020
 
1021
1021
  function deserializeV8IntrinsicExpression(pos) {
1022
1022
  return {
1023
1023
  type: 'V8IntrinsicExpression',
1024
- start: deserializeU32(pos),
1025
- end: deserializeU32(pos + 4),
1026
1024
  name: deserializeIdentifierName(pos + 8),
1027
1025
  arguments: deserializeVecArgument(pos + 32),
1026
+ start: deserializeU32(pos),
1027
+ end: deserializeU32(pos + 4),
1028
1028
  };
1029
1029
  }
1030
1030
 
1031
1031
  function deserializeBooleanLiteral(pos) {
1032
- const start = deserializeU32(pos),
1033
- end = deserializeU32(pos + 4),
1034
- value = deserializeBool(pos + 8);
1032
+ const value = deserializeBool(pos + 8),
1033
+ start = deserializeU32(pos),
1034
+ end = deserializeU32(pos + 4);
1035
1035
  return {
1036
1036
  type: 'Literal',
1037
- start,
1038
- end,
1039
1037
  value,
1040
1038
  raw: (start === 0 && end === 0) ? null : value + '',
1039
+ start,
1040
+ end,
1041
1041
  };
1042
1042
  }
1043
1043
 
@@ -1046,20 +1046,20 @@ function deserializeNullLiteral(pos) {
1046
1046
  end = deserializeU32(pos + 4);
1047
1047
  return {
1048
1048
  type: 'Literal',
1049
- start,
1050
- end,
1051
1049
  value: null,
1052
1050
  raw: (start === 0 && end === 0) ? null : 'null',
1051
+ start,
1052
+ end,
1053
1053
  };
1054
1054
  }
1055
1055
 
1056
1056
  function deserializeNumericLiteral(pos) {
1057
1057
  return {
1058
1058
  type: 'Literal',
1059
- start: deserializeU32(pos),
1060
- end: deserializeU32(pos + 4),
1061
1059
  value: deserializeF64(pos + 8),
1062
1060
  raw: deserializeOptionStr(pos + 16),
1061
+ start: deserializeU32(pos),
1062
+ end: deserializeU32(pos + 4),
1063
1063
  };
1064
1064
  }
1065
1065
 
@@ -1070,10 +1070,10 @@ function deserializeStringLiteral(pos) {
1070
1070
  }
1071
1071
  return {
1072
1072
  type: 'Literal',
1073
- start: deserializeU32(pos),
1074
- end: deserializeU32(pos + 4),
1075
1073
  value,
1076
1074
  raw: deserializeOptionStr(pos + 24),
1075
+ start: deserializeU32(pos),
1076
+ end: deserializeU32(pos + 4),
1077
1077
  };
1078
1078
  }
1079
1079
 
@@ -1081,11 +1081,11 @@ function deserializeBigIntLiteral(pos) {
1081
1081
  const bigint = deserializeStr(pos + 8);
1082
1082
  return {
1083
1083
  type: 'Literal',
1084
- start: deserializeU32(pos),
1085
- end: deserializeU32(pos + 4),
1086
1084
  value: BigInt(bigint),
1087
1085
  raw: deserializeOptionStr(pos + 24),
1088
1086
  bigint,
1087
+ start: deserializeU32(pos),
1088
+ end: deserializeU32(pos + 4),
1089
1089
  };
1090
1090
  }
1091
1091
 
@@ -1097,11 +1097,11 @@ function deserializeRegExpLiteral(pos) {
1097
1097
  } catch (e) {}
1098
1098
  return {
1099
1099
  type: 'Literal',
1100
- start: deserializeU32(pos),
1101
- end: deserializeU32(pos + 4),
1102
1100
  value,
1103
1101
  raw: deserializeOptionStr(pos + 40),
1104
1102
  regex,
1103
+ start: deserializeU32(pos),
1104
+ end: deserializeU32(pos + 4),
1105
1105
  };
1106
1106
  }
1107
1107
 
@@ -1139,52 +1139,52 @@ function deserializeJSXElement(pos) {
1139
1139
  if (closingElement === null) openingElement.selfClosing = true;
1140
1140
  return {
1141
1141
  type: 'JSXElement',
1142
- start: deserializeU32(pos),
1143
- end: deserializeU32(pos + 4),
1144
1142
  openingElement,
1145
1143
  children: deserializeVecJSXChild(pos + 16),
1146
1144
  closingElement,
1145
+ start: deserializeU32(pos),
1146
+ end: deserializeU32(pos + 4),
1147
1147
  };
1148
1148
  }
1149
1149
 
1150
1150
  function deserializeJSXOpeningElement(pos) {
1151
1151
  return {
1152
1152
  type: 'JSXOpeningElement',
1153
- start: deserializeU32(pos),
1154
- end: deserializeU32(pos + 4),
1155
1153
  name: deserializeJSXElementName(pos + 8),
1156
1154
  attributes: deserializeVecJSXAttributeItem(pos + 32),
1157
1155
  selfClosing: false,
1156
+ start: deserializeU32(pos),
1157
+ end: deserializeU32(pos + 4),
1158
1158
  };
1159
1159
  }
1160
1160
 
1161
1161
  function deserializeJSXClosingElement(pos) {
1162
1162
  return {
1163
1163
  type: 'JSXClosingElement',
1164
+ name: deserializeJSXElementName(pos + 8),
1164
1165
  start: deserializeU32(pos),
1165
1166
  end: deserializeU32(pos + 4),
1166
- name: deserializeJSXElementName(pos + 8),
1167
1167
  };
1168
1168
  }
1169
1169
 
1170
1170
  function deserializeJSXFragment(pos) {
1171
1171
  return {
1172
1172
  type: 'JSXFragment',
1173
- start: deserializeU32(pos),
1174
- end: deserializeU32(pos + 4),
1175
1173
  openingFragment: deserializeJSXOpeningFragment(pos + 8),
1176
1174
  children: deserializeVecJSXChild(pos + 16),
1177
1175
  closingFragment: deserializeJSXClosingFragment(pos + 40),
1176
+ start: deserializeU32(pos),
1177
+ end: deserializeU32(pos + 4),
1178
1178
  };
1179
1179
  }
1180
1180
 
1181
1181
  function deserializeJSXOpeningFragment(pos) {
1182
1182
  return {
1183
1183
  type: 'JSXOpeningFragment',
1184
- start: deserializeU32(pos),
1185
- end: deserializeU32(pos + 4),
1186
1184
  attributes: [],
1187
1185
  selfClosing: false,
1186
+ start: deserializeU32(pos),
1187
+ end: deserializeU32(pos + 4),
1188
1188
  };
1189
1189
  }
1190
1190
 
@@ -1199,29 +1199,29 @@ function deserializeJSXClosingFragment(pos) {
1199
1199
  function deserializeJSXNamespacedName(pos) {
1200
1200
  return {
1201
1201
  type: 'JSXNamespacedName',
1202
- start: deserializeU32(pos),
1203
- end: deserializeU32(pos + 4),
1204
1202
  namespace: deserializeJSXIdentifier(pos + 8),
1205
1203
  name: deserializeJSXIdentifier(pos + 32),
1204
+ start: deserializeU32(pos),
1205
+ end: deserializeU32(pos + 4),
1206
1206
  };
1207
1207
  }
1208
1208
 
1209
1209
  function deserializeJSXMemberExpression(pos) {
1210
1210
  return {
1211
1211
  type: 'JSXMemberExpression',
1212
- start: deserializeU32(pos),
1213
- end: deserializeU32(pos + 4),
1214
1212
  object: deserializeJSXMemberExpressionObject(pos + 8),
1215
1213
  property: deserializeJSXIdentifier(pos + 24),
1214
+ start: deserializeU32(pos),
1215
+ end: deserializeU32(pos + 4),
1216
1216
  };
1217
1217
  }
1218
1218
 
1219
1219
  function deserializeJSXExpressionContainer(pos) {
1220
1220
  return {
1221
1221
  type: 'JSXExpressionContainer',
1222
+ expression: deserializeJSXExpression(pos + 8),
1222
1223
  start: deserializeU32(pos),
1223
1224
  end: deserializeU32(pos + 4),
1224
- expression: deserializeJSXExpression(pos + 8),
1225
1225
  };
1226
1226
  }
1227
1227
 
@@ -1236,215 +1236,215 @@ function deserializeJSXEmptyExpression(pos) {
1236
1236
  function deserializeJSXAttribute(pos) {
1237
1237
  return {
1238
1238
  type: 'JSXAttribute',
1239
- start: deserializeU32(pos),
1240
- end: deserializeU32(pos + 4),
1241
1239
  name: deserializeJSXAttributeName(pos + 8),
1242
1240
  value: deserializeOptionJSXAttributeValue(pos + 24),
1241
+ start: deserializeU32(pos),
1242
+ end: deserializeU32(pos + 4),
1243
1243
  };
1244
1244
  }
1245
1245
 
1246
1246
  function deserializeJSXSpreadAttribute(pos) {
1247
1247
  return {
1248
1248
  type: 'JSXSpreadAttribute',
1249
+ argument: deserializeExpression(pos + 8),
1249
1250
  start: deserializeU32(pos),
1250
1251
  end: deserializeU32(pos + 4),
1251
- argument: deserializeExpression(pos + 8),
1252
1252
  };
1253
1253
  }
1254
1254
 
1255
1255
  function deserializeJSXIdentifier(pos) {
1256
1256
  return {
1257
1257
  type: 'JSXIdentifier',
1258
+ name: deserializeStr(pos + 8),
1258
1259
  start: deserializeU32(pos),
1259
1260
  end: deserializeU32(pos + 4),
1260
- name: deserializeStr(pos + 8),
1261
1261
  };
1262
1262
  }
1263
1263
 
1264
1264
  function deserializeJSXSpreadChild(pos) {
1265
1265
  return {
1266
1266
  type: 'JSXSpreadChild',
1267
+ expression: deserializeExpression(pos + 8),
1267
1268
  start: deserializeU32(pos),
1268
1269
  end: deserializeU32(pos + 4),
1269
- expression: deserializeExpression(pos + 8),
1270
1270
  };
1271
1271
  }
1272
1272
 
1273
1273
  function deserializeJSXText(pos) {
1274
1274
  return {
1275
1275
  type: 'JSXText',
1276
- start: deserializeU32(pos),
1277
- end: deserializeU32(pos + 4),
1278
1276
  value: deserializeStr(pos + 8),
1279
1277
  raw: deserializeOptionStr(pos + 24),
1278
+ start: deserializeU32(pos),
1279
+ end: deserializeU32(pos + 4),
1280
1280
  };
1281
1281
  }
1282
1282
 
1283
1283
  function deserializeTSThisParameter(pos) {
1284
1284
  return {
1285
1285
  type: 'Identifier',
1286
- start: deserializeU32(pos),
1287
- end: deserializeU32(pos + 4),
1288
1286
  decorators: [],
1289
1287
  name: 'this',
1290
1288
  optional: false,
1291
1289
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 16),
1290
+ start: deserializeU32(pos),
1291
+ end: deserializeU32(pos + 4),
1292
1292
  };
1293
1293
  }
1294
1294
 
1295
1295
  function deserializeTSEnumDeclaration(pos) {
1296
1296
  return {
1297
1297
  type: 'TSEnumDeclaration',
1298
- start: deserializeU32(pos),
1299
- end: deserializeU32(pos + 4),
1300
1298
  id: deserializeBindingIdentifier(pos + 8),
1301
1299
  body: deserializeTSEnumBody(pos + 40),
1302
1300
  const: deserializeBool(pos + 76),
1303
1301
  declare: deserializeBool(pos + 77),
1302
+ start: deserializeU32(pos),
1303
+ end: deserializeU32(pos + 4),
1304
1304
  };
1305
1305
  }
1306
1306
 
1307
1307
  function deserializeTSEnumBody(pos) {
1308
1308
  return {
1309
1309
  type: 'TSEnumBody',
1310
+ members: deserializeVecTSEnumMember(pos + 8),
1310
1311
  start: deserializeU32(pos),
1311
1312
  end: deserializeU32(pos + 4),
1312
- members: deserializeVecTSEnumMember(pos + 8),
1313
1313
  };
1314
1314
  }
1315
1315
 
1316
1316
  function deserializeTSEnumMember(pos) {
1317
1317
  return {
1318
1318
  type: 'TSEnumMember',
1319
- start: deserializeU32(pos),
1320
- end: deserializeU32(pos + 4),
1321
1319
  id: deserializeTSEnumMemberName(pos + 8),
1322
1320
  initializer: deserializeOptionExpression(pos + 24),
1323
1321
  computed: deserializeU8(pos + 8) > 1,
1322
+ start: deserializeU32(pos),
1323
+ end: deserializeU32(pos + 4),
1324
1324
  };
1325
1325
  }
1326
1326
 
1327
1327
  function deserializeTSTypeAnnotation(pos) {
1328
1328
  return {
1329
1329
  type: 'TSTypeAnnotation',
1330
+ typeAnnotation: deserializeTSType(pos + 8),
1330
1331
  start: deserializeU32(pos),
1331
1332
  end: deserializeU32(pos + 4),
1332
- typeAnnotation: deserializeTSType(pos + 8),
1333
1333
  };
1334
1334
  }
1335
1335
 
1336
1336
  function deserializeTSLiteralType(pos) {
1337
1337
  return {
1338
1338
  type: 'TSLiteralType',
1339
+ literal: deserializeTSLiteral(pos + 8),
1339
1340
  start: deserializeU32(pos),
1340
1341
  end: deserializeU32(pos + 4),
1341
- literal: deserializeTSLiteral(pos + 8),
1342
1342
  };
1343
1343
  }
1344
1344
 
1345
1345
  function deserializeTSConditionalType(pos) {
1346
1346
  return {
1347
1347
  type: 'TSConditionalType',
1348
- start: deserializeU32(pos),
1349
- end: deserializeU32(pos + 4),
1350
1348
  checkType: deserializeTSType(pos + 8),
1351
1349
  extendsType: deserializeTSType(pos + 24),
1352
1350
  trueType: deserializeTSType(pos + 40),
1353
1351
  falseType: deserializeTSType(pos + 56),
1352
+ start: deserializeU32(pos),
1353
+ end: deserializeU32(pos + 4),
1354
1354
  };
1355
1355
  }
1356
1356
 
1357
1357
  function deserializeTSUnionType(pos) {
1358
1358
  return {
1359
1359
  type: 'TSUnionType',
1360
+ types: deserializeVecTSType(pos + 8),
1360
1361
  start: deserializeU32(pos),
1361
1362
  end: deserializeU32(pos + 4),
1362
- types: deserializeVecTSType(pos + 8),
1363
1363
  };
1364
1364
  }
1365
1365
 
1366
1366
  function deserializeTSIntersectionType(pos) {
1367
1367
  return {
1368
1368
  type: 'TSIntersectionType',
1369
+ types: deserializeVecTSType(pos + 8),
1369
1370
  start: deserializeU32(pos),
1370
1371
  end: deserializeU32(pos + 4),
1371
- types: deserializeVecTSType(pos + 8),
1372
1372
  };
1373
1373
  }
1374
1374
 
1375
1375
  function deserializeTSParenthesizedType(pos) {
1376
1376
  return {
1377
1377
  type: 'TSParenthesizedType',
1378
+ typeAnnotation: deserializeTSType(pos + 8),
1378
1379
  start: deserializeU32(pos),
1379
1380
  end: deserializeU32(pos + 4),
1380
- typeAnnotation: deserializeTSType(pos + 8),
1381
1381
  };
1382
1382
  }
1383
1383
 
1384
1384
  function deserializeTSTypeOperator(pos) {
1385
1385
  return {
1386
1386
  type: 'TSTypeOperator',
1387
- start: deserializeU32(pos),
1388
- end: deserializeU32(pos + 4),
1389
1387
  operator: deserializeTSTypeOperatorOperator(pos + 24),
1390
1388
  typeAnnotation: deserializeTSType(pos + 8),
1389
+ start: deserializeU32(pos),
1390
+ end: deserializeU32(pos + 4),
1391
1391
  };
1392
1392
  }
1393
1393
 
1394
1394
  function deserializeTSArrayType(pos) {
1395
1395
  return {
1396
1396
  type: 'TSArrayType',
1397
+ elementType: deserializeTSType(pos + 8),
1397
1398
  start: deserializeU32(pos),
1398
1399
  end: deserializeU32(pos + 4),
1399
- elementType: deserializeTSType(pos + 8),
1400
1400
  };
1401
1401
  }
1402
1402
 
1403
1403
  function deserializeTSIndexedAccessType(pos) {
1404
1404
  return {
1405
1405
  type: 'TSIndexedAccessType',
1406
- start: deserializeU32(pos),
1407
- end: deserializeU32(pos + 4),
1408
1406
  objectType: deserializeTSType(pos + 8),
1409
1407
  indexType: deserializeTSType(pos + 24),
1408
+ start: deserializeU32(pos),
1409
+ end: deserializeU32(pos + 4),
1410
1410
  };
1411
1411
  }
1412
1412
 
1413
1413
  function deserializeTSTupleType(pos) {
1414
1414
  return {
1415
1415
  type: 'TSTupleType',
1416
+ elementTypes: deserializeVecTSTupleElement(pos + 8),
1416
1417
  start: deserializeU32(pos),
1417
1418
  end: deserializeU32(pos + 4),
1418
- elementTypes: deserializeVecTSTupleElement(pos + 8),
1419
1419
  };
1420
1420
  }
1421
1421
 
1422
1422
  function deserializeTSNamedTupleMember(pos) {
1423
1423
  return {
1424
1424
  type: 'TSNamedTupleMember',
1425
- start: deserializeU32(pos),
1426
- end: deserializeU32(pos + 4),
1427
1425
  label: deserializeIdentifierName(pos + 8),
1428
1426
  elementType: deserializeTSTupleElement(pos + 32),
1429
1427
  optional: deserializeBool(pos + 48),
1428
+ start: deserializeU32(pos),
1429
+ end: deserializeU32(pos + 4),
1430
1430
  };
1431
1431
  }
1432
1432
 
1433
1433
  function deserializeTSOptionalType(pos) {
1434
1434
  return {
1435
1435
  type: 'TSOptionalType',
1436
+ typeAnnotation: deserializeTSType(pos + 8),
1436
1437
  start: deserializeU32(pos),
1437
1438
  end: deserializeU32(pos + 4),
1438
- typeAnnotation: deserializeTSType(pos + 8),
1439
1439
  };
1440
1440
  }
1441
1441
 
1442
1442
  function deserializeTSRestType(pos) {
1443
1443
  return {
1444
1444
  type: 'TSRestType',
1445
+ typeAnnotation: deserializeTSType(pos + 8),
1445
1446
  start: deserializeU32(pos),
1446
1447
  end: deserializeU32(pos + 4),
1447
- typeAnnotation: deserializeTSType(pos + 8),
1448
1448
  };
1449
1449
  }
1450
1450
 
@@ -1563,64 +1563,64 @@ function deserializeTSBigIntKeyword(pos) {
1563
1563
  function deserializeTSTypeReference(pos) {
1564
1564
  return {
1565
1565
  type: 'TSTypeReference',
1566
- start: deserializeU32(pos),
1567
- end: deserializeU32(pos + 4),
1568
1566
  typeName: deserializeTSTypeName(pos + 8),
1569
1567
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1568
+ start: deserializeU32(pos),
1569
+ end: deserializeU32(pos + 4),
1570
1570
  };
1571
1571
  }
1572
1572
 
1573
1573
  function deserializeTSQualifiedName(pos) {
1574
1574
  return {
1575
1575
  type: 'TSQualifiedName',
1576
- start: deserializeU32(pos),
1577
- end: deserializeU32(pos + 4),
1578
1576
  left: deserializeTSTypeName(pos + 8),
1579
1577
  right: deserializeIdentifierName(pos + 24),
1578
+ start: deserializeU32(pos),
1579
+ end: deserializeU32(pos + 4),
1580
1580
  };
1581
1581
  }
1582
1582
 
1583
1583
  function deserializeTSTypeParameterInstantiation(pos) {
1584
1584
  return {
1585
1585
  type: 'TSTypeParameterInstantiation',
1586
+ params: deserializeVecTSType(pos + 8),
1586
1587
  start: deserializeU32(pos),
1587
1588
  end: deserializeU32(pos + 4),
1588
- params: deserializeVecTSType(pos + 8),
1589
1589
  };
1590
1590
  }
1591
1591
 
1592
1592
  function deserializeTSTypeParameter(pos) {
1593
1593
  return {
1594
1594
  type: 'TSTypeParameter',
1595
- start: deserializeU32(pos),
1596
- end: deserializeU32(pos + 4),
1597
1595
  name: deserializeBindingIdentifier(pos + 8),
1598
1596
  constraint: deserializeOptionTSType(pos + 40),
1599
1597
  default: deserializeOptionTSType(pos + 56),
1600
1598
  in: deserializeBool(pos + 72),
1601
1599
  out: deserializeBool(pos + 73),
1602
1600
  const: deserializeBool(pos + 74),
1601
+ start: deserializeU32(pos),
1602
+ end: deserializeU32(pos + 4),
1603
1603
  };
1604
1604
  }
1605
1605
 
1606
1606
  function deserializeTSTypeParameterDeclaration(pos) {
1607
1607
  return {
1608
1608
  type: 'TSTypeParameterDeclaration',
1609
+ params: deserializeVecTSTypeParameter(pos + 8),
1609
1610
  start: deserializeU32(pos),
1610
1611
  end: deserializeU32(pos + 4),
1611
- params: deserializeVecTSTypeParameter(pos + 8),
1612
1612
  };
1613
1613
  }
1614
1614
 
1615
1615
  function deserializeTSTypeAliasDeclaration(pos) {
1616
1616
  return {
1617
1617
  type: 'TSTypeAliasDeclaration',
1618
- start: deserializeU32(pos),
1619
- end: deserializeU32(pos + 4),
1620
1618
  id: deserializeBindingIdentifier(pos + 8),
1621
1619
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 40),
1622
1620
  typeAnnotation: deserializeTSType(pos + 48),
1623
1621
  declare: deserializeBool(pos + 68),
1622
+ start: deserializeU32(pos),
1623
+ end: deserializeU32(pos + 4),
1624
1624
  };
1625
1625
  }
1626
1626
 
@@ -1629,63 +1629,61 @@ function deserializeTSClassImplements(pos) {
1629
1629
  if (expression.type === 'TSQualifiedName') {
1630
1630
  let parent = expression = {
1631
1631
  type: 'MemberExpression',
1632
- start: expression.start,
1633
- end: expression.end,
1634
1632
  object: expression.left,
1635
1633
  property: expression.right,
1636
1634
  optional: false,
1637
1635
  computed: false,
1636
+ start: expression.start,
1637
+ end: expression.end,
1638
1638
  };
1639
1639
 
1640
1640
  while (parent.object.type === 'TSQualifiedName') {
1641
1641
  const object = parent.object;
1642
1642
  parent = parent.object = {
1643
1643
  type: 'MemberExpression',
1644
- start: object.start,
1645
- end: object.end,
1646
1644
  object: object.left,
1647
1645
  property: object.right,
1648
1646
  optional: false,
1649
1647
  computed: false,
1648
+ start: object.start,
1649
+ end: object.end,
1650
1650
  };
1651
1651
  }
1652
1652
  }
1653
1653
  return {
1654
1654
  type: 'TSClassImplements',
1655
- start: deserializeU32(pos),
1656
- end: deserializeU32(pos + 4),
1657
1655
  expression,
1658
1656
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1657
+ start: deserializeU32(pos),
1658
+ end: deserializeU32(pos + 4),
1659
1659
  };
1660
1660
  }
1661
1661
 
1662
1662
  function deserializeTSInterfaceDeclaration(pos) {
1663
1663
  return {
1664
1664
  type: 'TSInterfaceDeclaration',
1665
- start: deserializeU32(pos),
1666
- end: deserializeU32(pos + 4),
1667
1665
  id: deserializeBindingIdentifier(pos + 8),
1668
1666
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 40),
1669
1667
  extends: deserializeVecTSInterfaceHeritage(pos + 48),
1670
1668
  body: deserializeBoxTSInterfaceBody(pos + 72),
1671
1669
  declare: deserializeBool(pos + 84),
1670
+ start: deserializeU32(pos),
1671
+ end: deserializeU32(pos + 4),
1672
1672
  };
1673
1673
  }
1674
1674
 
1675
1675
  function deserializeTSInterfaceBody(pos) {
1676
1676
  return {
1677
1677
  type: 'TSInterfaceBody',
1678
+ body: deserializeVecTSSignature(pos + 8),
1678
1679
  start: deserializeU32(pos),
1679
1680
  end: deserializeU32(pos + 4),
1680
- body: deserializeVecTSSignature(pos + 8),
1681
1681
  };
1682
1682
  }
1683
1683
 
1684
1684
  function deserializeTSPropertySignature(pos) {
1685
1685
  return {
1686
1686
  type: 'TSPropertySignature',
1687
- start: deserializeU32(pos),
1688
- end: deserializeU32(pos + 4),
1689
1687
  computed: deserializeBool(pos + 32),
1690
1688
  optional: deserializeBool(pos + 33),
1691
1689
  readonly: deserializeBool(pos + 34),
@@ -1693,19 +1691,21 @@ function deserializeTSPropertySignature(pos) {
1693
1691
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 24),
1694
1692
  accessibility: null,
1695
1693
  static: false,
1694
+ start: deserializeU32(pos),
1695
+ end: deserializeU32(pos + 4),
1696
1696
  };
1697
1697
  }
1698
1698
 
1699
1699
  function deserializeTSIndexSignature(pos) {
1700
1700
  return {
1701
1701
  type: 'TSIndexSignature',
1702
- start: deserializeU32(pos),
1703
- end: deserializeU32(pos + 4),
1704
1702
  parameters: deserializeVecTSIndexSignatureName(pos + 8),
1705
1703
  typeAnnotation: deserializeBoxTSTypeAnnotation(pos + 32),
1706
1704
  readonly: deserializeBool(pos + 40),
1707
1705
  static: deserializeBool(pos + 41),
1708
1706
  accessibility: null,
1707
+ start: deserializeU32(pos),
1708
+ end: deserializeU32(pos + 4),
1709
1709
  };
1710
1710
  }
1711
1711
 
@@ -1715,11 +1715,11 @@ function deserializeTSCallSignatureDeclaration(pos) {
1715
1715
  if (thisParam !== null) params.unshift(thisParam);
1716
1716
  return {
1717
1717
  type: 'TSCallSignatureDeclaration',
1718
- start: deserializeU32(pos),
1719
- end: deserializeU32(pos + 4),
1720
1718
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
1721
1719
  params,
1722
1720
  returnType: deserializeOptionBoxTSTypeAnnotation(pos + 32),
1721
+ start: deserializeU32(pos),
1722
+ end: deserializeU32(pos + 4),
1723
1723
  };
1724
1724
  }
1725
1725
 
@@ -1729,8 +1729,6 @@ function deserializeTSMethodSignature(pos) {
1729
1729
  if (thisParam !== null) params.unshift(thisParam);
1730
1730
  return {
1731
1731
  type: 'TSMethodSignature',
1732
- start: deserializeU32(pos),
1733
- end: deserializeU32(pos + 4),
1734
1732
  key: deserializePropertyKey(pos + 8),
1735
1733
  computed: deserializeBool(pos + 60),
1736
1734
  optional: deserializeBool(pos + 61),
@@ -1741,50 +1739,52 @@ function deserializeTSMethodSignature(pos) {
1741
1739
  accessibility: null,
1742
1740
  readonly: false,
1743
1741
  static: false,
1742
+ start: deserializeU32(pos),
1743
+ end: deserializeU32(pos + 4),
1744
1744
  };
1745
1745
  }
1746
1746
 
1747
1747
  function deserializeTSConstructSignatureDeclaration(pos) {
1748
1748
  return {
1749
1749
  type: 'TSConstructSignatureDeclaration',
1750
- start: deserializeU32(pos),
1751
- end: deserializeU32(pos + 4),
1752
1750
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
1753
1751
  params: deserializeBoxFormalParameters(pos + 16),
1754
1752
  returnType: deserializeOptionBoxTSTypeAnnotation(pos + 24),
1753
+ start: deserializeU32(pos),
1754
+ end: deserializeU32(pos + 4),
1755
1755
  };
1756
1756
  }
1757
1757
 
1758
1758
  function deserializeTSIndexSignatureName(pos) {
1759
1759
  return {
1760
1760
  type: 'Identifier',
1761
- start: deserializeU32(pos),
1762
- end: deserializeU32(pos + 4),
1763
1761
  decorators: [],
1764
1762
  name: deserializeStr(pos + 8),
1765
1763
  optional: false,
1766
1764
  typeAnnotation: deserializeBoxTSTypeAnnotation(pos + 24),
1765
+ start: deserializeU32(pos),
1766
+ end: deserializeU32(pos + 4),
1767
1767
  };
1768
1768
  }
1769
1769
 
1770
1770
  function deserializeTSInterfaceHeritage(pos) {
1771
1771
  return {
1772
1772
  type: 'TSInterfaceHeritage',
1773
- start: deserializeU32(pos),
1774
- end: deserializeU32(pos + 4),
1775
1773
  expression: deserializeExpression(pos + 8),
1776
1774
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1775
+ start: deserializeU32(pos),
1776
+ end: deserializeU32(pos + 4),
1777
1777
  };
1778
1778
  }
1779
1779
 
1780
1780
  function deserializeTSTypePredicate(pos) {
1781
1781
  return {
1782
1782
  type: 'TSTypePredicate',
1783
- start: deserializeU32(pos),
1784
- end: deserializeU32(pos + 4),
1785
1783
  parameterName: deserializeTSTypePredicateName(pos + 8),
1786
1784
  asserts: deserializeBool(pos + 32),
1787
1785
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 24),
1786
+ start: deserializeU32(pos),
1787
+ end: deserializeU32(pos + 4),
1788
1788
  };
1789
1789
  }
1790
1790
 
@@ -1803,10 +1803,10 @@ function deserializeTSModuleDeclaration(pos) {
1803
1803
  if (innerId.type === 'Identifier') {
1804
1804
  id = {
1805
1805
  type: 'TSQualifiedName',
1806
- start: id.start,
1807
- end: innerId.end,
1808
1806
  left: id,
1809
1807
  right: innerId,
1808
+ start: id.start,
1809
+ end: innerId.end,
1810
1810
  };
1811
1811
  } else {
1812
1812
  // Replace `left` of innermost `TSQualifiedName` with a nested `TSQualifiedName` with `id` of
@@ -1818,10 +1818,10 @@ function deserializeTSModuleDeclaration(pos) {
1818
1818
  }
1819
1819
  innerId.left = {
1820
1820
  type: 'TSQualifiedName',
1821
- start: id.start,
1822
- end: innerId.left.end,
1823
1821
  left: id,
1824
1822
  right: innerId.left,
1823
+ start: id.start,
1824
+ end: innerId.left.end,
1825
1825
  };
1826
1826
  id = body.id;
1827
1827
  }
@@ -1830,8 +1830,8 @@ function deserializeTSModuleDeclaration(pos) {
1830
1830
 
1831
1831
  // Skip `body` field if `null`
1832
1832
  const node = body === null
1833
- ? { type: 'TSModuleDeclaration', start, end, id, kind, declare, global }
1834
- : { type: 'TSModuleDeclaration', start, end, id, body, kind, declare, global };
1833
+ ? { type: 'TSModuleDeclaration', id, kind, declare, global, start, end }
1834
+ : { type: 'TSModuleDeclaration', id, body, kind, declare, global, start, end };
1835
1835
  return node;
1836
1836
  }
1837
1837
 
@@ -1840,49 +1840,49 @@ function deserializeTSModuleBlock(pos) {
1840
1840
  body.push(...deserializeVecStatement(pos + 32));
1841
1841
  return {
1842
1842
  type: 'TSModuleBlock',
1843
+ body,
1843
1844
  start: deserializeU32(pos),
1844
1845
  end: deserializeU32(pos + 4),
1845
- body,
1846
1846
  };
1847
1847
  }
1848
1848
 
1849
1849
  function deserializeTSTypeLiteral(pos) {
1850
1850
  return {
1851
1851
  type: 'TSTypeLiteral',
1852
+ members: deserializeVecTSSignature(pos + 8),
1852
1853
  start: deserializeU32(pos),
1853
1854
  end: deserializeU32(pos + 4),
1854
- members: deserializeVecTSSignature(pos + 8),
1855
1855
  };
1856
1856
  }
1857
1857
 
1858
1858
  function deserializeTSInferType(pos) {
1859
1859
  return {
1860
1860
  type: 'TSInferType',
1861
+ typeParameter: deserializeBoxTSTypeParameter(pos + 8),
1861
1862
  start: deserializeU32(pos),
1862
1863
  end: deserializeU32(pos + 4),
1863
- typeParameter: deserializeBoxTSTypeParameter(pos + 8),
1864
1864
  };
1865
1865
  }
1866
1866
 
1867
1867
  function deserializeTSTypeQuery(pos) {
1868
1868
  return {
1869
1869
  type: 'TSTypeQuery',
1870
- start: deserializeU32(pos),
1871
- end: deserializeU32(pos + 4),
1872
1870
  exprName: deserializeTSTypeQueryExprName(pos + 8),
1873
1871
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1872
+ start: deserializeU32(pos),
1873
+ end: deserializeU32(pos + 4),
1874
1874
  };
1875
1875
  }
1876
1876
 
1877
1877
  function deserializeTSImportType(pos) {
1878
1878
  return {
1879
1879
  type: 'TSImportType',
1880
- start: deserializeU32(pos),
1881
- end: deserializeU32(pos + 4),
1882
1880
  argument: deserializeTSType(pos + 8),
1883
1881
  options: deserializeOptionBoxObjectExpression(pos + 24),
1884
1882
  qualifier: deserializeOptionTSTypeName(pos + 32),
1885
1883
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 48),
1884
+ start: deserializeU32(pos),
1885
+ end: deserializeU32(pos + 4),
1886
1886
  };
1887
1887
  }
1888
1888
 
@@ -1892,23 +1892,23 @@ function deserializeTSFunctionType(pos) {
1892
1892
  if (thisParam !== null) params.unshift(thisParam);
1893
1893
  return {
1894
1894
  type: 'TSFunctionType',
1895
- start: deserializeU32(pos),
1896
- end: deserializeU32(pos + 4),
1897
1895
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
1898
1896
  params,
1899
1897
  returnType: deserializeBoxTSTypeAnnotation(pos + 32),
1898
+ start: deserializeU32(pos),
1899
+ end: deserializeU32(pos + 4),
1900
1900
  };
1901
1901
  }
1902
1902
 
1903
1903
  function deserializeTSConstructorType(pos) {
1904
1904
  return {
1905
1905
  type: 'TSConstructorType',
1906
- start: deserializeU32(pos),
1907
- end: deserializeU32(pos + 4),
1908
1906
  abstract: deserializeBool(pos + 32),
1909
1907
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
1910
1908
  params: deserializeBoxFormalParameters(pos + 16),
1911
1909
  returnType: deserializeBoxTSTypeAnnotation(pos + 24),
1910
+ start: deserializeU32(pos),
1911
+ end: deserializeU32(pos + 4),
1912
1912
  };
1913
1913
  }
1914
1914
 
@@ -1918,140 +1918,140 @@ function deserializeTSMappedType(pos) {
1918
1918
  if (optional === null) optional = false;
1919
1919
  return {
1920
1920
  type: 'TSMappedType',
1921
- start: deserializeU32(pos),
1922
- end: deserializeU32(pos + 4),
1923
1921
  key: typeParameter.name,
1924
1922
  constraint: typeParameter.constraint,
1925
1923
  nameType: deserializeOptionTSType(pos + 16),
1926
1924
  typeAnnotation: deserializeOptionTSType(pos + 32),
1927
1925
  optional,
1928
1926
  readonly: deserializeOptionTSMappedTypeModifierOperator(pos + 53),
1927
+ start: deserializeU32(pos),
1928
+ end: deserializeU32(pos + 4),
1929
1929
  };
1930
1930
  }
1931
1931
 
1932
1932
  function deserializeTSTemplateLiteralType(pos) {
1933
1933
  return {
1934
1934
  type: 'TSTemplateLiteralType',
1935
- start: deserializeU32(pos),
1936
- end: deserializeU32(pos + 4),
1937
1935
  quasis: deserializeVecTemplateElement(pos + 8),
1938
1936
  types: deserializeVecTSType(pos + 32),
1937
+ start: deserializeU32(pos),
1938
+ end: deserializeU32(pos + 4),
1939
1939
  };
1940
1940
  }
1941
1941
 
1942
1942
  function deserializeTSAsExpression(pos) {
1943
1943
  return {
1944
1944
  type: 'TSAsExpression',
1945
- start: deserializeU32(pos),
1946
- end: deserializeU32(pos + 4),
1947
1945
  expression: deserializeExpression(pos + 8),
1948
1946
  typeAnnotation: deserializeTSType(pos + 24),
1947
+ start: deserializeU32(pos),
1948
+ end: deserializeU32(pos + 4),
1949
1949
  };
1950
1950
  }
1951
1951
 
1952
1952
  function deserializeTSSatisfiesExpression(pos) {
1953
1953
  return {
1954
1954
  type: 'TSSatisfiesExpression',
1955
- start: deserializeU32(pos),
1956
- end: deserializeU32(pos + 4),
1957
1955
  expression: deserializeExpression(pos + 8),
1958
1956
  typeAnnotation: deserializeTSType(pos + 24),
1957
+ start: deserializeU32(pos),
1958
+ end: deserializeU32(pos + 4),
1959
1959
  };
1960
1960
  }
1961
1961
 
1962
1962
  function deserializeTSTypeAssertion(pos) {
1963
1963
  return {
1964
1964
  type: 'TSTypeAssertion',
1965
- start: deserializeU32(pos),
1966
- end: deserializeU32(pos + 4),
1967
1965
  typeAnnotation: deserializeTSType(pos + 8),
1968
1966
  expression: deserializeExpression(pos + 24),
1967
+ start: deserializeU32(pos),
1968
+ end: deserializeU32(pos + 4),
1969
1969
  };
1970
1970
  }
1971
1971
 
1972
1972
  function deserializeTSImportEqualsDeclaration(pos) {
1973
1973
  return {
1974
1974
  type: 'TSImportEqualsDeclaration',
1975
- start: deserializeU32(pos),
1976
- end: deserializeU32(pos + 4),
1977
1975
  id: deserializeBindingIdentifier(pos + 8),
1978
1976
  moduleReference: deserializeTSModuleReference(pos + 40),
1979
1977
  importKind: deserializeImportOrExportKind(pos + 56),
1978
+ start: deserializeU32(pos),
1979
+ end: deserializeU32(pos + 4),
1980
1980
  };
1981
1981
  }
1982
1982
 
1983
1983
  function deserializeTSExternalModuleReference(pos) {
1984
1984
  return {
1985
1985
  type: 'TSExternalModuleReference',
1986
+ expression: deserializeStringLiteral(pos + 8),
1986
1987
  start: deserializeU32(pos),
1987
1988
  end: deserializeU32(pos + 4),
1988
- expression: deserializeStringLiteral(pos + 8),
1989
1989
  };
1990
1990
  }
1991
1991
 
1992
1992
  function deserializeTSNonNullExpression(pos) {
1993
1993
  return {
1994
1994
  type: 'TSNonNullExpression',
1995
+ expression: deserializeExpression(pos + 8),
1995
1996
  start: deserializeU32(pos),
1996
1997
  end: deserializeU32(pos + 4),
1997
- expression: deserializeExpression(pos + 8),
1998
1998
  };
1999
1999
  }
2000
2000
 
2001
2001
  function deserializeDecorator(pos) {
2002
2002
  return {
2003
2003
  type: 'Decorator',
2004
+ expression: deserializeExpression(pos + 8),
2004
2005
  start: deserializeU32(pos),
2005
2006
  end: deserializeU32(pos + 4),
2006
- expression: deserializeExpression(pos + 8),
2007
2007
  };
2008
2008
  }
2009
2009
 
2010
2010
  function deserializeTSExportAssignment(pos) {
2011
2011
  return {
2012
2012
  type: 'TSExportAssignment',
2013
+ expression: deserializeExpression(pos + 8),
2013
2014
  start: deserializeU32(pos),
2014
2015
  end: deserializeU32(pos + 4),
2015
- expression: deserializeExpression(pos + 8),
2016
2016
  };
2017
2017
  }
2018
2018
 
2019
2019
  function deserializeTSNamespaceExportDeclaration(pos) {
2020
2020
  return {
2021
2021
  type: 'TSNamespaceExportDeclaration',
2022
+ id: deserializeIdentifierName(pos + 8),
2022
2023
  start: deserializeU32(pos),
2023
2024
  end: deserializeU32(pos + 4),
2024
- id: deserializeIdentifierName(pos + 8),
2025
2025
  };
2026
2026
  }
2027
2027
 
2028
2028
  function deserializeTSInstantiationExpression(pos) {
2029
2029
  return {
2030
2030
  type: 'TSInstantiationExpression',
2031
- start: deserializeU32(pos),
2032
- end: deserializeU32(pos + 4),
2033
2031
  expression: deserializeExpression(pos + 8),
2034
2032
  typeArguments: deserializeBoxTSTypeParameterInstantiation(pos + 24),
2033
+ start: deserializeU32(pos),
2034
+ end: deserializeU32(pos + 4),
2035
2035
  };
2036
2036
  }
2037
2037
 
2038
2038
  function deserializeJSDocNullableType(pos) {
2039
2039
  return {
2040
2040
  type: 'TSJSDocNullableType',
2041
- start: deserializeU32(pos),
2042
- end: deserializeU32(pos + 4),
2043
2041
  typeAnnotation: deserializeTSType(pos + 8),
2044
2042
  postfix: deserializeBool(pos + 24),
2043
+ start: deserializeU32(pos),
2044
+ end: deserializeU32(pos + 4),
2045
2045
  };
2046
2046
  }
2047
2047
 
2048
2048
  function deserializeJSDocNonNullableType(pos) {
2049
2049
  return {
2050
2050
  type: 'TSJSDocNonNullableType',
2051
- start: deserializeU32(pos),
2052
- end: deserializeU32(pos + 4),
2053
2051
  typeAnnotation: deserializeTSType(pos + 8),
2054
2052
  postfix: deserializeBool(pos + 24),
2053
+ start: deserializeU32(pos),
2054
+ end: deserializeU32(pos + 4),
2055
2055
  };
2056
2056
  }
2057
2057
 
@@ -2094,21 +2094,21 @@ function deserializeImportEntry(pos) {
2094
2094
 
2095
2095
  function deserializeExportEntry(pos) {
2096
2096
  return {
2097
- start: deserializeU32(pos),
2098
- end: deserializeU32(pos + 4),
2099
2097
  moduleRequest: deserializeOptionNameSpan(pos + 16),
2100
2098
  importName: deserializeExportImportName(pos + 40),
2101
2099
  exportName: deserializeExportExportName(pos + 72),
2102
2100
  localName: deserializeExportLocalName(pos + 104),
2103
2101
  isType: deserializeBool(pos + 136),
2102
+ start: deserializeU32(pos),
2103
+ end: deserializeU32(pos + 4),
2104
2104
  };
2105
2105
  }
2106
2106
 
2107
2107
  function deserializeDynamicImport(pos) {
2108
2108
  return {
2109
+ moduleRequest: deserializeSpan(pos + 8),
2109
2110
  start: deserializeU32(pos),
2110
2111
  end: deserializeU32(pos + 4),
2111
- moduleRequest: deserializeSpan(pos + 8),
2112
2112
  };
2113
2113
  }
2114
2114
 
@@ -2164,18 +2164,18 @@ function deserializeEcmaScriptModule(pos) {
2164
2164
 
2165
2165
  function deserializeStaticImport(pos) {
2166
2166
  return {
2167
- start: deserializeU32(pos),
2168
- end: deserializeU32(pos + 4),
2169
2167
  moduleRequest: deserializeNameSpan(pos + 8),
2170
2168
  entries: deserializeVecImportEntry(pos + 32),
2169
+ start: deserializeU32(pos),
2170
+ end: deserializeU32(pos + 4),
2171
2171
  };
2172
2172
  }
2173
2173
 
2174
2174
  function deserializeStaticExport(pos) {
2175
2175
  return {
2176
+ entries: deserializeVecExportEntry(pos + 8),
2176
2177
  start: deserializeU32(pos),
2177
2178
  end: deserializeU32(pos + 4),
2178
- entries: deserializeVecExportEntry(pos + 8),
2179
2179
  };
2180
2180
  }
2181
2181
 
@@ -3244,14 +3244,14 @@ function deserializeJSXElementName(pos) {
3244
3244
  return deserializeBoxJSXIdentifier(pos + 8);
3245
3245
  case 1:
3246
3246
  const ident = deserializeBoxIdentifierReference(pos + 8);
3247
- return { type: 'JSXIdentifier', start: ident.start, end: ident.end, name: ident.name };
3247
+ return { type: 'JSXIdentifier', name: ident.name, start: ident.start, end: ident.end };
3248
3248
  case 2:
3249
3249
  return deserializeBoxJSXNamespacedName(pos + 8);
3250
3250
  case 3:
3251
3251
  return deserializeBoxJSXMemberExpression(pos + 8);
3252
3252
  case 4:
3253
3253
  const thisExpr = deserializeBoxThisExpression(pos + 8);
3254
- return { type: 'JSXIdentifier', start: thisExpr.start, end: thisExpr.end, name: 'this' };
3254
+ return { type: 'JSXIdentifier', name: 'this', start: thisExpr.start, end: thisExpr.end };
3255
3255
  default:
3256
3256
  throw new Error(`Unexpected discriminant ${uint8[pos]} for JSXElementName`);
3257
3257
  }
@@ -3261,12 +3261,12 @@ function deserializeJSXMemberExpressionObject(pos) {
3261
3261
  switch (uint8[pos]) {
3262
3262
  case 0:
3263
3263
  const ident = deserializeBoxIdentifierReference(pos + 8);
3264
- return { type: 'JSXIdentifier', start: ident.start, end: ident.end, name: ident.name };
3264
+ return { type: 'JSXIdentifier', name: ident.name, start: ident.start, end: ident.end };
3265
3265
  case 1:
3266
3266
  return deserializeBoxJSXMemberExpression(pos + 8);
3267
3267
  case 2:
3268
3268
  const thisExpr = deserializeBoxThisExpression(pos + 8);
3269
- return { type: 'JSXIdentifier', start: thisExpr.start, end: thisExpr.end, name: 'this' };
3269
+ return { type: 'JSXIdentifier', name: 'this', start: thisExpr.start, end: thisExpr.end };
3270
3270
  default:
3271
3271
  throw new Error(`Unexpected discriminant ${uint8[pos]} for JSXMemberExpressionObject`);
3272
3272
  }