@openrewrite/rewrite 8.81.4 → 8.81.5

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.
@@ -0,0 +1 @@
1
+ 8.81.5
@@ -1 +1 @@
1
- {"version":3,"file":"batch-visit.d.ts","sourceRoot":"","sources":["../../../src/rpc/request/batch-visit.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,MAAM,EAAO,MAAM,YAAY,CAAC;AAMxC,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC7B;AAiBD,qBAAa,UAAU;IACnB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,EACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,GAAG,EACvD,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACxF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CA2D3C"}
1
+ {"version":3,"file":"batch-visit.d.ts","sourceRoot":"","sources":["../../../src/rpc/request/batch-visit.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAC;AACpC,OAAO,EAAC,MAAM,EAAO,MAAM,YAAY,CAAC;AAMxC,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,kBAAkB;IAC/B,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,CAAC,EAAE,MAAM,CAAA;IACT,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,cAAc,EAAE,CAAA;CAC7B;AAiBD,qBAAa,UAAU;IACnB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,iBAAiB,EACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,GAAG,EACvD,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EACxF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAwE3C"}
@@ -79,9 +79,19 @@ class BatchVisit {
79
79
  for (const item of request.visitors) {
80
80
  // Instantiate and run visitor
81
81
  const visitor = await visit_1.Visit.instantiateVisitor({ visitor: item.visitor, visitorOptions: item.visitorOptions }, preparedRecipes, recipeCursors, p);
82
+ // Snapshot ctx message keys so we can flag whether
83
+ // the visitor put anything new into the context.
84
+ const preKeys = new Set(Reflect.ownKeys(p.messages));
82
85
  const after = await visitor.visit(tree, p, cursor);
83
86
  const modified = after !== tree;
84
87
  const deleted = after == null;
88
+ let hasNewMessages = false;
89
+ for (const k of Reflect.ownKeys(p.messages)) {
90
+ if (!preKeys.has(k)) {
91
+ hasNewMessages = true;
92
+ break;
93
+ }
94
+ }
85
95
  // Diff SearchResult IDs against the running set
86
96
  let searchResultIds;
87
97
  if (deleted) {
@@ -93,7 +103,7 @@ class BatchVisit {
93
103
  for (const id of searchResultIds)
94
104
  knownIds.add(id);
95
105
  }
96
- results.push({ modified, deleted, hasNewMessages: false, searchResultIds });
106
+ results.push({ modified, deleted, hasNewMessages, searchResultIds });
97
107
  if (deleted) {
98
108
  localObjects.delete(request.treeId);
99
109
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"batch-visit.js","sourceRoot":"","sources":["../../../src/rpc/request/batch-visit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-visit.js","sourceRoot":"","sources":["../../../src/rpc/request/batch-visit.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,33 @@ require("../java");
63
63
  require("../javascript");
64
64
  // Not possible to set the stack size when executing from npx for security reasons
65
65
  require('v8').setFlagsFromString('--stack-size=8000');
66
+ function initPyroscope(logger) {
67
+ const server = process.env.PYROSCOPE_SERVER_ADDRESS;
68
+ if (!server) {
69
+ return;
70
+ }
71
+ let Pyroscope;
72
+ try {
73
+ Pyroscope = require('@pyroscope/nodejs');
74
+ }
75
+ catch (_a) {
76
+ logger.warn('PYROSCOPE_SERVER_ADDRESS set but @pyroscope/nodejs not installed; profiling disabled');
77
+ return;
78
+ }
79
+ const tags = { runtime: 'node' };
80
+ for (const pair of (process.env.PYROSCOPE_TAGS || '').split(',')) {
81
+ const eq = pair.indexOf('=');
82
+ if (eq > 0) {
83
+ tags[pair.slice(0, eq).trim()] = pair.slice(eq + 1).trim();
84
+ }
85
+ }
86
+ Pyroscope.init({
87
+ appName: process.env.PYROSCOPE_APPLICATION_NAME || 'modcli',
88
+ serverAddress: server,
89
+ tags,
90
+ });
91
+ Pyroscope.start();
92
+ }
66
93
  async function main() {
67
94
  const program = new commander_1.Command();
68
95
  program
@@ -113,6 +140,7 @@ async function main() {
113
140
  // because the Tracer type has a log method on it that matches this signature.
114
141
  log: (msg) => log && options.traceRpcMessages && log.write(`[js trace] ${msg}\n`)
115
142
  };
143
+ initPyroscope(logger);
116
144
  // Create the connection with the custom logger
117
145
  const connection = rpc.createMessageConnection(new rpc.StreamMessageReader(process.stdin), new rpc.StreamMessageWriter(process.stdout), logger);
118
146
  if (options.traceRpcMessages) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/rpc/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrewrite/rewrite",
3
- "version": "8.81.4",
3
+ "version": "8.81.5",
4
4
  "license": "Moderne Source Available License",
5
5
  "description": "OpenRewrite JavaScript.",
6
6
  "repository": {
@@ -86,6 +86,7 @@
86
86
  "vitest": "^4.0.18"
87
87
  },
88
88
  "optionalDependencies": {
89
+ "@pyroscope/nodejs": "^0.4.0",
89
90
  "prettier": "^3.7.4"
90
91
  },
91
92
  "bin": {
@@ -86,11 +86,24 @@ export class BatchVisit {
86
86
  const visitor = await Visit.instantiateVisitor(
87
87
  {visitor: item.visitor, visitorOptions: item.visitorOptions},
88
88
  preparedRecipes, recipeCursors, p);
89
+ // Snapshot ctx message keys so we can flag whether
90
+ // the visitor put anything new into the context.
91
+ const preKeys = new Set<string | symbol>(
92
+ Reflect.ownKeys(p.messages) as (string | symbol)[]
93
+ );
89
94
  const after = await visitor.visit(tree, p, cursor);
90
95
 
91
96
  const modified = after !== tree;
92
97
  const deleted = after == null;
93
98
 
99
+ let hasNewMessages = false;
100
+ for (const k of Reflect.ownKeys(p.messages)) {
101
+ if (!preKeys.has(k)) {
102
+ hasNewMessages = true;
103
+ break;
104
+ }
105
+ }
106
+
94
107
  // Diff SearchResult IDs against the running set
95
108
  let searchResultIds: string[];
96
109
  if (deleted) {
@@ -101,7 +114,7 @@ export class BatchVisit {
101
114
  for (const id of searchResultIds) knownIds.add(id);
102
115
  }
103
116
 
104
- results.push({modified, deleted, hasNewMessages: false, searchResultIds});
117
+ results.push({modified, deleted, hasNewMessages, searchResultIds});
105
118
 
106
119
  if (deleted) {
107
120
  localObjects.delete(request.treeId);
package/src/rpc/server.ts CHANGED
@@ -31,6 +31,33 @@ import "../javascript";
31
31
  // Not possible to set the stack size when executing from npx for security reasons
32
32
  require('v8').setFlagsFromString('--stack-size=8000');
33
33
 
34
+ function initPyroscope(logger: rpc.Logger): void {
35
+ const server = process.env.PYROSCOPE_SERVER_ADDRESS;
36
+ if (!server) {
37
+ return;
38
+ }
39
+ let Pyroscope: any;
40
+ try {
41
+ Pyroscope = require('@pyroscope/nodejs');
42
+ } catch {
43
+ logger.warn('PYROSCOPE_SERVER_ADDRESS set but @pyroscope/nodejs not installed; profiling disabled');
44
+ return;
45
+ }
46
+ const tags: Record<string, string> = {runtime: 'node'};
47
+ for (const pair of (process.env.PYROSCOPE_TAGS || '').split(',')) {
48
+ const eq = pair.indexOf('=');
49
+ if (eq > 0) {
50
+ tags[pair.slice(0, eq).trim()] = pair.slice(eq + 1).trim();
51
+ }
52
+ }
53
+ Pyroscope.init({
54
+ appName: process.env.PYROSCOPE_APPLICATION_NAME || 'modcli',
55
+ serverAddress: server,
56
+ tags,
57
+ });
58
+ Pyroscope.start();
59
+ }
60
+
34
61
  interface ProgramOptions {
35
62
  logFile?: string;
36
63
  metricsCsv?: string;
@@ -97,6 +124,8 @@ async function main() {
97
124
  log: (msg: string) => log && options.traceRpcMessages && log.write(`[js trace] ${msg}\n`)
98
125
  };
99
126
 
127
+ initPyroscope(logger);
128
+
100
129
  // Create the connection with the custom logger
101
130
  const connection = rpc.createMessageConnection(
102
131
  new rpc.StreamMessageReader(process.stdin),
package/src/java/s.js~ DELETED
@@ -1,48 +0,0 @@
1
- const fs = require("fs");
2
- const path = require("path");
3
-
4
- const VISITOR_FILE = path.join(__dirname, "visitor.ts");
5
-
6
- function addMiddleArgToVisitContainer(content) {
7
- const lines = content.split("\n");
8
- const updatedLines = [];
9
-
10
- let currentMethod = null;
11
-
12
- for (let i = 0; i < lines.length; i++) {
13
- let line = lines[i];
14
-
15
- const methodMatch = line.match(/^\s*(?:public\s+|private\s+|protected\s+)?(?:async\s+)?(\w+)\s*\(.*\)\s*{/);
16
- if (methodMatch) {
17
- currentMethod = methodMatch[1];
18
- }
19
-
20
- const callMatch = line.match(/(\bvisitContainer\s*\()\s*([^,]+)\s*,\s*([^)\n]+)\)/);
21
- if (callMatch) {
22
- // Derive context from variable name or some keyword around
23
- const arg1 = callMatch[2].trim();
24
- let context = "UNKNOWN";
25
- if (/case/i.test(line)) context = "CASE_LABEL";
26
- else if (/block/i.test(arg1)) context = "BLOCK";
27
- else if (/param/i.test(arg1)) context = "PARAM";
28
- else if (/arg/i.test(arg1)) context = "ARGUMENT";
29
- else context = arg1.toUpperCase().replace(/[^A-Z0-9]+/g, "_").replace(/^_+|_+$/g, "");
30
-
31
- const locationString = `"${currentMethod ? currentMethod.toUpperCase() + "_" + context : context}"`;
32
- line = line.replace(callMatch[0], `${callMatch[1]}${callMatch[2]}, ${locationString}, ${callMatch[3]})`);
33
- }
34
-
35
- updatedLines.push(line);
36
- }
37
-
38
- return updatedLines.join("\n");
39
- }
40
-
41
- function main() {
42
- const original = fs.readFileSync(VISITOR_FILE, "utf8");
43
- const updated = addMiddleArgToVisitContainer(original);
44
- fs.writeFileSync(VISITOR_FILE, updated, "utf8");
45
- console.log("✅ visitContainer calls amended.");
46
- }
47
-
48
- main();
@@ -1,48 +0,0 @@
1
- const fs = require("fs");
2
- const path = require("path");
3
-
4
- const VISITOR_FILE = path.join(__dirname, "visitor.ts");
5
-
6
- function addMiddleArgToVisitContainer(content) {
7
- const lines = content.split("\n");
8
- const updatedLines = [];
9
-
10
- let currentMethod = null;
11
-
12
- for (let i = 0; i < lines.length; i++) {
13
- let line = lines[i];
14
-
15
- const methodMatch = line.match(/^\s*(?:public\s+|private\s+|protected\s+)?(?:async\s+)?(\w+)\s*\(.*\)\s*{/);
16
- if (methodMatch) {
17
- currentMethod = methodMatch[1];
18
- }
19
-
20
- const callMatch = line.match(/(\bvisitContainer\s*\()\s*([^,]+)\s*,\s*([^)\n]+)\)/);
21
- if (callMatch) {
22
- // Derive context from variable name or some keyword around
23
- const arg1 = callMatch[2].trim();
24
- let context = "UNKNOWN";
25
- if (/case/i.test(line)) context = "CASE_LABEL";
26
- else if (/block/i.test(arg1)) context = "BLOCK";
27
- else if (/param/i.test(arg1)) context = "PARAM";
28
- else if (/arg/i.test(arg1)) context = "ARGUMENT";
29
- else context = arg1.toUpperCase().replace(/[^A-Z0-9]+/g, "_").replace(/^_+|_+$/g, "");
30
-
31
- const locationString = `"${currentMethod ? currentMethod.toUpperCase() + "_" + context : context}"`;
32
- line = line.replace(callMatch[0], `${callMatch[1]}${callMatch[2]}, ${locationString}, ${callMatch[3]})`);
33
- }
34
-
35
- updatedLines.push(line);
36
- }
37
-
38
- return updatedLines.join("\n");
39
- }
40
-
41
- function main() {
42
- const original = fs.readFileSync(VISITOR_FILE, "utf8");
43
- const updated = addMiddleArgToVisitContainer(original);
44
- fs.writeFileSync(VISITOR_FILE, updated, "utf8");
45
- console.log("✅ visitContainer calls amended.");
46
- }
47
-
48
- main();
@@ -1,68 +0,0 @@
1
- const fs = require("fs");
2
- const path = require("path");
3
-
4
- const VISITOR_FILE = path.join(__dirname, "visitor.ts");
5
-
6
- function toUpperUnderscore(name) {
7
- return name
8
- .replace(/([a-z])([A-Z])/g, "$1_$2")
9
- .replace(/[\W]+/g, "_")
10
- .replace(/^_+|_+$/g, "")
11
- .toUpperCase();
12
- }
13
-
14
- function extractPropertyFromLine(line) {
15
- // Case 1: match property from lambda: el => el.property
16
- let match = line.match(/el\s*=>\s*el\.([a-zA-Z0-9_]+)/);
17
- if (match) return match[1];
18
-
19
- // Case 2: match assignment target like: draft.valueType = await ...
20
- match = line.match(/\b([a-zA-Z0-9_]+)\.([a-zA-Z0-9_]+)\s*=.*\s*await\b/);
21
- if (match) return match[2];
22
-
23
- return "UNKNOWN";
24
- }
25
-
26
- function addMiddleArgToVisitContainer(content) {
27
- const lines = content.split("\n");
28
- const updatedLines = [];
29
-
30
- let currentMethod = null;
31
-
32
- for (let i = 0; i < lines.length; i++) {
33
- let line = lines[i];
34
-
35
- const methodMatch = line.match(/^ +(?:public|protected|private)?\s*(?:override\s+)?(?:async\s+)?(visit[A-Z][A-Za-z0-9_]*)\s*\(/);
36
- if (methodMatch) {
37
- const fullMethod = methodMatch[1]; // e.g. visitExpressionWithTypeArguments
38
- // Strip the "visit" prefix and convert to UPPER_UNDERSCORE
39
- currentMethod = fullMethod.startsWith("visit") ? fullMethod.slice(5) : fullMethod;
40
- }
41
-
42
- const visitCallMatch = line.match(/(\bvisitContainer\s*\()\s*([^,]+)\s*,\s*([^)\n]+)\)/);
43
- if (visitCallMatch) {
44
- const objectArg = visitCallMatch[2].trim();
45
- const restArg = visitCallMatch[3].trim();
46
-
47
- const property = extractPropertyFromLine(line);
48
- const method = currentMethod || "UNKNOWN";
49
-
50
- const locationValue = `"${toUpperUnderscore(method)}_${toUpperUnderscore(property)}"`;
51
-
52
- line = line.replace(visitCallMatch[0], `${visitCallMatch[1]}${objectArg}, ${locationValue}, ${restArg})`);
53
- }
54
-
55
- updatedLines.push(line);
56
- }
57
-
58
- return updatedLines.join("\n");
59
- }
60
-
61
- function main() {
62
- const original = fs.readFileSync(VISITOR_FILE, "utf8");
63
- const updated = addMiddleArgToVisitContainer(original);
64
- fs.writeFileSync(VISITOR_FILE, updated, "utf8");
65
- console.log("✅ visitContainer calls amended with location strings.");
66
- }
67
-
68
- main();