@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
@@ -84,10 +84,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
84
84
  return expression;
85
85
  }
86
86
  alias = expression;
87
- return this.produceJavaScript(alias, p, (draft) => __awaiter(this, void 0, void 0, function* () {
88
- draft.propertyName = yield this.visitRightPadded(alias.propertyName, p);
89
- draft.alias = yield this.visitDefined(alias.alias, p);
90
- }));
87
+ const updates = {
88
+ prefix: yield this.visitSpace(alias.prefix, p),
89
+ markers: yield this.visitMarkers(alias.markers, p),
90
+ propertyName: yield this.visitRightPadded(alias.propertyName, p),
91
+ alias: yield this.visitDefined(alias.alias, p)
92
+ };
93
+ return (0, util_1.updateIfChanged)(alias, updates);
91
94
  });
92
95
  }
93
96
  visitArrowFunction(arrowFunction, p) {
@@ -102,22 +105,28 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
102
105
  return statement;
103
106
  }
104
107
  arrowFunction = statement;
105
- return this.produceJavaScript(arrowFunction, p, (draft) => __awaiter(this, void 0, void 0, function* () {
106
- draft.leadingAnnotations = yield (0, util_1.mapAsync)(arrowFunction.leadingAnnotations, item => this.visitDefined(item, p));
107
- draft.modifiers = yield (0, util_1.mapAsync)(arrowFunction.modifiers, item => this.visitDefined(item, p));
108
- draft.typeParameters = arrowFunction.typeParameters && (yield this.visitDefined(arrowFunction.typeParameters, p));
109
- draft.lambda = yield this.visitDefined(arrowFunction.lambda, p);
110
- draft.returnTypeExpression = arrowFunction.returnTypeExpression && (yield this.visitDefined(arrowFunction.returnTypeExpression, p));
111
- }));
108
+ const updates = {
109
+ prefix: yield this.visitSpace(arrowFunction.prefix, p),
110
+ markers: yield this.visitMarkers(arrowFunction.markers, p),
111
+ leadingAnnotations: yield (0, util_1.mapAsync)(arrowFunction.leadingAnnotations, item => this.visitDefined(item, p)),
112
+ modifiers: yield (0, util_1.mapAsync)(arrowFunction.modifiers, item => this.visitDefined(item, p)),
113
+ typeParameters: arrowFunction.typeParameters && (yield this.visitDefined(arrowFunction.typeParameters, p)),
114
+ lambda: yield this.visitDefined(arrowFunction.lambda, p),
115
+ returnTypeExpression: arrowFunction.returnTypeExpression && (yield this.visitDefined(arrowFunction.returnTypeExpression, p))
116
+ };
117
+ return (0, util_1.updateIfChanged)(arrowFunction, updates);
112
118
  });
113
119
  }
114
120
  visitAs(as_, p) {
115
121
  return __awaiter(this, void 0, void 0, function* () {
116
- return this.produceJavaScript(as_, p, (draft) => __awaiter(this, void 0, void 0, function* () {
117
- draft.left = yield this.visitRightPadded(as_.left, p);
118
- draft.right = yield this.visitDefined(as_.right, p);
119
- draft.type = as_.type && (yield this.visitType(as_.type, p));
120
- }));
122
+ const updates = {
123
+ prefix: yield this.visitSpace(as_.prefix, p),
124
+ markers: yield this.visitMarkers(as_.markers, p),
125
+ left: yield this.visitRightPadded(as_.left, p),
126
+ right: yield this.visitDefined(as_.right, p),
127
+ type: as_.type && (yield this.visitType(as_.type, p))
128
+ };
129
+ return (0, util_1.updateIfChanged)(as_, updates);
121
130
  });
122
131
  }
123
132
  visitAwait(await_, p) {
@@ -127,63 +136,84 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
127
136
  return expression;
128
137
  }
129
138
  await_ = expression;
130
- return this.produceJavaScript(await_, p, (draft) => __awaiter(this, void 0, void 0, function* () {
131
- draft.expression = yield this.visitDefined(await_.expression, p);
132
- draft.type = await_.type && (yield this.visitType(await_.type, p));
133
- }));
139
+ const updates = {
140
+ prefix: yield this.visitSpace(await_.prefix, p),
141
+ markers: yield this.visitMarkers(await_.markers, p),
142
+ expression: yield this.visitDefined(await_.expression, p),
143
+ type: await_.type && (yield this.visitType(await_.type, p))
144
+ };
145
+ return (0, util_1.updateIfChanged)(await_, updates);
134
146
  });
135
147
  }
136
148
  visitJsxTag(element, p) {
137
149
  return __awaiter(this, void 0, void 0, function* () {
138
- return this.produceJavaScript(element, p, (draft) => __awaiter(this, void 0, void 0, function* () {
139
- draft.openName = yield this.visitLeftPadded(element.openName, p);
140
- draft.typeArguments = element.typeArguments && (yield this.visitContainer(element.typeArguments, p));
141
- draft.afterName = yield this.visitSpace(element.afterName, p);
142
- draft.attributes = yield (0, util_1.mapAsync)(element.attributes, attr => this.visitRightPadded(attr, p));
143
- draft.selfClosing = element.selfClosing && (yield this.visitSpace(element.selfClosing, p));
144
- draft.children = element.children && (yield (0, util_1.mapAsync)(element.children, child => this.visit(child, p)));
145
- draft.closingName = element.closingName && (yield this.visitLeftPadded(element.closingName, p));
146
- draft.afterClosingName = element.afterClosingName && (yield this.visitSpace(element.afterClosingName, p));
147
- }));
150
+ const updates = {
151
+ prefix: yield this.visitSpace(element.prefix, p),
152
+ markers: yield this.visitMarkers(element.markers, p),
153
+ openName: yield this.visitLeftPadded(element.openName, p),
154
+ typeArguments: element.typeArguments && (yield this.visitContainer(element.typeArguments, p)),
155
+ afterName: yield this.visitSpace(element.afterName, p),
156
+ attributes: yield (0, util_1.mapAsync)(element.attributes, attr => this.visitRightPadded(attr, p)),
157
+ selfClosing: element.selfClosing && (yield this.visitSpace(element.selfClosing, p)),
158
+ children: element.children && (yield (0, util_1.mapAsync)(element.children, child => this.visit(child, p))),
159
+ closingName: element.closingName && (yield this.visitLeftPadded(element.closingName, p)),
160
+ afterClosingName: element.afterClosingName && (yield this.visitSpace(element.afterClosingName, p))
161
+ };
162
+ return (0, util_1.updateIfChanged)(element, updates);
148
163
  });
149
164
  }
150
165
  visitJsxAttribute(attribute, p) {
151
166
  return __awaiter(this, void 0, void 0, function* () {
152
- return this.produceJavaScript(attribute, p, (draft) => __awaiter(this, void 0, void 0, function* () {
153
- draft.key = yield this.visitDefined(attribute.key, p);
154
- draft.value = attribute.value && (yield this.visitLeftPadded(attribute.value, p));
155
- }));
167
+ const updates = {
168
+ prefix: yield this.visitSpace(attribute.prefix, p),
169
+ markers: yield this.visitMarkers(attribute.markers, p),
170
+ key: yield this.visitDefined(attribute.key, p),
171
+ value: attribute.value && (yield this.visitLeftPadded(attribute.value, p))
172
+ };
173
+ return (0, util_1.updateIfChanged)(attribute, updates);
156
174
  });
157
175
  }
158
176
  visitJsxSpreadAttribute(spread, p) {
159
177
  return __awaiter(this, void 0, void 0, function* () {
160
- return this.produceJavaScript(spread, p, (draft) => __awaiter(this, void 0, void 0, function* () {
161
- draft.dots = yield this.visitSpace(spread.dots, p);
162
- draft.expression = yield this.visitRightPadded(spread.expression, p);
163
- }));
178
+ const updates = {
179
+ prefix: yield this.visitSpace(spread.prefix, p),
180
+ markers: yield this.visitMarkers(spread.markers, p),
181
+ dots: yield this.visitSpace(spread.dots, p),
182
+ expression: yield this.visitRightPadded(spread.expression, p)
183
+ };
184
+ return (0, util_1.updateIfChanged)(spread, updates);
164
185
  });
165
186
  }
166
187
  visitJsxEmbeddedExpression(expr, p) {
167
188
  return __awaiter(this, void 0, void 0, function* () {
168
- return this.produceJavaScript(expr, p, (draft) => __awaiter(this, void 0, void 0, function* () {
169
- draft.expression = yield this.visitRightPadded(expr.expression, p);
170
- }));
189
+ const updates = {
190
+ prefix: yield this.visitSpace(expr.prefix, p),
191
+ markers: yield this.visitMarkers(expr.markers, p),
192
+ expression: yield this.visitRightPadded(expr.expression, p)
193
+ };
194
+ return (0, util_1.updateIfChanged)(expr, updates);
171
195
  });
172
196
  }
