@openrewrite/rewrite 8.63.0 → 8.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/java/index.d.ts +1 -0
  2. package/dist/java/index.d.ts.map +1 -1
  3. package/dist/java/index.js +1 -0
  4. package/dist/java/index.js.map +1 -1
  5. package/dist/java/rpc.d.ts +2 -0
  6. package/dist/java/rpc.d.ts.map +1 -1
  7. package/dist/java/rpc.js +749 -410
  8. package/dist/java/rpc.js.map +1 -1
  9. package/dist/java/tree.d.ts +1 -1
  10. package/dist/java/tree.d.ts.map +1 -1
  11. package/dist/java/type-visitor.d.ts +48 -0
  12. package/dist/java/type-visitor.d.ts.map +1 -0
  13. package/dist/java/type-visitor.js +260 -0
  14. package/dist/java/type-visitor.js.map +1 -0
  15. package/dist/java/type.d.ts +2 -0
  16. package/dist/java/type.d.ts.map +1 -1
  17. package/dist/java/type.js +0 -317
  18. package/dist/java/type.js.map +1 -1
  19. package/dist/java/visitor.d.ts.map +1 -1
  20. package/dist/java/visitor.js +579 -363
  21. package/dist/java/visitor.js.map +1 -1
  22. package/dist/javascript/preconditions.d.ts +1 -1
  23. package/dist/javascript/preconditions.d.ts.map +1 -1
  24. package/dist/javascript/preconditions.js +7 -6
  25. package/dist/javascript/preconditions.js.map +1 -1
  26. package/dist/javascript/rpc.js +430 -350
  27. package/dist/javascript/rpc.js.map +1 -1
  28. package/dist/javascript/tree.d.ts +1 -1
  29. package/dist/javascript/tree.d.ts.map +1 -1
  30. package/dist/javascript/type-mapping.d.ts.map +1 -1
  31. package/dist/javascript/type-mapping.js +7 -0
  32. package/dist/javascript/type-mapping.js.map +1 -1
  33. package/dist/javascript/visitor.d.ts.map +1 -1
  34. package/dist/javascript/visitor.js +504 -309
  35. package/dist/javascript/visitor.js.map +1 -1
  36. package/dist/json/visitor.d.ts.map +1 -1
  37. package/dist/json/visitor.js +46 -21
  38. package/dist/json/visitor.js.map +1 -1
  39. package/dist/rpc/queue.d.ts +7 -4
  40. package/dist/rpc/queue.d.ts.map +1 -1
  41. package/dist/rpc/queue.js +22 -32
  42. package/dist/rpc/queue.js.map +1 -1
  43. package/dist/rpc/request/generate.d.ts.map +1 -1
  44. package/dist/rpc/request/generate.js +2 -3
  45. package/dist/rpc/request/generate.js.map +1 -1
  46. package/dist/rpc/request/get-languages.d.ts.map +1 -1
  47. package/dist/rpc/request/get-languages.js +4 -3
  48. package/dist/rpc/request/get-languages.js.map +1 -1
  49. package/dist/rpc/request/get-object.d.ts +1 -1
  50. package/dist/rpc/request/get-object.d.ts.map +1 -1
  51. package/dist/rpc/request/get-object.js +8 -7
  52. package/dist/rpc/request/get-object.js.map +1 -1
  53. package/dist/rpc/request/get-recipes.d.ts.map +1 -1
  54. package/dist/rpc/request/get-recipes.js +2 -2
  55. package/dist/rpc/request/get-recipes.js.map +1 -1
  56. package/dist/rpc/request/index.d.ts +1 -0
  57. package/dist/rpc/request/index.d.ts.map +1 -1
  58. package/dist/rpc/request/index.js +1 -0
  59. package/dist/rpc/request/index.js.map +1 -1
  60. package/dist/rpc/request/install-recipes.d.ts.map +1 -1
  61. package/dist/rpc/request/install-recipes.js +30 -21
  62. package/dist/rpc/request/install-recipes.js.map +1 -1
  63. package/dist/rpc/request/metrics.d.ts +10 -10
  64. package/dist/rpc/request/metrics.d.ts.map +1 -1
  65. package/dist/rpc/request/metrics.js +38 -31
  66. package/dist/rpc/request/metrics.js.map +1 -1
  67. package/dist/rpc/request/parse.d.ts.map +1 -1
  68. package/dist/rpc/request/parse.js +10 -12
  69. package/dist/rpc/request/parse.js.map +1 -1
  70. package/dist/rpc/request/prepare-recipe.d.ts.map +1 -1
  71. package/dist/rpc/request/prepare-recipe.js +4 -4
  72. package/dist/rpc/request/prepare-recipe.js.map +1 -1
  73. package/dist/rpc/request/print.d.ts +1 -1
  74. package/dist/rpc/request/print.d.ts.map +1 -1
  75. package/dist/rpc/request/print.js +10 -6
  76. package/dist/rpc/request/print.js.map +1 -1
  77. package/dist/rpc/request/trace-get-object.d.ts +5 -0
  78. package/dist/rpc/request/trace-get-object.d.ts.map +1 -0
  79. package/dist/rpc/request/trace-get-object.js +3 -0
  80. package/dist/rpc/request/trace-get-object.js.map +1 -0
  81. package/dist/rpc/request/visit.d.ts.map +1 -1
  82. package/dist/rpc/request/visit.js +2 -3
  83. package/dist/rpc/request/visit.js.map +1 -1
  84. package/dist/rpc/rewrite-rpc.d.ts +2 -3
  85. package/dist/rpc/rewrite-rpc.d.ts.map +1 -1
  86. package/dist/rpc/rewrite-rpc.js +14 -5
  87. package/dist/rpc/rewrite-rpc.js.map +1 -1
  88. package/dist/rpc/server.d.ts.map +1 -1
  89. package/dist/rpc/server.js +15 -44
  90. package/dist/rpc/server.js.map +1 -1
  91. package/dist/rpc/trace.d.ts +1 -1
  92. package/dist/rpc/trace.d.ts.map +1 -1
  93. package/dist/rpc/trace.js +3 -3
  94. package/dist/rpc/trace.js.map +1 -1
  95. package/dist/util.d.ts +6 -0
  96. package/dist/util.d.ts.map +1 -1
  97. package/dist/util.js +14 -0
  98. package/dist/util.js.map +1 -1
  99. package/dist/version.txt +1 -1
  100. package/package.json +1 -1
  101. package/src/java/index.ts +1 -0
  102. package/src/java/rpc.ts +726 -537
  103. package/src/java/tree.ts +1 -1
  104. package/src/java/type-visitor.ts +241 -0
  105. package/src/java/type.ts +13 -277
  106. package/src/java/visitor.ts +581 -378
  107. package/src/javascript/preconditions.ts +7 -6
  108. package/src/javascript/rpc.ts +431 -360
  109. package/src/javascript/tree.ts +1 -1
  110. package/src/javascript/type-mapping.ts +7 -0
  111. package/src/javascript/visitor.ts +505 -310
  112. package/src/json/visitor.ts +47 -22
  113. package/src/rpc/queue.ts +20 -17
  114. package/src/rpc/request/generate.ts +31 -25
  115. package/src/rpc/request/get-languages.ts +18 -10
  116. package/src/rpc/request/get-object.ts +42 -34
  117. package/src/rpc/request/get-recipes.ts +15 -8
  118. package/src/rpc/request/index.ts +1 -0
  119. package/src/rpc/request/install-recipes.ts +96 -79
  120. package/src/rpc/request/metrics.ts +54 -48
  121. package/src/rpc/request/parse.ts +31 -25
  122. package/src/rpc/request/prepare-recipe.ts +31 -23
  123. package/src/rpc/request/print.ts +28 -14
  124. package/src/rpc/request/trace-get-object.ts +4 -0
  125. package/src/rpc/request/visit.ts +22 -16
  126. package/src/rpc/rewrite-rpc.ts +23 -10
  127. package/src/rpc/server.ts +17 -52
  128. package/src/rpc/trace.ts +3 -3
  129. package/src/util.ts +14 -0
  130. package/dist/rpc/chrome-profiler.d.ts +0 -25
  131. package/dist/rpc/chrome-profiler.d.ts.map +0 -1
  132. package/dist/rpc/chrome-profiler.js +0 -405
  133. package/dist/rpc/chrome-profiler.js.map +0 -1
  134. package/src/rpc/chrome-profiler.ts +0 -373
@@ -27,12 +27,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  const visitor_1 = require("./visitor");
28
28
  const rpc_1 = require("../rpc");
29
29
  const tree_1 = require("./tree");
30
- const immer_1 = require("immer");
31
30
  const rpc_2 = require("../java/rpc");
