@openrewrite/rewrite 8.70.0-20251222-101414 → 8.70.0-20251222-213047
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.
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/java/formatting-utils.d.ts +1 -1
- package/dist/java/formatting-utils.js +4 -4
- package/dist/java/formatting-utils.js.map +1 -1
- package/dist/java/markers.js +8 -8
- package/dist/java/markers.js.map +1 -1
- package/dist/java/type-visitor.d.ts +0 -3
- package/dist/java/type-visitor.d.ts.map +1 -1
- package/dist/java/type-visitor.js +67 -68
- package/dist/java/type-visitor.js.map +1 -1
- package/dist/java/visitor.d.ts +3 -3
- package/dist/java/visitor.d.ts.map +1 -1
- package/dist/java/visitor.js +5 -5
- package/dist/java/visitor.js.map +1 -1
- package/dist/javascript/assertions.js +4 -3
- package/dist/javascript/assertions.js.map +1 -1
- package/dist/javascript/cleanup/use-object-property-shorthand.js +3 -3
- package/dist/javascript/cleanup/use-object-property-shorthand.js.map +1 -1
- package/dist/javascript/format/format.d.ts +28 -7
- package/dist/javascript/format/format.d.ts.map +1 -1
- package/dist/javascript/format/format.js +149 -158
- package/dist/javascript/format/format.js.map +1 -1
- package/dist/javascript/format/minimum-viable-spacing-visitor.js +23 -23
- package/dist/javascript/format/minimum-viable-spacing-visitor.js.map +1 -1
- package/dist/javascript/format/prettier-format.d.ts.map +1 -1
- package/dist/javascript/format/prettier-format.js +8 -11
- package/dist/javascript/format/prettier-format.js.map +1 -1
- package/dist/javascript/format/tabs-and-indents-visitor.js +7 -7
- package/dist/javascript/format/tabs-and-indents-visitor.js.map +1 -1
- package/dist/javascript/format/whitespace-reconciler.d.ts.map +1 -1
- package/dist/javascript/format/whitespace-reconciler.js +12 -11
- package/dist/javascript/format/whitespace-reconciler.js.map +1 -1
- package/dist/javascript/markers.d.ts.map +1 -1
- package/dist/javascript/markers.js +6 -5
- package/dist/javascript/markers.js.map +1 -1
- package/dist/javascript/migrate/es6/modernize-octal-escape-sequences.js +2 -2
- package/dist/javascript/migrate/es6/modernize-octal-escape-sequences.js.map +1 -1
- package/dist/javascript/migrate/es6/modernize-octal-literals.js +2 -2
- package/dist/javascript/migrate/es6/modernize-octal-literals.js.map +1 -1
- package/dist/javascript/migrate/es6/remove-duplicate-object-keys.js +2 -2
- package/dist/javascript/migrate/es6/remove-duplicate-object-keys.js.map +1 -1
- package/dist/javascript/migrate/typescript/export-assignment-to-export-default.js +2 -2
- package/dist/javascript/migrate/typescript/export-assignment-to-export-default.js.map +1 -1
- package/dist/javascript/node-resolution-result.js +3 -9
- package/dist/javascript/node-resolution-result.js.map +1 -1
- package/dist/javascript/parser.d.ts.map +1 -1
- package/dist/javascript/parser.js +35 -35
- package/dist/javascript/parser.js.map +1 -1
- package/dist/javascript/project-parser.d.ts.map +1 -1
- package/dist/javascript/project-parser.js +6 -5
- package/dist/javascript/project-parser.js.map +1 -1
- package/dist/javascript/recipes/auto-format.d.ts +7 -23
- package/dist/javascript/recipes/auto-format.d.ts.map +1 -1
- package/dist/javascript/recipes/auto-format.js +8 -54
- package/dist/javascript/recipes/auto-format.js.map +1 -1
- package/dist/javascript/recipes/change-import.js +8 -8
- package/dist/javascript/recipes/change-import.js.map +1 -1
- package/dist/javascript/recipes/order-imports.js +4 -4
- package/dist/javascript/recipes/order-imports.js.map +1 -1
- package/dist/javascript/templating/engine.js +2 -2
- package/dist/javascript/templating/engine.js.map +1 -1
- package/dist/javascript/templating/index.d.ts +1 -0
- package/dist/javascript/templating/index.d.ts.map +1 -1
- package/dist/javascript/templating/index.js +4 -1
- package/dist/javascript/templating/index.js.map +1 -1
- package/dist/javascript/templating/placeholder-replacement.js +16 -16
- package/dist/javascript/templating/placeholder-replacement.js.map +1 -1
- package/dist/javascript/type-mapping.d.ts.map +1 -1
- package/dist/javascript/type-mapping.js +49 -58
- package/dist/javascript/type-mapping.js.map +1 -1
- package/dist/javascript/visitor.d.ts +3 -3
- package/dist/javascript/visitor.d.ts.map +1 -1
- package/dist/javascript/visitor.js +3 -3
- package/dist/javascript/visitor.js.map +1 -1
- package/dist/json/rpc.js +48 -49
- package/dist/json/rpc.js.map +1 -1
- package/dist/json/visitor.d.ts +3 -3
- package/dist/json/visitor.d.ts.map +1 -1
- package/dist/json/visitor.js +3 -3
- package/dist/json/visitor.js.map +1 -1
- package/dist/parse-error.js +11 -11
- package/dist/parse-error.js.map +1 -1
- package/dist/reference.d.ts.map +1 -1
- package/dist/reference.js +0 -3
- package/dist/reference.js.map +1 -1
- package/dist/rpc/index.js +42 -42
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/queue.d.ts.map +1 -1
- package/dist/rpc/queue.js +6 -8
- package/dist/rpc/queue.js.map +1 -1
- package/dist/rpc/request/install-recipes.js +1 -1
- package/dist/rpc/request/install-recipes.js.map +1 -1
- package/dist/rpc/request/parse-project.d.ts.map +1 -1
- package/dist/rpc/request/parse-project.js +12 -32
- package/dist/rpc/request/parse-project.js.map +1 -1
- package/dist/rpc/request/parse.d.ts.map +1 -1
- package/dist/rpc/request/parse.js +1 -4
- package/dist/rpc/request/parse.js.map +1 -1
- package/dist/text/rpc.js +18 -18
- package/dist/text/rpc.js.map +1 -1
- package/dist/version.txt +1 -1
- package/dist/visitor.d.ts +6 -4
- package/dist/visitor.d.ts.map +1 -1
- package/dist/visitor.js +19 -17
- package/dist/visitor.js.map +1 -1
- package/dist/yaml/rpc.js +65 -65
- package/dist/yaml/rpc.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +8 -8
- package/src/java/formatting-utils.ts +2 -2
- package/src/java/markers.ts +8 -8
- package/src/java/type-visitor.ts +59 -68
- package/src/java/visitor.ts +8 -8
- package/src/javascript/assertions.ts +3 -3
- package/src/javascript/cleanup/use-object-property-shorthand.ts +1 -1
- package/src/javascript/format/format.ts +109 -107
- package/src/javascript/format/minimum-viable-spacing-visitor.ts +1 -1
- package/src/javascript/format/prettier-format.ts +9 -12
- package/src/javascript/format/tabs-and-indents-visitor.ts +1 -1
- package/src/javascript/format/whitespace-reconciler.ts +12 -11
- package/src/javascript/markers.ts +6 -6
- package/src/javascript/migrate/es6/modernize-octal-escape-sequences.ts +1 -1
- package/src/javascript/migrate/es6/modernize-octal-literals.ts +1 -1
- package/src/javascript/migrate/es6/remove-duplicate-object-keys.ts +1 -1
- package/src/javascript/migrate/typescript/export-assignment-to-export-default.ts +1 -1
- package/src/javascript/node-resolution-result.ts +8 -14
- package/src/javascript/parser.ts +5 -4
- package/src/javascript/project-parser.ts +4 -4
- package/src/javascript/recipes/auto-format.ts +9 -71
- package/src/javascript/recipes/change-import.ts +4 -4
- package/src/javascript/recipes/order-imports.ts +1 -1
- package/src/javascript/templating/engine.ts +1 -1
- package/src/javascript/templating/index.ts +5 -0
- package/src/javascript/templating/placeholder-replacement.ts +2 -2
- package/src/javascript/type-mapping.ts +28 -34
- package/src/javascript/visitor.ts +6 -6
- package/src/json/rpc.ts +51 -52
- package/src/json/visitor.ts +6 -6
- package/src/parse-error.ts +11 -11
- package/src/reference.ts +0 -5
- package/src/rpc/index.ts +43 -43
- package/src/rpc/queue.ts +6 -8
- package/src/rpc/request/install-recipes.ts +1 -1
- package/src/rpc/request/parse-project.ts +20 -32
- package/src/rpc/request/parse.ts +1 -4
- package/src/text/rpc.ts +18 -18
- package/src/visitor.ts +29 -30
- package/src/yaml/rpc.ts +80 -81
package/src/json/rpc.ts
CHANGED
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
import {JsonVisitor} from "./visitor";
|
|
17
17
|
import {asRef, RpcCodecs, RpcReceiveQueue, RpcSendQueue} from "../rpc";
|
|
18
18
|
import {Json} from "./tree";
|
|
19
|
-
import {
|
|
20
|
-
import {createDraft, Draft, finishDraft} from "immer";
|
|
19
|
+
import {updateIfChanged} from "../util";
|
|
21
20
|
|
|
22
21
|
class JsonSender extends JsonVisitor<RpcSendQueue> {
|
|
23
22
|
|
|
@@ -98,30 +97,30 @@ class JsonSender extends JsonVisitor<RpcSendQueue> {
|
|
|
98
97
|
class JsonReceiver extends JsonVisitor<RpcReceiveQueue> {
|
|
99
98
|
|
|
100
99
|
protected async preVisit(j: Json, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
100
|
+
return updateIfChanged(j, {
|
|
101
|
+
id: await q.receive(j.id),
|
|
102
|
+
prefix: await q.receive(j.prefix, async space => await this.visitSpace(space, q)),
|
|
103
|
+
markers: await q.receive(j.markers),
|
|
104
|
+
});
|
|
106
105
|
}
|
|
107
106
|
|
|
108
107
|
protected async visitDocument(document: Json.Document, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
108
|
+
return updateIfChanged(document, {
|
|
109
|
+
sourcePath: await q.receive(document.sourcePath),
|
|
110
|
+
charsetName: await q.receive(document.charsetName),
|
|
111
|
+
charsetBomMarked: await q.receive(document.charsetBomMarked),
|
|
112
|
+
checksum: await q.receive(document.checksum),
|
|
113
|
+
fileAttributes: await q.receive(document.fileAttributes),
|
|
114
|
+
value: await q.receive<Json.Value>(document.value, async j => await this.visit(j, q)!),
|
|
115
|
+
eof: await q.receive(document.eof, async space => await this.visitSpace(space, q)),
|
|
116
|
+
});
|
|
118
117
|
}
|
|
119
118
|
|
|
120
119
|
protected async visitArray(array: Json.Array, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
return updateIfChanged(array, {
|
|
121
|
+
values: await q.receiveListDefined(array.values,
|
|
122
|
+
async j => await this.visitRightPadded(j, q)!)!,
|
|
123
|
+
});
|
|
125
124
|
}
|
|
126
125
|
|
|
127
126
|
protected async visitEmpty(empty: Json.Empty): Promise<Json | undefined> {
|
|
@@ -129,56 +128,56 @@ class JsonReceiver extends JsonVisitor<RpcReceiveQueue> {
|
|
|
129
128
|
}
|
|
130
129
|
|
|
131
130
|
protected async visitIdentifier(identifier: Json.Identifier, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
return updateIfChanged(identifier, {
|
|
132
|
+
name: await q.receive(identifier.name),
|
|
133
|
+
});
|
|
135
134
|
}
|
|
136
135
|
|
|
137
136
|
protected async visitLiteral(literal: Json.Literal, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
return updateIfChanged(literal, {
|
|
138
|
+
source: await q.receive(literal.source),
|
|
139
|
+
value: await q.receive(literal.value),
|
|
140
|
+
});
|
|
142
141
|
}
|
|
143
142
|
|
|
144
143
|
protected async visitMember(member: Json.Member, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
144
|
+
return updateIfChanged(member, {
|
|
145
|
+
key: await q.receive(member.key,
|
|
146
|
+
async j => await this.visitRightPadded(j, q)!)!,
|
|
147
|
+
value: await q.receive<Json.Value>(member.value,
|
|
148
|
+
async j => await this.visit(j, q)!),
|
|
149
|
+
});
|
|
151
150
|
}
|
|
152
151
|
|
|
153
152
|
protected async visitObject(obj: Json.Object, q: RpcReceiveQueue): Promise<Json | undefined> {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
153
|
+
return updateIfChanged(obj, {
|
|
154
|
+
members: await q.receiveListDefined(obj.members,
|
|
155
|
+
async j => await this.visitRightPadded(j, q)),
|
|
156
|
+
});
|
|
158
157
|
}
|
|
159
158
|
|
|
160
159
|
public async visitSpace(space: Json.Space, q: RpcReceiveQueue): Promise<Json.Space> {
|
|
161
|
-
return (
|
|
162
|
-
|
|
163
|
-
return
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
})
|
|
169
|
-
})
|
|
170
|
-
|
|
171
|
-
})
|
|
160
|
+
return updateIfChanged(space, {
|
|
161
|
+
comments: await q.receiveListDefined(space.comments, async c => {
|
|
162
|
+
return updateIfChanged(c, {
|
|
163
|
+
multiline: await q.receive(c.multiline),
|
|
164
|
+
text: await q.receive(c.text),
|
|
165
|
+
suffix: await q.receive(c.suffix),
|
|
166
|
+
markers: await q.receive(c.markers),
|
|
167
|
+
});
|
|
168
|
+
}),
|
|
169
|
+
whitespace: await q.receive(space.whitespace),
|
|
170
|
+
});
|
|
172
171
|
}
|
|
173
172
|
|
|
174
173
|
public async visitRightPadded<T extends Json>(right: Json.RightPadded<T>, p: RpcReceiveQueue): Promise<Json.RightPadded<T> | undefined> {
|
|
175
174
|
if (!right) {
|
|
176
175
|
throw new Error("TreeDataReceiveQueue should have instantiated an empty padding")
|
|
177
176
|
}
|
|
178
|
-
return
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
177
|
+
return updateIfChanged(right, {
|
|
178
|
+
element: await p.receive(right.element, async j => await this.visit(j, p)!) as T,
|
|
179
|
+
after: await p.receive(right.after, async space => await this.visitSpace(space, p)),
|
|
180
|
+
markers: await p.receiveMarkers(right.markers),
|
|
182
181
|
});
|
|
183
182
|
}
|
|
184
183
|
}
|
package/src/json/visitor.ts
CHANGED
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import {mapAsync, updateIfChanged} from "../util";
|
|
17
|
-
import {
|
|
17
|
+
import {TreeVisitor, ValidRecipeReturnType} from "../visitor";
|
|
18
18
|
import {SourceFile} from "../tree";
|
|
19
19
|
import {isJson, Json} from "./tree";
|
|
20
|
-
import {
|
|
20
|
+
import {create, Draft} from "mutative";
|
|
21
21
|
|
|
22
22
|
export class JsonVisitor<P> extends TreeVisitor<Json, P> {
|
|
23
23
|
async isAcceptable(sourceFile: SourceFile): Promise<boolean> {
|
|
@@ -103,19 +103,19 @@ export class JsonVisitor<P> extends TreeVisitor<Json, P> {
|
|
|
103
103
|
before: Json | undefined,
|
|
104
104
|
p: P,
|
|
105
105
|
recipe?: (draft: Draft<J>) =>
|
|
106
|
-
|
|
107
|
-
PromiseLike<
|
|
106
|
+
ValidRecipeReturnType<Draft<J>> |
|
|
107
|
+
PromiseLike<ValidRecipeReturnType<Draft<J>>>
|
|
108
108
|
): Promise<J | undefined> {
|
|
109
109
|
if (before === undefined) {
|
|
110
110
|
return undefined;
|
|
111
111
|
}
|
|
112
|
-
const draft
|
|
112
|
+
const [draft, finishDraft] = create(before as J);
|
|
113
113
|
(draft as Draft<Json>).prefix = await this.visitSpace(before!.prefix, p);
|
|
114
114
|
(draft as Draft<Json>).markers = await this.visitMarkers(before!.markers, p);
|
|
115
115
|
if (recipe) {
|
|
116
116
|
await recipe(draft);
|
|
117
117
|
}
|
|
118
|
-
return finishDraft(
|
|
118
|
+
return finishDraft() as J;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
protected accept(t: Json, p: P): Promise<Json | undefined> {
|
package/src/parse-error.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {Cursor, SourceFile, Tree} from "./tree";
|
|
|
17
17
|
import {TreeVisitor} from "./visitor";
|
|
18
18
|
import {PrintOutputCapture, TreePrinters} from "./print";
|
|
19
19
|
import {RpcCodecs, RpcReceiveQueue, RpcSendQueue} from "./rpc";
|
|
20
|
-
import {
|
|
20
|
+
import {updateIfChanged} from "./util";
|
|
21
21
|
|
|
22
22
|
export const ParseErrorKind = "org.openrewrite.tree.ParseError";
|
|
23
23
|
|
|
@@ -67,16 +67,16 @@ TreePrinters.register(ParseErrorKind, () => new class extends ParseErrorVisitor<
|
|
|
67
67
|
|
|
68
68
|
RpcCodecs.registerCodec(ParseErrorKind, {
|
|
69
69
|
async rpcReceive(before: ParseError, q: RpcReceiveQueue): Promise<ParseError> {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
return updateIfChanged(before, {
|
|
71
|
+
id: await q.receive(before.id),
|
|
72
|
+
markers: await q.receive(before.markers),
|
|
73
|
+
sourcePath: await q.receive(before.sourcePath),
|
|
74
|
+
charsetName: await q.receive(before.charsetName),
|
|
75
|
+
charsetBomMarked: await q.receive(before.charsetBomMarked),
|
|
76
|
+
checksum: await q.receive(before.checksum),
|
|
77
|
+
fileAttributes: await q.receive(before.fileAttributes),
|
|
78
|
+
text: await q.receive(before.text),
|
|
79
|
+
});
|
|
80
80
|
},
|
|
81
81
|
|
|
82
82
|
async rpcSend(after: ParseError, q: RpcSendQueue): Promise<void> {
|
package/src/reference.ts
CHANGED
|
@@ -13,11 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {setAutoFreeze} from "immer";
|
|
17
|
-
|
|
18
|
-
// this is required because otherwise `asRef()` won't work for objects created using immer
|
|
19
|
-
setAutoFreeze(false);
|
|
20
|
-
|
|
21
16
|
const REFERENCE_KEY = Symbol.for("org.openrewrite.rpc.Reference");
|
|
22
17
|
|
|
23
18
|
export interface Reference {
|
package/src/rpc/index.ts
CHANGED
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import {Checksum, FileAttributes, TreeKind} from "../tree";
|
|
17
17
|
import {RpcCodecs, RpcReceiveQueue, RpcSendQueue} from "./queue";
|
|
18
|
-
import {createDraft, finishDraft} from "immer";
|
|
19
18
|
import {Markers, MarkersKind, MarkupDebug, MarkupError, MarkupInfo, MarkupWarn, SearchResult} from "../markers";
|
|
20
19
|
import {asRef} from "../reference";
|
|
20
|
+
import {updateIfChanged} from "../util";
|
|
21
21
|
|
|
22
22
|
export * from "./queue";
|
|
23
23
|
export * from "../reference";
|
|
@@ -26,10 +26,10 @@ export * from "../reference";
|
|
|
26
26
|
|
|
27
27
|
RpcCodecs.registerCodec(TreeKind.Checksum, {
|
|
28
28
|
async rpcReceive(before: Checksum, q: RpcReceiveQueue): Promise<Checksum> {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
return updateIfChanged(before, {
|
|
30
|
+
algorithm: await q.receive(before.algorithm),
|
|
31
|
+
value: await q.receive(before.value),
|
|
32
|
+
});
|
|
33
33
|
},
|
|
34
34
|
|
|
35
35
|
async rpcSend(after: Checksum, q: RpcSendQueue): Promise<void> {
|
|
@@ -40,15 +40,15 @@ RpcCodecs.registerCodec(TreeKind.Checksum, {
|
|
|
40
40
|
|
|
41
41
|
RpcCodecs.registerCodec(TreeKind.FileAttributes, {
|
|
42
42
|
async rpcReceive(before: FileAttributes, q: RpcReceiveQueue): Promise<FileAttributes> {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
return updateIfChanged(before, {
|
|
44
|
+
creationDate: await q.receive(before.creationDate),
|
|
45
|
+
lastModifiedTime: await q.receive(before.lastModifiedTime),
|
|
46
|
+
lastAccessTime: await q.receive(before.lastAccessTime),
|
|
47
|
+
isReadable: await q.receive(before.isReadable),
|
|
48
|
+
isWritable: await q.receive(before.isWritable),
|
|
49
|
+
isExecutable: await q.receive(before.isExecutable),
|
|
50
|
+
size: await q.receive(before.size),
|
|
51
|
+
});
|
|
52
52
|
},
|
|
53
53
|
|
|
54
54
|
async rpcSend(after: FileAttributes, q: RpcSendQueue): Promise<void> {
|
|
@@ -63,11 +63,11 @@ RpcCodecs.registerCodec(TreeKind.FileAttributes, {
|
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
RpcCodecs.registerCodec(MarkersKind.Markers, {
|
|
66
|
-
async rpcReceive(before: Markers, q: RpcReceiveQueue): Promise<
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
async rpcReceive(before: Markers, q: RpcReceiveQueue): Promise<Markers> {
|
|
67
|
+
return updateIfChanged(before, {
|
|
68
|
+
id: await q.receive(before.id),
|
|
69
|
+
markers: (await q.receiveList(before.markers))!,
|
|
70
|
+
});
|
|
71
71
|
},
|
|
72
72
|
|
|
73
73
|
async rpcSend(after: Markers, q: RpcSendQueue): Promise<void> {
|
|
@@ -79,10 +79,10 @@ RpcCodecs.registerCodec(MarkersKind.Markers, {
|
|
|
79
79
|
// Register codecs for all Java markers with additional properties
|
|
80
80
|
RpcCodecs.registerCodec(MarkersKind.SearchResult, {
|
|
81
81
|
async rpcReceive(before: SearchResult, q: RpcReceiveQueue): Promise<SearchResult> {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
return updateIfChanged(before, {
|
|
83
|
+
id: await q.receive(before.id),
|
|
84
|
+
description: await q.receive(before.description),
|
|
85
|
+
});
|
|
86
86
|
},
|
|
87
87
|
|
|
88
88
|
async rpcSend(after: SearchResult, q: RpcSendQueue): Promise<void> {
|
|
@@ -93,11 +93,11 @@ RpcCodecs.registerCodec(MarkersKind.SearchResult, {
|
|
|
93
93
|
|
|
94
94
|
RpcCodecs.registerCodec(MarkersKind.MarkupError, {
|
|
95
95
|
async rpcReceive(before: MarkupError, q: RpcReceiveQueue): Promise<MarkupError> {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
return updateIfChanged(before, {
|
|
97
|
+
id: await q.receive(before.id),
|
|
98
|
+
message: await q.receive(before.message),
|
|
99
|
+
detail: await q.receive(before.detail),
|
|
100
|
+
});
|
|
101
101
|
},
|
|
102
102
|
|
|
103
103
|
async rpcSend(after: MarkupError, q: RpcSendQueue): Promise<void> {
|
|
@@ -109,11 +109,11 @@ RpcCodecs.registerCodec(MarkersKind.MarkupError, {
|
|
|
109
109
|
|
|
110
110
|
RpcCodecs.registerCodec(MarkersKind.MarkupWarn, {
|
|
111
111
|
async rpcReceive(before: MarkupWarn, q: RpcReceiveQueue): Promise<MarkupWarn> {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
return updateIfChanged(before, {
|
|
113
|
+
id: await q.receive(before.id),
|
|
114
|
+
message: await q.receive(before.message),
|
|
115
|
+
detail: await q.receive(before.detail),
|
|
116
|
+
});
|
|
117
117
|
},
|
|
118
118
|
|
|
119
119
|
async rpcSend(after: MarkupWarn, q: RpcSendQueue): Promise<void> {
|
|
@@ -125,11 +125,11 @@ RpcCodecs.registerCodec(MarkersKind.MarkupWarn, {
|
|
|
125
125
|
|
|
126
126
|
RpcCodecs.registerCodec(MarkersKind.MarkupInfo, {
|
|
127
127
|
async rpcReceive(before: MarkupInfo, q: RpcReceiveQueue): Promise<MarkupInfo> {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
128
|
+
return updateIfChanged(before, {
|
|
129
|
+
id: await q.receive(before.id),
|
|
130
|
+
message: await q.receive(before.message),
|
|
131
|
+
detail: await q.receive(before.detail),
|
|
132
|
+
});
|
|
133
133
|
},
|
|
134
134
|
|
|
135
135
|
async rpcSend(after: MarkupInfo, q: RpcSendQueue): Promise<void> {
|
|
@@ -141,11 +141,11 @@ RpcCodecs.registerCodec(MarkersKind.MarkupInfo, {
|
|
|
141
141
|
|
|
142
142
|
RpcCodecs.registerCodec(MarkersKind.MarkupDebug, {
|
|
143
143
|
async rpcReceive(before: MarkupDebug, q: RpcReceiveQueue): Promise<MarkupDebug> {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
return updateIfChanged(before, {
|
|
145
|
+
id: await q.receive(before.id),
|
|
146
|
+
message: await q.receive(before.message),
|
|
147
|
+
detail: await q.receive(before.detail),
|
|
148
|
+
});
|
|
149
149
|
},
|
|
150
150
|
|
|
151
151
|
async rpcSend(after: MarkupDebug, q: RpcSendQueue): Promise<void> {
|
package/src/rpc/queue.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import * as rpc from "vscode-jsonrpc/node";
|
|
17
17
|
import {emptyMarkers, Markers} from "../markers";
|
|
18
18
|
import {saveTrace, trace} from "./trace";
|
|
19
|
-
import {
|
|
19
|
+
import {updateIfChanged} from "../util";
|
|
20
20
|
import {isRef, ReferenceMap} from "../reference";
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -288,10 +288,10 @@ export class RpcReceiveQueue {
|
|
|
288
288
|
}
|
|
289
289
|
return this.receive(markers, async m => {
|
|
290
290
|
return saveTrace(this.trace, async () => {
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
291
|
+
return updateIfChanged(markers!, {
|
|
292
|
+
id: await this.receive(m.id),
|
|
293
|
+
markers: (await this.receiveList(m.markers))!,
|
|
294
|
+
});
|
|
295
295
|
})
|
|
296
296
|
})
|
|
297
297
|
}
|
|
@@ -397,9 +397,7 @@ export class RpcReceiveQueue {
|
|
|
397
397
|
}
|
|
398
398
|
|
|
399
399
|
private newObj<T>(type: string): T {
|
|
400
|
-
return {
|
|
401
|
-
kind: type
|
|
402
|
-
} as T;
|
|
400
|
+
return {kind: type} as T;
|
|
403
401
|
}
|
|
404
402
|
}
|
|
405
403
|
|
|
@@ -182,7 +182,7 @@ function preloadCoreModules(logger?: rpc.Logger) {
|
|
|
182
182
|
* same package is installed in multiple node_modules directories.
|
|
183
183
|
*/
|
|
184
184
|
function setupSharedDependencies(targetModulePath: string, logger?: rpc.Logger) {
|
|
185
|
-
const sharedDeps = ['@openrewrite/rewrite', 'vscode-jsonrpc'];
|
|
185
|
+
const sharedDeps = ['@openrewrite/rewrite', 'vscode-jsonrpc', 'mutative'];
|
|
186
186
|
const targetDir = path.dirname(targetModulePath);
|
|
187
187
|
|
|
188
188
|
sharedDeps.forEach(depName => {
|
|
@@ -17,11 +17,11 @@ import * as rpc from "vscode-jsonrpc/node";
|
|
|
17
17
|
import * as path from "path";
|
|
18
18
|
import {ExecutionContext} from "../../execution";
|
|
19
19
|
import {randomId, UUID} from "../../uuid";
|
|
20
|
-
import {produce} from "immer";
|
|
21
20
|
import {SourceFile} from "../../tree";
|
|
22
21
|
import {Parsers} from "../../parser";
|
|
23
22
|
import {withMetrics} from "./metrics";
|
|
24
23
|
import {DEFAULT_EXCLUSIONS, ProjectParser} from "../../javascript";
|
|
24
|
+
import {replaceMarkerByKind} from "../../markers";
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Response item with object ID and source file type for proper deserialization.
|
|
@@ -82,9 +82,7 @@ export class ParseProject {
|
|
|
82
82
|
const id = randomId();
|
|
83
83
|
localObjects.set(id, async (id: string) => {
|
|
84
84
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
85
|
-
return
|
|
86
|
-
draft.id = id;
|
|
87
|
-
});
|
|
85
|
+
return { ...sourceFile, id };
|
|
88
86
|
});
|
|
89
87
|
resultItems.push({
|
|
90
88
|
id,
|
|
@@ -102,9 +100,7 @@ export class ParseProject {
|
|
|
102
100
|
const id = randomId();
|
|
103
101
|
localObjects.set(id, async (id: string) => {
|
|
104
102
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
105
|
-
return
|
|
106
|
-
draft.id = id;
|
|
107
|
-
});
|
|
103
|
+
return { ...sourceFile, id };
|
|
108
104
|
});
|
|
109
105
|
resultItems.push({
|
|
110
106
|
id,
|
|
@@ -122,9 +118,7 @@ export class ParseProject {
|
|
|
122
118
|
const id = randomId();
|
|
123
119
|
localObjects.set(id, async (id: string) => {
|
|
124
120
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
125
|
-
return
|
|
126
|
-
draft.id = id;
|
|
127
|
-
});
|
|
121
|
+
return { ...sourceFile, id };
|
|
128
122
|
});
|
|
129
123
|
resultItems.push({
|
|
130
124
|
id,
|
|
@@ -142,9 +136,7 @@ export class ParseProject {
|
|
|
142
136
|
const id = randomId();
|
|
143
137
|
localObjects.set(id, async (id: string) => {
|
|
144
138
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
145
|
-
return
|
|
146
|
-
draft.id = id;
|
|
147
|
-
});
|
|
139
|
+
return { ...sourceFile, id };
|
|
148
140
|
});
|
|
149
141
|
resultItems.push({
|
|
150
142
|
id,
|
|
@@ -173,12 +165,13 @@ export class ParseProject {
|
|
|
173
165
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
174
166
|
// Add PrettierStyle marker if Prettier is available
|
|
175
167
|
const prettierMarker = await prettierLoader.getConfigMarker(filePath);
|
|
176
|
-
return
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
168
|
+
return {
|
|
169
|
+
...sourceFile,
|
|
170
|
+
id,
|
|
171
|
+
markers: prettierMarker
|
|
172
|
+
? replaceMarkerByKind(sourceFile.markers, prettierMarker)
|
|
173
|
+
: sourceFile.markers
|
|
174
|
+
};
|
|
182
175
|
});
|
|
183
176
|
resultItems.push({
|
|
184
177
|
id,
|
|
@@ -202,10 +195,11 @@ export class ParseProject {
|
|
|
202
195
|
// Store thunks that add the Autodetect marker
|
|
203
196
|
for (const {id, sourceFile} of parsedFiles) {
|
|
204
197
|
localObjects.set(id, async (newId: string) => {
|
|
205
|
-
return
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
198
|
+
return {
|
|
199
|
+
...sourceFile,
|
|
200
|
+
id: newId,
|
|
201
|
+
markers: replaceMarkerByKind(sourceFile.markers, autodetectMarker)
|
|
202
|
+
};
|
|
209
203
|
});
|
|
210
204
|
resultItems.push({
|
|
211
205
|
id,
|
|
@@ -224,9 +218,7 @@ export class ParseProject {
|
|
|
224
218
|
const id = randomId();
|
|
225
219
|
localObjects.set(id, async (id: string) => {
|
|
226
220
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
227
|
-
return
|
|
228
|
-
draft.id = id;
|
|
229
|
-
});
|
|
221
|
+
return { ...sourceFile, id };
|
|
230
222
|
});
|
|
231
223
|
resultItems.push({
|
|
232
224
|
id,
|
|
@@ -244,9 +236,7 @@ export class ParseProject {
|
|
|
244
236
|
const id = randomId();
|
|
245
237
|
localObjects.set(id, async (id: string) => {
|
|
246
238
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
247
|
-
return
|
|
248
|
-
draft.id = id;
|
|
249
|
-
});
|
|
239
|
+
return { ...sourceFile, id };
|
|
250
240
|
});
|
|
251
241
|
resultItems.push({
|
|
252
242
|
id,
|
|
@@ -264,9 +254,7 @@ export class ParseProject {
|
|
|
264
254
|
const id = randomId();
|
|
265
255
|
localObjects.set(id, async (id: string) => {
|
|
266
256
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
267
|
-
return
|
|
268
|
-
draft.id = id;
|
|
269
|
-
});
|
|
257
|
+
return { ...sourceFile, id };
|
|
270
258
|
});
|
|
271
259
|
resultItems.push({
|
|
272
260
|
id,
|
package/src/rpc/request/parse.ts
CHANGED
|
@@ -17,7 +17,6 @@ import * as rpc from "vscode-jsonrpc/node";
|
|
|
17
17
|
import {ExecutionContext} from "../../execution";
|
|
18
18
|
import {ParserInput, parserInputFile, Parsers, ParserType} from "../../parser";
|
|
19
19
|
import {randomId, UUID} from "../../uuid";
|
|
20
|
-
import {produce} from "immer";
|
|
21
20
|
import {SourceFile} from "../../tree";
|
|
22
21
|
import {withMetrics} from "./metrics";
|
|
23
22
|
import * as path from "path";
|
|
@@ -70,9 +69,7 @@ export class Parse {
|
|
|
70
69
|
const id = randomId();
|
|
71
70
|
localObjects.set(id, async (id: string) => {
|
|
72
71
|
const sourceFile: SourceFile = (await generator.next()).value;
|
|
73
|
-
return
|
|
74
|
-
draft.id = id;
|
|
75
|
-
});
|
|
72
|
+
return { ...sourceFile, id };
|
|
76
73
|
});
|
|
77
74
|
resultIds.push(id);
|
|
78
75
|
}
|
package/src/text/rpc.ts
CHANGED
|
@@ -15,31 +15,31 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import {RpcCodecs, RpcReceiveQueue, RpcSendQueue} from "../rpc";
|
|
17
17
|
import {PlainText} from "./tree";
|
|
18
|
-
import {
|
|
18
|
+
import {updateIfChanged} from "../util";
|
|
19
19
|
|
|
20
20
|
async function receiveSnippet(before: PlainText.Snippet, q: RpcReceiveQueue): Promise<PlainText.Snippet | undefined> {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
return updateIfChanged(before, {
|
|
22
|
+
id: await q.receive(before.id),
|
|
23
|
+
markers: await q.receive(before.markers),
|
|
24
|
+
text: await q.receive(before.text),
|
|
25
|
+
});
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
// Register codec for all
|
|
28
|
+
// Register codec for all PlainText AST node types
|
|
29
29
|
for (const kind of Object.values(PlainText.Kind)) {
|
|
30
30
|
RpcCodecs.registerCodec(kind as string, {
|
|
31
31
|
async rpcReceive(before: PlainText, q: RpcReceiveQueue): Promise<PlainText> {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
return updateIfChanged(before, {
|
|
33
|
+
id: await q.receive(before.id),
|
|
34
|
+
markers: await q.receive(before.markers),
|
|
35
|
+
sourcePath: await q.receive(before.sourcePath),
|
|
36
|
+
charsetName: await q.receive(before.charsetName),
|
|
37
|
+
charsetBomMarked: await q.receive(before.charsetBomMarked),
|
|
38
|
+
checksum: await q.receive(before.checksum),
|
|
39
|
+
fileAttributes: await q.receive(before.fileAttributes),
|
|
40
|
+
text: await q.receive(before.text),
|
|
41
|
+
snippets: (await q.receiveList(before.snippets, snippet => receiveSnippet(snippet, q)))!,
|
|
42
|
+
});
|
|
43
43
|
},
|
|
44
44
|
|
|
45
45
|
async rpcSend(after: PlainText, q: RpcSendQueue): Promise<void> {
|