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.
@@ -59,11 +59,11 @@ function deserializeProgram(pos) {
59
59
  }
60
60
  const program = {
61
61
  type: 'Program',
62
- start,
63
- end,
64
62
  body,
65
63
  sourceType: deserializeModuleKind(pos + 125),
66
64
  hashbang: deserializeOptionHashbang(pos + 48),
65
+ start,
66
+ end,
67
67
  };
68
68
  return program;
69
69
  }
@@ -71,48 +71,48 @@ function deserializeProgram(pos) {
71
71
  function deserializeIdentifierName(pos) {
72
72
  return {
73
73
  type: 'Identifier',
74
- start: deserializeU32(pos),
75
- end: deserializeU32(pos + 4),
76
74
  decorators: [],
77
75
  name: deserializeStr(pos + 8),
78
76
  optional: false,
79
77
  typeAnnotation: null,
78
+ start: deserializeU32(pos),
79
+ end: deserializeU32(pos + 4),
80
80
  };
81
81
  }
82
82
 
83
83
  function deserializeIdentifierReference(pos) {
84
84
  return {
85
85
  type: 'Identifier',
86
- start: deserializeU32(pos),
87
- end: deserializeU32(pos + 4),
88
86
  decorators: [],
89
87
  name: deserializeStr(pos + 8),
90
88
  optional: false,
91
89
  typeAnnotation: null,
90
+ start: deserializeU32(pos),
91
+ end: deserializeU32(pos + 4),
92
92
  };
93
93
  }
94
94
 
95
95
  function deserializeBindingIdentifier(pos) {
96
96
  return {
97
97
  type: 'Identifier',
98
- start: deserializeU32(pos),
99
- end: deserializeU32(pos + 4),
100
98
  decorators: [],
101
99
  name: deserializeStr(pos + 8),
102
100
  optional: false,
103
101
  typeAnnotation: null,
102
+ start: deserializeU32(pos),
103
+ end: deserializeU32(pos + 4),
104
104
  };
105
105
  }
106
106
 
107
107
  function deserializeLabelIdentifier(pos) {
108
108
  return {
109
109
  type: 'Identifier',
110
- start: deserializeU32(pos),
111
- end: deserializeU32(pos + 4),
112
110
  decorators: [],
113
111
  name: deserializeStr(pos + 8),
114
112
  optional: false,
115
113
  typeAnnotation: null,
114
+ start: deserializeU32(pos),
115
+ end: deserializeU32(pos + 4),
116
116
  };
117
117
  }
118
118
 
@@ -127,9 +127,9 @@ function deserializeThisExpression(pos) {
127
127
  function deserializeArrayExpression(pos) {
128
128
  return {
129
129
  type: 'ArrayExpression',
130
+ elements: deserializeVecArrayExpressionElement(pos + 8),
130
131
  start: deserializeU32(pos),
131
132
  end: deserializeU32(pos + 4),
132
- elements: deserializeVecArrayExpressionElement(pos + 8),
133
133
  };
134
134
  }
135
135
 
@@ -140,17 +140,15 @@ function deserializeElision(pos) {
140
140
  function deserializeObjectExpression(pos) {
141
141
  return {
142
142
  type: 'ObjectExpression',
143
+ properties: deserializeVecObjectPropertyKind(pos + 8),
143
144
  start: deserializeU32(pos),
144
145
  end: deserializeU32(pos + 4),
145
- properties: deserializeVecObjectPropertyKind(pos + 8),
146
146
  };
147
147
  }
148
148
 
149
149
  function deserializeObjectProperty(pos) {
150
150
  return {
151
151
  type: 'Property',
152
- start: deserializeU32(pos),
153
- end: deserializeU32(pos + 4),
154
152
  kind: deserializePropertyKind(pos + 40),
155
153
  key: deserializePropertyKey(pos + 8),
156
154
  value: deserializeExpression(pos + 24),
@@ -158,27 +156,29 @@ function deserializeObjectProperty(pos) {
158
156
  shorthand: deserializeBool(pos + 42),
159
157
  computed: deserializeBool(pos + 43),
160
158
  optional: false,
159
+ start: deserializeU32(pos),
160
+ end: deserializeU32(pos + 4),
161
161
  };
162
162
  }
163
163
 
164
164
  function deserializeTemplateLiteral(pos) {
165
165
  return {
166
166
  type: 'TemplateLiteral',
167
- start: deserializeU32(pos),
168
- end: deserializeU32(pos + 4),
169
167
  quasis: deserializeVecTemplateElement(pos + 8),
170
168
  expressions: deserializeVecExpression(pos + 32),
169
+ start: deserializeU32(pos),
170
+ end: deserializeU32(pos + 4),
171
171
  };
172
172
  }
173
173
 
174
174
  function deserializeTaggedTemplateExpression(pos) {
175
175
  return {
176
176
  type: 'TaggedTemplateExpression',
177
- start: deserializeU32(pos),
178
- end: deserializeU32(pos + 4),
179
177
  tag: deserializeExpression(pos + 8),
180
178
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
181
179
  quasi: deserializeTemplateLiteral(pos + 32),
180
+ start: deserializeU32(pos),
181
+ end: deserializeU32(pos + 4),
182
182
  };
183
183
  }
184
184
 
@@ -191,7 +191,7 @@ function deserializeTemplateElement(pos) {
191
191
  value.cooked = value.cooked
192
192
  .replace(/\uFFFD(.{4})/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)));
193
193
  }
194
- return { type: 'TemplateElement', start, end, value, tail };
194
+ return { type: 'TemplateElement', value, tail, start, end };
195
195
  }
196
196
 
197
197
  function deserializeTemplateElementValue(pos) {
@@ -204,155 +204,155 @@ function deserializeTemplateElementValue(pos) {
204
204
  function deserializeComputedMemberExpression(pos) {
205
205
  return {
206
206
  type: 'MemberExpression',
207
- start: deserializeU32(pos),
208
- end: deserializeU32(pos + 4),
209
207
  object: deserializeExpression(pos + 8),
210
208
  property: deserializeExpression(pos + 24),
211
209
  optional: deserializeBool(pos + 40),
212
210
  computed: true,
211
+ start: deserializeU32(pos),
212
+ end: deserializeU32(pos + 4),
213
213
  };
214
214
  }
215
215
 
216
216
  function deserializeStaticMemberExpression(pos) {
217
217
  return {
218
218
  type: 'MemberExpression',
219
- start: deserializeU32(pos),
220
- end: deserializeU32(pos + 4),
221
219
  object: deserializeExpression(pos + 8),
222
220
  property: deserializeIdentifierName(pos + 24),
223
221
  optional: deserializeBool(pos + 48),
224
222
  computed: false,
223
+ start: deserializeU32(pos),
224
+ end: deserializeU32(pos + 4),
225
225
  };
226
226
  }
227
227
 
228
228
  function deserializePrivateFieldExpression(pos) {
229
229
  return {
230
230
  type: 'MemberExpression',
231
- start: deserializeU32(pos),
232
- end: deserializeU32(pos + 4),
233
231
  object: deserializeExpression(pos + 8),
234
232
  property: deserializePrivateIdentifier(pos + 24),
235
233
  optional: deserializeBool(pos + 48),
236
234
  computed: false,
235
+ start: deserializeU32(pos),
236
+ end: deserializeU32(pos + 4),
237
237
  };
238
238
  }
239
239
 
240
240
  function deserializeCallExpression(pos) {
241
241
  return {
242
242
  type: 'CallExpression',
243
- start: deserializeU32(pos),
244
- end: deserializeU32(pos + 4),
245
243
  callee: deserializeExpression(pos + 8),
246
244
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
247
245
  arguments: deserializeVecArgument(pos + 32),
248
246
  optional: deserializeBool(pos + 56),
247
+ start: deserializeU32(pos),
248
+ end: deserializeU32(pos + 4),
249
249
  };
250
250
  }
251
251
 
252
252
  function deserializeNewExpression(pos) {
253
253
  return {
254
254
  type: 'NewExpression',
255
- start: deserializeU32(pos),
256
- end: deserializeU32(pos + 4),
257
255
  callee: deserializeExpression(pos + 8),
258
256
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
259
257
  arguments: deserializeVecArgument(pos + 32),
258
+ start: deserializeU32(pos),
259
+ end: deserializeU32(pos + 4),
260
260
  };
261
261
  }
262
262
 
263
263
  function deserializeMetaProperty(pos) {
264
264
  return {
265
265
  type: 'MetaProperty',
266
- start: deserializeU32(pos),
267
- end: deserializeU32(pos + 4),
268
266
  meta: deserializeIdentifierName(pos + 8),
269
267
  property: deserializeIdentifierName(pos + 32),
268
+ start: deserializeU32(pos),
269
+ end: deserializeU32(pos + 4),
270
270
  };
271
271
  }
272
272
 
273
273
  function deserializeSpreadElement(pos) {
274
274
  return {
275
275
  type: 'SpreadElement',
276
+ argument: deserializeExpression(pos + 8),
276
277
  start: deserializeU32(pos),
277
278
  end: deserializeU32(pos + 4),
278
- argument: deserializeExpression(pos + 8),
279
279
  };
280
280
  }
281
281
 
282
282
  function deserializeUpdateExpression(pos) {
283
283
  return {
284
284
  type: 'UpdateExpression',
285
- start: deserializeU32(pos),
286
- end: deserializeU32(pos + 4),
287
285
  operator: deserializeUpdateOperator(pos + 24),
288
286
  prefix: deserializeBool(pos + 25),
289
287
  argument: deserializeSimpleAssignmentTarget(pos + 8),
288
+ start: deserializeU32(pos),
289
+ end: deserializeU32(pos + 4),
290
290
  };
291
291
  }
292
292
 
293
293
  function deserializeUnaryExpression(pos) {
294
294
  return {
295
295
  type: 'UnaryExpression',
296
- start: deserializeU32(pos),
297
- end: deserializeU32(pos + 4),
298
296
  operator: deserializeUnaryOperator(pos + 24),
299
297
  argument: deserializeExpression(pos + 8),
300
298
  prefix: true,
299
+ start: deserializeU32(pos),
300
+ end: deserializeU32(pos + 4),
301
301
  };
302
302
  }
303
303
 
304
304
  function deserializeBinaryExpression(pos) {
305
305
  return {
306
306
  type: 'BinaryExpression',
307
- start: deserializeU32(pos),
308
- end: deserializeU32(pos + 4),
309
307
  left: deserializeExpression(pos + 8),
310
308
  operator: deserializeBinaryOperator(pos + 40),
311
309
  right: deserializeExpression(pos + 24),
310
+ start: deserializeU32(pos),
311
+ end: deserializeU32(pos + 4),
312
312
  };
313
313
  }
314
314
 
315
315
  function deserializePrivateInExpression(pos) {
316
316
  return {
317
317
  type: 'BinaryExpression',
318
- start: deserializeU32(pos),
319
- end: deserializeU32(pos + 4),
320
318
  left: deserializePrivateIdentifier(pos + 8),
321
319
  operator: 'in',
322
320
  right: deserializeExpression(pos + 32),
321
+ start: deserializeU32(pos),
322
+ end: deserializeU32(pos + 4),
323
323
  };
324
324
  }
325
325
 
326
326
  function deserializeLogicalExpression(pos) {
327
327
  return {
328
328
  type: 'LogicalExpression',
329
- start: deserializeU32(pos),
330
- end: deserializeU32(pos + 4),
331
329
  left: deserializeExpression(pos + 8),
332
330
  operator: deserializeLogicalOperator(pos + 40),
333
331
  right: deserializeExpression(pos + 24),
332
+ start: deserializeU32(pos),
333
+ end: deserializeU32(pos + 4),
334
334
  };
335
335
  }
336
336
 
337
337
  function deserializeConditionalExpression(pos) {
338
338
  return {
339
339
  type: 'ConditionalExpression',
340
- start: deserializeU32(pos),
341
- end: deserializeU32(pos + 4),
342
340
  test: deserializeExpression(pos + 8),
343
341
  consequent: deserializeExpression(pos + 24),
344
342
  alternate: deserializeExpression(pos + 40),
343
+ start: deserializeU32(pos),
344
+ end: deserializeU32(pos + 4),
345
345
  };
346
346
  }
347
347
 
348
348
  function deserializeAssignmentExpression(pos) {
349
349
  return {
350
350
  type: 'AssignmentExpression',
351
- start: deserializeU32(pos),
352
- end: deserializeU32(pos + 4),
353
351
  operator: deserializeAssignmentOperator(pos + 40),
354
352
  left: deserializeAssignmentTarget(pos + 8),
355
353
  right: deserializeExpression(pos + 24),
354
+ start: deserializeU32(pos),
355
+ end: deserializeU32(pos + 4),
356
356
  };
357
357
  }
358
358
 
@@ -362,12 +362,12 @@ function deserializeArrayAssignmentTarget(pos) {
362
362
  if (rest !== null) elements.push(rest);
363
363
  return {
364
364
  type: 'ArrayPattern',
365
- start: deserializeU32(pos),
366
- end: deserializeU32(pos + 4),
367
365
  decorators: [],
368
366
  elements,
369
367
  optional: false,
370
368
  typeAnnotation: null,
369
+ start: deserializeU32(pos),
370
+ end: deserializeU32(pos + 4),
371
371
  };
372
372
  }
373
373
 
@@ -377,63 +377,61 @@ function deserializeObjectAssignmentTarget(pos) {
377
377
  if (rest !== null) properties.push(rest);
378
378
  return {
379
379
  type: 'ObjectPattern',
380
- start: deserializeU32(pos),
381
- end: deserializeU32(pos + 4),
382
380
  decorators: [],
383
381
  properties,
384
382
  optional: false,
385
383
  typeAnnotation: null,
384
+ start: deserializeU32(pos),
385
+ end: deserializeU32(pos + 4),
386
386
  };
387
387
  }
388
388
 
389
389
  function deserializeAssignmentTargetRest(pos) {
390
390
  return {
391
391
  type: 'RestElement',
392
- start: deserializeU32(pos),
393
- end: deserializeU32(pos + 4),
394
392
  decorators: [],
395
393
  argument: deserializeAssignmentTarget(pos + 8),
396
394
  optional: false,
397
395
  typeAnnotation: null,
398
396
  value: null,
397
+ start: deserializeU32(pos),
398
+ end: deserializeU32(pos + 4),
399
399
  };
400
400
  }
401
401
 
402
402
  function deserializeAssignmentTargetWithDefault(pos) {
403
403
  return {
404
404
  type: 'AssignmentPattern',
405
- start: deserializeU32(pos),
406
- end: deserializeU32(pos + 4),
407
405
  decorators: [],
408
406
  left: deserializeAssignmentTarget(pos + 8),
409
407
  right: deserializeExpression(pos + 24),
410
408
  optional: false,
411
409
  typeAnnotation: null,
410
+ start: deserializeU32(pos),
411
+ end: deserializeU32(pos + 4),
412
412
  };
413
413
  }
414
414
 
415
415
  function deserializeAssignmentTargetPropertyIdentifier(pos) {
416
- const start = deserializeU32(pos),
417
- end = deserializeU32(pos + 4),
418
- key = deserializeIdentifierReference(pos + 8);
416
+ const key = deserializeIdentifierReference(pos + 8),
417
+ start = deserializeU32(pos),
418
+ end = deserializeU32(pos + 4);
419
419
  const init = deserializeOptionExpression(pos + 40),
420
420
  keyCopy = { ...key },
421
421
  value = init === null
422
422
  ? keyCopy
423
423
  : {
424
424
  type: 'AssignmentPattern',
425
- start: start,
426
- end: end,
427
425
  decorators: [],
428
426
  left: keyCopy,
429
427
  right: init,
430
428
  optional: false,
431
429
  typeAnnotation: null,
430
+ start: start,
431
+ end: end,
432
432
  };
433
433
  return {
434
434
  type: 'Property',
435
- start,
436
- end,
437
435
  kind: 'init',
438
436
  key,
439
437
  value,
@@ -441,14 +439,14 @@ function deserializeAssignmentTargetPropertyIdentifier(pos) {
441
439
  shorthand: true,
442
440
  computed: false,
443
441
  optional: false,
442
+ start,
443
+ end,
444
444
  };
445
445
  }
446
446
 
447
447
  function deserializeAssignmentTargetPropertyProperty(pos) {
448
448
  return {
449
449
  type: 'Property',
450
- start: deserializeU32(pos),
451
- end: deserializeU32(pos + 4),
452
450
  kind: 'init',
453
451
  key: deserializePropertyKey(pos + 8),
454
452
  value: deserializeAssignmentTargetMaybeDefault(pos + 24),
@@ -456,15 +454,17 @@ function deserializeAssignmentTargetPropertyProperty(pos) {
456
454
  shorthand: false,
457
455
  computed: deserializeBool(pos + 40),
458
456
  optional: false,
457
+ start: deserializeU32(pos),
458
+ end: deserializeU32(pos + 4),
459
459
  };
460
460
  }
461
461
 
462
462
  function deserializeSequenceExpression(pos) {
463
463
  return {
464
464
  type: 'SequenceExpression',
465
+ expressions: deserializeVecExpression(pos + 8),
465
466
  start: deserializeU32(pos),
466
467
  end: deserializeU32(pos + 4),
467
- expressions: deserializeVecExpression(pos + 8),
468
468
  };
469
469
  }
470
470
 
@@ -479,77 +479,77 @@ function deserializeSuper(pos) {
479
479
  function deserializeAwaitExpression(pos) {
480
480
  return {
481
481
  type: 'AwaitExpression',
482
+ argument: deserializeExpression(pos + 8),
482
483
  start: deserializeU32(pos),
483
484
  end: deserializeU32(pos + 4),
484
- argument: deserializeExpression(pos + 8),
485
485
  };
486
486
  }
487
487
 
488
488
  function deserializeChainExpression(pos) {
489
489
  return {
490
490
  type: 'ChainExpression',
491
+ expression: deserializeChainElement(pos + 8),
491
492
  start: deserializeU32(pos),
492
493
  end: deserializeU32(pos + 4),
493
- expression: deserializeChainElement(pos + 8),
494
494
  };
495
495
  }
496
496
 
497
497
  function deserializeParenthesizedExpression(pos) {
498
498
  return {
499
499
  type: 'ParenthesizedExpression',
500
+ expression: deserializeExpression(pos + 8),
500
501
  start: deserializeU32(pos),
501
502
  end: deserializeU32(pos + 4),
502
- expression: deserializeExpression(pos + 8),
503
503
  };
504
504
  }
505
505
 
506
506
  function deserializeDirective(pos) {
507
507
  return {
508
508
  type: 'ExpressionStatement',
509
- start: deserializeU32(pos),
510
- end: deserializeU32(pos + 4),
511
509
  expression: deserializeStringLiteral(pos + 8),
512
510
  directive: deserializeStr(pos + 56),
511
+ start: deserializeU32(pos),
512
+ end: deserializeU32(pos + 4),
513
513
  };
514
514
  }
515
515
 
516
516
  function deserializeHashbang(pos) {
517
517
  return {
518
518
  type: 'Hashbang',
519
+ value: deserializeStr(pos + 8),
519
520
  start: deserializeU32(pos),
520
521
  end: deserializeU32(pos + 4),
521
- value: deserializeStr(pos + 8),
522
522
  };
523
523
  }
524
524
 
525
525
  function deserializeBlockStatement(pos) {
526
526
  return {
527
527
  type: 'BlockStatement',
528
+ body: deserializeVecStatement(pos + 8),
528
529
  start: deserializeU32(pos),
529
530
  end: deserializeU32(pos + 4),
530
- body: deserializeVecStatement(pos + 8),
531
531
  };
532
532
  }
533
533
 
534
534
  function deserializeVariableDeclaration(pos) {
535
535
  return {
536
536
  type: 'VariableDeclaration',
537
- start: deserializeU32(pos),
538
- end: deserializeU32(pos + 4),
539
537
  kind: deserializeVariableDeclarationKind(pos + 32),
540
538
  declarations: deserializeVecVariableDeclarator(pos + 8),
541
539
  declare: deserializeBool(pos + 33),
540
+ start: deserializeU32(pos),
541
+ end: deserializeU32(pos + 4),
542
542
  };
543
543
  }
544
544
 
545
545
  function deserializeVariableDeclarator(pos) {
546
546
  return {
547
547
  type: 'VariableDeclarator',
548
- start: deserializeU32(pos),
549
- end: deserializeU32(pos + 4),
550
548
  id: deserializeBindingPattern(pos + 8),
551
549
  init: deserializeOptionExpression(pos + 40),
552
550
  definite: deserializeBool(pos + 57),
551
+ start: deserializeU32(pos),
552
+ end: deserializeU32(pos + 4),
553
553
  };
554
554
  }
555
555
 
@@ -564,173 +564,173 @@ function deserializeEmptyStatement(pos) {
564
564
  function deserializeExpressionStatement(pos) {
565
565
  return {
566
566
  type: 'ExpressionStatement',
567
- start: deserializeU32(pos),
568
- end: deserializeU32(pos + 4),
569
567
  expression: deserializeExpression(pos + 8),
570
568
  directive: null,
569
+ start: deserializeU32(pos),
570
+ end: deserializeU32(pos + 4),
571
571
  };
572
572
  }
573
573
 
574
574
  function deserializeIfStatement(pos) {
575
575
  return {
576
576
  type: 'IfStatement',
577
- start: deserializeU32(pos),
578
- end: deserializeU32(pos + 4),
579
577
  test: deserializeExpression(pos + 8),
580
578
  consequent: deserializeStatement(pos + 24),
581
579
  alternate: deserializeOptionStatement(pos + 40),
580
+ start: deserializeU32(pos),
581
+ end: deserializeU32(pos + 4),
582
582
  };
583
583
  }
584
584
 
585
585
  function deserializeDoWhileStatement(pos) {
586
586
  return {
587
587
  type: 'DoWhileStatement',
588
- start: deserializeU32(pos),
589
- end: deserializeU32(pos + 4),
590
588
  body: deserializeStatement(pos + 8),
591
589
  test: deserializeExpression(pos + 24),
590
+ start: deserializeU32(pos),
591
+ end: deserializeU32(pos + 4),
592
592
  };
593
593
  }
594
594
 
595
595
  function deserializeWhileStatement(pos) {
596
596
  return {
597
597
  type: 'WhileStatement',
598
- start: deserializeU32(pos),
599
- end: deserializeU32(pos + 4),
600
598
  test: deserializeExpression(pos + 8),
601
599
  body: deserializeStatement(pos + 24),
600
+ start: deserializeU32(pos),
601
+ end: deserializeU32(pos + 4),
602
602
  };
603
603
  }
604
604
 
605
605
  function deserializeForStatement(pos) {
606
606
  return {
607
607
  type: 'ForStatement',
608
- start: deserializeU32(pos),
609
- end: deserializeU32(pos + 4),
610
608
  init: deserializeOptionForStatementInit(pos + 8),
611
609
  test: deserializeOptionExpression(pos + 24),
612
610
  update: deserializeOptionExpression(pos + 40),
613
611
  body: deserializeStatement(pos + 56),
612
+ start: deserializeU32(pos),
613
+ end: deserializeU32(pos + 4),
614
614
  };
615
615
  }
616
616
 
617
617
  function deserializeForInStatement(pos) {
618
618
  return {
619
619
  type: 'ForInStatement',
620
- start: deserializeU32(pos),
621
- end: deserializeU32(pos + 4),
622
620
  left: deserializeForStatementLeft(pos + 8),
623
621
  right: deserializeExpression(pos + 24),
624
622
  body: deserializeStatement(pos + 40),
623
+ start: deserializeU32(pos),
624
+ end: deserializeU32(pos + 4),
625
625
  };
626
626
  }
627
627
 
628
628
  function deserializeForOfStatement(pos) {
629
629
  return {
630
630
  type: 'ForOfStatement',
631
- start: deserializeU32(pos),
632
- end: deserializeU32(pos + 4),
633
631
  await: deserializeBool(pos + 60),
634
632
  left: deserializeForStatementLeft(pos + 8),
635
633
  right: deserializeExpression(pos + 24),
636
634
  body: deserializeStatement(pos + 40),
635
+ start: deserializeU32(pos),
636
+ end: deserializeU32(pos + 4),
637
637
  };
638
638
  }
639
639
 
640
640
  function deserializeContinueStatement(pos) {
641
641
  return {
642
642
  type: 'ContinueStatement',
643
+ label: deserializeOptionLabelIdentifier(pos + 8),
643
644
  start: deserializeU32(pos),
644
645
  end: deserializeU32(pos + 4),
645
- label: deserializeOptionLabelIdentifier(pos + 8),
646
646
  };
647
647
  }
648
648
 
649
649
  function deserializeBreakStatement(pos) {
650
650
  return {
651
651
  type: 'BreakStatement',
652
+ label: deserializeOptionLabelIdentifier(pos + 8),
652
653
  start: deserializeU32(pos),
653
654
  end: deserializeU32(pos + 4),
654
- label: deserializeOptionLabelIdentifier(pos + 8),
655
655
  };
656
656
  }
657
657
 
658
658
  function deserializeReturnStatement(pos) {
659
659
  return {
660
660
  type: 'ReturnStatement',
661
+ argument: deserializeOptionExpression(pos + 8),
661
662
  start: deserializeU32(pos),
662
663
  end: deserializeU32(pos + 4),
663
- argument: deserializeOptionExpression(pos + 8),
664
664
  };
665
665
  }
666
666
 
667
667
  function deserializeWithStatement(pos) {
668
668
  return {
669
669
  type: 'WithStatement',
670
- start: deserializeU32(pos),
671
- end: deserializeU32(pos + 4),
672
670
  object: deserializeExpression(pos + 8),
673
671
  body: deserializeStatement(pos + 24),
672
+ start: deserializeU32(pos),
673
+ end: deserializeU32(pos + 4),
674
674
  };
675
675
  }
676
676
 
677
677
  function deserializeSwitchStatement(pos) {
678
678
  return {
679
679
  type: 'SwitchStatement',
680
- start: deserializeU32(pos),
681
- end: deserializeU32(pos + 4),
682
680
  discriminant: deserializeExpression(pos + 8),
683
681
  cases: deserializeVecSwitchCase(pos + 24),
682
+ start: deserializeU32(pos),
683
+ end: deserializeU32(pos + 4),
684
684
  };
685
685
  }
686
686
 
687
687
  function deserializeSwitchCase(pos) {
688
688
  return {
689
689
  type: 'SwitchCase',
690
- start: deserializeU32(pos),
691
- end: deserializeU32(pos + 4),
692
690
  test: deserializeOptionExpression(pos + 8),
693
691
  consequent: deserializeVecStatement(pos + 24),
692
+ start: deserializeU32(pos),
693
+ end: deserializeU32(pos + 4),
694
694
  };
695
695
  }
696
696
 
697
697
  function deserializeLabeledStatement(pos) {
698
698
  return {
699
699
  type: 'LabeledStatement',
700
- start: deserializeU32(pos),
701
- end: deserializeU32(pos + 4),
702
700
  label: deserializeLabelIdentifier(pos + 8),
703
701
  body: deserializeStatement(pos + 32),
702
+ start: deserializeU32(pos),
703
+ end: deserializeU32(pos + 4),
704
704
  };
705
705
  }
706
706
 
707
707
  function deserializeThrowStatement(pos) {
708
708
  return {
709
709
  type: 'ThrowStatement',
710
+ argument: deserializeExpression(pos + 8),
710
711
  start: deserializeU32(pos),
711
712
  end: deserializeU32(pos + 4),
712
- argument: deserializeExpression(pos + 8),
713
713
  };
714
714
  }
715
715
 
716
716
  function deserializeTryStatement(pos) {
717
717
  return {
718
718
  type: 'TryStatement',
719
- start: deserializeU32(pos),
720
- end: deserializeU32(pos + 4),
721
719
  block: deserializeBoxBlockStatement(pos + 8),
722
720
  handler: deserializeOptionBoxCatchClause(pos + 16),
723
721
  finalizer: deserializeOptionBoxBlockStatement(pos + 24),
722
+ start: deserializeU32(pos),
723
+ end: deserializeU32(pos + 4),
724
724
  };
725
725
  }
726
726
 
727
727
  function deserializeCatchClause(pos) {
728
728
  return {
729
729
  type: 'CatchClause',
730
- start: deserializeU32(pos),
731
- end: deserializeU32(pos + 4),
732
730
  param: deserializeOptionCatchParameter(pos + 8),
733
731
  body: deserializeBoxBlockStatement(pos + 48),
732
+ start: deserializeU32(pos),
733
+ end: deserializeU32(pos + 4),
734
734
  };
735
735
  }
736
736
 
@@ -756,13 +756,13 @@ function deserializeBindingPattern(pos) {
756
756
  function deserializeAssignmentPattern(pos) {
757
757
  return {
758
758
  type: 'AssignmentPattern',
759
- start: deserializeU32(pos),
760
- end: deserializeU32(pos + 4),
761
759
  decorators: [],
762
760
  left: deserializeBindingPattern(pos + 8),
763
761
  right: deserializeExpression(pos + 40),
764
762
  optional: false,
765
763
  typeAnnotation: null,
764
+ start: deserializeU32(pos),
765
+ end: deserializeU32(pos + 4),
766
766
  };
767
767
  }
768
768
 
@@ -772,20 +772,18 @@ function deserializeObjectPattern(pos) {
772
772
  if (rest !== null) properties.push(rest);
773
773
  return {
774
774
  type: 'ObjectPattern',
775
- start: deserializeU32(pos),
776
- end: deserializeU32(pos + 4),
777
775
  decorators: [],
778
776
  properties,
779
777
  optional: false,
780
778
  typeAnnotation: null,
779
+ start: deserializeU32(pos),
780
+ end: deserializeU32(pos + 4),
781
781
  };
782
782
  }
783
783
 
784
784
  function deserializeBindingProperty(pos) {
785
785
  return {
786
786
  type: 'Property',
787
- start: deserializeU32(pos),
788
- end: deserializeU32(pos + 4),
789
787
  kind: 'init',
790
788
  key: deserializePropertyKey(pos + 8),
791
789
  value: deserializeBindingPattern(pos + 24),
@@ -793,6 +791,8 @@ function deserializeBindingProperty(pos) {
793
791
  shorthand: deserializeBool(pos + 56),
794
792
  computed: deserializeBool(pos + 57),
795
793
  optional: false,
794
+ start: deserializeU32(pos),
795
+ end: deserializeU32(pos + 4),
796
796
  };
797
797
  }
798
798
 
@@ -802,25 +802,25 @@ function deserializeArrayPattern(pos) {
802
802
  if (rest !== null) elements.push(rest);
803
803
  return {
804
804
  type: 'ArrayPattern',
805
- start: deserializeU32(pos),
806
- end: deserializeU32(pos + 4),
807
805
  decorators: [],
808
806
  elements,
809
807
  optional: false,
810
808
  typeAnnotation: null,
809
+ start: deserializeU32(pos),
810
+ end: deserializeU32(pos + 4),
811
811
  };
812
812
  }
813
813
 
814
814
  function deserializeBindingRestElement(pos) {
815
815
  return {
816
816
  type: 'RestElement',
817
- start: deserializeU32(pos),
818
- end: deserializeU32(pos + 4),
819
817
  decorators: [],
820
818
  argument: deserializeBindingPattern(pos + 8),
821
819
  optional: false,
822
820
  typeAnnotation: null,
823
821
  value: null,
822
+ start: deserializeU32(pos),
823
+ end: deserializeU32(pos + 4),
824
824
  };
825
825
  }
826
826
 
@@ -830,8 +830,6 @@ function deserializeFunction(pos) {
830
830
  if (thisParam !== null) params.unshift(thisParam);
831
831
  return {
832
832
  type: deserializeFunctionType(pos + 84),
833
- start: deserializeU32(pos),
834
- end: deserializeU32(pos + 4),
835
833
  id: deserializeOptionBindingIdentifier(pos + 8),
836
834
  generator: deserializeBool(pos + 85),
837
835
  async: deserializeBool(pos + 86),
@@ -841,6 +839,8 @@ function deserializeFunction(pos) {
841
839
  returnType: deserializeOptionBoxTSTypeAnnotation(pos + 64),
842
840
  body: deserializeOptionBoxFunctionBody(pos + 72),
843
841
  expression: false,
842
+ start: deserializeU32(pos),
843
+ end: deserializeU32(pos + 4),
844
844
  };
845
845
  }
846
846
 
@@ -850,8 +850,6 @@ function deserializeFormalParameters(pos) {
850
850
  pos = uint32[(pos + 32) >> 2];
851
851
  params.push({
852
852
  type: 'RestElement',
853
- start: deserializeU32(pos),
854
- end: deserializeU32(pos + 4),
855
853
  decorators: [],
856
854
  argument: deserializeBindingPatternKind(pos + 8),
857
855
  optional: deserializeBool(pos + 32),
@@ -859,6 +857,8 @@ function deserializeFormalParameters(pos) {
859
857
  pos + 24,
860
858
  ),
861
859
  value: null,
860
+ start: deserializeU32(pos),
861
+ end: deserializeU32(pos + 4),
862
862
  });
863
863
  }
864
864
  return params;
@@ -877,14 +877,14 @@ function deserializeFormalParameter(pos) {
877
877
  } else {
878
878
  param = {
879
879
  type: 'TSParameterProperty',
880
- start: deserializeU32(pos),
881
- end: deserializeU32(pos + 4),
882
880
  accessibility,
883
881
  decorators: deserializeVecDecorator(pos + 8),
884
882
  override,
885
883
  parameter: deserializeBindingPattern(pos + 32),
886
884
  readonly,
887
885
  static: false,
886
+ start: deserializeU32(pos),
887
+ end: deserializeU32(pos + 4),
888
888
  };
889
889
  }
890
890
  return param;
@@ -895,9 +895,9 @@ function deserializeFunctionBody(pos) {
895
895
  body.push(...deserializeVecStatement(pos + 32));
896
896
  return {
897
897
  type: 'BlockStatement',
898
+ body,
898
899
  start: deserializeU32(pos),
899
900
  end: deserializeU32(pos + 4),
900
- body,
901
901
  };
902
902
  }
903
903
 
@@ -906,8 +906,6 @@ function deserializeArrowFunctionExpression(pos) {
906
906
  let body = deserializeBoxFunctionBody(pos + 32);
907
907
  return {
908
908
  type: 'ArrowFunctionExpression',
909
- start: deserializeU32(pos),
910
- end: deserializeU32(pos + 4),
911
909
  expression,
912
910
  async: deserializeBool(pos + 45),
913
911
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
@@ -916,24 +914,24 @@ function deserializeArrowFunctionExpression(pos) {
916
914
  body: expression ? body.body[0].expression : body,
917
915
  id: null,
918
916
  generator: false,
917
+ start: deserializeU32(pos),
918
+ end: deserializeU32(pos + 4),
919
919
  };
920
920
  }
921
921
 
922
922
  function deserializeYieldExpression(pos) {
923
923
  return {
924
924
  type: 'YieldExpression',
925
- start: deserializeU32(pos),
926
- end: deserializeU32(pos + 4),
927
925
  delegate: deserializeBool(pos + 24),
928
926
  argument: deserializeOptionExpression(pos + 8),
927
+ start: deserializeU32(pos),
928
+ end: deserializeU32(pos + 4),
929
929
  };
930
930
  }
931
931
 
932
932
  function deserializeClass(pos) {
933
933
  return {
934
934
  type: deserializeClassType(pos + 132),
935
- start: deserializeU32(pos),
936
- end: deserializeU32(pos + 4),
937
935
  decorators: deserializeVecDecorator(pos + 8),
938
936
  id: deserializeOptionBindingIdentifier(pos + 32),
939
937
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 64),
@@ -943,23 +941,23 @@ function deserializeClass(pos) {
943
941
  body: deserializeBoxClassBody(pos + 120),
944
942
  abstract: deserializeBool(pos + 133),
945
943
  declare: deserializeBool(pos + 134),
944
+ start: deserializeU32(pos),
945
+ end: deserializeU32(pos + 4),
946
946
  };
947
947
  }
948
948
 
949
949
  function deserializeClassBody(pos) {
950
950
  return {
951
951
  type: 'ClassBody',
952
+ body: deserializeVecClassElement(pos + 8),
952
953
  start: deserializeU32(pos),
953
954
  end: deserializeU32(pos + 4),
954
- body: deserializeVecClassElement(pos + 8),
955
955
  };
956
956
  }
957
957
 
958
958
  function deserializeMethodDefinition(pos) {
959
959
  return {
960
960
  type: deserializeMethodDefinitionType(pos + 56),
961
- start: deserializeU32(pos),
962
- end: deserializeU32(pos + 4),
963
961
  decorators: deserializeVecDecorator(pos + 8),
964
962
  key: deserializePropertyKey(pos + 32),
965
963
  value: deserializeBoxFunction(pos + 48),
@@ -969,14 +967,14 @@ function deserializeMethodDefinition(pos) {
969
967
  override: deserializeBool(pos + 60),
970
968
  optional: deserializeBool(pos + 61),
971
969
  accessibility: deserializeOptionTSAccessibility(pos + 62),
970
+ start: deserializeU32(pos),
971
+ end: deserializeU32(pos + 4),
972
972
  };
973
973
  }
974
974
 
975
975
  function deserializePropertyDefinition(pos) {
976
976
  return {
977
977
  type: deserializePropertyDefinitionType(pos + 72),
978
- start: deserializeU32(pos),
979
- end: deserializeU32(pos + 4),
980
978
  decorators: deserializeVecDecorator(pos + 8),
981
979
  key: deserializePropertyKey(pos + 32),
982
980
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 48),
@@ -989,32 +987,32 @@ function deserializePropertyDefinition(pos) {
989
987
  definite: deserializeBool(pos + 78),
990
988
  readonly: deserializeBool(pos + 79),
991
989
  accessibility: deserializeOptionTSAccessibility(pos + 80),
990
+ start: deserializeU32(pos),
991
+ end: deserializeU32(pos + 4),
992
992
  };
993
993
  }
994
994
 
995
995
  function deserializePrivateIdentifier(pos) {
996
996
  return {
997
997
  type: 'PrivateIdentifier',
998
+ name: deserializeStr(pos + 8),
998
999
  start: deserializeU32(pos),
999
1000
  end: deserializeU32(pos + 4),
1000
- name: deserializeStr(pos + 8),
1001
1001
  };
1002
1002
  }
1003
1003
 
1004
1004
  function deserializeStaticBlock(pos) {
1005
1005
  return {
1006
1006
  type: 'StaticBlock',
1007
+ body: deserializeVecStatement(pos + 8),
1007
1008
  start: deserializeU32(pos),
1008
1009
  end: deserializeU32(pos + 4),
1009
- body: deserializeVecStatement(pos + 8),
1010
1010
  };
1011
1011
  }
1012
1012
 
1013
1013
  function deserializeAccessorProperty(pos) {
1014
1014
  return {
1015
1015
  type: deserializeAccessorPropertyType(pos + 72),
1016
- start: deserializeU32(pos),
1017
- end: deserializeU32(pos + 4),
1018
1016
  decorators: deserializeVecDecorator(pos + 8),
1019
1017
  key: deserializePropertyKey(pos + 32),
1020
1018
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 48),
@@ -1027,17 +1025,19 @@ function deserializeAccessorProperty(pos) {
1027
1025
  declare: false,
1028
1026
  optional: false,
1029
1027
  readonly: false,
1028
+ start: deserializeU32(pos),
1029
+ end: deserializeU32(pos + 4),
1030
1030
  };
1031
1031
  }
1032
1032
 
1033
1033
  function deserializeImportExpression(pos) {
1034
1034
  return {
1035
1035
  type: 'ImportExpression',
1036
- start: deserializeU32(pos),
1037
- end: deserializeU32(pos + 4),
1038
1036
  source: deserializeExpression(pos + 8),
1039
1037
  options: deserializeOptionExpression(pos + 24),
1040
1038
  phase: deserializeOptionImportPhase(pos + 40),
1039
+ start: deserializeU32(pos),
1040
+ end: deserializeU32(pos + 4),
1041
1041
  };
1042
1042
  }
1043
1043
 
@@ -1047,42 +1047,42 @@ function deserializeImportDeclaration(pos) {
1047
1047
  const withClause = deserializeOptionBoxWithClause(pos + 80);
1048
1048
  return {
1049
1049
  type: 'ImportDeclaration',
1050
- start: deserializeU32(pos),
1051
- end: deserializeU32(pos + 4),
1052
1050
  specifiers,
1053
1051
  source: deserializeStringLiteral(pos + 32),
1054
1052
  phase: deserializeOptionImportPhase(pos + 88),
1055
1053
  attributes: withClause === null ? [] : withClause.attributes,
1056
1054
  importKind: deserializeImportOrExportKind(pos + 89),
1055
+ start: deserializeU32(pos),
1056
+ end: deserializeU32(pos + 4),
1057
1057
  };
1058
1058
  }
1059
1059
 
1060
1060
  function deserializeImportSpecifier(pos) {
1061
1061
  return {
1062
1062
  type: 'ImportSpecifier',
1063
- start: deserializeU32(pos),
1064
- end: deserializeU32(pos + 4),
1065
1063
  imported: deserializeModuleExportName(pos + 8),
1066
1064
  local: deserializeBindingIdentifier(pos + 64),
1067
1065
  importKind: deserializeImportOrExportKind(pos + 96),
1066
+ start: deserializeU32(pos),
1067
+ end: deserializeU32(pos + 4),
1068
1068
  };
1069
1069
  }
1070
1070
 
1071
1071
  function deserializeImportDefaultSpecifier(pos) {
1072
1072
  return {
1073
1073
  type: 'ImportDefaultSpecifier',
1074
+ local: deserializeBindingIdentifier(pos + 8),
1074
1075
  start: deserializeU32(pos),
1075
1076
  end: deserializeU32(pos + 4),
1076
- local: deserializeBindingIdentifier(pos + 8),
1077
1077
  };
1078
1078
  }
1079
1079
 
1080
1080
  function deserializeImportNamespaceSpecifier(pos) {
1081
1081
  return {
1082
1082
  type: 'ImportNamespaceSpecifier',
1083
+ local: deserializeBindingIdentifier(pos + 8),
1083
1084
  start: deserializeU32(pos),
1084
1085
  end: deserializeU32(pos + 4),
1085
- local: deserializeBindingIdentifier(pos + 8),
1086
1086
  };
1087
1087
  }
1088
1088
 
@@ -1095,10 +1095,10 @@ function deserializeWithClause(pos) {
1095
1095
  function deserializeImportAttribute(pos) {
1096
1096
  return {
1097
1097
  type: 'ImportAttribute',
1098
- start: deserializeU32(pos),
1099
- end: deserializeU32(pos + 4),
1100
1098
  key: deserializeImportAttributeKey(pos + 8),
1101
1099
  value: deserializeStringLiteral(pos + 64),
1100
+ start: deserializeU32(pos),
1101
+ end: deserializeU32(pos + 4),
1102
1102
  };
1103
1103
  }
1104
1104
 
@@ -1106,23 +1106,23 @@ function deserializeExportNamedDeclaration(pos) {
1106
1106
  const withClause = deserializeOptionBoxWithClause(pos + 96);
1107
1107
  return {
1108
1108
  type: 'ExportNamedDeclaration',
1109
- start: deserializeU32(pos),
1110
- end: deserializeU32(pos + 4),
1111
1109
  declaration: deserializeOptionDeclaration(pos + 8),
1112
1110
  specifiers: deserializeVecExportSpecifier(pos + 24),
1113
1111
  source: deserializeOptionStringLiteral(pos + 48),
1114
1112
  exportKind: deserializeImportOrExportKind(pos + 104),
1115
1113
  attributes: withClause === null ? [] : withClause.attributes,
1114
+ start: deserializeU32(pos),
1115
+ end: deserializeU32(pos + 4),
1116
1116
  };
1117
1117
  }
1118
1118
 
1119
1119
  function deserializeExportDefaultDeclaration(pos) {
1120
1120
  return {
1121
1121
  type: 'ExportDefaultDeclaration',
1122
- start: deserializeU32(pos),
1123
- end: deserializeU32(pos + 4),
1124
1122
  declaration: deserializeExportDefaultDeclarationKind(pos + 64),
1125
1123
  exportKind: 'value',
1124
+ start: deserializeU32(pos),
1125
+ end: deserializeU32(pos + 4),
1126
1126
  };
1127
1127
  }
1128
1128
 
@@ -1130,46 +1130,46 @@ function deserializeExportAllDeclaration(pos) {
1130
1130
  const withClause = deserializeOptionBoxWithClause(pos + 112);
1131
1131
  return {
1132
1132
  type: 'ExportAllDeclaration',
1133
- start: deserializeU32(pos),
1134
- end: deserializeU32(pos + 4),
1135
1133
  exported: deserializeOptionModuleExportName(pos + 8),
1136
1134
  source: deserializeStringLiteral(pos + 64),
1137
1135
  attributes: withClause === null ? [] : withClause.attributes,
1138
1136
  exportKind: deserializeImportOrExportKind(pos + 120),
1137
+ start: deserializeU32(pos),
1138
+ end: deserializeU32(pos + 4),
1139
1139
  };
1140
1140
  }
1141
1141
 
1142
1142
  function deserializeExportSpecifier(pos) {
1143
1143
  return {
1144
1144
  type: 'ExportSpecifier',
1145
- start: deserializeU32(pos),
1146
- end: deserializeU32(pos + 4),
1147
1145
  local: deserializeModuleExportName(pos + 8),
1148
1146
  exported: deserializeModuleExportName(pos + 64),
1149
1147
  exportKind: deserializeImportOrExportKind(pos + 120),
1148
+ start: deserializeU32(pos),
1149
+ end: deserializeU32(pos + 4),
1150
1150
  };
1151
1151
  }
1152
1152
 
1153
1153
  function deserializeV8IntrinsicExpression(pos) {
1154
1154
  return {
1155
1155
  type: 'V8IntrinsicExpression',
1156
- start: deserializeU32(pos),
1157
- end: deserializeU32(pos + 4),
1158
1156
  name: deserializeIdentifierName(pos + 8),
1159
1157
  arguments: deserializeVecArgument(pos + 32),
1158
+ start: deserializeU32(pos),
1159
+ end: deserializeU32(pos + 4),
1160
1160
  };
1161
1161
  }
1162
1162
 
1163
1163
  function deserializeBooleanLiteral(pos) {
1164
- const start = deserializeU32(pos),
1165
- end = deserializeU32(pos + 4),
1166
- value = deserializeBool(pos + 8);
1164
+ const value = deserializeBool(pos + 8),
1165
+ start = deserializeU32(pos),
1166
+ end = deserializeU32(pos + 4);
1167
1167
  return {
1168
1168
  type: 'Literal',
1169
- start,
1170
- end,
1171
1169
  value,
1172
1170
  raw: (start === 0 && end === 0) ? null : value + '',
1171
+ start,
1172
+ end,
1173
1173
  };
1174
1174
  }
1175
1175
 
@@ -1178,20 +1178,20 @@ function deserializeNullLiteral(pos) {
1178
1178
  end = deserializeU32(pos + 4);
1179
1179
  return {
1180
1180
  type: 'Literal',
1181
- start,
1182
- end,
1183
1181
  value: null,
1184
1182
  raw: (start === 0 && end === 0) ? null : 'null',
1183
+ start,
1184
+ end,
1185
1185
  };
1186
1186
  }
1187
1187
 
1188
1188
  function deserializeNumericLiteral(pos) {
1189
1189
  return {
1190
1190
  type: 'Literal',
1191
- start: deserializeU32(pos),
1192
- end: deserializeU32(pos + 4),
1193
1191
  value: deserializeF64(pos + 8),
1194
1192
  raw: deserializeOptionStr(pos + 16),
1193
+ start: deserializeU32(pos),
1194
+ end: deserializeU32(pos + 4),
1195
1195
  };
1196
1196
  }
1197
1197
 
@@ -1202,10 +1202,10 @@ function deserializeStringLiteral(pos) {
1202
1202
  }
1203
1203
  return {
1204
1204
  type: 'Literal',
1205
- start: deserializeU32(pos),
1206
- end: deserializeU32(pos + 4),
1207
1205
  value,
1208
1206
  raw: deserializeOptionStr(pos + 24),
1207
+ start: deserializeU32(pos),
1208
+ end: deserializeU32(pos + 4),
1209
1209
  };
1210
1210
  }
1211
1211
 
@@ -1213,11 +1213,11 @@ function deserializeBigIntLiteral(pos) {
1213
1213
  const bigint = deserializeStr(pos + 8);
1214
1214
  return {
1215
1215
  type: 'Literal',
1216
- start: deserializeU32(pos),
1217
- end: deserializeU32(pos + 4),
1218
1216
  value: BigInt(bigint),
1219
1217
  raw: deserializeOptionStr(pos + 24),
1220
1218
  bigint,
1219
+ start: deserializeU32(pos),
1220
+ end: deserializeU32(pos + 4),
1221
1221
  };
1222
1222
  }
1223
1223
 
@@ -1229,11 +1229,11 @@ function deserializeRegExpLiteral(pos) {
1229
1229
  } catch (e) {}
1230
1230
  return {
1231
1231
  type: 'Literal',
1232
- start: deserializeU32(pos),
1233
- end: deserializeU32(pos + 4),
1234
1232
  value,
1235
1233
  raw: deserializeOptionStr(pos + 40),
1236
1234
  regex,
1235
+ start: deserializeU32(pos),
1236
+ end: deserializeU32(pos + 4),
1237
1237
  };
1238
1238
  }
1239
1239
 
@@ -1271,43 +1271,43 @@ function deserializeJSXElement(pos) {
1271
1271
  if (closingElement === null) openingElement.selfClosing = true;
1272
1272
  return {
1273
1273
  type: 'JSXElement',
1274
- start: deserializeU32(pos),
1275
- end: deserializeU32(pos + 4),
1276
1274
  openingElement,
1277
1275
  children: deserializeVecJSXChild(pos + 16),
1278
1276
  closingElement,
1277
+ start: deserializeU32(pos),
1278
+ end: deserializeU32(pos + 4),
1279
1279
  };
1280
1280
  }
1281
1281
 
1282
1282
  function deserializeJSXOpeningElement(pos) {
1283
1283
  return {
1284
1284
  type: 'JSXOpeningElement',
1285
- start: deserializeU32(pos),
1286
- end: deserializeU32(pos + 4),
1287
1285
  name: deserializeJSXElementName(pos + 8),
1288
1286
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1289
1287
  attributes: deserializeVecJSXAttributeItem(pos + 32),
1290
1288
  selfClosing: false,
1289
+ start: deserializeU32(pos),
1290
+ end: deserializeU32(pos + 4),
1291
1291
  };
1292
1292
  }
1293
1293
 
1294
1294
  function deserializeJSXClosingElement(pos) {
1295
1295
  return {
1296
1296
  type: 'JSXClosingElement',
1297
+ name: deserializeJSXElementName(pos + 8),
1297
1298
  start: deserializeU32(pos),
1298
1299
  end: deserializeU32(pos + 4),
1299
- name: deserializeJSXElementName(pos + 8),
1300
1300
  };
1301
1301
  }
1302
1302
 
1303
1303
  function deserializeJSXFragment(pos) {
1304
1304
  return {
1305
1305
  type: 'JSXFragment',
1306
- start: deserializeU32(pos),
1307
- end: deserializeU32(pos + 4),
1308
1306
  openingFragment: deserializeJSXOpeningFragment(pos + 8),
1309
1307
  children: deserializeVecJSXChild(pos + 16),
1310
1308
  closingFragment: deserializeJSXClosingFragment(pos + 40),
1309
+ start: deserializeU32(pos),
1310
+ end: deserializeU32(pos + 4),
1311
1311
  };
1312
1312
  }
1313
1313
 
@@ -1330,29 +1330,29 @@ function deserializeJSXClosingFragment(pos) {
1330
1330
  function deserializeJSXNamespacedName(pos) {
1331
1331
  return {
1332
1332
  type: 'JSXNamespacedName',
1333
- start: deserializeU32(pos),
1334
- end: deserializeU32(pos + 4),
1335
1333
  namespace: deserializeJSXIdentifier(pos + 8),
1336
1334
  name: deserializeJSXIdentifier(pos + 32),
1335
+ start: deserializeU32(pos),
1336
+ end: deserializeU32(pos + 4),
1337
1337
  };
1338
1338
  }
1339
1339
 
1340
1340
  function deserializeJSXMemberExpression(pos) {
1341
1341
  return {
1342
1342
  type: 'JSXMemberExpression',
1343
- start: deserializeU32(pos),
1344
- end: deserializeU32(pos + 4),
1345
1343
  object: deserializeJSXMemberExpressionObject(pos + 8),
1346
1344
  property: deserializeJSXIdentifier(pos + 24),
1345
+ start: deserializeU32(pos),
1346
+ end: deserializeU32(pos + 4),
1347
1347
  };
1348
1348
  }
1349
1349
 
1350
1350
  function deserializeJSXExpressionContainer(pos) {
1351
1351
  return {
1352
1352
  type: 'JSXExpressionContainer',
1353
+ expression: deserializeJSXExpression(pos + 8),
1353
1354
  start: deserializeU32(pos),
1354
1355
  end: deserializeU32(pos + 4),
1355
- expression: deserializeJSXExpression(pos + 8),
1356
1356
  };
1357
1357
  }
1358
1358
 
@@ -1367,215 +1367,215 @@ function deserializeJSXEmptyExpression(pos) {
1367
1367
  function deserializeJSXAttribute(pos) {
1368
1368
  return {
1369
1369
  type: 'JSXAttribute',
1370
- start: deserializeU32(pos),
1371
- end: deserializeU32(pos + 4),
1372
1370
  name: deserializeJSXAttributeName(pos + 8),
1373
1371
  value: deserializeOptionJSXAttributeValue(pos + 24),
1372
+ start: deserializeU32(pos),
1373
+ end: deserializeU32(pos + 4),
1374
1374
  };
1375
1375
  }
1376
1376
 
1377
1377
  function deserializeJSXSpreadAttribute(pos) {
1378
1378
  return {
1379
1379
  type: 'JSXSpreadAttribute',
1380
+ argument: deserializeExpression(pos + 8),
1380
1381
  start: deserializeU32(pos),
1381
1382
  end: deserializeU32(pos + 4),
1382
- argument: deserializeExpression(pos + 8),
1383
1383
  };
1384
1384
  }
1385
1385
 
1386
1386
  function deserializeJSXIdentifier(pos) {
1387
1387
  return {
1388
1388
  type: 'JSXIdentifier',
1389
+ name: deserializeStr(pos + 8),
1389
1390
  start: deserializeU32(pos),
1390
1391
  end: deserializeU32(pos + 4),
1391
- name: deserializeStr(pos + 8),
1392
1392
  };
1393
1393
  }
1394
1394
 
1395
1395
  function deserializeJSXSpreadChild(pos) {
1396
1396
  return {
1397
1397
  type: 'JSXSpreadChild',
1398
+ expression: deserializeExpression(pos + 8),
1398
1399
  start: deserializeU32(pos),
1399
1400
  end: deserializeU32(pos + 4),
1400
- expression: deserializeExpression(pos + 8),
1401
1401
  };
1402
1402
  }
1403
1403
 
1404
1404
  function deserializeJSXText(pos) {
1405
1405
  return {
1406
1406
  type: 'JSXText',
1407
- start: deserializeU32(pos),
1408
- end: deserializeU32(pos + 4),
1409
1407
  value: deserializeStr(pos + 8),
1410
1408
  raw: deserializeOptionStr(pos + 24),
1409
+ start: deserializeU32(pos),
1410
+ end: deserializeU32(pos + 4),
1411
1411
  };
1412
1412
  }
1413
1413
 
1414
1414
  function deserializeTSThisParameter(pos) {
1415
1415
  return {
1416
1416
  type: 'Identifier',
1417
- start: deserializeU32(pos),
1418
- end: deserializeU32(pos + 4),
1419
1417
  decorators: [],
1420
1418
  name: 'this',
1421
1419
  optional: false,
1422
1420
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 16),
1421
+ start: deserializeU32(pos),
1422
+ end: deserializeU32(pos + 4),
1423
1423
  };
1424
1424
  }
1425
1425
 
1426
1426
  function deserializeTSEnumDeclaration(pos) {
1427
1427
  return {
1428
1428
  type: 'TSEnumDeclaration',
1429
- start: deserializeU32(pos),
1430
- end: deserializeU32(pos + 4),
1431
1429
  id: deserializeBindingIdentifier(pos + 8),
1432
1430
  body: deserializeTSEnumBody(pos + 40),
1433
1431
  const: deserializeBool(pos + 76),
1434
1432
  declare: deserializeBool(pos + 77),
1433
+ start: deserializeU32(pos),
1434
+ end: deserializeU32(pos + 4),
1435
1435
  };
1436
1436
  }
1437
1437
 
1438
1438
  function deserializeTSEnumBody(pos) {
1439
1439
  return {
1440
1440
  type: 'TSEnumBody',
1441
+ members: deserializeVecTSEnumMember(pos + 8),
1441
1442
  start: deserializeU32(pos),
1442
1443
  end: deserializeU32(pos + 4),
1443
- members: deserializeVecTSEnumMember(pos + 8),
1444
1444
  };
1445
1445
  }
1446
1446
 
1447
1447
  function deserializeTSEnumMember(pos) {
1448
1448
  return {
1449
1449
  type: 'TSEnumMember',
1450
- start: deserializeU32(pos),
1451
- end: deserializeU32(pos + 4),
1452
1450
  id: deserializeTSEnumMemberName(pos + 8),
1453
1451
  initializer: deserializeOptionExpression(pos + 24),
1454
1452
  computed: deserializeU8(pos + 8) > 1,
1453
+ start: deserializeU32(pos),
1454
+ end: deserializeU32(pos + 4),
1455
1455
  };
1456
1456
  }
1457
1457
 
1458
1458
  function deserializeTSTypeAnnotation(pos) {
1459
1459
  return {
1460
1460
  type: 'TSTypeAnnotation',
1461
+ typeAnnotation: deserializeTSType(pos + 8),
1461
1462
  start: deserializeU32(pos),
1462
1463
  end: deserializeU32(pos + 4),
1463
- typeAnnotation: deserializeTSType(pos + 8),
1464
1464
  };
1465
1465
  }
1466
1466
 
1467
1467
  function deserializeTSLiteralType(pos) {
1468
1468
  return {
1469
1469
  type: 'TSLiteralType',
1470
+ literal: deserializeTSLiteral(pos + 8),
1470
1471
  start: deserializeU32(pos),
1471
1472
  end: deserializeU32(pos + 4),
1472
- literal: deserializeTSLiteral(pos + 8),
1473
1473
  };
1474
1474
  }
1475
1475
 
1476
1476
  function deserializeTSConditionalType(pos) {
1477
1477
  return {
1478
1478
  type: 'TSConditionalType',
1479
- start: deserializeU32(pos),
1480
- end: deserializeU32(pos + 4),
1481
1479
  checkType: deserializeTSType(pos + 8),
1482
1480
  extendsType: deserializeTSType(pos + 24),
1483
1481
  trueType: deserializeTSType(pos + 40),
1484
1482
  falseType: deserializeTSType(pos + 56),
1483
+ start: deserializeU32(pos),
1484
+ end: deserializeU32(pos + 4),
1485
1485
  };
1486
1486
  }
1487
1487
 
1488
1488
  function deserializeTSUnionType(pos) {
1489
1489
  return {
1490
1490
  type: 'TSUnionType',
1491
+ types: deserializeVecTSType(pos + 8),
1491
1492
  start: deserializeU32(pos),
1492
1493
  end: deserializeU32(pos + 4),
1493
- types: deserializeVecTSType(pos + 8),
1494
1494
  };
1495
1495
  }
1496
1496
 
1497
1497
  function deserializeTSIntersectionType(pos) {
1498
1498
  return {
1499
1499
  type: 'TSIntersectionType',
1500
+ types: deserializeVecTSType(pos + 8),
1500
1501
  start: deserializeU32(pos),
1501
1502
  end: deserializeU32(pos + 4),
1502
- types: deserializeVecTSType(pos + 8),
1503
1503
  };
1504
1504
  }
1505
1505
 
1506
1506
  function deserializeTSParenthesizedType(pos) {
1507
1507
  return {
1508
1508
  type: 'TSParenthesizedType',
1509
+ typeAnnotation: deserializeTSType(pos + 8),
1509
1510
  start: deserializeU32(pos),
1510
1511
  end: deserializeU32(pos + 4),
1511
- typeAnnotation: deserializeTSType(pos + 8),
1512
1512
  };
1513
1513
  }
1514
1514
 
1515
1515
  function deserializeTSTypeOperator(pos) {
1516
1516
  return {
1517
1517
  type: 'TSTypeOperator',
1518
- start: deserializeU32(pos),
1519
- end: deserializeU32(pos + 4),
1520
1518
  operator: deserializeTSTypeOperatorOperator(pos + 24),
1521
1519
  typeAnnotation: deserializeTSType(pos + 8),
1520
+ start: deserializeU32(pos),
1521
+ end: deserializeU32(pos + 4),
1522
1522
  };
1523
1523
  }
1524
1524
 
1525
1525
  function deserializeTSArrayType(pos) {
1526
1526
  return {
1527
1527
  type: 'TSArrayType',
1528
+ elementType: deserializeTSType(pos + 8),
1528
1529
  start: deserializeU32(pos),
1529
1530
  end: deserializeU32(pos + 4),
1530
- elementType: deserializeTSType(pos + 8),
1531
1531
  };
1532
1532
  }
1533
1533
 
1534
1534
  function deserializeTSIndexedAccessType(pos) {
1535
1535
  return {
1536
1536
  type: 'TSIndexedAccessType',
1537
- start: deserializeU32(pos),
1538
- end: deserializeU32(pos + 4),
1539
1537
  objectType: deserializeTSType(pos + 8),
1540
1538
  indexType: deserializeTSType(pos + 24),
1539
+ start: deserializeU32(pos),
1540
+ end: deserializeU32(pos + 4),
1541
1541
  };
1542
1542
  }
1543
1543
 
1544
1544
  function deserializeTSTupleType(pos) {
1545
1545
  return {
1546
1546
  type: 'TSTupleType',
1547
+ elementTypes: deserializeVecTSTupleElement(pos + 8),
1547
1548
  start: deserializeU32(pos),
1548
1549
  end: deserializeU32(pos + 4),
1549
- elementTypes: deserializeVecTSTupleElement(pos + 8),
1550
1550
  };
1551
1551
  }
1552
1552
 
1553
1553
  function deserializeTSNamedTupleMember(pos) {
1554
1554
  return {
1555
1555
  type: 'TSNamedTupleMember',
1556
- start: deserializeU32(pos),
1557
- end: deserializeU32(pos + 4),
1558
1556
  label: deserializeIdentifierName(pos + 8),
1559
1557
  elementType: deserializeTSTupleElement(pos + 32),
1560
1558
  optional: deserializeBool(pos + 48),
1559
+ start: deserializeU32(pos),
1560
+ end: deserializeU32(pos + 4),
1561
1561
  };
1562
1562
  }
1563
1563
 
1564
1564
  function deserializeTSOptionalType(pos) {
1565
1565
  return {
1566
1566
  type: 'TSOptionalType',
1567
+ typeAnnotation: deserializeTSType(pos + 8),
1567
1568
  start: deserializeU32(pos),
1568
1569
  end: deserializeU32(pos + 4),
1569
- typeAnnotation: deserializeTSType(pos + 8),
1570
1570
  };
1571
1571
  }
1572
1572
 
1573
1573
  function deserializeTSRestType(pos) {
1574
1574
  return {
1575
1575
  type: 'TSRestType',
1576
+ typeAnnotation: deserializeTSType(pos + 8),
1576
1577
  start: deserializeU32(pos),
1577
1578
  end: deserializeU32(pos + 4),
1578
- typeAnnotation: deserializeTSType(pos + 8),
1579
1579
  };
1580
1580
  }
1581
1581
 
@@ -1694,64 +1694,64 @@ function deserializeTSBigIntKeyword(pos) {
1694
1694
  function deserializeTSTypeReference(pos) {
1695
1695
  return {
1696
1696
  type: 'TSTypeReference',
1697
- start: deserializeU32(pos),
1698
- end: deserializeU32(pos + 4),
1699
1697
  typeName: deserializeTSTypeName(pos + 8),
1700
1698
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1699
+ start: deserializeU32(pos),
1700
+ end: deserializeU32(pos + 4),
1701
1701
  };
1702
1702
  }
1703
1703
 
1704
1704
  function deserializeTSQualifiedName(pos) {
1705
1705
  return {
1706
1706
  type: 'TSQualifiedName',
1707
- start: deserializeU32(pos),
1708
- end: deserializeU32(pos + 4),
1709
1707
  left: deserializeTSTypeName(pos + 8),
1710
1708
  right: deserializeIdentifierName(pos + 24),
1709
+ start: deserializeU32(pos),
1710
+ end: deserializeU32(pos + 4),
1711
1711
  };
1712
1712
  }
1713
1713
 
1714
1714
  function deserializeTSTypeParameterInstantiation(pos) {
1715
1715
  return {
1716
1716
  type: 'TSTypeParameterInstantiation',
1717
+ params: deserializeVecTSType(pos + 8),
1717
1718
  start: deserializeU32(pos),
1718
1719
  end: deserializeU32(pos + 4),
1719
- params: deserializeVecTSType(pos + 8),
1720
1720
  };
1721
1721
  }
1722
1722
 
1723
1723
  function deserializeTSTypeParameter(pos) {
1724
1724
  return {
1725
1725
  type: 'TSTypeParameter',
1726
- start: deserializeU32(pos),
1727
- end: deserializeU32(pos + 4),
1728
1726
  name: deserializeBindingIdentifier(pos + 8),
1729
1727
  constraint: deserializeOptionTSType(pos + 40),
1730
1728
  default: deserializeOptionTSType(pos + 56),
1731
1729
  in: deserializeBool(pos + 72),
1732
1730
  out: deserializeBool(pos + 73),
1733
1731
  const: deserializeBool(pos + 74),
1732
+ start: deserializeU32(pos),
1733
+ end: deserializeU32(pos + 4),
1734
1734
  };
1735
1735
  }
1736
1736
 
1737
1737
  function deserializeTSTypeParameterDeclaration(pos) {
1738
1738
  return {
1739
1739
  type: 'TSTypeParameterDeclaration',
1740
+ params: deserializeVecTSTypeParameter(pos + 8),
1740
1741
  start: deserializeU32(pos),
1741
1742
  end: deserializeU32(pos + 4),
1742
- params: deserializeVecTSTypeParameter(pos + 8),
1743
1743
  };
1744
1744
  }
1745
1745
 
1746
1746
  function deserializeTSTypeAliasDeclaration(pos) {
1747
1747
  return {
1748
1748
  type: 'TSTypeAliasDeclaration',
1749
- start: deserializeU32(pos),
1750
- end: deserializeU32(pos + 4),
1751
1749
  id: deserializeBindingIdentifier(pos + 8),
1752
1750
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 40),
1753
1751
  typeAnnotation: deserializeTSType(pos + 48),
1754
1752
  declare: deserializeBool(pos + 68),
1753
+ start: deserializeU32(pos),
1754
+ end: deserializeU32(pos + 4),
1755
1755
  };
1756
1756
  }
1757
1757
 
@@ -1760,63 +1760,61 @@ function deserializeTSClassImplements(pos) {
1760
1760
  if (expression.type === 'TSQualifiedName') {
1761
1761
  let parent = expression = {
1762
1762
  type: 'MemberExpression',
1763
- start: expression.start,
1764
- end: expression.end,
1765
1763
  object: expression.left,
1766
1764
  property: expression.right,
1767
1765
  optional: false,
1768
1766
  computed: false,
1767
+ start: expression.start,
1768
+ end: expression.end,
1769
1769
  };
1770
1770
 
1771
1771
  while (parent.object.type === 'TSQualifiedName') {
1772
1772
  const object = parent.object;
1773
1773
  parent = parent.object = {
1774
1774
  type: 'MemberExpression',
1775
- start: object.start,
1776
- end: object.end,
1777
1775
  object: object.left,
1778
1776
  property: object.right,
1779
1777
  optional: false,
1780
1778
  computed: false,
1779
+ start: object.start,
1780
+ end: object.end,
1781
1781
  };
1782
1782
  }
1783
1783
  }
1784
1784
  return {
1785
1785
  type: 'TSClassImplements',
1786
- start: deserializeU32(pos),
1787
- end: deserializeU32(pos + 4),
1788
1786
  expression,
1789
1787
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1788
+ start: deserializeU32(pos),
1789
+ end: deserializeU32(pos + 4),
1790
1790
  };
1791
1791
  }
1792
1792
 
1793
1793
  function deserializeTSInterfaceDeclaration(pos) {
1794
1794
  return {
1795
1795
  type: 'TSInterfaceDeclaration',
1796
- start: deserializeU32(pos),
1797
- end: deserializeU32(pos + 4),
1798
1796
  id: deserializeBindingIdentifier(pos + 8),
1799
1797
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 40),
1800
1798
  extends: deserializeVecTSInterfaceHeritage(pos + 48),
1801
1799
  body: deserializeBoxTSInterfaceBody(pos + 72),
1802
1800
  declare: deserializeBool(pos + 84),
1801
+ start: deserializeU32(pos),
1802
+ end: deserializeU32(pos + 4),
1803
1803
  };
1804
1804
  }
1805
1805
 
1806
1806
  function deserializeTSInterfaceBody(pos) {
1807
1807
  return {
1808
1808
  type: 'TSInterfaceBody',
1809
+ body: deserializeVecTSSignature(pos + 8),
1809
1810
  start: deserializeU32(pos),
1810
1811
  end: deserializeU32(pos + 4),
1811
- body: deserializeVecTSSignature(pos + 8),
1812
1812
  };
1813
1813
  }
1814
1814
 
1815
1815
  function deserializeTSPropertySignature(pos) {
1816
1816
  return {
1817
1817
  type: 'TSPropertySignature',
1818
- start: deserializeU32(pos),
1819
- end: deserializeU32(pos + 4),
1820
1818
  computed: deserializeBool(pos + 32),
1821
1819
  optional: deserializeBool(pos + 33),
1822
1820
  readonly: deserializeBool(pos + 34),
@@ -1824,19 +1822,21 @@ function deserializeTSPropertySignature(pos) {
1824
1822
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 24),
1825
1823
  accessibility: null,
1826
1824
  static: false,
1825
+ start: deserializeU32(pos),
1826
+ end: deserializeU32(pos + 4),
1827
1827
  };
1828
1828
  }
1829
1829
 
1830
1830
  function deserializeTSIndexSignature(pos) {
1831
1831
  return {
1832
1832
  type: 'TSIndexSignature',
1833
- start: deserializeU32(pos),
1834
- end: deserializeU32(pos + 4),
1835
1833
  parameters: deserializeVecTSIndexSignatureName(pos + 8),
1836
1834
  typeAnnotation: deserializeBoxTSTypeAnnotation(pos + 32),
1837
1835
  readonly: deserializeBool(pos + 40),
1838
1836
  static: deserializeBool(pos + 41),
1839
1837
  accessibility: null,
1838
+ start: deserializeU32(pos),
1839
+ end: deserializeU32(pos + 4),
1840
1840
  };
1841
1841
  }
1842
1842
 
@@ -1846,11 +1846,11 @@ function deserializeTSCallSignatureDeclaration(pos) {
1846
1846
  if (thisParam !== null) params.unshift(thisParam);
1847
1847
  return {
1848
1848
  type: 'TSCallSignatureDeclaration',
1849
- start: deserializeU32(pos),
1850
- end: deserializeU32(pos + 4),
1851
1849
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
1852
1850
  params,
1853
1851
  returnType: deserializeOptionBoxTSTypeAnnotation(pos + 32),
1852
+ start: deserializeU32(pos),
1853
+ end: deserializeU32(pos + 4),
1854
1854
  };
1855
1855
  }
1856
1856
 
@@ -1860,8 +1860,6 @@ function deserializeTSMethodSignature(pos) {
1860
1860
  if (thisParam !== null) params.unshift(thisParam);
1861
1861
  return {
1862
1862
  type: 'TSMethodSignature',
1863
- start: deserializeU32(pos),
1864
- end: deserializeU32(pos + 4),
1865
1863
  key: deserializePropertyKey(pos + 8),
1866
1864
  computed: deserializeBool(pos + 60),
1867
1865
  optional: deserializeBool(pos + 61),
@@ -1872,50 +1870,52 @@ function deserializeTSMethodSignature(pos) {
1872
1870
  accessibility: null,
1873
1871
  readonly: false,
1874
1872
  static: false,
1873
+ start: deserializeU32(pos),
1874
+ end: deserializeU32(pos + 4),
1875
1875
  };
1876
1876
  }
1877
1877
 
1878
1878
  function deserializeTSConstructSignatureDeclaration(pos) {
1879
1879
  return {
1880
1880
  type: 'TSConstructSignatureDeclaration',
1881
- start: deserializeU32(pos),
1882
- end: deserializeU32(pos + 4),
1883
1881
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
1884
1882
  params: deserializeBoxFormalParameters(pos + 16),
1885
1883
  returnType: deserializeOptionBoxTSTypeAnnotation(pos + 24),
1884
+ start: deserializeU32(pos),
1885
+ end: deserializeU32(pos + 4),
1886
1886
  };
1887
1887
  }
1888
1888
 
1889
1889
  function deserializeTSIndexSignatureName(pos) {
1890
1890
  return {
1891
1891
  type: 'Identifier',
1892
- start: deserializeU32(pos),
1893
- end: deserializeU32(pos + 4),
1894
1892
  decorators: [],
1895
1893
  name: deserializeStr(pos + 8),
1896
1894
  optional: false,
1897
1895
  typeAnnotation: deserializeBoxTSTypeAnnotation(pos + 24),
1896
+ start: deserializeU32(pos),
1897
+ end: deserializeU32(pos + 4),
1898
1898
  };
1899
1899
  }
1900
1900
 
1901
1901
  function deserializeTSInterfaceHeritage(pos) {
1902
1902
  return {
1903
1903
  type: 'TSInterfaceHeritage',
1904
- start: deserializeU32(pos),
1905
- end: deserializeU32(pos + 4),
1906
1904
  expression: deserializeExpression(pos + 8),
1907
1905
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
1906
+ start: deserializeU32(pos),
1907
+ end: deserializeU32(pos + 4),
1908
1908
  };
1909
1909
  }
1910
1910
 
1911
1911
  function deserializeTSTypePredicate(pos) {
1912
1912
  return {
1913
1913
  type: 'TSTypePredicate',
1914
- start: deserializeU32(pos),
1915
- end: deserializeU32(pos + 4),
1916
1914
  parameterName: deserializeTSTypePredicateName(pos + 8),
1917
1915
  asserts: deserializeBool(pos + 32),
1918
1916
  typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 24),
1917
+ start: deserializeU32(pos),
1918
+ end: deserializeU32(pos + 4),
1919
1919
  };
1920
1920
  }
1921
1921
 
@@ -1934,10 +1934,10 @@ function deserializeTSModuleDeclaration(pos) {
1934
1934
  if (innerId.type === 'Identifier') {
1935
1935
  id = {
1936
1936
  type: 'TSQualifiedName',
1937
- start: id.start,
1938
- end: innerId.end,
1939
1937
  left: id,
1940
1938
  right: innerId,
1939
+ start: id.start,
1940
+ end: innerId.end,
1941
1941
  };
1942
1942
  } else {
1943
1943
  // Replace `left` of innermost `TSQualifiedName` with a nested `TSQualifiedName` with `id` of
@@ -1949,10 +1949,10 @@ function deserializeTSModuleDeclaration(pos) {
1949
1949
  }
1950
1950
  innerId.left = {
1951
1951
  type: 'TSQualifiedName',
1952
- start: id.start,
1953
- end: innerId.left.end,
1954
1952
  left: id,
1955
1953
  right: innerId.left,
1954
+ start: id.start,
1955
+ end: innerId.left.end,
1956
1956
  };
1957
1957
  id = body.id;
1958
1958
  }
@@ -1961,8 +1961,8 @@ function deserializeTSModuleDeclaration(pos) {
1961
1961
 
1962
1962
  // Skip `body` field if `null`
1963
1963
  const node = body === null
1964
- ? { type: 'TSModuleDeclaration', start, end, id, kind, declare, global }
1965
- : { type: 'TSModuleDeclaration', start, end, id, body, kind, declare, global };
1964
+ ? { type: 'TSModuleDeclaration', id, kind, declare, global, start, end }
1965
+ : { type: 'TSModuleDeclaration', id, body, kind, declare, global, start, end };
1966
1966
  return node;
1967
1967
  }
1968
1968
 
@@ -1971,49 +1971,49 @@ function deserializeTSModuleBlock(pos) {
1971
1971
  body.push(...deserializeVecStatement(pos + 32));
1972
1972
  return {
1973
1973
  type: 'TSModuleBlock',
1974
+ body,
1974
1975
  start: deserializeU32(pos),
1975
1976
  end: deserializeU32(pos + 4),
1976
- body,
1977
1977
  };
1978
1978
  }
1979
1979
 
1980
1980
  function deserializeTSTypeLiteral(pos) {
1981
1981
  return {
1982
1982
  type: 'TSTypeLiteral',
1983
+ members: deserializeVecTSSignature(pos + 8),
1983
1984
  start: deserializeU32(pos),
1984
1985
  end: deserializeU32(pos + 4),
1985
- members: deserializeVecTSSignature(pos + 8),
1986
1986
  };
1987
1987
  }
1988
1988
 
1989
1989
  function deserializeTSInferType(pos) {
1990
1990
  return {
1991
1991
  type: 'TSInferType',
1992
+ typeParameter: deserializeBoxTSTypeParameter(pos + 8),
1992
1993
  start: deserializeU32(pos),
1993
1994
  end: deserializeU32(pos + 4),
1994
- typeParameter: deserializeBoxTSTypeParameter(pos + 8),
1995
1995
  };
1996
1996
  }
1997
1997
 
1998
1998
  function deserializeTSTypeQuery(pos) {
1999
1999
  return {
2000
2000
  type: 'TSTypeQuery',
2001
- start: deserializeU32(pos),
2002
- end: deserializeU32(pos + 4),
2003
2001
  exprName: deserializeTSTypeQueryExprName(pos + 8),
2004
2002
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
2003
+ start: deserializeU32(pos),
2004
+ end: deserializeU32(pos + 4),
2005
2005
  };
2006
2006
  }
2007
2007
 
2008
2008
  function deserializeTSImportType(pos) {
2009
2009
  return {
2010
2010
  type: 'TSImportType',
2011
- start: deserializeU32(pos),
2012
- end: deserializeU32(pos + 4),
2013
2011
  argument: deserializeTSType(pos + 8),
2014
2012
  options: deserializeOptionBoxObjectExpression(pos + 24),
2015
2013
  qualifier: deserializeOptionTSTypeName(pos + 32),
2016
2014
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 48),
2015
+ start: deserializeU32(pos),
2016
+ end: deserializeU32(pos + 4),
2017
2017
  };
2018
2018
  }
2019
2019
 
@@ -2023,23 +2023,23 @@ function deserializeTSFunctionType(pos) {
2023
2023
  if (thisParam !== null) params.unshift(thisParam);
2024
2024
  return {
2025
2025
  type: 'TSFunctionType',
2026
- start: deserializeU32(pos),
2027
- end: deserializeU32(pos + 4),
2028
2026
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
2029
2027
  params,
2030
2028
  returnType: deserializeBoxTSTypeAnnotation(pos + 32),
2029
+ start: deserializeU32(pos),
2030
+ end: deserializeU32(pos + 4),
2031
2031
  };
2032
2032
  }
2033
2033
 
2034
2034
  function deserializeTSConstructorType(pos) {
2035
2035
  return {
2036
2036
  type: 'TSConstructorType',
2037
- start: deserializeU32(pos),
2038
- end: deserializeU32(pos + 4),
2039
2037
  abstract: deserializeBool(pos + 32),
2040
2038
  typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
2041
2039
  params: deserializeBoxFormalParameters(pos + 16),
2042
2040
  returnType: deserializeBoxTSTypeAnnotation(pos + 24),
2041
+ start: deserializeU32(pos),
2042
+ end: deserializeU32(pos + 4),
2043
2043
  };
2044
2044
  }
2045
2045
 
@@ -2049,140 +2049,140 @@ function deserializeTSMappedType(pos) {
2049
2049
  if (optional === null) optional = false;
2050
2050
  return {
2051
2051
  type: 'TSMappedType',
2052
- start: deserializeU32(pos),
2053
- end: deserializeU32(pos + 4),
2054
2052
  key: typeParameter.name,
2055
2053
  constraint: typeParameter.constraint,
2056
2054
  nameType: deserializeOptionTSType(pos + 16),
2057
2055
  typeAnnotation: deserializeOptionTSType(pos + 32),
2058
2056
  optional,
2059
2057
  readonly: deserializeOptionTSMappedTypeModifierOperator(pos + 53),
2058
+ start: deserializeU32(pos),
2059
+ end: deserializeU32(pos + 4),
2060
2060
  };
2061
2061
  }
2062
2062
 
2063
2063
  function deserializeTSTemplateLiteralType(pos) {
2064
2064
  return {
2065
2065
  type: 'TSTemplateLiteralType',
2066
- start: deserializeU32(pos),
2067
- end: deserializeU32(pos + 4),
2068
2066
  quasis: deserializeVecTemplateElement(pos + 8),
2069
2067
  types: deserializeVecTSType(pos + 32),
2068
+ start: deserializeU32(pos),
2069
+ end: deserializeU32(pos + 4),
2070
2070
  };
2071
2071
  }
2072
2072
 
2073
2073
  function deserializeTSAsExpression(pos) {
2074
2074
  return {
2075
2075
  type: 'TSAsExpression',
2076
- start: deserializeU32(pos),
2077
- end: deserializeU32(pos + 4),
2078
2076
  expression: deserializeExpression(pos + 8),
2079
2077
  typeAnnotation: deserializeTSType(pos + 24),
2078
+ start: deserializeU32(pos),
2079
+ end: deserializeU32(pos + 4),
2080
2080
  };
2081
2081
  }
2082
2082
 
2083
2083
  function deserializeTSSatisfiesExpression(pos) {
2084
2084
  return {
2085
2085
  type: 'TSSatisfiesExpression',
2086
- start: deserializeU32(pos),
2087
- end: deserializeU32(pos + 4),
2088
2086
  expression: deserializeExpression(pos + 8),
2089
2087
  typeAnnotation: deserializeTSType(pos + 24),
2088
+ start: deserializeU32(pos),
2089
+ end: deserializeU32(pos + 4),
2090
2090
  };
2091
2091
  }
2092
2092
 
2093
2093
  function deserializeTSTypeAssertion(pos) {
2094
2094
  return {
2095
2095
  type: 'TSTypeAssertion',
2096
- start: deserializeU32(pos),
2097
- end: deserializeU32(pos + 4),
2098
2096
  typeAnnotation: deserializeTSType(pos + 8),
2099
2097
  expression: deserializeExpression(pos + 24),
2098
+ start: deserializeU32(pos),
2099
+ end: deserializeU32(pos + 4),
2100
2100
  };
2101
2101
  }
2102
2102
 
2103
2103
  function deserializeTSImportEqualsDeclaration(pos) {
2104
2104
  return {
2105
2105
  type: 'TSImportEqualsDeclaration',
2106
- start: deserializeU32(pos),
2107
- end: deserializeU32(pos + 4),
2108
2106
  id: deserializeBindingIdentifier(pos + 8),
2109
2107
  moduleReference: deserializeTSModuleReference(pos + 40),
2110
2108
  importKind: deserializeImportOrExportKind(pos + 56),
2109
+ start: deserializeU32(pos),
2110
+ end: deserializeU32(pos + 4),
2111
2111
  };
2112
2112
  }
2113
2113
 
2114
2114
  function deserializeTSExternalModuleReference(pos) {
2115
2115
  return {
2116
2116
  type: 'TSExternalModuleReference',
2117
+ expression: deserializeStringLiteral(pos + 8),
2117
2118
  start: deserializeU32(pos),
2118
2119
  end: deserializeU32(pos + 4),
2119
- expression: deserializeStringLiteral(pos + 8),
2120
2120
  };
2121
2121
  }
2122
2122
 
2123
2123
  function deserializeTSNonNullExpression(pos) {
2124
2124
  return {
2125
2125
  type: 'TSNonNullExpression',
2126
+ expression: deserializeExpression(pos + 8),
2126
2127
  start: deserializeU32(pos),
2127
2128
  end: deserializeU32(pos + 4),
2128
- expression: deserializeExpression(pos + 8),
2129
2129
  };
2130
2130
  }
2131
2131
 
2132
2132
  function deserializeDecorator(pos) {
2133
2133
  return {
2134
2134
  type: 'Decorator',
2135
+ expression: deserializeExpression(pos + 8),
2135
2136
  start: deserializeU32(pos),
2136
2137
  end: deserializeU32(pos + 4),
2137
- expression: deserializeExpression(pos + 8),
2138
2138
  };
2139
2139
  }
2140
2140
 
2141
2141
  function deserializeTSExportAssignment(pos) {
2142
2142
  return {
2143
2143
  type: 'TSExportAssignment',
2144
+ expression: deserializeExpression(pos + 8),
2144
2145
  start: deserializeU32(pos),
2145
2146
  end: deserializeU32(pos + 4),
2146
- expression: deserializeExpression(pos + 8),
2147
2147
  };
2148
2148
  }
2149
2149
 
2150
2150
  function deserializeTSNamespaceExportDeclaration(pos) {
2151
2151
  return {
2152
2152
  type: 'TSNamespaceExportDeclaration',
2153
+ id: deserializeIdentifierName(pos + 8),
2153
2154
  start: deserializeU32(pos),
2154
2155
  end: deserializeU32(pos + 4),
2155
- id: deserializeIdentifierName(pos + 8),
2156
2156
  };
2157
2157
  }
2158
2158
 
2159
2159
  function deserializeTSInstantiationExpression(pos) {
2160
2160
  return {
2161
2161
  type: 'TSInstantiationExpression',
2162
- start: deserializeU32(pos),
2163
- end: deserializeU32(pos + 4),
2164
2162
  expression: deserializeExpression(pos + 8),
2165
2163
  typeArguments: deserializeBoxTSTypeParameterInstantiation(pos + 24),
2164
+ start: deserializeU32(pos),
2165
+ end: deserializeU32(pos + 4),
2166
2166
  };
2167
2167
  }
2168
2168
 
2169
2169
  function deserializeJSDocNullableType(pos) {
2170
2170
  return {
2171
2171
  type: 'TSJSDocNullableType',
2172
- start: deserializeU32(pos),
2173
- end: deserializeU32(pos + 4),
2174
2172
  typeAnnotation: deserializeTSType(pos + 8),
2175
2173
  postfix: deserializeBool(pos + 24),
2174
+ start: deserializeU32(pos),
2175
+ end: deserializeU32(pos + 4),
2176
2176
  };
2177
2177
  }
2178
2178
 
2179
2179
  function deserializeJSDocNonNullableType(pos) {
2180
2180
  return {
2181
2181
  type: 'TSJSDocNonNullableType',
2182
- start: deserializeU32(pos),
2183
- end: deserializeU32(pos + 4),
2184
2182
  typeAnnotation: deserializeTSType(pos + 8),
2185
2183
  postfix: deserializeBool(pos + 24),
2184
+ start: deserializeU32(pos),
2185
+ end: deserializeU32(pos + 4),
2186
2186
  };
2187
2187
  }
2188
2188
 
@@ -2225,21 +2225,21 @@ function deserializeImportEntry(pos) {
2225
2225
 
2226
2226
  function deserializeExportEntry(pos) {
2227
2227
  return {
2228
- start: deserializeU32(pos),
2229
- end: deserializeU32(pos + 4),
2230
2228
  moduleRequest: deserializeOptionNameSpan(pos + 16),
2231
2229
  importName: deserializeExportImportName(pos + 40),
2232
2230
  exportName: deserializeExportExportName(pos + 72),
2233
2231
  localName: deserializeExportLocalName(pos + 104),
2234
2232
  isType: deserializeBool(pos + 136),
2233
+ start: deserializeU32(pos),
2234
+ end: deserializeU32(pos + 4),
2235
2235
  };
2236
2236
  }
2237
2237
 
2238
2238
  function deserializeDynamicImport(pos) {
2239
2239
  return {
2240
+ moduleRequest: deserializeSpan(pos + 8),
2240
2241
  start: deserializeU32(pos),
2241
2242
  end: deserializeU32(pos + 4),
2242
- moduleRequest: deserializeSpan(pos + 8),
2243
2243
  };
2244
2244
  }
2245
2245
 
@@ -2295,18 +2295,18 @@ function deserializeEcmaScriptModule(pos) {
2295
2295
 
2296
2296
  function deserializeStaticImport(pos) {
2297
2297
  return {
2298
- start: deserializeU32(pos),
2299
- end: deserializeU32(pos + 4),
2300
2298
  moduleRequest: deserializeNameSpan(pos + 8),
2301
2299
  entries: deserializeVecImportEntry(pos + 32),
2300
+ start: deserializeU32(pos),
2301
+ end: deserializeU32(pos + 4),
2302
2302
  };
2303
2303
  }
2304
2304
 
2305
2305
  function deserializeStaticExport(pos) {
2306
2306
  return {
2307
+ entries: deserializeVecExportEntry(pos + 8),
2307
2308
  start: deserializeU32(pos),
2308
2309
  end: deserializeU32(pos + 4),
2309
- entries: deserializeVecExportEntry(pos + 8),
2310
2310
  };
2311
2311
  }
2312
2312
 
@@ -3375,14 +3375,14 @@ function deserializeJSXElementName(pos) {
3375
3375
  return deserializeBoxJSXIdentifier(pos + 8);
3376
3376
  case 1:
3377
3377
  const ident = deserializeBoxIdentifierReference(pos + 8);
3378
- return { type: 'JSXIdentifier', start: ident.start, end: ident.end, name: ident.name };
3378
+ return { type: 'JSXIdentifier', name: ident.name, start: ident.start, end: ident.end };
3379
3379
  case 2:
3380
3380
  return deserializeBoxJSXNamespacedName(pos + 8);
3381
3381
  case 3:
3382
3382
  return deserializeBoxJSXMemberExpression(pos + 8);
3383
3383
  case 4:
3384
3384
  const thisExpr = deserializeBoxThisExpression(pos + 8);
3385
- return { type: 'JSXIdentifier', start: thisExpr.start, end: thisExpr.end, name: 'this' };
3385
+ return { type: 'JSXIdentifier', name: 'this', start: thisExpr.start, end: thisExpr.end };
3386
3386
  default:
3387
3387
  throw new Error(`Unexpected discriminant ${uint8[pos]} for JSXElementName`);
3388
3388
  }
@@ -3392,12 +3392,12 @@ function deserializeJSXMemberExpressionObject(pos) {
3392
3392
  switch (uint8[pos]) {
3393
3393
  case 0:
3394
3394
  const ident = deserializeBoxIdentifierReference(pos + 8);
3395
- return { type: 'JSXIdentifier', start: ident.start, end: ident.end, name: ident.name };
3395
+ return { type: 'JSXIdentifier', name: ident.name, start: ident.start, end: ident.end };
3396
3396
  case 1:
3397
3397
  return deserializeBoxJSXMemberExpression(pos + 8);
3398
3398
  case 2:
3399
3399
  const thisExpr = deserializeBoxThisExpression(pos + 8);
3400
- return { type: 'JSXIdentifier', start: thisExpr.start, end: thisExpr.end, name: 'this' };
3400
+ return { type: 'JSXIdentifier', name: 'this', start: thisExpr.start, end: thisExpr.end };
3401
3401
  default:
3402
3402
  throw new Error(`Unexpected discriminant ${uint8[pos]} for JSXMemberExpressionObject`);
3403
3403
  }