@openrewrite/rewrite 8.62.0 → 8.62.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/java/rpc.d.ts +3 -3
- package/dist/java/rpc.d.ts.map +1 -1
- package/dist/java/rpc.js +6 -6
- package/dist/java/rpc.js.map +1 -1
- package/dist/java/tree.d.ts +31 -33
- package/dist/java/tree.d.ts.map +1 -1
- package/dist/java/tree.js +125 -7
- package/dist/java/tree.js.map +1 -1
- package/dist/java/type.d.ts +70 -57
- package/dist/java/type.d.ts.map +1 -1
- package/dist/java/type.js +454 -25
- package/dist/java/type.js.map +1 -1
- package/dist/java/visitor.d.ts +4 -4
- package/dist/java/visitor.d.ts.map +1 -1
- package/dist/java/visitor.js +34 -28
- package/dist/java/visitor.js.map +1 -1
- package/dist/javascript/assertions.d.ts +3 -0
- package/dist/javascript/assertions.d.ts.map +1 -1
- package/dist/javascript/assertions.js +78 -1
- package/dist/javascript/assertions.js.map +1 -1
- package/dist/javascript/format.js +4 -4
- package/dist/javascript/format.js.map +1 -1
- package/dist/javascript/parser.d.ts +1 -1
- package/dist/javascript/parser.d.ts.map +1 -1
- package/dist/javascript/parser.js +38 -11
- package/dist/javascript/parser.js.map +1 -1
- package/dist/javascript/rpc.js +1 -4
- package/dist/javascript/rpc.js.map +1 -1
- package/dist/javascript/tree.d.ts +33 -35
- package/dist/javascript/tree.d.ts.map +1 -1
- package/dist/javascript/tree.js +70 -17
- package/dist/javascript/tree.js.map +1 -1
- package/dist/javascript/type-mapping.d.ts +44 -8
- package/dist/javascript/type-mapping.d.ts.map +1 -1
- package/dist/javascript/type-mapping.js +506 -101
- package/dist/javascript/type-mapping.js.map +1 -1
- package/dist/javascript/visitor.d.ts +2 -2
- package/dist/javascript/visitor.d.ts.map +1 -1
- package/dist/javascript/visitor.js.map +1 -1
- package/dist/json/tree.d.ts +0 -2
- package/dist/json/tree.d.ts.map +1 -1
- package/dist/json/tree.js +12 -2
- package/dist/json/tree.js.map +1 -1
- package/dist/reference.js +1 -1
- package/dist/reference.js.map +1 -1
- package/dist/rpc/queue.d.ts +0 -3
- package/dist/rpc/queue.d.ts.map +1 -1
- package/dist/rpc/queue.js +6 -6
- package/dist/rpc/queue.js.map +1 -1
- package/dist/rpc/request/parse.d.ts.map +1 -1
- package/dist/rpc/request/parse.js.map +1 -1
- package/dist/rpc/rewrite-rpc.d.ts +1 -0
- package/dist/rpc/rewrite-rpc.d.ts.map +1 -1
- package/dist/rpc/rewrite-rpc.js +1 -1
- package/dist/rpc/rewrite-rpc.js.map +1 -1
- package/dist/rpc/server.js +1 -1
- package/dist/test/rewrite-test.d.ts +1 -1
- package/dist/test/rewrite-test.d.ts.map +1 -1
- package/dist/test/rewrite-test.js +18 -2
- package/dist/test/rewrite-test.js.map +1 -1
- package/dist/text/tree.d.ts +0 -2
- package/dist/text/tree.d.ts.map +1 -1
- package/dist/text/tree.js +4 -17
- package/dist/text/tree.js.map +1 -1
- package/dist/tree.d.ts +1 -0
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +14 -0
- package/dist/tree.js.map +1 -1
- package/dist/version.txt +1 -1
- package/package.json +3 -3
- package/src/java/rpc.ts +18 -15
- package/src/java/tree.ts +68 -38
- package/src/java/type.ts +475 -74
- package/src/java/visitor.ts +45 -39
- package/src/javascript/assertions.ts +52 -1
- package/src/javascript/format.ts +4 -4
- package/src/javascript/parser.ts +51 -18
- package/src/javascript/rpc.ts +8 -10
- package/src/javascript/tree.ts +34 -35
- package/src/javascript/type-mapping.ts +519 -47
- package/src/javascript/visitor.ts +5 -5
- package/src/json/tree.ts +1 -2
- package/src/reference.ts +1 -1
- package/src/rpc/queue.ts +8 -12
- package/src/rpc/request/parse.ts +1 -1
- package/src/rpc/rewrite-rpc.ts +3 -2
- package/src/rpc/server.ts +1 -1
- package/src/test/rewrite-test.ts +19 -3
- package/src/text/tree.ts +0 -1
- package/src/tree.ts +15 -0
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
import {mapAsync} from "../util";
|
|
19
19
|
import {SourceFile} from "../tree";
|
|
20
20
|
import {ValidImmerRecipeReturnType} from "../visitor";
|
|
21
|
-
import {Expression, J,
|
|
21
|
+
import {Expression, J, Type, JavaVisitor, NameTree, Statement, TypedTree} from "../java";
|
|
22
22
|
import {createDraft, Draft, finishDraft} from "immer";
|
|
23
23
|
import {isJavaScript, JS, JSX} from "./tree";
|
|
24
24
|
import ComputedPropertyName = JS.ComputedPropertyName;
|
|
@@ -45,7 +45,7 @@ export class JavaScriptVisitor<P> extends JavaVisitor<P> {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
// noinspection JSUnusedLocalSymbols
|
|
48
|
-
protected override async visitType(javaType:
|
|
48
|
+
protected override async visitType(javaType: Type | undefined, p: P): Promise<Type | undefined> {
|
|
49
49
|
return javaType;
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -254,7 +254,7 @@ export class JavaScriptVisitor<P> extends JavaVisitor<P> {
|
|
|
254
254
|
draft.function = await this.visitOptionalRightPadded(functionCall.function, p);
|
|
255
255
|
draft.typeParameters = await this.visitOptionalContainer(functionCall.typeParameters, p);
|
|
256
256
|
draft.arguments = await this.visitContainer(functionCall.arguments, p);
|
|
257
|
-
draft.functionType = await this.visitType(functionCall.functionType, p) as
|
|
257
|
+
draft.functionType = await this.visitType(functionCall.functionType, p) as Type.Method | undefined;
|
|
258
258
|
});
|
|
259
259
|
}
|
|
260
260
|
|
|
@@ -785,7 +785,7 @@ export class JavaScriptVisitor<P> extends JavaVisitor<P> {
|
|
|
785
785
|
draft.name = await this.visitDefined<ComputedPropertyName>(computedPropMethod.name, p);
|
|
786
786
|
draft.parameters = await this.visitContainer(computedPropMethod.parameters, p);
|
|
787
787
|
draft.body = computedPropMethod.body && await this.visitDefined<J.Block>(computedPropMethod.body, p);
|
|
788
|
-
draft.methodType = computedPropMethod.methodType && (await this.visitType(computedPropMethod.methodType, p) as
|
|
788
|
+
draft.methodType = computedPropMethod.methodType && (await this.visitType(computedPropMethod.methodType, p) as Type.Method);
|
|
789
789
|
});
|
|
790
790
|
}
|
|
791
791
|
|
|
@@ -842,7 +842,7 @@ export class JavaScriptVisitor<P> extends JavaVisitor<P> {
|
|
|
842
842
|
draft.propertyName = bindingElement.propertyName && await this.visitRightPadded(bindingElement.propertyName, p);
|
|
843
843
|
draft.name = await this.visitDefined<TypedTree>(bindingElement.name, p);
|
|
844
844
|
draft.initializer = bindingElement.initializer && await this.visitLeftPadded(bindingElement.initializer, p);
|
|
845
|
-
draft.variableType = bindingElement.variableType && (await this.visitType(bindingElement.variableType, p) as
|
|
845
|
+
draft.variableType = bindingElement.variableType && (await this.visitType(bindingElement.variableType, p) as Type.Variable);
|
|
846
846
|
});
|
|
847
847
|
}
|
|
848
848
|
|
package/src/json/tree.ts
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import {Markers} from "../markers";
|
|
17
|
-
import {SourceFile, Tree
|
|
17
|
+
import {SourceFile, Tree} from "../tree";
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
export interface Json extends Tree {
|
|
@@ -23,7 +23,6 @@ export interface Json extends Tree {
|
|
|
23
23
|
|
|
24
24
|
export namespace Json {
|
|
25
25
|
export const Kind = {
|
|
26
|
-
...TreeKind,
|
|
27
26
|
Array: "org.openrewrite.json.tree.Json$Array",
|
|
28
27
|
Document: "org.openrewrite.json.tree.Json$Document",
|
|
29
28
|
Empty: "org.openrewrite.json.tree.Json$Empty",
|
package/src/reference.ts
CHANGED
|
@@ -44,7 +44,7 @@ export function asRef<T extends {} | undefined>(obj: T): T extends undefined ? u
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
export function isRef(obj: any): obj is Reference {
|
|
47
|
-
return obj !== undefined && obj[REFERENCE_KEY] === true;
|
|
47
|
+
return obj !== undefined && obj !== null && obj[REFERENCE_KEY] === true;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
export class ReferenceMap {
|
package/src/rpc/queue.ts
CHANGED
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {emptyMarkers,
|
|
16
|
+
import {emptyMarkers, Markers} from "../markers";
|
|
17
17
|
import {saveTrace, trace} from "./trace";
|
|
18
18
|
import {createDraft, finishDraft} from "immer";
|
|
19
|
-
import {
|
|
19
|
+
import {isRef, ReferenceMap} from "../reference";
|
|
20
20
|
import {Writable} from "node:stream";
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -106,16 +106,6 @@ export class RpcSendQueue {
|
|
|
106
106
|
this.q.push(d);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
-
sendMarkers<T extends { markers: Markers }>(parent: T, markersFn: (parent: T) => any): Promise<void> {
|
|
110
|
-
return this.getAndSend(parent, t2 => asRef(markersFn(t2)), async (markersRef: Markers & Reference) => {
|
|
111
|
-
await this.getAndSend(markersRef, m => m.id);
|
|
112
|
-
await this.getAndSendList(markersRef,
|
|
113
|
-
(m) => m.markers,
|
|
114
|
-
(marker: Marker) => marker.id
|
|
115
|
-
);
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
109
|
getAndSend<T, U>(parent: T,
|
|
120
110
|
value: (parent: T) => U | undefined,
|
|
121
111
|
onChange?: (value: U) => Promise<any>): Promise<void> {
|
|
@@ -298,6 +288,12 @@ export class RpcReceiveQueue {
|
|
|
298
288
|
before = message.valueType === undefined ?
|
|
299
289
|
message.value :
|
|
300
290
|
this.newObj(message.valueType);
|
|
291
|
+
if (ref !== undefined) {
|
|
292
|
+
// For an object like JavaType that we will mutate in place rather than using
|
|
293
|
+
// immutable updates because of its cyclic nature, the before instance will ultimately
|
|
294
|
+
// be the same as the after instance below.
|
|
295
|
+
this.refs.set(ref, before);
|
|
296
|
+
}
|
|
301
297
|
}
|
|
302
298
|
// Intentional fall-through...
|
|
303
299
|
case RpcObjectState.CHANGE:
|
package/src/rpc/request/parse.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
import * as rpc from "vscode-jsonrpc/node";
|
|
17
17
|
import {ExecutionContext} from "../../execution";
|
|
18
18
|
import {UUID} from "node:crypto";
|
|
19
|
-
import {ParserInput, Parsers} from "../../parser";
|
|
19
|
+
import {Parser, ParserInput, Parsers} from "../../parser";
|
|
20
20
|
import {randomId} from "../../uuid";
|
|
21
21
|
import {produce} from "immer";
|
|
22
22
|
import {SourceFile} from "../../tree";
|
package/src/rpc/rewrite-rpc.ts
CHANGED
|
@@ -115,7 +115,7 @@ export class RewriteRpc {
|
|
|
115
115
|
);
|
|
116
116
|
}, this.options.traceGetObjectInput);
|
|
117
117
|
|
|
118
|
-
const remoteObject = await q.receive<P>(
|
|
118
|
+
const remoteObject = await q.receive<P>(localObject);
|
|
119
119
|
|
|
120
120
|
const eof = (await q.take());
|
|
121
121
|
if (eof.state !== RpcObjectState.END_OF_OBJECT) {
|
|
@@ -152,7 +152,8 @@ export class RewriteRpc {
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
async print(tree: SourceFile): Promise<string>;
|
|
155
|
-
async print
|
|
155
|
+
async print(tree: Tree, cursor: Cursor): Promise<string>;
|
|
156
|
+
async print(tree: Tree, cursor?: Cursor): Promise<string> {
|
|
156
157
|
if (!cursor && !isSourceFile(tree)) {
|
|
157
158
|
throw new Error("Cursor is required for non-SourceFile trees");
|
|
158
159
|
}
|
package/src/rpc/server.ts
CHANGED
|
@@ -28,7 +28,7 @@ import "../java";
|
|
|
28
28
|
import "../javascript";
|
|
29
29
|
|
|
30
30
|
// Not possible to set the stack size when executing from npx for security reasons
|
|
31
|
-
require('v8').setFlagsFromString('--stack-size=
|
|
31
|
+
require('v8').setFlagsFromString('--stack-size=8000');
|
|
32
32
|
|
|
33
33
|
interface ProgramOptions {
|
|
34
34
|
logFile?: string;
|
package/src/test/rewrite-test.ts
CHANGED
|
@@ -61,8 +61,20 @@ export class RecipeSpec {
|
|
|
61
61
|
this.dataTableAssertions[name] = allRows;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
async rewriteRun(...sourceSpecs: SourceSpec<any>[]): Promise<void> {
|
|
65
|
-
|
|
64
|
+
async rewriteRun(...sourceSpecs: (SourceSpec<any> | Generator<SourceSpec<any>, void, unknown>)[]): Promise<void> {
|
|
65
|
+
// Flatten generators into a list of sourceSpecs
|
|
66
|
+
const flattenedSpecs: SourceSpec<any>[] = [];
|
|
67
|
+
for (const specOrGenerator of sourceSpecs) {
|
|
68
|
+
if (specOrGenerator && typeof (specOrGenerator as any).next === 'function') {
|
|
69
|
+
for (const spec of specOrGenerator as Generator<SourceSpec<any>, void, unknown>) {
|
|
70
|
+
flattenedSpecs.push(spec);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
flattenedSpecs.push(specOrGenerator as SourceSpec<any>);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const specsByKind = flattenedSpecs.reduce((groups, spec) => {
|
|
66
78
|
const kind = spec.kind;
|
|
67
79
|
if (!groups[kind]) {
|
|
68
80
|
groups[kind] = [];
|
|
@@ -179,7 +191,11 @@ export class RecipeSpec {
|
|
|
179
191
|
const b = spec.beforeRecipe ? spec.beforeRecipe(sourceFile) : sourceFile;
|
|
180
192
|
if (b !== undefined) {
|
|
181
193
|
if (b instanceof Promise) {
|
|
182
|
-
|
|
194
|
+
const mapped = await b;
|
|
195
|
+
if (mapped === undefined) {
|
|
196
|
+
throw new Error("Expected beforeRecipe to return a SourceFile, but got undefined. Did you forget a return statement?");
|
|
197
|
+
}
|
|
198
|
+
return [spec, mapped];
|
|
183
199
|
}
|
|
184
200
|
return [spec, b as SourceFile];
|
|
185
201
|
}
|
package/src/text/tree.ts
CHANGED
package/src/tree.ts
CHANGED
|
@@ -77,6 +77,21 @@ export class Cursor {
|
|
|
77
77
|
return path;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
parentTree(level: number = 1): Cursor | undefined {
|
|
81
|
+
let c: Cursor | undefined = this.parent;
|
|
82
|
+
let treeCount = 0;
|
|
83
|
+
while (c) {
|
|
84
|
+
if (isTree(c.value)) {
|
|
85
|
+
treeCount++;
|
|
86
|
+
if (treeCount === level) {
|
|
87
|
+
return c;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
c = c.parent;
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
|
|
80
95
|
firstEnclosing<T>(match: (value: any) => value is T): T | undefined {
|
|
81
96
|
let c: Cursor | undefined = this;
|
|
82
97
|
while (c) {
|