173
197
  visitJsxNamespacedName(ns, p) {
174
198
  return __awaiter(this, void 0, void 0, function* () {
175
- return this.produceJavaScript(ns, p, (draft) => __awaiter(this, void 0, void 0, function* () {
176
- draft.namespace = yield this.visitDefined(ns.namespace, p);
177
- draft.name = yield this.visitLeftPadded(ns.name, p);
178
- }));
199
+ const updates = {
200
+ prefix: yield this.visitSpace(ns.prefix, p),
201
+ markers: yield this.visitMarkers(ns.markers, p),
202
+ namespace: yield this.visitDefined(ns.namespace, p),
203
+ name: yield this.visitLeftPadded(ns.name, p)
204
+ };
205
+ return (0, util_1.updateIfChanged)(ns, updates);
179
206
  });
180
207
  }
181
208
  visitJsCompilationUnit(compilationUnit, p) {
182
209
  return __awaiter(this, void 0, void 0, function* () {
183
- return this.produceJavaScript(compilationUnit, p, (draft) => __awaiter(this, void 0, void 0, function* () {
184
- draft.statements = yield (0, util_1.mapAsync)(compilationUnit.statements, stmt => this.visitRightPadded(stmt, p));
185
- draft.eof = yield this.visitSpace(compilationUnit.eof, p);
186
- }));
210
+ const updates = {
211
+ prefix: yield this.visitSpace(compilationUnit.prefix, p),
212
+ markers: yield this.visitMarkers(compilationUnit.markers, p),
213
+ statements: yield (0, util_1.mapAsync)(compilationUnit.statements, stmt => this.visitRightPadded(stmt, p)),
214
+ eof: yield this.visitSpace(compilationUnit.eof, p)
215
+ };
216
+ return (0, util_1.updateIfChanged)(compilationUnit, updates);
187
217
  });
188
218
  }
189
219
  visitConditionalType(conditionalType, p) {
@@ -193,11 +223,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
193
223
  return expression;
194
224
  }
195
225
  conditionalType = expression;
196
- return this.produceJavaScript(conditionalType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
197
- draft.checkType = yield this.visitDefined(conditionalType.checkType, p);
198
- draft.condition = yield this.visitLeftPadded(conditionalType.condition, p);
199
- draft.type = conditionalType.type && (yield this.visitType(conditionalType.type, p));
200
- }));
226
+ const updates = {
227
+ prefix: yield this.visitSpace(conditionalType.prefix, p),
228
+ markers: yield this.visitMarkers(conditionalType.markers, p),
229
+ checkType: yield this.visitDefined(conditionalType.checkType, p),
230
+ condition: yield this.visitLeftPadded(conditionalType.condition, p),
231
+ type: conditionalType.type && (yield this.visitType(conditionalType.type, p))
232
+ };
233
+ return (0, util_1.updateIfChanged)(conditionalType, updates);
201
234
  });
202
235
  }
203
236
  visitDelete(delete_, p) {
@@ -212,9 +245,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
212
245
  return statement;
213
246
  }
214
247
  delete_ = statement;
215
- return this.produceJavaScript(delete_, p, (draft) => __awaiter(this, void 0, void 0, function* () {
216
- draft.expression = yield this.visitDefined(delete_.expression, p);
217
- }));
248
+ const updates = {
249
+ prefix: yield this.visitSpace(delete_.prefix, p),
250
+ markers: yield this.visitMarkers(delete_.markers, p),
251
+ expression: yield this.visitDefined(delete_.expression, p)
252
+ };
253
+ return (0, util_1.updateIfChanged)(delete_, updates);
218
254
  });
219
255
  }
220
256
  visitExpressionStatement(expressionStatement, p) {
@@ -229,9 +265,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
229
265
  return statement;
230
266
  }
231
267
  expressionStatement = statement;
232
- return this.produceJavaScript(expressionStatement, p, (draft) => __awaiter(this, void 0, void 0, function* () {
233
- draft.expression = yield this.visitDefined(expressionStatement.expression, p);
234
- }));
268
+ const updates = {
269
+ prefix: yield this.visitSpace(expressionStatement.prefix, p),
270
+ markers: yield this.visitMarkers(expressionStatement.markers, p),
271
+ expression: yield this.visitDefined(expressionStatement.expression, p)
272
+ };
273
+ return (0, util_1.updateIfChanged)(expressionStatement, updates);
235
274
  });
236
275
  }
237
276
  visitExpressionWithTypeArguments(expressionWithTypeArguments, p) {
@@ -241,11 +280,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
241
280
  return expression;
242
281
  }
243
282
  expressionWithTypeArguments = expression;
244
- return this.produceJavaScript(expressionWithTypeArguments, p, (draft) => __awaiter(this, void 0, void 0, function* () {
245
- draft.clazz = yield this.visitDefined(expressionWithTypeArguments.clazz, p);
246
- draft.typeArguments = expressionWithTypeArguments.typeArguments && (yield this.visitContainer(expressionWithTypeArguments.typeArguments, p));
247
- draft.type = expressionWithTypeArguments.type && (yield this.visitType(expressionWithTypeArguments.type, p));
248
- }));
283
+ const updates = {
284
+ prefix: yield this.visitSpace(expressionWithTypeArguments.prefix, p),
285
+ markers: yield this.visitMarkers(expressionWithTypeArguments.markers, p),
286
+ clazz: yield this.visitDefined(expressionWithTypeArguments.clazz, p),
287
+ typeArguments: expressionWithTypeArguments.typeArguments && (yield this.visitContainer(expressionWithTypeArguments.typeArguments, p)),
288
+ type: expressionWithTypeArguments.type && (yield this.visitType(expressionWithTypeArguments.type, p))
289
+ };
290
+ return (0, util_1.updateIfChanged)(expressionWithTypeArguments, updates);
249
291
  });
250
292
  }
251
293
  visitFunctionCall(functionCall, p) {
@@ -275,12 +317,15 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
275
317
  return expression;
276
318
  }
277
319
  functionType = expression;
278
- return this.produceJavaScript(functionType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
279
- draft.constructorType = yield this.visitLeftPadded(functionType.constructorType, p);
280
- draft.typeParameters = functionType.typeParameters && (yield this.visitDefined(functionType.typeParameters, p));
281
- draft.parameters = yield this.visitContainer(functionType.parameters, p);
282
- draft.returnType = yield this.visitLeftPadded(functionType.returnType, p);
283
- }));
320
+ const updates = {
321
+ prefix: yield this.visitSpace(functionType.prefix, p),
322
+ markers: yield this.visitMarkers(functionType.markers, p),
323
+ constructorType: yield this.visitLeftPadded(functionType.constructorType, p),
324
+ typeParameters: functionType.typeParameters && (yield this.visitDefined(functionType.typeParameters, p)),
325
+ parameters: yield this.visitContainer(functionType.parameters, p),
326
+ returnType: yield this.visitLeftPadded(functionType.returnType, p)
327
+ };
328
+ return (0, util_1.updateIfChanged)(functionType, updates);
284
329
  });
285
330
  }
286
331
  visitInferType(inferType, p) {
@@ -290,10 +335,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
290
335
  return expression;
291
336
  }
292
337
  inferType = expression;
293
- return this.produceJavaScript(inferType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
294
- draft.typeParameter = yield this.visitLeftPadded(inferType.typeParameter, p);
295
- draft.type = inferType.type && (yield this.visitType(inferType.type, p));
296
- }));
338
+ const updates = {
339
+ prefix: yield this.visitSpace(inferType.prefix, p),
340
+ markers: yield this.visitMarkers(inferType.markers, p),
341
+ typeParameter: yield this.visitLeftPadded(inferType.typeParameter, p),
342
+ type: inferType.type && (yield this.visitType(inferType.type, p))
343
+ };
344
+ return (0, util_1.updateIfChanged)(inferType, updates);
297
345
  });
298
346
  }
299
347
  visitImportType(importType, p) {
@@ -303,13 +351,16 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
303
351
  return expression;
304
352
  }
305
353
  importType = expression;
306
- return this.produceJavaScript(importType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
307
- draft.hasTypeof = yield this.visitRightPadded(importType.hasTypeof, p);
308
- draft.argumentAndAttributes = yield this.visitContainer(importType.argumentAndAttributes, p);
309
- draft.qualifier = importType.qualifier && (yield this.visitLeftPadded(importType.qualifier, p));
310
- draft.typeArguments = importType.typeArguments && (yield this.visitContainer(importType.typeArguments, p));
311
- draft.type = importType.type && (yield this.visitType(importType.type, p));
312
- }));
354
+ const updates = {
355
+ prefix: yield this.visitSpace(importType.prefix, p),
356
+ markers: yield this.visitMarkers(importType.markers, p),
357
+ hasTypeof: yield this.visitRightPadded(importType.hasTypeof, p),
358
+ argumentAndAttributes: yield this.visitContainer(importType.argumentAndAttributes, p),
359
+ qualifier: importType.qualifier && (yield this.visitLeftPadded(importType.qualifier, p)),
360
+ typeArguments: importType.typeArguments && (yield this.visitContainer(importType.typeArguments, p)),
361
+ type: importType.type && (yield this.visitType(importType.type, p))
362
+ };
363
+ return (0, util_1.updateIfChanged)(importType, updates);
313
364
  });
314
365
  }
