@openrewrite/rewrite 8.63.3 → 8.63.4

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 (55) hide show
  1. package/dist/java/rpc.d.ts +2 -2
  2. package/dist/java/rpc.d.ts.map +1 -1
  3. package/dist/java/rpc.js +10 -4
  4. package/dist/java/rpc.js.map +1 -1
  5. package/dist/java/type.d.ts +1 -1
  6. package/dist/java/type.d.ts.map +1 -1
  7. package/dist/java/type.js +3 -3
  8. package/dist/java/type.js.map +1 -1
  9. package/dist/javascript/assertions.d.ts +1 -1
  10. package/dist/javascript/assertions.d.ts.map +1 -1
  11. package/dist/javascript/assertions.js +35 -65
  12. package/dist/javascript/assertions.js.map +1 -1
  13. package/dist/javascript/comparator.d.ts +2 -2
  14. package/dist/javascript/comparator.d.ts.map +1 -1
  15. package/dist/javascript/comparator.js.map +1 -1
  16. package/dist/javascript/dependency-workspace.d.ts +44 -0
  17. package/dist/javascript/dependency-workspace.d.ts.map +1 -0
  18. package/dist/javascript/dependency-workspace.js +335 -0
  19. package/dist/javascript/dependency-workspace.js.map +1 -0
  20. package/dist/javascript/parser.d.ts.map +1 -1
  21. package/dist/javascript/parser.js +5 -2
  22. package/dist/javascript/parser.js.map +1 -1
  23. package/dist/javascript/preconditions.js +2 -2
  24. package/dist/javascript/preconditions.js.map +1 -1
  25. package/dist/javascript/templating.d.ts +110 -5
  26. package/dist/javascript/templating.d.ts.map +1 -1
  27. package/dist/javascript/templating.js +412 -38
  28. package/dist/javascript/templating.js.map +1 -1
  29. package/dist/javascript/type-mapping.js +2 -2
  30. package/dist/javascript/type-mapping.js.map +1 -1
  31. package/dist/rpc/queue.d.ts +1 -0
  32. package/dist/rpc/queue.d.ts.map +1 -1
  33. package/dist/rpc/queue.js +11 -1
  34. package/dist/rpc/queue.js.map +1 -1
  35. package/dist/rpc/server.d.ts.map +1 -1
  36. package/dist/rpc/server.js +5 -0
  37. package/dist/rpc/server.js.map +1 -1
  38. package/dist/test/rewrite-test.d.ts +1 -1
  39. package/dist/test/rewrite-test.d.ts.map +1 -1
  40. package/dist/test/rewrite-test.js +27 -5
  41. package/dist/test/rewrite-test.js.map +1 -1
  42. package/dist/version.txt +1 -1
  43. package/package.json +1 -1
  44. package/src/java/rpc.ts +4 -4
  45. package/src/java/type.ts +3 -3
  46. package/src/javascript/assertions.ts +14 -21
  47. package/src/javascript/comparator.ts +2 -2
  48. package/src/javascript/dependency-workspace.ts +317 -0
  49. package/src/javascript/parser.ts +6 -3
  50. package/src/javascript/preconditions.ts +2 -2
  51. package/src/javascript/templating.ts +535 -44
  52. package/src/javascript/type-mapping.ts +2 -2
  53. package/src/rpc/queue.ts +11 -1
  54. package/src/rpc/server.ts +5 -0
  55. package/src/test/rewrite-test.ts +11 -3