31
+ const util_1 = require("../util");
32
32
  class JavaScriptSender extends visitor_1.JavaScriptVisitor {
33
33
  constructor() {
34
34
  super();
35
- this.javaSender = new JavaScriptSenderDelegate(this);
35
+ this.delegate = new JavaScriptDelegateSender(this);
36
36
  }
37
37
  visit(tree, p, parent) {
38
38
  const _super = Object.create(null, {
@@ -42,7 +42,7 @@ class JavaScriptSender extends visitor_1.JavaScriptVisitor {
42
42
  if ((0, tree_1.isJavaScript)(tree)) {
43
43
  return _super.visit.call(this, tree, p, parent);
44
44
  }
45
- return this.javaSender.visit(tree, p, parent);
45
+ return this.delegate.visit(tree, p, parent);
46
46
  });
47
47
  }
48
48
  preVisit(j, q) {
@@ -580,31 +580,31 @@ class JavaScriptSender extends visitor_1.JavaScriptVisitor {
580
580
  }
581
581
  visitRightPadded(right, q) {
582
582
  return __awaiter(this, void 0, void 0, function* () {
583
- return this.javaSender.visitRightPadded(right, q);
583
+ return this.delegate.visitRightPadded(right, q);
584
584
  });
585
585
  }
586
586
  visitLeftPadded(left, q) {
587
587
  return __awaiter(this, void 0, void 0, function* () {
588
- return this.javaSender.visitLeftPadded(left, q);
588
+ return this.delegate.visitLeftPadded(left, q);
589
589
  });
590
590
  }
591
591
  visitContainer(container, q) {
592
592
  return __awaiter(this, void 0, void 0, function* () {
593
- return this.javaSender.visitContainer(container, q);
593
+ return this.delegate.visitContainer(container, q);
594
594
  });
595
595
  }
596
596
  visitSpace(space, q) {
597
597
  return __awaiter(this, void 0, void 0, function* () {
598
- return this.javaSender.visitSpace(space, q);
598
+ return this.delegate.visitSpace(space, q);
599
599
  });
600
600
  }
601
601
  visitType(javaType, q) {
602
602
  return __awaiter(this, void 0, void 0, function* () {
603
- return this.javaSender.visitType(javaType, q);
603
+ return this.delegate.visitType(javaType, q);
604
604
  });
605
605
  }
606
606
  }
607
- class JavaScriptSenderDelegate extends rpc_2.JavaSender {
607
+ class JavaScriptDelegateSender extends rpc_2.JavaSender {
608
608
  constructor(javascriptSender) {
609
609
  super();
610
610
  this.javascriptSender = javascriptSender;
@@ -626,7 +626,7 @@ class JavaScriptSenderDelegate extends rpc_2.JavaSender {
626
626
  class JavaScriptReceiver extends visitor_1.JavaScriptVisitor {
627
627
  constructor() {
628
628
  super();
629
- this.javaReceiverDelegate = new JavaScriptReceiverDelegate(this);
629
+ this.delegate = new JavaScriptDelegateReceiver(this);
630
630
  }
631
631
  visit(tree, p, parent) {
632
632
  const _super = Object.create(null, {
@@ -636,636 +636,716 @@ class JavaScriptReceiver extends visitor_1.JavaScriptVisitor {
636
636
  if ((0, tree_1.isJavaScript)(tree)) {
637
637
  return _super.visit.call(this, tree, p, parent);
638
638
  }
639
- return this.javaReceiverDelegate.visit(tree, p, parent);
639
+ return this.delegate.visit(tree, p, parent);
640
640
  });
641
641
  }
642
642
  preVisit(j, q) {
643
643
  return __awaiter(this, void 0, void 0, function* () {
644
- const draft = (0, immer_1.createDraft)(j);
645
- draft.id = yield q.receive(j.id);
646
- draft.prefix = yield q.receive(j.prefix, space => this.visitSpace(space, q));
647
- draft.markers = yield q.receive(j.markers);
648
- return (0, immer_1.finishDraft)(draft);
644
+ const updates = {
645
+ id: yield q.receive(j.id),
646
+ prefix: yield q.receive(j.prefix, space => this.visitSpace(space, q)),
647
+ markers: yield q.receive(j.markers)
648
+ };
649
+ return (0, util_1.updateIfChanged)(j, updates);
649
650
  });
650
651
  }
651
652
  visitJsCompilationUnit(cu, q) {
652
653
  return __awaiter(this, void 0, void 0, function* () {
653
- const draft = (0, immer_1.createDraft)(cu);
654
- draft.sourcePath = yield q.receive(cu.sourcePath);
655
- draft.charsetName = yield q.receive(cu.charsetName);
656
- draft.charsetBomMarked = yield q.receive(cu.charsetBomMarked);
657
- draft.checksum = yield q.receive(cu.checksum);
658
- draft.fileAttributes = yield q.receive(cu.fileAttributes);
659
- draft.statements = yield q.receiveListDefined(cu.statements, stmt => this.visitRightPadded(stmt, q));
660
- draft.eof = yield q.receive(cu.eof, space => this.visitSpace(space, q));
661
- return (0, immer_1.finishDraft)(draft);
654
+ const updates = {
655
+ sourcePath: yield q.receive(cu.sourcePath),
656
+ charsetName: yield q.receive(cu.charsetName),
657
+ charsetBomMarked: yield q.receive(cu.charsetBomMarked),
658
+ checksum: yield q.receive(cu.checksum),
659
+ fileAttributes: yield q.receive(cu.fileAttributes),
660
+ statements: yield q.receiveListDefined(cu.statements, stmt => this.visitRightPadded(stmt, q)),
661
+ eof: yield q.receive(cu.eof, space => this.visitSpace(space, q))
662
+ };
663
+ return (0, util_1.updateIfChanged)(cu, updates);
662
664
  });
663
665
  }
664
666
  visitAlias(alias, q) {
665
667
  return __awaiter(this, void 0, void 0, function* () {
666
- const draft = (0, immer_1.createDraft)(alias);
667
- draft.propertyName = yield q.receive(draft.propertyName, el => this.visitRightPadded(el, q));
668
- draft.alias = yield q.receive(draft.alias, el => this.visitDefined(el, q));
669
- return (0, immer_1.finishDraft)(draft);
668
+ const updates = {
669
+ propertyName: yield q.receive(alias.propertyName, el => this.visitRightPadded(el, q)),
670
+ alias: yield q.receive(alias.alias, el => this.visitDefined(el, q))
671
+ };
672
+ return (0, util_1.updateIfChanged)(alias, updates);
670
673
  });
671
674
  }
672
675
  visitArrowFunction(arrowFunction, q) {
673
676
  return __awaiter(this, void 0, void 0, function* () {
674
- const draft = (0, immer_1.createDraft)(arrowFunction);
675
- draft.leadingAnnotations = yield q.receiveListDefined(draft.leadingAnnotations, el => this.visitDefined(el, q));
676
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
677
- draft.typeParameters = yield q.receive(draft.typeParameters, el => this.visitDefined(el, q));
678
- draft.lambda = yield q.receive(draft.lambda, el => this.visitDefined(el, q));
679
- draft.returnTypeExpression = yield q.receive(draft.returnTypeExpression, el => this.visitDefined(el, q));
680
- return (0, immer_1.finishDraft)(draft);
677
+ const updates = {
678
+ leadingAnnotations: yield q.receiveListDefined(arrowFunction.leadingAnnotations, el => this.visitDefined(el, q)),
679
+ modifiers: yield q.receiveListDefined(arrowFunction.modifiers, el => this.visitDefined(el, q)),
680
+ typeParameters: yield q.receive(arrowFunction.typeParameters, el => this.visitDefined(el, q)),
681
+ lambda: yield q.receive(arrowFunction.lambda, el => this.visitDefined(el, q)),
682
+ returnTypeExpression: yield q.receive(arrowFunction.returnTypeExpression, el => this.visitDefined(el, q))
683
+ };
684
+ return (0, util_1.updateIfChanged)(arrowFunction, updates);
681
685
  });
682
686
  }
683
- visitAwait(await_, q) {
687
+ visitAwait(anAwait, q) {
684
688
  return __awaiter(this, void 0, void 0, function* () {
685
- const draft = (0, immer_1.createDraft)(await_);
686
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
687
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
688
- return (0, immer_1.finishDraft)(draft);
689
+ const updates = {
690
+ expression: yield q.receive(anAwait.expression, el => this.visitDefined(el, q)),
691
+ type: yield q.receive(anAwait.type, el => this.visitType(el, q))
692
+ };
693
+ return (0, util_1.updateIfChanged)(anAwait, updates);
689
694
  });
690
695
  }
691
696
  visitConditionalType(conditionalType, q) {
692
697
  return __awaiter(this, void 0, void 0, function* () {
693
- const draft = (0, immer_1.createDraft)(conditionalType);
694
- draft.checkType = yield q.receive(draft.checkType, el => this.visitDefined(el, q));
695
- draft.condition = yield q.receive(draft.condition, el => this.visitLeftPadded(el, q));
696
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
697
- return (0, immer_1.finishDraft)(draft);
698
+ const updates = {
699
+ checkType: yield q.receive(conditionalType.checkType, el => this.visitDefined(el, q)),
700
+ condition: yield q.receive(conditionalType.condition, el => this.visitLeftPadded(el, q)),
701
+ type: yield q.receive(conditionalType.type, el => this.visitType(el, q))
702
+ };
703
+ return (0, util_1.updateIfChanged)(conditionalType, updates);
698
704
  });
699
705
  }
700
706
  visitDelete(delete_, q) {
701
707
  return __awaiter(this, void 0, void 0, function* () {
702
- const draft = (0, immer_1.createDraft)(delete_);
703
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
704
- return (0, immer_1.finishDraft)(draft);
708
+ const updates = {
709
+ expression: yield q.receive(delete_.expression, el => this.visitDefined(el, q))
710
+ };
711
+ return (0, util_1.updateIfChanged)(delete_, updates);
705
712
  });
706
713
  }
707
714
  visitExpressionStatement(expressionStatement, q) {
708
715
  return __awaiter(this, void 0, void 0, function* () {
709
- const draft = (0, immer_1.createDraft)(expressionStatement);
710
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
711
- return (0, immer_1.finishDraft)(draft);
716
+ const updates = {
717
+ expression: yield q.receive(expressionStatement.expression, el => this.visitDefined(el, q))
718
+ };
719
+ return (0, util_1.updateIfChanged)(expressionStatement, updates);
712
720
  });
713
721
  }
714
722
  visitExpressionWithTypeArguments(expressionWithTypeArguments, q) {
715
723
  return __awaiter(this, void 0, void 0, function* () {
716
- const draft = (0, immer_1.createDraft)(expressionWithTypeArguments);
717
- draft.clazz = yield q.receive(draft.clazz, el => this.visitDefined(el, q));
718
- draft.typeArguments = yield q.receive(draft.typeArguments, el => this.visitContainer(el, q));
719
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
720
- return (0, immer_1.finishDraft)(draft);
724
+ const updates = {
725
+ clazz: yield q.receive(expressionWithTypeArguments.clazz, el => this.visitDefined(el, q)),
726
+ typeArguments: yield q.receive(expressionWithTypeArguments.typeArguments, el => this.visitContainer(el, q)),
727
+ type: yield q.receive(expressionWithTypeArguments.type, el => this.visitType(el, q))
728
+ };
729
+ return (0, util_1.updateIfChanged)(expressionWithTypeArguments, updates);
721
730
  });
722
731
  }
723
732
  visitFunctionCall(functionCall, q) {
724
733
  return __awaiter(this, void 0, void 0, function* () {
725
- const draft = (0, immer_1.createDraft)(functionCall);
726
- draft.function = yield q.receive(functionCall.function, select => this.visitRightPadded(select, q));
727
- draft.typeParameters = yield q.receive(functionCall.typeParameters, typeParams => this.visitContainer(typeParams, q));
728
- draft.arguments = yield q.receive(functionCall.arguments, args => this.visitContainer(args, q));
729
- draft.methodType = yield q.receive(functionCall.methodType, type => this.visitType(type, q));
730
- return (0, immer_1.finishDraft)(draft);
734
+ const updates = {
735
+ function: yield q.receive(functionCall.function, select => this.visitRightPadded(select, q)),
736
+ typeParameters: yield q.receive(functionCall.typeParameters, typeParams => this.visitContainer(typeParams, q)),
737
+ arguments: yield q.receive(functionCall.arguments, args => this.visitContainer(args, q)),
738
+ methodType: yield q.receive(functionCall.methodType, type => this.visitType(type, q))
739
+ };
740
+ return (0, util_1.updateIfChanged)(functionCall, updates);
731
741
  });
732
742
  }
733
743
  visitFunctionType(functionType, q) {
734
744
  return __awaiter(this, void 0, void 0, function* () {
735
- const draft = (0, immer_1.createDraft)(functionType);
736
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
737
- draft.constructorType = yield q.receive(draft.constructorType, el => this.visitLeftPadded(el, q));
738
- draft.typeParameters = yield q.receive(draft.typeParameters, el => this.visitDefined(el, q));
739
- draft.parameters = yield q.receive(draft.parameters, el => this.visitContainer(el, q));
740
- draft.returnType = yield q.receive(draft.returnType, el => this.visitLeftPadded(el, q));
741
- return (0, immer_1.finishDraft)(draft);
745
+ const updates = {
746
+ modifiers: yield q.receiveListDefined(functionType.modifiers, el => this.visitDefined(el, q)),
747
+ constructorType: yield q.receive(functionType.constructorType, el => this.visitLeftPadded(el, q)),
748
+ typeParameters: yield q.receive(functionType.typeParameters, el => this.visitDefined(el, q)),
749
+ parameters: yield q.receive(functionType.parameters, el => this.visitContainer(el, q)),
750
+ returnType: yield q.receive(functionType.returnType, el => this.visitLeftPadded(el, q))
751
+ };
752
+ return (0, util_1.updateIfChanged)(functionType, updates);
742
753
  });
743
754
  }
744
755
  visitInferType(inferType, q) {
745
756
  return __awaiter(this, void 0, void 0, function* () {
746
- const draft = (0, immer_1.createDraft)(inferType);
747
- draft.typeParameter = yield q.receive(draft.typeParameter, el => this.visitLeftPadded(el, q));
748
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
749
- return (0, immer_1.finishDraft)(draft);
757
+ const updates = {
758
+ typeParameter: yield q.receive(inferType.typeParameter, el => this.visitLeftPadded(el, q)),
759
+ type: yield q.receive(inferType.type, el => this.visitType(el, q))
760
+ };
761
+ return (0, util_1.updateIfChanged)(inferType, updates);
750
762
  });
751
763
  }
752
764
  visitImportType(importType, q) {
753
765
  return __awaiter(this, void 0, void 0, function* () {
754
- const draft = (0, immer_1.createDraft)(importType);
755
- draft.hasTypeof = yield q.receive(draft.hasTypeof, el => this.visitRightPadded(el, q));
756
- draft.argumentAndAttributes = yield q.receive(draft.argumentAndAttributes, el => this.visitContainer(el, q));
757
- draft.qualifier = yield q.receive(draft.qualifier, el => this.visitLeftPadded(el, q));
758
- draft.typeArguments = yield q.receive(draft.typeArguments, el => this.visitContainer(el, q));
759
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
760
- return (0, immer_1.finishDraft)(draft);
766
+ const updates = {
767
+ hasTypeof: yield q.receive(importType.hasTypeof, el => this.visitRightPadded(el, q)),
768
+ argumentAndAttributes: yield q.receive(importType.argumentAndAttributes, el => this.visitContainer(el, q)),
769
+ qualifier: yield q.receive(importType.qualifier, el => this.visitLeftPadded(el, q)),
770
+ typeArguments: yield q.receive(importType.typeArguments, el => this.visitContainer(el, q)),
771
+ type: yield q.receive(importType.type, el => this.visitType(el, q))
772
+ };
773
+ return (0, util_1.updateIfChanged)(importType, updates);
761
774
  });
762
775
  }
763
776
  visitImportDeclaration(jsImport, q) {
764
777
  return __awaiter(this, void 0, void 0, function* () {
765
- const draft = (0, immer_1.createDraft)(jsImport);
766
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
767
- draft.importClause = yield q.receive(draft.importClause, el => this.visitDefined(el, q));
768
- draft.moduleSpecifier = yield q.receive(draft.moduleSpecifier, el => this.visitLeftPadded(el, q));
769
- draft.attributes = yield q.receive(draft.attributes, el => this.visitDefined(el, q));
770
- draft.initializer = yield q.receive(draft.initializer, el => this.visitLeftPadded(el, q));
771
- return (0, immer_1.finishDraft)(draft);
778
+ const updates = {
779
+ modifiers: yield q.receiveListDefined(jsImport.modifiers, el => this.visitDefined(el, q)),
780
+ importClause: yield q.receive(jsImport.importClause, el => this.visitDefined(el, q)),
781
+ moduleSpecifier: yield q.receive(jsImport.moduleSpecifier, el => this.visitLeftPadded(el, q)),
782
+ attributes: yield q.receive(jsImport.attributes, el => this.visitDefined(el, q)),
783
+ initializer: yield q.receive(jsImport.initializer, el => this.visitLeftPadded(el, q))
784
+ };
785
+ return (0, util_1.updateIfChanged)(jsImport, updates);
772
786
  });
773
787
  }
774
788
  visitImportClause(jsImportClause, q) {
775
789
  return __awaiter(this, void 0, void 0, function* () {
776
- const draft = (0, immer_1.createDraft)(jsImportClause);
777
- draft.typeOnly = yield q.receive(draft.typeOnly);
778
- draft.name = yield q.receive(draft.name, el => this.visitRightPadded(el, q));
779
- draft.namedBindings = yield q.receive(draft.namedBindings, el => this.visitDefined(el, q));
780
- return (0, immer_1.finishDraft)(draft);
790
+ const updates = {
791
+ typeOnly: yield q.receive(jsImportClause.typeOnly),
792
+ name: yield q.receive(jsImportClause.name, el => this.visitRightPadded(el, q)),
793
+ namedBindings: yield q.receive(jsImportClause.namedBindings, el => this.visitDefined(el, q))
794
+ };
795
+ return (0, util_1.updateIfChanged)(jsImportClause, updates);
781
796
  });
782
797
  }
783
798
  visitNamedImports(namedImports, q) {
784
799
  return __awaiter(this, void 0, void 0, function* () {
785
- const draft = (0, immer_1.createDraft)(namedImports);
786
- draft.elements = yield q.receive(draft.elements, el => this.visitContainer(el, q));
787
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
788
- return (0, immer_1.finishDraft)(draft);
800
+ const updates = {
801
+ elements: yield q.receive(namedImports.elements, el => this.visitContainer(el, q)),
802
+ type: yield q.receive(namedImports.type, el => this.visitType(el, q))
803
+ };
804
+ return (0, util_1.updateIfChanged)(namedImports, updates);
789
805
  });
790
806
  }
791
807
  visitImportSpecifier(jsImportSpecifier, q) {
792
808
  return __awaiter(this, void 0, void 0, function* () {
793
- const draft = (0, immer_1.createDraft)(jsImportSpecifier);
794
- draft.importType = yield q.receive(draft.importType, el => this.visitLeftPadded(el, q));
795
- draft.specifier = yield q.receive(draft.specifier, el => this.visitDefined(el, q));
796
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
797
- return (0, immer_1.finishDraft)(draft);
809
+ const updates = {
810
+ importType: yield q.receive(jsImportSpecifier.importType, el => this.visitLeftPadded(el, q)),
811
+ specifier: yield q.receive(jsImportSpecifier.specifier, el => this.visitDefined(el, q)),
812
+ type: yield q.receive(jsImportSpecifier.type, el => this.visitType(el, q))
813
+ };
814
+ return (0, util_1.updateIfChanged)(jsImportSpecifier, updates);
798
815
  });
799
816
  }
800
817
  visitImportAttributes(importAttributes, q) {
801
818
  return __awaiter(this, void 0, void 0, function* () {
802
- const draft = (0, immer_1.createDraft)(importAttributes);
803
- draft.token = yield q.receive(draft.token);
804
- draft.elements = yield q.receive(draft.elements, el => this.visitContainer(el, q));
805
- return (0, immer_1.finishDraft)(draft);
819
+ const updates = {
820
+ token: yield q.receive(importAttributes.token),
821
+ elements: yield q.receive(importAttributes.elements, el => this.visitContainer(el, q))
822
+ };
823
+ return (0, util_1.updateIfChanged)(importAttributes, updates);
806
824
  });
807
825
  }
808
826
  visitImportTypeAttributes(importTypeAttributes, q) {
809
827
  return __awaiter(this, void 0, void 0, function* () {
810
- const draft = (0, immer_1.createDraft)(importTypeAttributes);
811
- draft.token = yield q.receive(draft.token, el => this.visitRightPadded(el, q));
812
- draft.elements = yield q.receive(draft.elements, el => this.visitContainer(el, q));
813
- draft.end = yield q.receive(draft.end, el => this.visitSpace(el, q));
814
- return (0, immer_1.finishDraft)(draft);
828
+ const updates = {
829
+ token: yield q.receive(importTypeAttributes.token, el => this.visitRightPadded(el, q)),
830
+ elements: yield q.receive(importTypeAttributes.elements, el => this.visitContainer(el, q)),
831
+ end: yield q.receive(importTypeAttributes.end, el => this.visitSpace(el, q))
832
+ };
833
+ return (0, util_1.updateIfChanged)(importTypeAttributes, updates);
815
834
  });
816
835
  }
817
836
  visitImportAttribute(importAttribute, q) {
818
837
  return __awaiter(this, void 0, void 0, function* () {
819
- const draft = (0, immer_1.createDraft)(importAttribute);
820
- draft.name = yield q.receive(draft.name, el => this.visitDefined(el, q));
821
- draft.value = yield q.receive(draft.value, el => this.visitLeftPadded(el, q));
822
- return (0, immer_1.finishDraft)(draft);
838
+ const updates = {
839
+ name: yield q.receive(importAttribute.name, el => this.visitDefined(el, q)),
840
+ value: yield q.receive(importAttribute.value, el => this.visitLeftPadded(el, q))
841
+ };
842
+ return (0, util_1.updateIfChanged)(importAttribute, updates);
823
843
  });
824
844
  }
825
845
  visitBinaryExtensions(binary, q) {
826
846
  return __awaiter(this, void 0, void 0, function* () {
827
- const draft = (0, immer_1.createDraft)(binary);
828
- draft.left = yield q.receive(draft.left, el => this.visitDefined(el, q));
829
- draft.operator = yield q.receive(draft.operator, el => this.visitLeftPadded(el, q));
830
- draft.right = yield q.receive(draft.right, el => this.visitDefined(el, q));
831
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
832
- return (0, immer_1.finishDraft)(draft);
847
+ const updates = {
848
+ left: yield q.receive(binary.left, el => this.visitDefined(el, q)),
849
+ operator: yield q.receive(binary.operator, el => this.visitLeftPadded(el, q)),
850
+ right: yield q.receive(binary.right, el => this.visitDefined(el, q)),
851
+ type: yield q.receive(binary.type, el => this.visitType(el, q))
852
+ };
853
+ return (0, util_1.updateIfChanged)(binary, updates);
833
854
  });
834
855
  }
835
856
  visitLiteralType(literalType, q) {
836
857
  return __awaiter(this, void 0, void 0, function* () {
837
- const draft = (0, immer_1.createDraft)(literalType);
838
- draft.literal = yield q.receive(draft.literal, el => this.visitDefined(el, q));
839
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
840
- return (0, immer_1.finishDraft)(draft);
858
+ const updates = {
859
+ literal: yield q.receive(literalType.literal, el => this.visitDefined(el, q)),
860
+ type: yield q.receive(literalType.type, el => this.visitType(el, q))
861
+ };
862
+ return (0, util_1.updateIfChanged)(literalType, updates);
841
863
  });
842
864
  }
843
865
  visitMappedType(mappedType, q) {
844
866
  return __awaiter(this, void 0, void 0, function* () {
845
- const draft = (0, immer_1.createDraft)(mappedType);
846
- draft.prefixToken = yield q.receive(draft.prefixToken, el => this.visitLeftPadded(el, q));
847
- draft.hasReadonly = yield q.receive(draft.hasReadonly, el => this.visitLeftPadded(el, q));
848
- draft.keysRemapping = yield q.receive(draft.keysRemapping, el => this.visitDefined(el, q));
849
- draft.suffixToken = yield q.receive(draft.suffixToken, el => this.visitLeftPadded(el, q));
850
- draft.hasQuestionToken = yield q.receive(draft.hasQuestionToken, el => this.visitLeftPadded(el, q));
851
- draft.valueType = yield q.receive(draft.valueType, el => this.visitContainer(el, q));
852
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
853
- return (0, immer_1.finishDraft)(draft);
867
+ const updates = {
868
+ prefixToken: yield q.receive(mappedType.prefixToken, el => this.visitLeftPadded(el, q)),
869
+ hasReadonly: yield q.receive(mappedType.hasReadonly, el => this.visitLeftPadded(el, q)),
870
+ keysRemapping: yield q.receive(mappedType.keysRemapping, el => this.visitDefined(el, q)),
871
+ suffixToken: yield q.receive(mappedType.suffixToken, el => this.visitLeftPadded(el, q)),
872
+ hasQuestionToken: yield q.receive(mappedType.hasQuestionToken, el => this.visitLeftPadded(el, q)),
873
+ valueType: yield q.receive(mappedType.valueType, el => this.visitContainer(el, q)),
874
+ type: yield q.receive(mappedType.type, el => this.visitType(el, q))
875
+ };
876
+ return (0, util_1.updateIfChanged)(mappedType, updates);
854
877
  });
855
878
  }
856
879
  visitMappedTypeKeysRemapping(keysRemapping, q) {
857
880
  return __awaiter(this, void 0, void 0, function* () {
858
- const draft = (0, immer_1.createDraft)(keysRemapping);
859
- draft.typeParameter = yield q.receive(draft.typeParameter, el => this.visitRightPadded(el, q));
860
- draft.nameType = yield q.receive(draft.nameType, el => this.visitRightPadded(el, q));
861
- return (0, immer_1.finishDraft)(draft);
881
+ const updates = {
882
+ typeParameter: yield q.receive(keysRemapping.typeParameter, el => this.visitRightPadded(el, q)),
883
+ nameType: yield q.receive(keysRemapping.nameType, el => this.visitRightPadded(el, q))
884
+ };
885
+ return (0, util_1.updateIfChanged)(keysRemapping, updates);
862
886
  });
863
887
  }
864
888
  visitMappedTypeParameter(mappedTypeParameter, q) {
865
889
  return __awaiter(this, void 0, void 0, function* () {
866
- const draft = (0, immer_1.createDraft)(mappedTypeParameter);
867
- draft.name = yield q.receive(draft.name, el => this.visitDefined(el, q));
868
- draft.iterateType = yield q.receive(draft.iterateType, el => this.visitLeftPadded(el, q));
869
- return (0, immer_1.finishDraft)(draft);
890
+ const updates = {
891
+ name: yield q.receive(mappedTypeParameter.name, el => this.visitDefined(el, q)),
892
+ iterateType: yield q.receive(mappedTypeParameter.iterateType, el => this.visitLeftPadded(el, q))
893
+ };
894
+ return (0, util_1.updateIfChanged)(mappedTypeParameter, updates);
870
895
  });
871
896
  }
872
897
  visitObjectBindingPattern(objectBindingPattern, q) {
873
898
  return __awaiter(this, void 0, void 0, function* () {
874
- const draft = (0, immer_1.createDraft)(objectBindingPattern);
875
- draft.leadingAnnotations = yield q.receiveListDefined(draft.leadingAnnotations, el => this.visitDefined(el, q));
876
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
877
- draft.typeExpression = yield q.receive(draft.typeExpression, el => this.visitDefined(el, q));
878
- draft.bindings = yield q.receive(draft.bindings, el => this.visitContainer(el, q));
879
- draft.initializer = yield q.receive(draft.initializer, el => this.visitLeftPadded(el, q));
880
- return (0, immer_1.finishDraft)(draft);
899
+ const updates = {
900
+ leadingAnnotations: yield q.receiveListDefined(objectBindingPattern.leadingAnnotations, el => this.visitDefined(el, q)),
901
+ modifiers: yield q.receiveListDefined(objectBindingPattern.modifiers, el => this.visitDefined(el, q)),
902
+ typeExpression: yield q.receive(objectBindingPattern.typeExpression, el => this.visitDefined(el, q)),
903
+ bindings: yield q.receive(objectBindingPattern.bindings, el => this.visitContainer(el, q)),
904
+ initializer: yield q.receive(objectBindingPattern.initializer, el => this.visitLeftPadded(el, q))
905
+ };
906
+ return (0, util_1.updateIfChanged)(objectBindingPattern, updates);
881
907
  });
882
908
  }
883
909
  visitPropertyAssignment(propertyAssignment, q) {
884
910
  return __awaiter(this, void 0, void 0, function* () {
885
- const draft = (0, immer_1.createDraft)(propertyAssignment);
886
- draft.name = yield q.receive(draft.name, el => this.visitRightPadded(el, q));
887
- draft.assigmentToken = yield q.receive(draft.assigmentToken);
888
- draft.initializer = yield q.receive(draft.initializer, el => this.visitDefined(el, q));
889
- return (0, immer_1.finishDraft)(draft);
911
+ const updates = {
912
+ name: yield q.receive(propertyAssignment.name, el => this.visitRightPadded(el, q)),
913
+ assigmentToken: yield q.receive(propertyAssignment.assigmentToken),
914
+ initializer: yield q.receive(propertyAssignment.initializer, el => this.visitDefined(el, q))
915
+ };
916
+ return (0, util_1.updateIfChanged)(propertyAssignment, updates);
890
917
  });
891
918
  }
892
919
  visitSatisfiesExpression(satisfiesExpression, q) {
893
920
  return __awaiter(this, void 0, void 0, function* () {
894
- const draft = (0, immer_1.createDraft)(satisfiesExpression);
895
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
896
- draft.satisfiesType = yield q.receive(draft.satisfiesType, el => this.visitLeftPadded(el, q));
897
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
898
- return (0, immer_1.finishDraft)(draft);
921
+ const updates = {
922
+ expression: yield q.receive(satisfiesExpression.expression, el => this.visitDefined(el, q)),
923
+ satisfiesType: yield q.receive(satisfiesExpression.satisfiesType, el => this.visitLeftPadded(el, q)),
924
+ type: yield q.receive(satisfiesExpression.type, el => this.visitType(el, q))
925
+ };
926
+ return (0, util_1.updateIfChanged)(satisfiesExpression, updates);
899
927
  });
900
928
  }
901
929
  visitScopedVariableDeclarations(scopedVariableDeclarations, q) {
902
930
  return __awaiter(this, void 0, void 0, function* () {
903
- const draft = (0, immer_1.createDraft)(scopedVariableDeclarations);
904
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
905
- draft.variables = yield q.receiveListDefined(draft.variables, el => this.visitRightPadded(el, q));
906
- return (0, immer_1.finishDraft)(draft);
931
+ const updates = {
932
+ modifiers: yield q.receiveListDefined(scopedVariableDeclarations.modifiers, el => this.visitDefined(el, q)),
933
+ variables: yield q.receiveListDefined(scopedVariableDeclarations.variables, el => this.visitRightPadded(el, q))
934
+ };
935
+ return (0, util_1.updateIfChanged)(scopedVariableDeclarations, updates);
907
936
  });
908
937
  }
909
938
  visitStatementExpression(statementExpression, q) {
910
939
  return __awaiter(this, void 0, void 0, function* () {
911
- const draft = (0, immer_1.createDraft)(statementExpression);
912
- draft.statement = yield q.receive(draft.statement, el => this.visitDefined(el, q));
913
- return (0, immer_1.finishDraft)(draft);
940
+ const updates = {
941
+ statement: yield q.receive(statementExpression.statement, el => this.visitDefined(el, q))
942
+ };
943
+ return (0, util_1.updateIfChanged)(statementExpression, updates);
914
944
  });
915
945
  }
916
946
  visitTaggedTemplateExpression(taggedTemplateExpression, q) {
917
947
  return __awaiter(this, void 0, void 0, function* () {
918
- const draft = (0, immer_1.createDraft)(taggedTemplateExpression);
919
- draft.tag = yield q.receive(draft.tag, el => this.visitRightPadded(el, q));
920
- draft.typeArguments = yield q.receive(draft.typeArguments, el => this.visitContainer(el, q));
921
- draft.templateExpression = yield q.receive(draft.templateExpression, el => this.visitDefined(el, q));
922
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
923
- return (0, immer_1.finishDraft)(draft);
948
+ const updates = {
949
+ tag: yield q.receive(taggedTemplateExpression.tag, el => this.visitRightPadded(el, q)),
950
+ typeArguments: yield q.receive(taggedTemplateExpression.typeArguments, el => this.visitContainer(el, q)),
951
+ templateExpression: yield q.receive(taggedTemplateExpression.templateExpression, el => this.visitDefined(el, q)),
952
+ type: yield q.receive(taggedTemplateExpression.type, el => this.visitType(el, q))
953
+ };
954
+ return (0, util_1.updateIfChanged)(taggedTemplateExpression, updates);
924
955
  });
925
956
  }
926
957
  visitTemplateExpression(templateExpression, q) {
927
958
  return __awaiter(this, void 0, void 0, function* () {
928
- const draft = (0, immer_1.createDraft)(templateExpression);
929
- draft.head = yield q.receive(draft.head, el => this.visitDefined(el, q));
930
- draft.spans = yield q.receiveListDefined(draft.spans, el => this.visitRightPadded(el, q));
931
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
932
- return (0, immer_1.finishDraft)(draft);
959
+ const updates = {
960
+ head: yield q.receive(templateExpression.head, el => this.visitDefined(el, q)),
961
+ spans: yield q.receiveListDefined(templateExpression.spans, el => this.visitRightPadded(el, q)),
962
+ type: yield q.receive(templateExpression.type, el => this.visitType(el, q))
963
+ };
964
+ return (0, util_1.updateIfChanged)(templateExpression, updates);
933
965
  });
934
966
  }
935
967
  visitTemplateExpressionSpan(span, q) {
936
968
  return __awaiter(this, void 0, void 0, function* () {
937
- const draft = (0, immer_1.createDraft)(span);
938
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
939
- draft.tail = yield q.receive(draft.tail, el => this.visitDefined(el, q));
940
- return (0, immer_1.finishDraft)(draft);
969
+ const updates = {
970
+ expression: yield q.receive(span.expression, el => this.visitDefined(el, q)),
971
+ tail: yield q.receive(span.tail, el => this.visitDefined(el, q))
972
+ };
973
+ return (0, util_1.updateIfChanged)(span, updates);
941
974
  });
942
975
  }
943
976
  visitTuple(tuple, q) {
944
977
  return __awaiter(this, void 0, void 0, function* () {
945
- const draft = (0, immer_1.createDraft)(tuple);
946
- draft.elements = yield q.receive(draft.elements, el => this.visitContainer(el, q));
947
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
948
- return (0, immer_1.finishDraft)(draft);
978
+ const updates = {
979
+ elements: yield q.receive(tuple.elements, el => this.visitContainer(el, q)),
980
+ type: yield q.receive(tuple.type, el => this.visitType(el, q))
981
+ };
982
+ return (0, util_1.updateIfChanged)(tuple, updates);
949
983
  });
950
984
  }
951
985
  visitTypeDeclaration(typeDeclaration, q) {
952
986
  return __awaiter(this, void 0, void 0, function* () {
953
- const draft = (0, immer_1.createDraft)(typeDeclaration);
954
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
955
- draft.name = yield q.receive(draft.name, el => this.visitLeftPadded(el, q));
956
- draft.typeParameters = yield q.receive(draft.typeParameters, el => this.visitDefined(el, q));
957
- draft.initializer = yield q.receive(draft.initializer, el => this.visitLeftPadded(el, q));
958
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
959
- return (0, immer_1.finishDraft)(draft);
987
+ const updates = {
988
+ modifiers: yield q.receiveListDefined(typeDeclaration.modifiers, el => this.visitDefined(el, q)),
989
+ name: yield q.receive(typeDeclaration.name, el => this.visitLeftPadded(el, q)),
990
+ typeParameters: yield q.receive(typeDeclaration.typeParameters, el => this.visitDefined(el, q)),
991
+ initializer: yield q.receive(typeDeclaration.initializer, el => this.visitLeftPadded(el, q)),
992
+ type: yield q.receive(typeDeclaration.type, el => this.visitType(el, q))
993
+ };
994
+ return (0, util_1.updateIfChanged)(typeDeclaration, updates);
960
995
  });
961
996
  }
962
997
  visitTypeOf(typeOf, q) {
963
998
  return __awaiter(this, void 0, void 0, function* () {
964
- const draft = (0, immer_1.createDraft)(typeOf);
965
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
966
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
967
- return (0, immer_1.finishDraft)(draft);
999
+ const updates = {
1000
+ expression: yield q.receive(typeOf.expression, el => this.visitDefined(el, q)),
1001
+ type: yield q.receive(typeOf.type, el => this.visitType(el, q))
1002
+ };
1003
+ return (0, util_1.updateIfChanged)(typeOf, updates);
968
1004
  });
969
1005
  }
970
1006
  visitTypeTreeExpression(typeTreeExpression, q) {
971
1007
  return __awaiter(this, void 0, void 0, function* () {
972
- const draft = (0, immer_1.createDraft)(typeTreeExpression);
973
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
974
- return (0, immer_1.finishDraft)(draft);
1008
+ const updates = {
1009
+ expression: yield q.receive(typeTreeExpression.expression, el => this.visitDefined(el, q))
1010
+ };
1011
+ return (0, util_1.updateIfChanged)(typeTreeExpression, updates);
975
1012
  });
976
1013
  }
977
1014
  visitAs(as_, q) {
978
1015
  return __awaiter(this, void 0, void 0, function* () {
979
- const draft = (0, immer_1.createDraft)(as_);
980
- draft.left = yield q.receive(draft.left, el => this.visitRightPadded(el, q));
981
- draft.right = yield q.receive(draft.right, el => this.visitDefined(el, q));
982
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
983
- return (0, immer_1.finishDraft)(draft);
1016
+ const updates = {
1017
+ left: yield q.receive(as_.left, el => this.visitRightPadded(el, q)),
1018
+ right: yield q.receive(as_.right, el => this.visitDefined(el, q)),
1019
+ type: yield q.receive(as_.type, el => this.visitType(el, q))
1020
+ };
1021
+ return (0, util_1.updateIfChanged)(as_, updates);
984
1022
  });
985
1023
  }
986
1024
  visitAssignmentOperationExtensions(assignmentOperation, q) {
987
1025
  return __awaiter(this, void 0, void 0, function* () {
988
- const draft = (0, immer_1.createDraft)(assignmentOperation);
989
- draft.variable = yield q.receive(draft.variable, el => this.visitDefined(el, q));
990
- draft.operator = yield q.receive(draft.operator, el => this.visitLeftPadded(el, q));
991
- draft.assignment = yield q.receive(draft.assignment, el => this.visitDefined(el, q));
992
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
993
- return (0, immer_1.finishDraft)(draft);
1026
+ const updates = {
1027
+ variable: yield q.receive(assignmentOperation.variable, el => this.visitDefined(el, q)),
1028
+ operator: yield q.receive(assignmentOperation.operator, el => this.visitLeftPadded(el, q)),
1029
+ assignment: yield q.receive(assignmentOperation.assignment, el => this.visitDefined(el, q)),
1030
+ type: yield q.receive(assignmentOperation.type, el => this.visitType(el, q))
1031
+ };
1032
+ return (0, util_1.updateIfChanged)(assignmentOperation, updates);
994
1033
  });
995
1034
  }
996
1035
  visitIndexedAccessType(indexedAccessType, q) {
997
1036
  return __awaiter(this, void 0, void 0, function* () {
998
- const draft = (0, immer_1.createDraft)(indexedAccessType);
999
- draft.objectType = yield q.receive(draft.objectType, el => this.visitDefined(el, q));
1000
- draft.indexType = yield q.receive(draft.indexType, el => this.visitDefined(el, q));
1001
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1002
- return (0, immer_1.finishDraft)(draft);
1037
+ const updates = {
1038
+ objectType: yield q.receive(indexedAccessType.objectType, el => this.visitDefined(el, q)),
1039
+ indexType: yield q.receive(indexedAccessType.indexType, el => this.visitDefined(el, q)),
1040
+ type: yield q.receive(indexedAccessType.type, el => this.visitType(el, q))
1041
+ };
1042
+ return (0, util_1.updateIfChanged)(indexedAccessType, updates);
1003
1043
  });
1004
1044
  }
1005
1045
  visitIndexedAccessTypeIndexType(indexType, q) {
1006
1046
  return __awaiter(this, void 0, void 0, function* () {
1007
- const draft = (0, immer_1.createDraft)(indexType);
1008
- draft.element = yield q.receive(draft.element, el => this.visitRightPadded(el, q));
1009
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1010
- return (0, immer_1.finishDraft)(draft);
1047
+ const updates = {
1048
+ element: yield q.receive(indexType.element, el => this.visitRightPadded(el, q)),
1049
+ type: yield q.receive(indexType.type, el => this.visitType(el, q))
1050
+ };
1051
+ return (0, util_1.updateIfChanged)(indexType, updates);
1011
1052
  });
1012
1053
  }
1013
1054
  visitTypeQuery(typeQuery, q) {
1014
1055
  return __awaiter(this, void 0, void 0, function* () {
1015
- const draft = (0, immer_1.createDraft)(typeQuery);
1016
- draft.typeExpression = yield q.receive(draft.typeExpression, el => this.visitDefined(el, q));
1017
- draft.typeArguments = yield q.receive(draft.typeArguments, el => this.visitContainer(el, q));
1018
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1019
- return (0, immer_1.finishDraft)(draft);
1056
+ const updates = {
1057
+ typeExpression: yield q.receive(typeQuery.typeExpression, el => this.visitDefined(el, q)),
1058
+ typeArguments: yield q.receive(typeQuery.typeArguments, el => this.visitContainer(el, q)),
1059
+ type: yield q.receive(typeQuery.type, el => this.visitType(el, q))
1060
+ };
1061
+ return (0, util_1.updateIfChanged)(typeQuery, updates);
1020
1062
  });
1021
1063
  }
1022
1064
  visitTypeInfo(typeInfo, q) {
1023
1065
  return __awaiter(this, void 0, void 0, function* () {
1024
- const draft = (0, immer_1.createDraft)(typeInfo);
1025
- draft.typeIdentifier = yield q.receive(draft.typeIdentifier, el => this.visitDefined(el, q));
1026
- return (0, immer_1.finishDraft)(draft);
1066
+ const updates = {
1067
+ typeIdentifier: yield q.receive(typeInfo.typeIdentifier, el => this.visitDefined(el, q))
1068
+ };
1069
+ return (0, util_1.updateIfChanged)(typeInfo, updates);
1027
1070
  });
1028
1071
  }
1029
1072
  visitComputedPropertyName(computedPropertyName, q) {
1030
1073
  return __awaiter(this, void 0, void 0, function* () {
1031
- const draft = (0, immer_1.createDraft)(computedPropertyName);
1032
- draft.expression = yield q.receive(draft.expression, el => this.visitRightPadded(el, q));
1033
- return (0, immer_1.finishDraft)(draft);
1074
+ const updates = {
1075
+ expression: yield q.receive(computedPropertyName.expression, el => this.visitRightPadded(el, q))
1076
+ };
1077
+ return (0, util_1.updateIfChanged)(computedPropertyName, updates);
1034
1078
  });
1035
1079
  }
1036
1080
  visitTypeOperator(typeOperator, q) {
1037
1081
  return __awaiter(this, void 0, void 0, function* () {
1038
- const draft = (0, immer_1.createDraft)(typeOperator);
1039
- draft.operator = yield q.receive(draft.operator);
1040
- draft.expression = yield q.receive(draft.expression, el => this.visitLeftPadded(el, q));
1041
- return (0, immer_1.finishDraft)(draft);
1082
+ const updates = {
1083
+ operator: yield q.receive(typeOperator.operator),
1084
+ expression: yield q.receive(typeOperator.expression, el => this.visitLeftPadded(el, q))
1085
+ };
1086
+ return (0, util_1.updateIfChanged)(typeOperator, updates);
1042
1087
  });
1043
1088
  }
1044
1089
  visitTypePredicate(typePredicate, q) {
1045
1090
  return __awaiter(this, void 0, void 0, function* () {
1046
- const draft = (0, immer_1.createDraft)(typePredicate);
1047
- draft.asserts = yield q.receive(draft.asserts, el => this.visitLeftPadded(el, q));
1048
- draft.parameterName = yield q.receive(draft.parameterName, el => this.visitDefined(el, q));
1049
- draft.expression = yield q.receive(draft.expression, el => this.visitLeftPadded(el, q));
1050
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1051
- return (0, immer_1.finishDraft)(draft);
1091
+ const updates = {
1092
+ asserts: yield q.receive(typePredicate.asserts, el => this.visitLeftPadded(el, q)),
1093
+ parameterName: yield q.receive(typePredicate.parameterName, el => this.visitDefined(el, q)),
1094
+ expression: yield q.receive(typePredicate.expression, el => this.visitLeftPadded(el, q)),
1095
+ type: yield q.receive(typePredicate.type, el => this.visitType(el, q))
1096
+ };
1097
+ return (0, util_1.updateIfChanged)(typePredicate, updates);
1052
1098
  });
1053
1099
  }
1054
1100
  visitUnion(union, q) {
1055
1101
  return __awaiter(this, void 0, void 0, function* () {
1056
- const draft = (0, immer_1.createDraft)(union);
1057
- draft.types = yield q.receiveListDefined(draft.types, el => this.visitRightPadded(el, q));
1058
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1059
- return (0, immer_1.finishDraft)(draft);
1102
+ const updates = {
1103
+ types: yield q.receiveListDefined(union.types, el => this.visitRightPadded(el, q)),
1104
+ type: yield q.receive(union.type, el => this.visitType(el, q))
1105
+ };
1106
+ return (0, util_1.updateIfChanged)(union, updates);
1060
1107
  });
1061
1108
  }
1062
1109
  visitIntersection(intersection, q) {
1063
1110
  return __awaiter(this, void 0, void 0, function* () {
1064
- const draft = (0, immer_1.createDraft)(intersection);
1065
- draft.types = yield q.receiveListDefined(draft.types, el => this.visitRightPadded(el, q));
1066
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1067
- return (0, immer_1.finishDraft)(draft);
1111
+ const updates = {
1112
+ types: yield q.receiveListDefined(intersection.types, el => this.visitRightPadded(el, q)),
1113
+ type: yield q.receive(intersection.type, el => this.visitType(el, q))
1114
+ };
1115
+ return (0, util_1.updateIfChanged)(intersection, updates);
1068
1116
  });
1069
1117
  }
1070
1118
  visitVoid(void_, q) {
1071
1119
  return __awaiter(this, void 0, void 0, function* () {
1072
- const draft = (0, immer_1.createDraft)(void_);
1073
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
1074
- return (0, immer_1.finishDraft)(draft);
1120
+ const updates = {
1121
+ expression: yield q.receive(void_.expression, el => this.visitDefined(el, q))
1122
+ };
1123
+ return (0, util_1.updateIfChanged)(void_, updates);
1075
1124
  });
1076
1125
  }
1077
1126
  visitWithStatement(withStatement, q) {
1078
1127
  return __awaiter(this, void 0, void 0, function* () {
1079
- const draft = (0, immer_1.createDraft)(withStatement);
1080
- draft.expression = yield q.receive(draft.expression, el => this.visitDefined(el, q));
1081
- draft.body = yield q.receive(draft.body, el => this.visitRightPadded(el, q));
1082
- return (0, immer_1.finishDraft)(draft);
1128
+ const updates = {
1129
+ expression: yield q.receive(withStatement.expression, el => this.visitDefined(el, q)),
1130
+ body: yield q.receive(withStatement.body, el => this.visitRightPadded(el, q))
1131
+ };
1132
+ return (0, util_1.updateIfChanged)(withStatement, updates);
1083
1133
  });
1084
1134
  }
1085
1135
  visitJsxTag(tag, q) {
1086
1136
  return __awaiter(this, void 0, void 0, function* () {
1087
- const draft = (0, immer_1.createDraft)(tag);
1088
- draft.openName = yield q.receive(draft.openName, el => this.visitLeftPadded(el, q));
1089
- draft.typeArguments = yield q.receive(draft.typeArguments, el => this.visitContainer(el, q));
1090
- draft.afterName = yield q.receive(draft.afterName, space => this.visitSpace(space, q));
1091
- draft.attributes = yield q.receiveListDefined(draft.attributes, attr => this.visitRightPadded(attr, q));
1092
- draft.selfClosing = yield q.receive(draft.selfClosing, space => this.visitSpace(space, q));
1093
- draft.children = yield q.receiveListDefined(draft.children, child => this.visit(child, q));
1094
- draft.closingName = yield q.receive(draft.closingName, el => this.visitLeftPadded(el, q));
1095
- draft.afterClosingName = yield q.receive(draft.afterClosingName, el => this.visitSpace(el, q));
1096
- return (0, immer_1.finishDraft)(draft);
1137
+ if ('selfClosing' in tag) {
1138
+ // Self-closing tag
1139
+ const updates = {
1140
+ openName: yield q.receive(tag.openName, el => this.visitLeftPadded(el, q)),
1141
+ typeArguments: yield q.receive(tag.typeArguments, el => this.visitContainer(el, q)),
1142
+ afterName: yield q.receive(tag.afterName, space => this.visitSpace(space, q)),
1143
+ attributes: yield q.receiveListDefined(tag.attributes, attr => this.visitRightPadded(attr, q)),
1144
+ selfClosing: yield q.receive(tag.selfClosing, space => this.visitSpace(space, q))
1145
+ };
1146
+ return (0, util_1.updateIfChanged)(tag, updates);
1147
+ }
1148
+ else {
1149
+ // Tag with children
1150
+ const updates = {
1151
+ openName: yield q.receive(tag.openName, el => this.visitLeftPadded(el, q)),
1152
+ typeArguments: yield q.receive(tag.typeArguments, el => this.visitContainer(el, q)),
1153
+ afterName: yield q.receive(tag.afterName, space => this.visitSpace(space, q)),
1154
+ attributes: yield q.receiveListDefined(tag.attributes, attr => this.visitRightPadded(attr, q)),
1155
+ children: yield q.receiveListDefined(tag.children, child => this.visit(child, q)),
1156
+ closingName: yield q.receive(tag.closingName, el => this.visitLeftPadded(el, q)),
1157
+ afterClosingName: yield q.receive(tag.afterClosingName, el => this.visitSpace(el, q))
1158
+ };
1159
+ return (0, util_1.updateIfChanged)(tag, updates);
1160
+ }
1097
1161
  });
1098
1162
  }
1099
1163
  visitJsxAttribute(attribute, q) {
1100
1164
  return __awaiter(this, void 0, void 0, function* () {
1101
- const draft = (0, immer_1.createDraft)(attribute);
1102
- draft.key = yield q.receive(draft.key, el => this.visitDefined(el, q));
1103
- draft.value = yield q.receive(draft.value, el => this.visitLeftPadded(el, q));
1104
- return (0, immer_1.finishDraft)(draft);
1165
+ const updates = {
1166
+ key: yield q.receive(attribute.key, el => this.visitDefined(el, q)),
1167
+ value: yield q.receive(attribute.value, el => this.visitLeftPadded(el, q))
1168
+ };
1169
+ return (0, util_1.updateIfChanged)(attribute, updates);
1105
1170
  });
1106
1171
  }
1107
1172
  visitJsxSpreadAttribute(spreadAttribute, q) {
1108
1173
  return __awaiter(this, void 0, void 0, function* () {
1109
- const draft = (0, immer_1.createDraft)(spreadAttribute);
1110
- draft.dots = yield q.receive(draft.dots, space => this.visitSpace(space, q));
1111
- draft.expression = yield q.receive(draft.expression, el => this.visitRightPadded(el, q));
1112
- return (0, immer_1.finishDraft)(draft);
1174
+ const updates = {
1175
+ dots: yield q.receive(spreadAttribute.dots, space => this.visitSpace(space, q)),
1176
+ expression: yield q.receive(spreadAttribute.expression, el => this.visitRightPadded(el, q))
1177
+ };
1178
+ return (0, util_1.updateIfChanged)(spreadAttribute, updates);
1113
1179
  });
1114
1180
  }
1115
1181
  visitJsxEmbeddedExpression(embeddedExpression, q) {
1116
1182
  return __awaiter(this, void 0, void 0, function* () {
1117
- const draft = (0, immer_1.createDraft)(embeddedExpression);
1118
- draft.expression = yield q.receive(draft.expression, el => this.visitRightPadded(el, q));
1119
- return (0, immer_1.finishDraft)(draft);
1183
+ const updates = {
1184
+ expression: yield q.receive(embeddedExpression.expression, el => this.visitRightPadded(el, q))
1185
+ };
1186
+ return (0, util_1.updateIfChanged)(embeddedExpression, updates);
1120
1187
  });
1121
1188
  }
1122
1189
  visitJsxNamespacedName(namespacedName, q) {
1123
1190
  return __awaiter(this, void 0, void 0, function* () {
1124
- const draft = (0, immer_1.createDraft)(namespacedName);
1125
- draft.namespace = yield q.receive(draft.namespace, el => this.visitDefined(el, q));
1126
- draft.name = yield q.receive(draft.name, el => this.visitLeftPadded(el, q));
1127
- return (0, immer_1.finishDraft)(draft);
1191
+ const updates = {
1192
+ namespace: yield q.receive(namespacedName.namespace, el => this.visitDefined(el, q)),
1193
+ name: yield q.receive(namespacedName.name, el => this.visitLeftPadded(el, q))
1194
+ };
1195
+ return (0, util_1.updateIfChanged)(namespacedName, updates);
1128
1196
  });
1129
1197
  }
1130
1198
  visitIndexSignatureDeclaration(indexSignatureDeclaration, q) {
1131
1199
  return __awaiter(this, void 0, void 0, function* () {
1132
- const draft = (0, immer_1.createDraft)(indexSignatureDeclaration);
1133
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
1134
- draft.parameters = yield q.receive(draft.parameters, el => this.visitContainer(el, q));
1135
- draft.typeExpression = yield q.receive(draft.typeExpression, el => this.visitLeftPadded(el, q));
1136
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1137
- return (0, immer_1.finishDraft)(draft);
1200
+ const updates = {
1201
+ modifiers: yield q.receiveListDefined(indexSignatureDeclaration.modifiers, el => this.visitDefined(el, q)),
1202
+ parameters: yield q.receive(indexSignatureDeclaration.parameters, el => this.visitContainer(el, q)),
1203
+ typeExpression: yield q.receive(indexSignatureDeclaration.typeExpression, el => this.visitLeftPadded(el, q)),
1204
+ type: yield q.receive(indexSignatureDeclaration.type, el => this.visitType(el, q))
1205
+ };
1206
+ return (0, util_1.updateIfChanged)(indexSignatureDeclaration, updates);
1138
1207
  });
1139
1208
  }
1140
1209
  visitComputedPropertyMethodDeclaration(computedPropMethod, q) {
1141
1210
  return __awaiter(this, void 0, void 0, function* () {
1142
- const draft = (0, immer_1.createDraft)(computedPropMethod);
1143
- draft.leadingAnnotations = yield q.receiveListDefined(draft.leadingAnnotations, el => this.visitDefined(el, q));
1144
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
1145
- draft.typeParameters = yield q.receive(draft.typeParameters, el => this.visitDefined(el, q));
1146
- draft.returnTypeExpression = yield q.receive(draft.returnTypeExpression, el => this.visitDefined(el, q));
1147
- draft.name = yield q.receive(draft.name, el => this.visitDefined(el, q));
1148
- draft.parameters = yield q.receive(draft.parameters, el => this.visitContainer(el, q));
1149
- draft.body = yield q.receive(draft.body, el => this.visitDefined(el, q));
1150
- draft.methodType = yield q.receive(draft.methodType, el => this.visitType(el, q));
1151
- return (0, immer_1.finishDraft)(draft);
1211
+ const updates = {
1212
+ leadingAnnotations: yield q.receiveListDefined(computedPropMethod.leadingAnnotations, el => this.visitDefined(el, q)),
1213
+ modifiers: yield q.receiveListDefined(computedPropMethod.modifiers, el => this.visitDefined(el, q)),
1214
+ typeParameters: yield q.receive(computedPropMethod.typeParameters, el => this.visitDefined(el, q)),
1215
+ returnTypeExpression: yield q.receive(computedPropMethod.returnTypeExpression, el => this.visitDefined(el, q)),
1216
+ name: yield q.receive(computedPropMethod.name, el => this.visitDefined(el, q)),
1217
+ parameters: yield q.receive(computedPropMethod.parameters, el => this.visitContainer(el, q)),
1218
+ body: yield q.receive(computedPropMethod.body, el => this.visitDefined(el, q)),
1219
+ methodType: yield q.receive(computedPropMethod.methodType, el => this.visitType(el, q))
1220
+ };
1221
+ return (0, util_1.updateIfChanged)(computedPropMethod, updates);
1152
1222
  });
1153
1223
  }
1154
1224
  visitForOfLoop(forOfLoop, q) {
1155
1225
  return __awaiter(this, void 0, void 0, function* () {
1156
- const draft = (0, immer_1.createDraft)(forOfLoop);
1157
- draft.await = yield q.receive(draft.await, space => this.visitSpace(space, q));
1158
- draft.loop = yield q.receive(draft.loop, el => this.visitDefined(el, q));
1159
- return (0, immer_1.finishDraft)(draft);
1226
+ const updates = {
1227
+ await: yield q.receive(forOfLoop.await, space => this.visitSpace(space, q)),
1228
+ loop: yield q.receive(forOfLoop.loop, el => this.visitDefined(el, q))
1229
+ };
1230
+ return (0, util_1.updateIfChanged)(forOfLoop, updates);
1160
1231
  });
1161
1232
  }
1162
1233
  visitForInLoop(forInLoop, q) {
1163
1234
  return __awaiter(this, void 0, void 0, function* () {
1164
- const draft = (0, immer_1.createDraft)(forInLoop);
1165
- draft.control = yield q.receive(draft.control, el => this.visitDefined(el, q));
1166
- draft.body = yield q.receive(draft.body, el => this.visitRightPadded(el, q));
1167
- return (0, immer_1.finishDraft)(draft);
1235
+ const updates = {
1236
+ control: yield q.receive(forInLoop.control, el => this.visitDefined(el, q)),
1237
+ body: yield q.receive(forInLoop.body, el => this.visitRightPadded(el, q))
1238
+ };
1239
+ return (0, util_1.updateIfChanged)(forInLoop, updates);
1168
1240
  });
1169
1241
  }
1170
1242
  visitNamespaceDeclaration(namespaceDeclaration, q) {
1171
1243
  return __awaiter(this, void 0, void 0, function* () {
1172
- const draft = (0, immer_1.createDraft)(namespaceDeclaration);
1173
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
1174
- draft.keywordType = yield q.receive(draft.keywordType, el => this.visitLeftPadded(el, q));
1175
- draft.name = yield q.receive(draft.name, el => this.visitRightPadded(el, q));
1176
- draft.body = yield q.receive(draft.body, el => this.visitDefined(el, q));
1177
- return (0, immer_1.finishDraft)(draft);
1244
+ const updates = {
1245
+ modifiers: yield q.receiveListDefined(namespaceDeclaration.modifiers, el => this.visitDefined(el, q)),
1246
+ keywordType: yield q.receive(namespaceDeclaration.keywordType, el => this.visitLeftPadded(el, q)),
1247
+ name: yield q.receive(namespaceDeclaration.name, el => this.visitRightPadded(el, q)),
1248
+ body: yield q.receive(namespaceDeclaration.body, el => this.visitDefined(el, q))
1249
+ };
1250
+ return (0, util_1.updateIfChanged)(namespaceDeclaration, updates);
1178
1251
  });
1179
1252
  }
1180
1253
  visitTypeLiteral(typeLiteral, q) {
1181
1254
  return __awaiter(this, void 0, void 0, function* () {
1182
- const draft = (0, immer_1.createDraft)(typeLiteral);
1183
- draft.members = yield q.receive(draft.members, el => this.visitDefined(el, q));
1184
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1185
- return (0, immer_1.finishDraft)(draft);
1255
+ const updates = {
1256
+ members: yield q.receive(typeLiteral.members, el => this.visitDefined(el, q)),
1257
+ type: yield q.receive(typeLiteral.type, el => this.visitType(el, q))
1258
+ };
1259
+ return (0, util_1.updateIfChanged)(typeLiteral, updates);
1186
1260
  });
1187
1261
  }
1188
1262
  visitArrayBindingPattern(arrayBindingPattern, q) {
1189
1263
  return __awaiter(this, void 0, void 0, function* () {
1190
- const draft = (0, immer_1.createDraft)(arrayBindingPattern);
1191
- draft.elements = yield q.receive(draft.elements, el => this.visitContainer(el, q));
1192
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1193
- return (0, immer_1.finishDraft)(draft);
1264
+ const updates = {
1265
+ elements: yield q.receive(arrayBindingPattern.elements, el => this.visitContainer(el, q)),
1266
+ type: yield q.receive(arrayBindingPattern.type, el => this.visitType(el, q))
1267
+ };
1268
+ return (0, util_1.updateIfChanged)(arrayBindingPattern, updates);
1194
1269
  });
1195
1270
  }
1196
1271
  visitBindingElement(bindingElement, q) {
1197
1272
  return __awaiter(this, void 0, void 0, function* () {
1198
- const draft = (0, immer_1.createDraft)(bindingElement);
1199
- draft.propertyName = yield q.receive(draft.propertyName, el => this.visitRightPadded(el, q));
1200
- draft.name = yield q.receive(draft.name, el => this.visitDefined(el, q));
1201
- draft.initializer = yield q.receive(draft.initializer, el => this.visitLeftPadded(el, q));
1202
- draft.variableType = yield q.receive(draft.variableType, el => this.visitType(el, q));
1203
- return (0, immer_1.finishDraft)(draft);
1273
+ const updates = {
1274
+ propertyName: yield q.receive(bindingElement.propertyName, el => this.visitRightPadded(el, q)),
1275
+ name: yield q.receive(bindingElement.name, el => this.visitDefined(el, q)),
1276
+ initializer: yield q.receive(bindingElement.initializer, el => this.visitLeftPadded(el, q)),
1277
+ variableType: yield q.receive(bindingElement.variableType, el => this.visitType(el, q))
1278
+ };
1279
+ return (0, util_1.updateIfChanged)(bindingElement, updates);
1204
1280
  });
1205
1281
  }
1206
1282
  visitExportDeclaration(exportDeclaration, q) {
1207
1283
  return __awaiter(this, void 0, void 0, function* () {
1208
- const draft = (0, immer_1.createDraft)(exportDeclaration);
1209
- draft.modifiers = yield q.receiveListDefined(draft.modifiers, el => this.visitDefined(el, q));
1210
- draft.typeOnly = yield q.receive(draft.typeOnly, el => this.visitLeftPadded(el, q));
1211
- draft.exportClause = yield q.receive(draft.exportClause, el => this.visitDefined(el, q));
1212
- draft.moduleSpecifier = yield q.receive(draft.moduleSpecifier, el => this.visitLeftPadded(el, q));
1213
- draft.attributes = yield q.receive(draft.attributes, el => this.visitDefined(el, q));
1214
- return (0, immer_1.finishDraft)(draft);
1284
+ const updates = {
1285
+ modifiers: yield q.receiveListDefined(exportDeclaration.modifiers, el => this.visitDefined(el, q)),
1286
+ typeOnly: yield q.receive(exportDeclaration.typeOnly, el => this.visitLeftPadded(el, q)),
1287
+ exportClause: yield q.receive(exportDeclaration.exportClause, el => this.visitDefined(el, q)),
1288
+ moduleSpecifier: yield q.receive(exportDeclaration.moduleSpecifier, el => this.visitLeftPadded(el, q)),
1289
+ attributes: yield q.receive(exportDeclaration.attributes, el => this.visitDefined(el, q))
1290
+ };
1291
+ return (0, util_1.updateIfChanged)(exportDeclaration, updates);
1215
1292
  });
1216
1293
  }
1217
1294
  visitExportAssignment(exportAssignment, q) {
1218
1295
  return __awaiter(this, void 0, void 0, function* () {
1219
- const draft = (0, immer_1.createDraft)(exportAssignment);
1220
- draft.exportEquals = yield q.receive(draft.exportEquals);
1221
- draft.expression = yield q.receive(draft.expression, el => this.visitLeftPadded(el, q));
1222
- return (0, immer_1.finishDraft)(draft);
1296
+ const updates = {
1297
+ exportEquals: yield q.receive(exportAssignment.exportEquals),
1298
+ expression: yield q.receive(exportAssignment.expression, el => this.visitLeftPadded(el, q))
1299
+ };
1300
+ return (0, util_1.updateIfChanged)(exportAssignment, updates);
1223
1301
  });
1224
1302
  }
1225
1303
  visitNamedExports(namedExports, q) {
1226
1304
  return __awaiter(this, void 0, void 0, function* () {
1227
- const draft = (0, immer_1.createDraft)(namedExports);
1228
- draft.elements = yield q.receive(draft.elements, el => this.visitContainer(el, q));
1229
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1230
- return (0, immer_1.finishDraft)(draft);
1305
+ const updates = {
1306
+ elements: yield q.receive(namedExports.elements, el => this.visitContainer(el, q)),
1307
+ type: yield q.receive(namedExports.type, el => this.visitType(el, q))
1308
+ };
1309
+ return (0, util_1.updateIfChanged)(namedExports, updates);
1231
1310
  });
1232
1311
  }
1233
1312
  visitExportSpecifier(exportSpecifier, q) {
1234
1313
  return __awaiter(this, void 0, void 0, function* () {
1235
- const draft = (0, immer_1.createDraft)(exportSpecifier);
1236
- draft.typeOnly = yield q.receive(draft.typeOnly, el => this.visitLeftPadded(el, q));
1237
- draft.specifier = yield q.receive(draft.specifier, el => this.visitDefined(el, q));
1238
- draft.type = yield q.receive(draft.type, el => this.visitType(el, q));
1239
- return (0, immer_1.finishDraft)(draft);
1314
+ const updates = {
1315
+ typeOnly: yield q.receive(exportSpecifier.typeOnly, el => this.visitLeftPadded(el, q)),
1316
+ specifier: yield q.receive(exportSpecifier.specifier, el => this.visitDefined(el, q)),
1317
+ type: yield q.receive(exportSpecifier.type, el => this.visitType(el, q))
1318
+ };
1319
+ return (0, util_1.updateIfChanged)(exportSpecifier, updates);
1240
1320
  });
1241
1321
  }
1242
1322
  visitRightPadded(right, q) {
1243
1323
  return __awaiter(this, void 0, void 0, function* () {
1244
- return this.javaReceiverDelegate.visitRightPadded(right, q);
1324
+ return this.delegate.visitRightPadded(right, q);
1245
1325
  });
1246
1326
  }
1247
1327
  visitLeftPadded(left, q) {
1248
1328
  return __awaiter(this, void 0, void 0, function* () {
1249
- return this.javaReceiverDelegate.visitLeftPadded(left, q);
1329
+ return this.delegate.visitLeftPadded(left, q);
1250
1330
  });
1251
1331
  }
1252
1332
  visitContainer(container, q) {
1253
1333
  return __awaiter(this, void 0, void 0, function* () {
1254
- return this.javaReceiverDelegate.visitContainer(container, q);
1334
+ return this.delegate.visitContainer(container, q);
1255
1335
  });
1256
1336
  }
1257
1337
  visitSpace(space, q) {
1258
1338
  return __awaiter(this, void 0, void 0, function* () {
1259
- return this.javaReceiverDelegate.visitSpace(space, q);
1339
+ return this.delegate.visitSpace(space, q);
1260
1340
  });
1261
1341
  }
1262
1342
  visitType(javaType, q) {
1263
1343
  return __awaiter(this, void 0, void 0, function* () {
1264
- return this.javaReceiverDelegate.visitType(javaType, q);
1344
+ return this.delegate.visitType(javaType, q);
1265
1345
  });
1266
1346
  }
1267
1347
  }
1268
- class JavaScriptReceiverDelegate extends rpc_2.JavaReceiver {
1348
+ class JavaScriptDelegateReceiver extends rpc_2.JavaReceiver {
1269
1349
  constructor(javascriptReceiver) {
1270
1350
  super();
1271
1351
  this.javascriptReceiver = javascriptReceiver;