315
366
  visitImportDeclaration(jsImport, p) {
@@ -319,21 +370,27 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
319
370
  return statement;
320
371
  }
321
372
  jsImport = statement;
322
- return this.produceJavaScript(jsImport, p, (draft) => __awaiter(this, void 0, void 0, function* () {
323
- draft.modifiers = yield (0, util_1.mapAsync)(jsImport.modifiers, item => this.visitDefined(item, p));
324
- draft.importClause = jsImport.importClause && (yield this.visitDefined(jsImport.importClause, p));
325
- draft.moduleSpecifier = jsImport.moduleSpecifier && (yield this.visitLeftPadded(jsImport.moduleSpecifier, p));
326
- draft.attributes = jsImport.attributes && (yield this.visitDefined(jsImport.attributes, p));
327
- draft.initializer = jsImport.initializer && (yield this.visitLeftPadded(jsImport.initializer, p));
328
- }));
373
+ const updates = {
374
+ prefix: yield this.visitSpace(jsImport.prefix, p),
375
+ markers: yield this.visitMarkers(jsImport.markers, p),
376
+ modifiers: yield (0, util_1.mapAsync)(jsImport.modifiers, item => this.visitDefined(item, p)),
377
+ importClause: jsImport.importClause && (yield this.visitDefined(jsImport.importClause, p)),
378
+ moduleSpecifier: jsImport.moduleSpecifier && (yield this.visitLeftPadded(jsImport.moduleSpecifier, p)),
379
+ attributes: jsImport.attributes && (yield this.visitDefined(jsImport.attributes, p)),
380
+ initializer: jsImport.initializer && (yield this.visitLeftPadded(jsImport.initializer, p))
381
+ };
382
+ return (0, util_1.updateIfChanged)(jsImport, updates);
329
383
  });
330
384
  }
331
385
  visitImportClause(importClause, p) {
332
386
  return __awaiter(this, void 0, void 0, function* () {
333
- return this.produceJavaScript(importClause, p, (draft) => __awaiter(this, void 0, void 0, function* () {
334
- draft.name = importClause.name && (yield this.visitRightPadded(importClause.name, p));
335
- draft.namedBindings = importClause.namedBindings && (yield this.visitDefined(importClause.namedBindings, p));
336
- }));
387
+ const updates = {
388
+ prefix: yield this.visitSpace(importClause.prefix, p),
389
+ markers: yield this.visitMarkers(importClause.markers, p),
390
+ name: importClause.name && (yield this.visitRightPadded(importClause.name, p)),
391
+ namedBindings: importClause.namedBindings && (yield this.visitDefined(importClause.namedBindings, p))
392
+ };
393
+ return (0, util_1.updateIfChanged)(importClause, updates);
337
394
  });
338
395
  }
339
396
  visitNamedImports(namedImports, p) {
@@ -343,10 +400,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
343
400
  return expression;
344
401
  }
345
402
  namedImports = expression;
346
- return this.produceJavaScript(namedImports, p, (draft) => __awaiter(this, void 0, void 0, function* () {
347
- draft.elements = yield this.visitContainer(namedImports.elements, p);
348
- draft.type = namedImports.type && (yield this.visitType(namedImports.type, p));
349
- }));
403
+ const updates = {
404
+ prefix: yield this.visitSpace(namedImports.prefix, p),
405
+ markers: yield this.visitMarkers(namedImports.markers, p),
406
+ elements: yield this.visitContainer(namedImports.elements, p),
407
+ type: namedImports.type && (yield this.visitType(namedImports.type, p))
408
+ };
409
+ return (0, util_1.updateIfChanged)(namedImports, updates);
350
410
  });
351
411
  }
352
412
  visitImportSpecifier(importSpecifier, p) {
@@ -356,27 +416,36 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
356
416
  return expression;
357
417
  }
358
418
  importSpecifier = expression;
359
- return this.produceJavaScript(importSpecifier, p, (draft) => __awaiter(this, void 0, void 0, function* () {
360
- draft.importType = yield this.visitLeftPadded(importSpecifier.importType, p);
361
- draft.specifier = yield this.visitDefined(importSpecifier.specifier, p);
362
- draft.type = importSpecifier.type && (yield this.visitType(importSpecifier.type, p));
363
- }));
419
+ const updates = {
420
+ prefix: yield this.visitSpace(importSpecifier.prefix, p),
421
+ markers: yield this.visitMarkers(importSpecifier.markers, p),
422
+ importType: yield this.visitLeftPadded(importSpecifier.importType, p),
423
+ specifier: yield this.visitDefined(importSpecifier.specifier, p),
424
+ type: importSpecifier.type && (yield this.visitType(importSpecifier.type, p))
425
+ };
426
+ return (0, util_1.updateIfChanged)(importSpecifier, updates);
364
427
  });
365
428
  }
366
429
  visitImportAttributes(importAttributes, p) {
367
430
  return __awaiter(this, void 0, void 0, function* () {
368
- return this.produceJavaScript(importAttributes, p, (draft) => __awaiter(this, void 0, void 0, function* () {
369
- draft.elements = yield this.visitContainer(importAttributes.elements, p);
370
- }));
431
+ const updates = {
432
+ prefix: yield this.visitSpace(importAttributes.prefix, p),
433
+ markers: yield this.visitMarkers(importAttributes.markers, p),
434
+ elements: yield this.visitContainer(importAttributes.elements, p)
435
+ };
436
+ return (0, util_1.updateIfChanged)(importAttributes, updates);
371
437
  });
372
438
  }
373
439
  visitImportTypeAttributes(importTypeAttributes, p) {
374
440
  return __awaiter(this, void 0, void 0, function* () {
375
- return this.produceJavaScript(importTypeAttributes, p, (draft) => __awaiter(this, void 0, void 0, function* () {
376
- draft.token = yield this.visitRightPadded(importTypeAttributes.token, p);
377
- draft.elements = yield this.visitContainer(importTypeAttributes.elements, p);
378
- draft.end = yield this.visitSpace(importTypeAttributes.end, p);
379
- }));
441
+ const updates = {
442
+ prefix: yield this.visitSpace(importTypeAttributes.prefix, p),
443
+ markers: yield this.visitMarkers(importTypeAttributes.markers, p),
444
+ token: yield this.visitRightPadded(importTypeAttributes.token, p),
445
+ elements: yield this.visitContainer(importTypeAttributes.elements, p),
446
+ end: yield this.visitSpace(importTypeAttributes.end, p)
447
+ };
448
+ return (0, util_1.updateIfChanged)(importTypeAttributes, updates);
380
449
  });
381
450
  }
382
451
  visitImportAttribute(importAttribute, p) {
@@ -386,20 +455,26 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
386
455
  return statement;
387
456
  }
388
457
  importAttribute = statement;
389
- return this.produceJavaScript(importAttribute, p, (draft) => __awaiter(this, void 0, void 0, function* () {
390
- draft.name = yield this.visitDefined(importAttribute.name, p);
391
- draft.value = yield this.visitLeftPadded(importAttribute.value, p);
392
- }));
458
+ const updates = {
459
+ prefix: yield this.visitSpace(importAttribute.prefix, p),
460
+ markers: yield this.visitMarkers(importAttribute.markers, p),
461
+ name: yield this.visitDefined(importAttribute.name, p),
462
+ value: yield this.visitLeftPadded(importAttribute.value, p)
463
+ };
464
+ return (0, util_1.updateIfChanged)(importAttribute, updates);
393
465
  });
394
466
  }
395
467
  visitBinaryExtensions(jsBinary, p) {
396
468
  return __awaiter(this, void 0, void 0, function* () {
397
- return this.produceJavaScript(jsBinary, p, (draft) => __awaiter(this, void 0, void 0, function* () {
398
- draft.left = yield this.visitDefined(jsBinary.left, p);
399
- draft.operator = yield this.visitLeftPadded(jsBinary.operator, p);
400
- draft.right = yield this.visitDefined(jsBinary.right, p);
401
- draft.type = jsBinary.type && (yield this.visitType(jsBinary.type, p));
402
- }));
469
+ const updates = {
470
+ prefix: yield this.visitSpace(jsBinary.prefix, p),
471
+ markers: yield this.visitMarkers(jsBinary.markers, p),
472
+ left: yield this.visitDefined(jsBinary.left, p),
473
+ operator: yield this.visitLeftPadded(jsBinary.operator, p),
474
+ right: yield this.visitDefined(jsBinary.right, p),
475
+ type: jsBinary.type && (yield this.visitType(jsBinary.type, p))
476
+ };
477
+ return (0, util_1.updateIfChanged)(jsBinary, updates);
403
478
  });
404
479
  }
405
480
  visitLiteralType(literalType, p) {
@@ -409,10 +484,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
409
484
  return expression;
410
485
  }
411
486
  literalType = expression;
412
- return this.produceJavaScript(literalType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
413
- draft.literal = yield this.visitDefined(literalType.literal, p);
414
- draft.type = (yield this.visitType(literalType.type, p));
415
- }));
487
+ const updates = {
488
+ prefix: yield this.visitSpace(literalType.prefix, p),
489
+ markers: yield this.visitMarkers(literalType.markers, p),
490
+ literal: yield this.visitDefined(literalType.literal, p),
491
+ type: (yield this.visitType(literalType.type, p))
492
+ };
493
+ return (0, util_1.updateIfChanged)(literalType, updates);
416
494
  });