@@ -196,7 +196,7 @@ export class JavaScriptTypeMapping {
196
196
  private wrapperType(declaringType: (Type.FullyQualified & Type.Primitive) | Type.FullyQualified) {
197
197
  if (declaringType == Type.Primitive.String && this.stringWrapperType) {
198
198
  return this.getType(this.stringWrapperType) as Type.FullyQualified;
199
- } else if ((declaringType == Type.Primitive.Double || declaringType == Type.Primitive.Long) && this.numberWrapperType) {
199
+ } else if ((declaringType == Type.Primitive.Double || declaringType == Type.Primitive.BigInt) && this.numberWrapperType) {
200
200
  return this.getType(this.numberWrapperType) as Type.FullyQualified;
201
201
  } else if (declaringType == Type.Primitive.Boolean && this.booleanWrapperType) {
202
202
  return this.getType(this.booleanWrapperType) as Type.FullyQualified;
@@ -808,7 +808,7 @@ export class JavaScriptTypeMapping {
808
808
  type.flags === ts.TypeFlags.BigIntLiteral ||
809
809
  type.flags === ts.TypeFlags.BigIntLike
810
810
  ) {
811
- return Type.Primitive.Long;
811
+ return Type.Primitive.BigInt;
812
812
  } else if (
813
813
  (type.symbol !== undefined && type.symbol === this.regExpSymbol) ||
814
814
  this.checker.typeToString(type) === "RegExp"
package/src/rpc/queue.ts CHANGED
@@ -150,7 +150,8 @@ export class RpcSendQueue {
150
150
  return saveTrace(this.trace, async () => {
151
151
  if (before === after) {
152
152
  this.put({state: RpcObjectState.NO_CHANGE});
153
- } else if (before === undefined) {
153
+ } else if (before === undefined || (after !== undefined && this.typesAreDifferent(after, before))) {
154
+ // Treat as ADD when before is undefined OR types differ (it's a new object, not a change)
154
155
  await this.add(after, onChange);
155
156
  } else if (after === undefined) {
156
157
  this.put({state: RpcObjectState.DELETE});
@@ -182,6 +183,9 @@ export class RpcSendQueue {
182
183
  const aBefore = before ? before[beforePos] : undefined;
183
184
  if (aBefore === anAfter) {
184
185
  this.put({state: RpcObjectState.NO_CHANGE});
186
+ } else if (anAfter !== undefined && this.typesAreDifferent(anAfter, aBefore)) {
187
+ // Type changed - treat as ADD
188
+ await this.add(anAfter, onChangeRun);
185
189
  } else {
186
190
  this.put({state: RpcObjectState.CHANGE});
187
191
  await this.doChange(anAfter, aBefore, onChangeRun, RpcCodecs.forInstance(anAfter, this.sourceFileType));
@@ -248,6 +252,12 @@ export class RpcSendQueue {
248
252
  }
249
253
  }
250
254
 
255
+ private typesAreDifferent(after: any, before: any): boolean {
256
+ const afterKind = after !== undefined && after !== null && typeof after === "object" ? after["kind"] : undefined;
257
+ const beforeKind = before !== undefined && before !== null && typeof before === "object" ? before["kind"] : undefined;
258
+ return afterKind !== undefined && beforeKind !== undefined && afterKind !== beforeKind;
259
+ }
260
+
251
261
  private getValueType(after?: any): string | undefined {
252
262
  if (after !== undefined && after !== null && typeof after === "object" && "kind" in after) {
253
263
  return after["kind"];
package/src/rpc/server.ts CHANGED
@@ -19,6 +19,7 @@ import {RewriteRpc} from "./rewrite-rpc";
19
19
  import * as fs from "fs";
20
20
  import {Command} from 'commander';
21
21
  import {dir} from 'tmp-promise';
22
+ import {DependencyWorkspace} from "../javascript/dependency-workspace";
22
23
 
23
24
  // Include all languages you want this server to support.
24
25
  import "../text";
@@ -66,6 +67,8 @@ async function main() {
66
67
  if (recipeCleanup) {
67
68
  await recipeCleanup();
68
69
  }
70
+ // Clean up old dependency workspaces (older than 24 hours)
71
+ DependencyWorkspace.cleanupOldWorkspaces();
69
72
  process.exit(0);
70
73
  });
71
74
 
@@ -73,6 +76,8 @@ async function main() {
73
76
  if (recipeCleanup) {
74
77
  await recipeCleanup();
75
78
  }
79
+ // Clean up old dependency workspaces (older than 24 hours)
80
+ DependencyWorkspace.cleanupOldWorkspaces();
76
81
  process.exit(0);
77
82
  });
78
83
 
@@ -61,13 +61,21 @@ export class RecipeSpec {
61
61
  this.dataTableAssertions[name] = allRows;
62
62
  }
63
63
 
64
- async rewriteRun(...sourceSpecs: (SourceSpec<any> | Generator<SourceSpec<any>, void, unknown>)[]): Promise<void> {
64
+ async rewriteRun(...sourceSpecs: (SourceSpec<any> | Generator<SourceSpec<any>, void, unknown> | AsyncGenerator<SourceSpec<any>, void, unknown>)[]): Promise<void> {
65
65
  // Flatten generators into a list of sourceSpecs
66
66
  const flattenedSpecs: SourceSpec<any>[] = [];
67
67
  for (const specOrGenerator of sourceSpecs) {
68
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);
69
+ // Check if it's an async generator
70
+ if (typeof (specOrGenerator as any)[Symbol.asyncIterator] === 'function') {
71
+ for await (const spec of specOrGenerator as AsyncGenerator<SourceSpec<any>, void, unknown>) {
72
+ flattenedSpecs.push(spec);
73
+ }
74
+ } else {
75
+ // Sync generator
76
+ for (const spec of specOrGenerator as Generator<SourceSpec<any>, void, unknown>) {
77
+ flattenedSpecs.push(spec);
78
+ }
71
79
  }
72
80
  } else {
73
81
  flattenedSpecs.push(specOrGenerator as SourceSpec<any>);