417
495
  }
418
496
  visitMappedType(mappedType, p) {
@@ -422,31 +500,40 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
422
500
  return expression;
423
501
  }
424
502
  mappedType = expression;
425
- return this.produceJavaScript(mappedType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
426
- draft.prefixToken = mappedType.prefixToken && (yield this.visitLeftPadded(mappedType.prefixToken, p));
427
- draft.hasReadonly = yield this.visitLeftPadded(mappedType.hasReadonly, p);
428
- draft.keysRemapping = yield this.visitDefined(mappedType.keysRemapping, p);
429
- draft.suffixToken = mappedType.suffixToken && (yield this.visitLeftPadded(mappedType.suffixToken, p));
430
- draft.hasQuestionToken = yield this.visitLeftPadded(mappedType.hasQuestionToken, p);
431
- draft.valueType = yield this.visitContainer(mappedType.valueType, p);
432
- draft.type = mappedType.type && (yield this.visitType(mappedType.type, p));
433
- }));
503
+ const updates = {
504
+ prefix: yield this.visitSpace(mappedType.prefix, p),
505
+ markers: yield this.visitMarkers(mappedType.markers, p),
506
+ prefixToken: mappedType.prefixToken && (yield this.visitLeftPadded(mappedType.prefixToken, p)),
507
+ hasReadonly: yield this.visitLeftPadded(mappedType.hasReadonly, p),
508
+ keysRemapping: yield this.visitDefined(mappedType.keysRemapping, p),
509
+ suffixToken: mappedType.suffixToken && (yield this.visitLeftPadded(mappedType.suffixToken, p)),
510
+ hasQuestionToken: yield this.visitLeftPadded(mappedType.hasQuestionToken, p),
511
+ valueType: yield this.visitContainer(mappedType.valueType, p),
512
+ type: mappedType.type && (yield this.visitType(mappedType.type, p))
513
+ };
514
+ return (0, util_1.updateIfChanged)(mappedType, updates);
434
515
  });
435
516
  }
436
517
  visitMappedTypeKeysRemapping(keysRemapping, p) {
437
518
  return __awaiter(this, void 0, void 0, function* () {
438
- return this.produceJavaScript(keysRemapping, p, (draft) => __awaiter(this, void 0, void 0, function* () {
439
- draft.typeParameter = yield this.visitRightPadded(keysRemapping.typeParameter, p);
440
- draft.nameType = keysRemapping.nameType && (yield this.visitRightPadded(keysRemapping.nameType, p));
441
- }));
519
+ const updates = {
520
+ prefix: yield this.visitSpace(keysRemapping.prefix, p),
521
+ markers: yield this.visitMarkers(keysRemapping.markers, p),
522
+ typeParameter: yield this.visitRightPadded(keysRemapping.typeParameter, p),
523
+ nameType: keysRemapping.nameType && (yield this.visitRightPadded(keysRemapping.nameType, p))
524
+ };
525
+ return (0, util_1.updateIfChanged)(keysRemapping, updates);
442
526
  });
443
527
  }
444
528
  visitMappedTypeParameter(mappedTypeParameter, p) {
445
529
  return __awaiter(this, void 0, void 0, function* () {
446
- return this.produceJavaScript(mappedTypeParameter, p, (draft) => __awaiter(this, void 0, void 0, function* () {
447
- draft.name = yield this.visitDefined(mappedTypeParameter.name, p);
448
- draft.iterateType = yield this.visitLeftPadded(mappedTypeParameter.iterateType, p);
449
- }));
530
+ const updates = {
531
+ prefix: yield this.visitSpace(mappedTypeParameter.prefix, p),
532
+ markers: yield this.visitMarkers(mappedTypeParameter.markers, p),
533
+ name: yield this.visitDefined(mappedTypeParameter.name, p),
534
+ iterateType: yield this.visitLeftPadded(mappedTypeParameter.iterateType, p)
535
+ };
536
+ return (0, util_1.updateIfChanged)(mappedTypeParameter, updates);
450
537
  });
451
538
  }
452
539
  visitObjectBindingPattern(objectBindingPattern, p) {
@@ -456,13 +543,16 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
456
543
  return expression;
457
544
  }
458
545
  objectBindingPattern = expression;
459
- return this.produceJavaScript(objectBindingPattern, p, (draft) => __awaiter(this, void 0, void 0, function* () {
460
- draft.leadingAnnotations = yield (0, util_1.mapAsync)(objectBindingPattern.leadingAnnotations, item => this.visitDefined(item, p));
461
- draft.modifiers = yield (0, util_1.mapAsync)(objectBindingPattern.modifiers, item => this.visitDefined(item, p));
462
- draft.typeExpression = objectBindingPattern.typeExpression && (yield this.visitDefined(objectBindingPattern.typeExpression, p));
463
- draft.bindings = yield this.visitContainer(objectBindingPattern.bindings, p);
464
- draft.initializer = objectBindingPattern.initializer && (yield this.visitLeftPadded(objectBindingPattern.initializer, p));
465
- }));
546
+ const updates = {
547
+ prefix: yield this.visitSpace(objectBindingPattern.prefix, p),
548
+ markers: yield this.visitMarkers(objectBindingPattern.markers, p),
549
+ leadingAnnotations: yield (0, util_1.mapAsync)(objectBindingPattern.leadingAnnotations, item => this.visitDefined(item, p)),
550
+ modifiers: yield (0, util_1.mapAsync)(objectBindingPattern.modifiers, item => this.visitDefined(item, p)),
551
+ typeExpression: objectBindingPattern.typeExpression && (yield this.visitDefined(objectBindingPattern.typeExpression, p)),
552
+ bindings: yield this.visitContainer(objectBindingPattern.bindings, p),
553
+ initializer: objectBindingPattern.initializer && (yield this.visitLeftPadded(objectBindingPattern.initializer, p))
554
+ };
555
+ return (0, util_1.updateIfChanged)(objectBindingPattern, updates);
466
556
  });
467
557
  }
468
558
  visitPropertyAssignment(propertyAssignment, p) {
@@ -472,10 +562,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
472
562
  return statement;
473
563
  }
474
564
  propertyAssignment = statement;
475
- return this.produceJavaScript(propertyAssignment, p, (draft) => __awaiter(this, void 0, void 0, function* () {
476
- draft.name = yield this.visitRightPadded(propertyAssignment.name, p);
477
- draft.initializer = propertyAssignment.initializer && (yield this.visitDefined(propertyAssignment.initializer, p));
478
- }));
565
+ const updates = {
566
+ prefix: yield this.visitSpace(propertyAssignment.prefix, p),
567
+ markers: yield this.visitMarkers(propertyAssignment.markers, p),
568
+ name: yield this.visitRightPadded(propertyAssignment.name, p),
569
+ initializer: propertyAssignment.initializer && (yield this.visitDefined(propertyAssignment.initializer, p))
570
+ };
571
+ return (0, util_1.updateIfChanged)(propertyAssignment, updates);
479
572
  });
480
573
  }
481
574
  visitSatisfiesExpression(satisfiesExpression, p) {
@@ -485,11 +578,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
485
578
  return expression;
486
579
  }
487
580
  satisfiesExpression = expression;
488
- return this.produceJavaScript(satisfiesExpression, p, (draft) => __awaiter(this, void 0, void 0, function* () {
489
- draft.expression = yield this.visitDefined(satisfiesExpression.expression, p);
490
- draft.satisfiesType = yield this.visitLeftPadded(satisfiesExpression.satisfiesType, p);
491
- draft.type = satisfiesExpression.type && (yield this.visitType(satisfiesExpression.type, p));
492
- }));
581
+ const updates = {
582
+ prefix: yield this.visitSpace(satisfiesExpression.prefix, p),
583
+ markers: yield this.visitMarkers(satisfiesExpression.markers, p),
584
+ expression: yield this.visitDefined(satisfiesExpression.expression, p),
585
+ satisfiesType: yield this.visitLeftPadded(satisfiesExpression.satisfiesType, p),
586
+ type: satisfiesExpression.type && (yield this.visitType(satisfiesExpression.type, p))
587
+ };
588
+ return (0, util_1.updateIfChanged)(satisfiesExpression, updates);
493
589
  });
494
590
  }
495
591
  visitScopedVariableDeclarations(scopedVariableDeclarations, p) {
@@ -499,10 +595,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
499
595
  return statement;
500
596
  }
501
597
  scopedVariableDeclarations = statement;
502
- return this.produceJavaScript(scopedVariableDeclarations, p, (draft) => __awaiter(this, void 0, void 0, function* () {
503
- draft.modifiers = yield (0, util_1.mapAsync)(scopedVariableDeclarations.modifiers, item => this.visitDefined(item, p));
504
- draft.variables = yield (0, util_1.mapAsync)(scopedVariableDeclarations.variables, item => this.visitRightPadded(item, p));
505
- }));
598
+ const updates = {
599
+ prefix: yield this.visitSpace(scopedVariableDeclarations.prefix, p),
600
+ markers: yield this.visitMarkers(scopedVariableDeclarations.markers, p),
601
+ modifiers: yield (0, util_1.mapAsync)(scopedVariableDeclarations.modifiers, item => this.visitDefined(item, p)),
602
+ variables: yield (0, util_1.mapAsync)(scopedVariableDeclarations.variables, item => this.visitRightPadded(item, p))
603
+ };
604
+ return (0, util_1.updateIfChanged)(scopedVariableDeclarations, updates);
506
605
  });
507
606
  }
508
607
  visitStatementExpression(statementExpression, p) {
@@ -517,9 +616,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
517
616
  return statement;
518
617
  }
519
618
  statementExpression = statement;
520
- return this.produceJavaScript(statementExpression, p, (draft) => __awaiter(this, void 0, void 0, function* () {
521
- draft.statement = yield this.visitDefined(statementExpression.statement, p);
522
- }));
619
+ const updates = {
620
+ prefix: yield this.visitSpace(statementExpression.prefix, p),
621
+ markers: yield this.visitMarkers(statementExpression.markers, p),
622
+ statement: yield this.visitDefined(statementExpression.statement, p)
623
+ };
624
+ return (0, util_1.updateIfChanged)(statementExpression, updates);
523
625
  });
524
626
  }
525
627
  visitTaggedTemplateExpression(taggedTemplateExpression, p) {
@@ -534,12 +636,15 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
534
636
  return statement;
535
637
  }
536
638
  taggedTemplateExpression = statement;
537
- return this.produceJavaScript(taggedTemplateExpression, p, (draft) => __awaiter(this, void 0, void 0, function* () {
538
- draft.tag = taggedTemplateExpression.tag && (yield this.visitRightPadded(taggedTemplateExpression.tag, p));
539
- draft.typeArguments = taggedTemplateExpression.typeArguments && (yield this.visitContainer(taggedTemplateExpression.typeArguments, p));
540
- draft.templateExpression = yield this.visitDefined(taggedTemplateExpression.templateExpression, p);
541
- draft.type = taggedTemplateExpression.type && (yield this.visitType(taggedTemplateExpression.type, p));
542
- }));
639
+ const updates = {
640
+ prefix: yield this.visitSpace(taggedTemplateExpression.prefix, p),
641
+ markers: yield this.visitMarkers(taggedTemplateExpression.markers, p),
642
+ tag: taggedTemplateExpression.tag && (yield this.visitRightPadded(taggedTemplateExpression.tag, p)),
643
+ typeArguments: taggedTemplateExpression.typeArguments && (yield this.visitContainer(taggedTemplateExpression.typeArguments, p)),
644
+ templateExpression: yield this.visitDefined(taggedTemplateExpression.templateExpression, p),
645
+ type: taggedTemplateExpression.type && (yield this.visitType(taggedTemplateExpression.type, p))
646
+ };
647
+ return (0, util_1.updateIfChanged)(taggedTemplateExpression, updates);
543
648
  });
544
649
  }
545
650
  visitTemplateExpression(templateExpression, p) {
@@ -554,19 +659,25 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
554
659
  return statement;
555
660
  }
556
661
  templateExpression = statement;
557
- return this.produceJavaScript(templateExpression, p, (draft) => __awaiter(this, void 0, void 0, function* () {
558
- draft.head = yield this.visitDefined(templateExpression.head, p);
559
- draft.spans = yield (0, util_1.mapAsync)(templateExpression.spans, item => this.visitRightPadded(item, p));
560
- draft.type = templateExpression.type && (yield this.visitType(templateExpression.type, p));
561
- }));
662
+ const updates = {
663
+ prefix: yield this.visitSpace(templateExpression.prefix, p),
664
+ markers: yield this.visitMarkers(templateExpression.markers, p),
665
+ head: yield this.visitDefined(templateExpression.head, p),
666
+ spans: yield (0, util_1.mapAsync)(templateExpression.spans, item => this.visitRightPadded(item, p)),
667
+ type: templateExpression.type && (yield this.visitType(templateExpression.type, p))
668
+ };
669
+ return (0, util_1.updateIfChanged)(templateExpression, updates);
562
670
  });
563
671
  }
564
672
  visitTemplateExpressionSpan(span, p) {
565
673
  return __awaiter(this, void 0, void 0, function* () {
566
- return this.produceJavaScript(span, p, (draft) => __awaiter(this, void 0, void 0, function* () {
567
- draft.expression = yield this.visitDefined(span.expression, p);
568
- draft.tail = yield this.visitDefined(span.tail, p);
569
- }));
674
+ const updates = {
675
+ prefix: yield this.visitSpace(span.prefix, p),
676
+ markers: yield this.visitMarkers(span.markers, p),
677
+ expression: yield this.visitDefined(span.expression, p),
678
+ tail: yield this.visitDefined(span.tail, p)
679
+ };
680
+ return (0, util_1.updateIfChanged)(span, updates);
570
681
  });
571
682
  }
572
683
  visitTuple(tuple, p) {
@@ -576,10 +687,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
576
687
  return expression;
577
688
  }
578
689
  tuple = expression;
579
- return this.produceJavaScript(tuple, p, (draft) => __awaiter(this, void 0, void 0, function* () {
580
- draft.elements = yield this.visitContainer(tuple.elements, p);
581
- draft.type = tuple.type && (yield this.visitType(tuple.type, p));
582
- }));
690
+ const updates = {
691
+ prefix: yield this.visitSpace(tuple.prefix, p),
692
+ markers: yield this.visitMarkers(tuple.markers, p),
693
+ elements: yield this.visitContainer(tuple.elements, p),
694
+ type: tuple.type && (yield this.visitType(tuple.type, p))
695
+ };
696
+ return (0, util_1.updateIfChanged)(tuple, updates);
583
697
  });
584
698
  }
585
699
  visitTypeDeclaration(typeDeclaration, p) {
@@ -589,13 +703,16 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
589
703
  return statement;
590
704
  }
591
705
  typeDeclaration = statement;
592
- return this.produceJavaScript(typeDeclaration, p, (draft) => __awaiter(this, void 0, void 0, function* () {
593
- draft.modifiers = yield (0, util_1.mapAsync)(typeDeclaration.modifiers, item => this.visitDefined(item, p));
594
- draft.name = yield this.visitLeftPadded(typeDeclaration.name, p);
595
- draft.typeParameters = typeDeclaration.typeParameters && (yield this.visitDefined(typeDeclaration.typeParameters, p));
596
- draft.initializer = yield this.visitLeftPadded(typeDeclaration.initializer, p);
597
- draft.type = typeDeclaration.type && (yield this.visitType(typeDeclaration.type, p));
598
- }));
706
+ const updates = {
707
+ prefix: yield this.visitSpace(typeDeclaration.prefix, p),
708
+ markers: yield this.visitMarkers(typeDeclaration.markers, p),
709
+ modifiers: yield (0, util_1.mapAsync)(typeDeclaration.modifiers, item => this.visitDefined(item, p)),
710
+ name: yield this.visitLeftPadded(typeDeclaration.name, p),
711
+ typeParameters: typeDeclaration.typeParameters && (yield this.visitDefined(typeDeclaration.typeParameters, p)),
712
+ initializer: yield this.visitLeftPadded(typeDeclaration.initializer, p),
713
+ type: typeDeclaration.type && (yield this.visitType(typeDeclaration.type, p))
714
+ };
715
+ return (0, util_1.updateIfChanged)(typeDeclaration, updates);
599
716
  });
600
717
  }
601
718
  visitTypeOf(typeOf, p) {
@@ -605,10 +722,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
605
722
  return expression;
606
723
  }
607
724
  typeOf = expression;
608
- return this.produceJavaScript(typeOf, p, (draft) => __awaiter(this, void 0, void 0, function* () {
609
- draft.expression = yield this.visitDefined(typeOf.expression, p);
610
- draft.type = typeOf.type && (yield this.visitType(typeOf.type, p));
611
- }));
725
+ const updates = {
726
+ prefix: yield this.visitSpace(typeOf.prefix, p),
727
+ markers: yield this.visitMarkers(typeOf.markers, p),
728
+ expression: yield this.visitDefined(typeOf.expression, p),
729
+ type: typeOf.type && (yield this.visitType(typeOf.type, p))
730
+ };
731
+ return (0, util_1.updateIfChanged)(typeOf, updates);
612
732
  });
613
733
  }
614
734
  visitTypeTreeExpression(typeTreeExpression, p) {
@@ -618,19 +738,25 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
618
738
  return expression;
619
739
  }
620
740
  typeTreeExpression = expression;
621
- return this.produceJavaScript(typeTreeExpression, p, (draft) => __awaiter(this, void 0, void 0, function* () {
622
- draft.expression = yield this.visitDefined(typeTreeExpression.expression, p);
623
- }));
741
+ const updates = {
742
+ prefix: yield this.visitSpace(typeTreeExpression.prefix, p),
743
+ markers: yield this.visitMarkers(typeTreeExpression.markers, p),
744
+ expression: yield this.visitDefined(typeTreeExpression.expression, p)
745
+ };
746
+ return (0, util_1.updateIfChanged)(typeTreeExpression, updates);
624
747
  });
625
748
  }
626
749
  visitAssignmentOperationExtensions(assignmentOperation, p) {
627
750
  return __awaiter(this, void 0, void 0, function* () {
628
- return this.produceJavaScript(assignmentOperation, p, (draft) => __awaiter(this, void 0, void 0, function* () {
629
- draft.variable = yield this.visitDefined(assignmentOperation.variable, p);
630
- draft.operator = yield this.visitLeftPadded(assignmentOperation.operator, p);
631
- draft.assignment = yield this.visitDefined(assignmentOperation.assignment, p);
632
- draft.type = assignmentOperation.type && (yield this.visitType(assignmentOperation.type, p));
633
- }));
751
+ const updates = {
752
+ prefix: yield this.visitSpace(assignmentOperation.prefix, p),
753
+ markers: yield this.visitMarkers(assignmentOperation.markers, p),
754
+ variable: yield this.visitDefined(assignmentOperation.variable, p),
755
+ operator: yield this.visitLeftPadded(assignmentOperation.operator, p),
756
+ assignment: yield this.visitDefined(assignmentOperation.assignment, p),
757
+ type: assignmentOperation.type && (yield this.visitType(assignmentOperation.type, p))
758
+ };
759
+ return (0, util_1.updateIfChanged)(assignmentOperation, updates);
634
760
  });
635
761
  }
636
762
  visitIndexedAccessType(indexedAccessType, p) {
@@ -640,19 +766,25 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
640
766
  return expression;
641
767
  }
642
768
  indexedAccessType = expression;
643
- return this.produceJavaScript(indexedAccessType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
644
- draft.objectType = yield this.visitDefined(indexedAccessType.objectType, p);
645
- draft.indexType = yield this.visitDefined(indexedAccessType.indexType, p);
646
- draft.type = indexedAccessType.type && (yield this.visitType(indexedAccessType.type, p));
647
- }));
769
+ const updates = {
770
+ prefix: yield this.visitSpace(indexedAccessType.prefix, p),
771
+ markers: yield this.visitMarkers(indexedAccessType.markers, p),
772
+ objectType: yield this.visitDefined(indexedAccessType.objectType, p),
773
+ indexType: yield this.visitDefined(indexedAccessType.indexType, p),
774
+ type: indexedAccessType.type && (yield this.visitType(indexedAccessType.type, p))
775
+ };
776
+ return (0, util_1.updateIfChanged)(indexedAccessType, updates);
648
777
  });
649
778
  }
650
779
  visitIndexedAccessTypeIndexType(indexType, p) {
651
780
  return __awaiter(this, void 0, void 0, function* () {
652
- return this.produceJavaScript(indexType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
653
- draft.element = yield this.visitRightPadded(indexType.element, p);
654
- draft.type = indexType.type && (yield this.visitType(indexType.type, p));
655
- }));
781
+ const updates = {
782
+ prefix: yield this.visitSpace(indexType.prefix, p),
783
+ markers: yield this.visitMarkers(indexType.markers, p),
784
+ element: yield this.visitRightPadded(indexType.element, p),
785
+ type: indexType.type && (yield this.visitType(indexType.type, p))
786
+ };
787
+ return (0, util_1.updateIfChanged)(indexType, updates);
656
788
  });
657
789
  }
658
790
  visitTypeQuery(typeQuery, p) {
@@ -662,11 +794,14 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
662
794
  return expression;
663
795
  }
664
796
  typeQuery = expression;
665
- return this.produceJavaScript(typeQuery, p, (draft) => __awaiter(this, void 0, void 0, function* () {
666
- draft.typeExpression = yield this.visitDefined(typeQuery.typeExpression, p);
667
- draft.typeArguments = typeQuery.typeArguments && (yield this.visitContainer(typeQuery.typeArguments, p));
668
- draft.type = typeQuery.type && (yield this.visitType(typeQuery.type, p));
669
- }));
797
+ const updates = {
798
+ prefix: yield this.visitSpace(typeQuery.prefix, p),
799
+ markers: yield this.visitMarkers(typeQuery.markers, p),
800
+ typeExpression: yield this.visitDefined(typeQuery.typeExpression, p),
801
+ typeArguments: typeQuery.typeArguments && (yield this.visitContainer(typeQuery.typeArguments, p)),
802
+ type: typeQuery.type && (yield this.visitType(typeQuery.type, p))
803
+ };
804
+ return (0, util_1.updateIfChanged)(typeQuery, updates);
670
805
  });
671
806
  }
672
807
  visitTypeInfo(typeInfo, p) {
@@ -676,9 +811,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
676
811
  return expression;
677
812
  }
678
813
  typeInfo = expression;
679
- return this.produceJavaScript(typeInfo, p, (draft) => __awaiter(this, void 0, void 0, function* () {
680
- draft.typeIdentifier = yield this.visitDefined(typeInfo.typeIdentifier, p);
681
- }));
814
+ const updates = {
815
+ prefix: yield this.visitSpace(typeInfo.prefix, p),
816
+ markers: yield this.visitMarkers(typeInfo.markers, p),
817
+ typeIdentifier: yield this.visitDefined(typeInfo.typeIdentifier, p)
818
+ };
819
+ return (0, util_1.updateIfChanged)(typeInfo, updates);
682
820
  });
683
821
  }
684
822
  visitComputedPropertyName(computedPropertyName, p) {
@@ -688,9 +826,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
688
826
  return expression;
689
827
  }
690
828
  computedPropertyName = expression;
691
- return this.produceJavaScript(computedPropertyName, p, (draft) => __awaiter(this, void 0, void 0, function* () {
692
- draft.expression = yield this.visitRightPadded(computedPropertyName.expression, p);
693
- }));
829
+ const updates = {
830
+ prefix: yield this.visitSpace(computedPropertyName.prefix, p),
831
+ markers: yield this.visitMarkers(computedPropertyName.markers, p),
832
+ expression: yield this.visitRightPadded(computedPropertyName.expression, p)
833
+ };
834
+ return (0, util_1.updateIfChanged)(computedPropertyName, updates);
694
835
  });
695
836
  }
696
837
  visitTypeOperator(typeOperator, p) {
@@ -700,9 +841,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
700
841
  return expression;
701
842
  }
702
843
  typeOperator = expression;
703
- return this.produceJavaScript(typeOperator, p, (draft) => __awaiter(this, void 0, void 0, function* () {
704
- draft.expression = yield this.visitLeftPadded(typeOperator.expression, p);
705
- }));
844
+ const updates = {
845
+ prefix: yield this.visitSpace(typeOperator.prefix, p),
846
+ markers: yield this.visitMarkers(typeOperator.markers, p),
847
+ expression: yield this.visitLeftPadded(typeOperator.expression, p)
848
+ };
849
+ return (0, util_1.updateIfChanged)(typeOperator, updates);
706
850
  });
707
851
  }
708
852
  visitTypePredicate(typePredicate, p) {
@@ -712,12 +856,15 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
712
856
  return expression;
713
857
  }
714
858
  typePredicate = expression;
715
- return this.produceJavaScript(typePredicate, p, (draft) => __awaiter(this, void 0, void 0, function* () {
716
- draft.asserts = yield this.visitLeftPadded(typePredicate.asserts, p);
717
- draft.parameterName = yield this.visitDefined(typePredicate.parameterName, p);
718
- draft.expression = typePredicate.expression && (yield this.visitLeftPadded(typePredicate.expression, p));
719
- draft.type = typePredicate.type && (yield this.visitType(typePredicate.type, p));
720
- }));
859
+ const updates = {
860
+ prefix: yield this.visitSpace(typePredicate.prefix, p),
861
+ markers: yield this.visitMarkers(typePredicate.markers, p),
862
+ asserts: yield this.visitLeftPadded(typePredicate.asserts, p),
863
+ parameterName: yield this.visitDefined(typePredicate.parameterName, p),
864
+ expression: typePredicate.expression && (yield this.visitLeftPadded(typePredicate.expression, p)),
865
+ type: typePredicate.type && (yield this.visitType(typePredicate.type, p))
866
+ };
867
+ return (0, util_1.updateIfChanged)(typePredicate, updates);
721
868
  });
722
869
  }
723
870
  visitUnion(union, p) {
@@ -727,10 +874,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
727
874
  return expression;
728
875
  }
729
876
  union = expression;
730
- return this.produceJavaScript(union, p, (draft) => __awaiter(this, void 0, void 0, function* () {
731
- draft.types = yield (0, util_1.mapAsync)(union.types, item => this.visitRightPadded(item, p));
732
- draft.type = union.type && (yield this.visitType(union.type, p));
733
- }));
877
+ const updates = {
878
+ prefix: yield this.visitSpace(union.prefix, p),
879
+ markers: yield this.visitMarkers(union.markers, p),
880
+ types: yield (0, util_1.mapAsync)(union.types, item => this.visitRightPadded(item, p)),
881
+ type: union.type && (yield this.visitType(union.type, p))
882
+ };
883
+ return (0, util_1.updateIfChanged)(union, updates);
734
884
  });
735
885
  }
736
886
  visitIntersection(intersection, p) {
@@ -740,10 +890,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
740
890
  return expression;
741
891
  }
742
892
  intersection = expression;
743
- return this.produceJavaScript(intersection, p, (draft) => __awaiter(this, void 0, void 0, function* () {
744
- draft.types = yield (0, util_1.mapAsync)(intersection.types, item => this.visitRightPadded(item, p));
745
- draft.type = intersection.type && (yield this.visitType(intersection.type, p));
746
- }));
893
+ const updates = {
894
+ prefix: yield this.visitSpace(intersection.prefix, p),
895
+ markers: yield this.visitMarkers(intersection.markers, p),
896
+ types: yield (0, util_1.mapAsync)(intersection.types, item => this.visitRightPadded(item, p)),
897
+ type: intersection.type && (yield this.visitType(intersection.type, p))
898
+ };
899
+ return (0, util_1.updateIfChanged)(intersection, updates);
747
900
  });
748
901
  }
749
902
  visitVoid(void_, p) {
@@ -753,9 +906,12 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
753
906
  return expression;
754
907
  }
755
908
  void_ = expression;
756
- return this.produceJavaScript(void_, p, (draft) => __awaiter(this, void 0, void 0, function* () {
757
- draft.expression = yield this.visitDefined(void_.expression, p);
758
- }));
909
+ const updates = {
910
+ prefix: yield this.visitSpace(void_.prefix, p),
911
+ markers: yield this.visitMarkers(void_.markers, p),
912
+ expression: yield this.visitDefined(void_.expression, p)
913
+ };
914
+ return (0, util_1.updateIfChanged)(void_, updates);
759
915
  });
760
916
  }
761
917
  visitWithStatement(withStatement, p) {
@@ -765,10 +921,13 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
765
921
  return statement;
766
922
  }
767
923
  withStatement = statement;
768
- return this.produceJavaScript(withStatement, p, (draft) => __awaiter(this, void 0, void 0, function* () {
769
- draft.expression = yield this.visitDefined(withStatement.expression, p);
770
- draft.body = yield this.visitRightPadded(withStatement.body, p);
771
- }));
924
+ const updates = {
925
+ prefix: yield this.visitSpace(withStatement.prefix, p),
926
+ markers: yield this.visitMarkers(withStatement.markers, p),
927
+ expression: yield this.visitDefined(withStatement.expression, p),
928
+ body: yield this.visitRightPadded(withStatement.body, p)
929
+ };
930
+ return (0, util_1.updateIfChanged)(withStatement, updates);
772
931
  });
773
932
  }
774
933
  visitIndexSignatureDeclaration(indexSignatureDeclaration, p) {
@@ -778,12 +937,15 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
778
937
  return statement;
779
938
  }
780
939
  indexSignatureDeclaration = statement;
781
- return this.produceJavaScript(indexSignatureDeclaration, p, (draft) => __awaiter(this, void 0, void 0, function* () {
782
- draft.modifiers = yield (0, util_1.mapAsync)(indexSignatureDeclaration.modifiers, item => this.visitDefined(item, p));
783
- draft.parameters = yield this.visitContainer(indexSignatureDeclaration.parameters, p);
784
- draft.typeExpression = yield this.visitLeftPadded(indexSignatureDeclaration.typeExpression, p);
785
- draft.type = indexSignatureDeclaration.type && (yield this.visitType(indexSignatureDeclaration.type, p));
786
- }));
940
+ const updates = {
941
+ prefix: yield this.visitSpace(indexSignatureDeclaration.prefix, p),
942
+ markers: yield this.visitMarkers(indexSignatureDeclaration.markers, p),
943
+ modifiers: yield (0, util_1.mapAsync)(indexSignatureDeclaration.modifiers, item => this.visitDefined(item, p)),
944
+ parameters: yield this.visitContainer(indexSignatureDeclaration.parameters, p),
945
+ typeExpression: yield this.visitLeftPadded(indexSignatureDeclaration.typeExpression, p),
946
+ type: indexSignatureDeclaration.type && (yield this.visitType(indexSignatureDeclaration.type, p))
947
+ };
948
+ return (0, util_1.updateIfChanged)(indexSignatureDeclaration, updates);
787
949
  });
788
950
  }
789
951
  visitComputedPropertyMethodDeclaration(computedPropMethod, p) {
@@ -793,31 +955,40 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
793
955
  return statement;
794
956
  }
795
957
  computedPropMethod = statement;
796
- return this.produceJavaScript(computedPropMethod, p, (draft) => __awaiter(this, void 0, void 0, function* () {
797
- draft.leadingAnnotations = yield (0, util_1.mapAsync)(computedPropMethod.leadingAnnotations, item => this.visitDefined(item, p));
798
- draft.modifiers = yield (0, util_1.mapAsync)(computedPropMethod.modifiers, item => this.visitDefined(item, p));
799
- draft.typeParameters = computedPropMethod.typeParameters && (yield this.visitDefined(computedPropMethod.typeParameters, p));
800
- draft.returnTypeExpression = computedPropMethod.returnTypeExpression && (yield this.visitDefined(computedPropMethod.returnTypeExpression, p));
801
- draft.name = yield this.visitDefined(computedPropMethod.name, p);
802
- draft.parameters = yield this.visitContainer(computedPropMethod.parameters, p);
803
- draft.body = computedPropMethod.body && (yield this.visitDefined(computedPropMethod.body, p));
804
- draft.methodType = computedPropMethod.methodType && (yield this.visitType(computedPropMethod.methodType, p));
805
- }));
958
+ const updates = {
959
+ prefix: yield this.visitSpace(computedPropMethod.prefix, p),
960
+ markers: yield this.visitMarkers(computedPropMethod.markers, p),
961
+ leadingAnnotations: yield (0, util_1.mapAsync)(computedPropMethod.leadingAnnotations, item => this.visitDefined(item, p)),
962
+ modifiers: yield (0, util_1.mapAsync)(computedPropMethod.modifiers, item => this.visitDefined(item, p)),
963
+ typeParameters: computedPropMethod.typeParameters && (yield this.visitDefined(computedPropMethod.typeParameters, p)),
964
+ returnTypeExpression: computedPropMethod.returnTypeExpression && (yield this.visitDefined(computedPropMethod.returnTypeExpression, p)),
965
+ name: yield this.visitDefined(computedPropMethod.name, p),
966
+ parameters: yield this.visitContainer(computedPropMethod.parameters, p),
967
+ body: computedPropMethod.body && (yield this.visitDefined(computedPropMethod.body, p)),
968
+ methodType: computedPropMethod.methodType && (yield this.visitType(computedPropMethod.methodType, p))
969
+ };
970
+ return (0, util_1.updateIfChanged)(computedPropMethod, updates);
806
971
  });
807
972
  }
808
973
  visitForOfLoop(forOfLoop, p) {
809
974
  return __awaiter(this, void 0, void 0, function* () {
810
- return this.produceJavaScript(forOfLoop, p, (draft) => __awaiter(this, void 0, void 0, function* () {
811
- draft.loop = yield this.visitDefined(forOfLoop.loop, p);
812
- }));
975
+ const updates = {
976
+ prefix: yield this.visitSpace(forOfLoop.prefix, p),
977
+ markers: yield this.visitMarkers(forOfLoop.markers, p),
978
+ loop: yield this.visitDefined(forOfLoop.loop, p)
979
+ };
980
+ return (0, util_1.updateIfChanged)(forOfLoop, updates);
813
981
  });
814
982
  }
815
983
  visitForInLoop(forInLoop, p) {
816
984
  return __awaiter(this, void 0, void 0, function* () {
817
- return this.produceJavaScript(forInLoop, p, (draft) => __awaiter(this, void 0, void 0, function* () {
818
- draft.control = yield this.visitDefined(forInLoop.control, p);
819
- draft.body = yield this.visitRightPadded(forInLoop.body, p);
820
- }));
985
+ const updates = {
986
+ prefix: yield this.visitSpace(forInLoop.prefix, p),
987
+ markers: yield this.visitMarkers(forInLoop.markers, p),
988
+ control: yield this.visitDefined(forInLoop.control, p),
989
+ body: yield this.visitRightPadded(forInLoop.body, p)
990
+ };
991
+ return (0, util_1.updateIfChanged)(forInLoop, updates);
821
992
  });
822
993
  }
823
994
  visitNamespaceDeclaration(namespaceDeclaration, p) {
@@ -827,28 +998,37 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
827
998
  return statement;
828
999
  }
829
1000
  namespaceDeclaration = statement;
830
- return this.produceJavaScript(namespaceDeclaration, p, (draft) => __awaiter(this, void 0, void 0, function* () {
831
- draft.modifiers = yield (0, util_1.mapAsync)(namespaceDeclaration.modifiers, item => this.visitDefined(item, p));
832
- draft.keywordType = yield this.visitLeftPadded(namespaceDeclaration.keywordType, p);
833
- draft.name = yield this.visitRightPadded(namespaceDeclaration.name, p);
834
- draft.body = namespaceDeclaration.body && (yield this.visitDefined(namespaceDeclaration.body, p));
835
- }));
1001
+ const updates = {
1002
+ prefix: yield this.visitSpace(namespaceDeclaration.prefix, p),
1003
+ markers: yield this.visitMarkers(namespaceDeclaration.markers, p),
1004
+ modifiers: yield (0, util_1.mapAsync)(namespaceDeclaration.modifiers, item => this.visitDefined(item, p)),
1005
+ keywordType: yield this.visitLeftPadded(namespaceDeclaration.keywordType, p),
1006
+ name: yield this.visitRightPadded(namespaceDeclaration.name, p),
1007
+ body: namespaceDeclaration.body && (yield this.visitDefined(namespaceDeclaration.body, p))
1008
+ };
1009
+ return (0, util_1.updateIfChanged)(namespaceDeclaration, updates);
836
1010
  });
837
1011
  }
838
1012
  visitTypeLiteral(typeLiteral, p) {
839
1013
  return __awaiter(this, void 0, void 0, function* () {
840
- return this.produceJavaScript(typeLiteral, p, (draft) => __awaiter(this, void 0, void 0, function* () {
841
- draft.members = yield this.visitDefined(typeLiteral.members, p);
842
- draft.type = typeLiteral.type && (yield this.visitType(typeLiteral.type, p));
843
- }));
1014
+ const updates = {
1015
+ prefix: yield this.visitSpace(typeLiteral.prefix, p),
1016
+ markers: yield this.visitMarkers(typeLiteral.markers, p),
1017
+ members: yield this.visitDefined(typeLiteral.members, p),
1018
+ type: typeLiteral.type && (yield this.visitType(typeLiteral.type, p))
1019
+ };
1020
+ return (0, util_1.updateIfChanged)(typeLiteral, updates);
844
1021
  });
845
1022
  }
846
1023
  visitArrayBindingPattern(arrayBindingPattern, p) {
847
1024
  return __awaiter(this, void 0, void 0, function* () {
848
- return this.produceJavaScript(arrayBindingPattern, p, (draft) => __awaiter(this, void 0, void 0, function* () {
849
- draft.elements = yield this.visitContainer(arrayBindingPattern.elements, p);
850
- draft.type = arrayBindingPattern.type && (yield this.visitType(arrayBindingPattern.type, p));
851
- }));
1025
+ const updates = {
1026
+ prefix: yield this.visitSpace(arrayBindingPattern.prefix, p),
1027
+ markers: yield this.visitMarkers(arrayBindingPattern.markers, p),
1028
+ elements: yield this.visitContainer(arrayBindingPattern.elements, p),
1029
+ type: arrayBindingPattern.type && (yield this.visitType(arrayBindingPattern.type, p))
1030
+ };
1031
+ return (0, util_1.updateIfChanged)(arrayBindingPattern, updates);
852
1032
  });
853
1033
  }
854
1034
  visitBindingElement(bindingElement, p) {
@@ -858,12 +1038,15 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
858
1038
  return statement;
859
1039
  }
860
1040
  bindingElement = statement;
861
- return this.produceJavaScript(bindingElement, p, (draft) => __awaiter(this, void 0, void 0, function* () {
862
- draft.propertyName = bindingElement.propertyName && (yield this.visitRightPadded(bindingElement.propertyName, p));
863
- draft.name = yield this.visitDefined(bindingElement.name, p);
864
- draft.initializer = bindingElement.initializer && (yield this.visitLeftPadded(bindingElement.initializer, p));
865
- draft.variableType = bindingElement.variableType && (yield this.visitType(bindingElement.variableType, p));
866
- }));
1041
+ const updates = {
1042
+ prefix: yield this.visitSpace(bindingElement.prefix, p),
1043
+ markers: yield this.visitMarkers(bindingElement.markers, p),
1044
+ propertyName: bindingElement.propertyName && (yield this.visitRightPadded(bindingElement.propertyName, p)),
1045
+ name: yield this.visitDefined(bindingElement.name, p),
1046
+ initializer: bindingElement.initializer && (yield this.visitLeftPadded(bindingElement.initializer, p)),
1047
+ variableType: bindingElement.variableType && (yield this.visitType(bindingElement.variableType, p))
1048
+ };
1049
+ return (0, util_1.updateIfChanged)(bindingElement, updates);
867
1050
  });
868
1051
  }
869
1052
  visitExportDeclaration(exportDeclaration, p) {
@@ -873,13 +1056,16 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
873
1056
  return statement;
874
1057
  }
875
1058
  exportDeclaration = statement;
876
- return this.produceJavaScript(exportDeclaration, p, (draft) => __awaiter(this, void 0, void 0, function* () {
877
- draft.modifiers = yield (0, util_1.mapAsync)(exportDeclaration.modifiers, item => this.visitDefined(item, p));
878
- draft.typeOnly = yield this.visitLeftPadded(exportDeclaration.typeOnly, p);
879
- draft.exportClause = exportDeclaration.exportClause && (yield this.visitDefined(exportDeclaration.exportClause, p));
880
- draft.moduleSpecifier = exportDeclaration.moduleSpecifier && (yield this.visitLeftPadded(exportDeclaration.moduleSpecifier, p));
881
- draft.attributes = exportDeclaration.attributes && (yield this.visitDefined(exportDeclaration.attributes, p));
882
- }));
1059
+ const updates = {
1060
+ prefix: yield this.visitSpace(exportDeclaration.prefix, p),
1061
+ markers: yield this.visitMarkers(exportDeclaration.markers, p),
1062
+ modifiers: yield (0, util_1.mapAsync)(exportDeclaration.modifiers, item => this.visitDefined(item, p)),
1063
+ typeOnly: yield this.visitLeftPadded(exportDeclaration.typeOnly, p),
1064
+ exportClause: exportDeclaration.exportClause && (yield this.visitDefined(exportDeclaration.exportClause, p)),
1065
+ moduleSpecifier: exportDeclaration.moduleSpecifier && (yield this.visitLeftPadded(exportDeclaration.moduleSpecifier, p)),
1066
+ attributes: exportDeclaration.attributes && (yield this.visitDefined(exportDeclaration.attributes, p))
1067
+ };
1068
+ return (0, util_1.updateIfChanged)(exportDeclaration, updates);
883
1069
  });
884
1070
  }
885
1071
  visitExportAssignment(exportAssignment, p) {
@@ -889,26 +1075,35 @@ class JavaScriptVisitor extends java_1.JavaVisitor {
889
1075
  return statement;
890
1076
  }
891
1077
  exportAssignment = statement;
892
- return this.produceJavaScript(exportAssignment, p, (draft) => __awaiter(this, void 0, void 0, function* () {
893
- draft.expression = yield this.visitLeftPadded(exportAssignment.expression, p);
894
- }));
1078
+ const updates = {
1079
+ prefix: yield this.visitSpace(exportAssignment.prefix, p),
1080
+ markers: yield this.visitMarkers(exportAssignment.markers, p),
1081
+ expression: yield this.visitLeftPadded(exportAssignment.expression, p)
1082
+ };
1083
+ return (0, util_1.updateIfChanged)(exportAssignment, updates);
895
1084
  });
896
1085
  }
897
1086
  visitNamedExports(namedExports, p) {
898
1087
  return __awaiter(this, void 0, void 0, function* () {
899
- return this.produceJavaScript(namedExports, p, (draft) => __awaiter(this, void 0, void 0, function* () {
900
- draft.elements = yield this.visitContainer(namedExports.elements, p);
901
- draft.type = namedExports.type && (yield this.visitType(namedExports.type, p));
902
- }));
1088
+ const updates = {
1089
+ prefix: yield this.visitSpace(namedExports.prefix, p),
1090
+ markers: yield this.visitMarkers(namedExports.markers, p),
1091
+ elements: yield this.visitContainer(namedExports.elements, p),
1092
+ type: namedExports.type && (yield this.visitType(namedExports.type, p))
1093
+ };
1094
+ return (0, util_1.updateIfChanged)(namedExports, updates);
903
1095
  });
904
1096
  }
905
1097
  visitExportSpecifier(exportSpecifier, p) {
906
1098
  return __awaiter(this, void 0, void 0, function* () {
907
- return this.produceJavaScript(exportSpecifier, p, (draft) => __awaiter(this, void 0, void 0, function* () {
908
- draft.typeOnly = yield this.visitLeftPadded(exportSpecifier.typeOnly, p);
909
- draft.specifier = yield this.visitDefined(exportSpecifier.specifier, p);
910
- draft.type = exportSpecifier.type && (yield this.visitType(exportSpecifier.type, p));
911
- }));
1099
+ const updates = {
1100
+ prefix: yield this.visitSpace(exportSpecifier.prefix, p),
1101
+ markers: yield this.visitMarkers(exportSpecifier.markers, p),
1102
+ typeOnly: yield this.visitLeftPadded(exportSpecifier.typeOnly, p),
1103
+ specifier: yield this.visitDefined(exportSpecifier.specifier, p),
1104
+ type: exportSpecifier.type && (yield this.visitType(exportSpecifier.type, p))
1105
+ };
1106
+ return (0, util_1.updateIfChanged)(exportSpecifier, updates);
912
1107
  });
913
1108
  }
914
1109
  accept(j, p) {