@openrewrite/rewrite 8.69.0-20251206-160244 → 8.69.0-20251207-092603

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 (36) hide show
  1. package/dist/cli/cli-utils.d.ts +12 -2
  2. package/dist/cli/cli-utils.d.ts.map +1 -1
  3. package/dist/cli/cli-utils.js +53 -13
  4. package/dist/cli/cli-utils.js.map +1 -1
  5. package/dist/cli/rewrite.d.ts.map +1 -1
  6. package/dist/cli/rewrite.js +230 -82
  7. package/dist/cli/rewrite.js.map +1 -1
  8. package/dist/cli/validate-parsing-recipe.d.ts +23 -0
  9. package/dist/cli/validate-parsing-recipe.d.ts.map +1 -0
  10. package/dist/cli/validate-parsing-recipe.js +149 -0
  11. package/dist/cli/validate-parsing-recipe.js.map +1 -0
  12. package/dist/javascript/format.d.ts.map +1 -1
  13. package/dist/javascript/format.js +7 -2
  14. package/dist/javascript/format.js.map +1 -1
  15. package/dist/javascript/parser.d.ts.map +1 -1
  16. package/dist/javascript/parser.js +4 -2
  17. package/dist/javascript/parser.js.map +1 -1
  18. package/dist/javascript/tabs-and-indents-visitor.d.ts.map +1 -1
  19. package/dist/javascript/tabs-and-indents-visitor.js +32 -4
  20. package/dist/javascript/tabs-and-indents-visitor.js.map +1 -1
  21. package/dist/json/parser.js +35 -20
  22. package/dist/json/parser.js.map +1 -1
  23. package/dist/run.d.ts +8 -1
  24. package/dist/run.d.ts.map +1 -1
  25. package/dist/run.js +78 -21
  26. package/dist/run.js.map +1 -1
  27. package/dist/version.txt +1 -1
  28. package/package.json +1 -1
  29. package/src/cli/cli-utils.ts +28 -9
  30. package/src/cli/rewrite.ts +244 -85
  31. package/src/cli/validate-parsing-recipe.ts +114 -0
  32. package/src/javascript/format.ts +7 -2
  33. package/src/javascript/parser.ts +6 -2
  34. package/src/javascript/tabs-and-indents-visitor.ts +33 -3
  35. package/src/json/parser.ts +35 -20
  36. package/src/run.ts +61 -25
@@ -67,6 +67,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
67
67
  * limitations under the License.
68
68
  */
69
69
  const commander_1 = require("commander");
70
+ const fs = __importStar(require("fs"));
70
71
  const fsp = __importStar(require("fs/promises"));
71
72
  const path = __importStar(require("path"));
72
73
  const child_process_1 = require("child_process");
@@ -76,6 +77,7 @@ const run_1 = require("../run");
76
77
  const print_1 = require("../print");
77
78
  const index_1 = require("../index");
78
79
  const cli_utils_1 = require("./cli-utils");
80
+ const validate_parsing_recipe_1 = require("./validate-parsing-recipe");
79
81
  const isTTY = (_a = process.stdout.isTTY) !== null && _a !== void 0 ? _a : false;
80
82
  const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
81
83
  class Spinner {
@@ -120,22 +122,74 @@ require("../javascript");
120
122
  // Set stack size for complex parsing
121
123
  require('v8').setFlagsFromString('--stack-size=8000');
122
124
  const DEFAULT_RECIPE_DIR = path.join(process.env.HOME || '', '.rewrite', 'javascript', 'recipes');
125
+ /**
126
+ * Check if a directory is a git repository root.
127
+ */
128
+ function isGitRoot(dir) {
129
+ return fs.existsSync(path.join(dir, '.git'));
130
+ }
131
+ /**
132
+ * Find the project root by scanning upward for a directory containing package.json.
133
+ * Stops at git repository root or filesystem root.
134
+ * Returns the starting directory if no package.json is found.
135
+ */
136
+ function findProjectRoot(startDir) {
137
+ let dir = path.resolve(startDir);
138
+ while (true) {
139
+ const packageJsonPath = path.join(dir, 'package.json');
140
+ if (fs.existsSync(packageJsonPath)) {
141
+ return dir;
142
+ }
143
+ // Stop at git root - don't scan beyond the repository
144
+ if (isGitRoot(dir)) {
145
+ return dir;
146
+ }
147
+ const parent = path.dirname(dir);
148
+ if (parent === dir) {
149
+ // Reached filesystem root, return original directory
150
+ return path.resolve(startDir);
151
+ }
152
+ dir = parent;
153
+ }
154
+ }
155
+ /**
156
+ * Convert a project-root-relative path to a CWD-relative path for display.
157
+ */
158
+ function toCwdRelative(sourcePath, projectRoot) {
159
+ const absolutePath = path.join(projectRoot, sourcePath);
160
+ return path.relative(process.cwd(), absolutePath) || '.';
161
+ }
162
+ /**
163
+ * Transform diff output to use CWD-relative paths in headers.
164
+ */
165
+ function transformDiffPaths(diff, projectRoot) {
166
+ return diff.replace(/^(---|\+\+\+) (.+)$/gm, (_match, prefix, filePath) => {
167
+ if (filePath) {
168
+ const cwdRelative = toCwdRelative(filePath, projectRoot);
169
+ return `${prefix} ${cwdRelative}`;
170
+ }
171
+ return _match;
172
+ });
173
+ }
123
174
  function main() {
124
175
  return __awaiter(this, void 0, void 0, function* () {
125
176
  var _a, e_1, _b, _c;
126
- var _d, _e, _f, _g;
177
+ var _d, _e, _f, _g, _h, _j, _k, _l;
127
178
  const program = new commander_1.Command();
128
179
  program
129
180
  .name('rewrite')
130
181
  .description('Run OpenRewrite recipes on your codebase')
131
182
  .argument('<recipe>', 'Recipe to run in format "package:recipe" (e.g., "@openrewrite/recipes-nodejs:replace-deprecated-slice")')
132
- .option('-n, --dry-run', 'Show what changes would be made without applying them', false)
183
+ .argument('[paths...]', 'Files or directories to process (defaults to project root)')
184
+ .option('--apply', 'Apply changes to files (default is dry-run showing diffs)', false)
185
+ .option('-l, --list', 'Only list paths of files that would be changed', false)
133
186
  .option('-d, --recipe-dir <dir>', 'Directory for recipe installation', DEFAULT_RECIPE_DIR)
134
187
  .option('-o, --option <option...>', 'Recipe options in format "key=value"', [])
135
188
  .option('-v, --verbose', 'Enable verbose output', false)
136
189
  .option('--debug', 'Start with Node.js debugger (--inspect-brk)', false)
137
190
  .parse();
138
191
  const recipeArg = program.args[0];
192
+ const pathArgs = program.args.slice(1);
139
193
  const opts = program.opts();
140
194
  opts.option = opts.option || [];
141
195
  // Handle --debug by re-spawning with --inspect-brk
@@ -147,98 +201,157 @@ function main() {
147
201
  child.on('exit', (code) => process.exit(code !== null && code !== void 0 ? code : 0));
148
202
  return;
149
203
  }
150
- // Parse recipe specification
151
- const recipeSpec = (0, cli_utils_1.parseRecipeSpec)(recipeArg);
152
- if (!recipeSpec) {
153
- console.error(`Invalid recipe format: ${recipeArg}`);
154
- console.error('Expected format: "package:recipe" (e.g., "@openrewrite/recipes-nodejs:replace-deprecated-slice")');
155
- process.exit(1);
204
+ // Handle special built-in recipes
205
+ let recipe;
206
+ let validateParsingRecipe;
207
+ if (recipeArg === 'validate-parsing') {
208
+ // Special recipe to validate parsing and check idempotence
209
+ validateParsingRecipe = new validate_parsing_recipe_1.ValidateParsingRecipe();
210
+ recipe = validateParsingRecipe;
156
211
  }
157
- if (opts.verbose) {
158
- console.log(`Package: ${recipeSpec.packageName}`);
159
- console.log(`Recipe: ${recipeSpec.recipeName}`);
212
+ else {
213
+ // Parse recipe specification
214
+ const recipeSpec = (0, cli_utils_1.parseRecipeSpec)(recipeArg);
215
+ if (!recipeSpec) {
216
+ console.error(`Invalid recipe format: ${recipeArg}`);
217
+ console.error('Expected format: "package:recipe" (e.g., "@openrewrite/recipes-nodejs:replace-deprecated-slice")');
218
+ console.error('Or use "validate-parsing" to check for parse errors and idempotence.');
219
+ process.exit(1);
220
+ }
221
+ if (opts.verbose) {
222
+ console.log(`Package: ${recipeSpec.packageName}`);
223
+ console.log(`Recipe: ${recipeSpec.recipeName}`);
224
+ }
225
+ // Parse recipe options
226
+ const recipeOptions = (0, cli_utils_1.parseRecipeOptions)(opts.option);
227
+ if (opts.verbose && Object.keys(recipeOptions).length > 0) {
228
+ console.log(`Options: ${JSON.stringify(recipeOptions)}`);
229
+ }
230
+ // Set up recipe registry
231
+ const registry = new recipe_1.RecipeRegistry();
232
+ // Register built-in recipes
233
+ yield (0, index_1.activate)(registry);
234
+ // Load recipes from local path or install from NPM
235
+ try {
236
+ if (recipeSpec.isLocalPath) {
237
+ yield (0, cli_utils_1.loadLocalRecipes)(recipeSpec.packageName, registry, opts.verbose);
238
+ }
239
+ else {
240
+ yield (0, cli_utils_1.installRecipePackage)(recipeSpec.packageName, opts.recipeDir || DEFAULT_RECIPE_DIR, registry, opts.verbose);
241
+ }
242
+ }
243
+ catch (e) {
244
+ console.error(`Failed to load recipes: ${e.message}`);
245
+ process.exit(1);
246
+ }
247
+ // Find the recipe
248
+ const foundRecipe = (0, cli_utils_1.findRecipe)(registry, recipeSpec.recipeName, recipeOptions);
249
+ if (!foundRecipe) {
250
+ process.exit(1);
251
+ }
252
+ recipe = foundRecipe;
160
253
  }
161
- // Parse recipe options
162
- const recipeOptions = (0, cli_utils_1.parseRecipeOptions)(opts.option);
163
- if (opts.verbose && Object.keys(recipeOptions).length > 0) {
164
- console.log(`Options: ${JSON.stringify(recipeOptions)}`);
254
+ if (opts.verbose) {
255
+ console.log(`Running recipe: ${recipe.name}`);
165
256
  }
166
- // Set up recipe registry
167
- const registry = new recipe_1.RecipeRegistry();
168
- // Register built-in recipes
169
- yield (0, index_1.activate)(registry);
170
- // Load recipes from local path or install from NPM
171
- try {
172
- if (recipeSpec.isLocalPath) {
173
- yield (0, cli_utils_1.loadLocalRecipes)(recipeSpec.packageName, registry, opts.verbose);
257
+ const spinner = new Spinner();
258
+ // Determine paths to process and project root
259
+ let targetPaths;
260
+ let projectRoot;
261
+ if (pathArgs.length > 0) {
262
+ // Explicit paths provided - find project root and validate they're all in the same project
263
+ targetPaths = pathArgs.map(p => path.resolve(p));
264
+ const projectRoots = new Set();
265
+ for (const targetPath of targetPaths) {
266
+ const pathDir = fs.statSync(targetPath).isDirectory() ? targetPath : path.dirname(targetPath);
267
+ projectRoots.add(findProjectRoot(pathDir));
268
+ }
269
+ if (projectRoots.size > 1) {
270
+ console.error('Error: Specified paths belong to different projects:');
271
+ for (const root of projectRoots) {
272
+ console.error(` - ${root}`);
273
+ }
274
+ console.error('\nAll paths must be within the same project (share a common package.json root).');
275
+ process.exit(1);
174
276
  }
175
- else {
176
- yield (0, cli_utils_1.installRecipePackage)(recipeSpec.packageName, opts.recipeDir || DEFAULT_RECIPE_DIR, registry, opts.verbose);
277
+ projectRoot = projectRoots.values().next().value;
278
+ if (opts.verbose) {
279
+ if (targetPaths.length > 1) {
280
+ console.log(`Processing ${targetPaths.length} paths`);
281
+ }
282
+ console.log(`Project root: ${projectRoot}`);
177
283
  }
178
284
  }
179
- catch (e) {
180
- console.error(`Failed to load recipes: ${e.message}`);
181
- process.exit(1);
285
+ else {
286
+ // No paths provided - find project root from CWD and process entire project
287
+ projectRoot = findProjectRoot(process.cwd());
288
+ targetPaths = [projectRoot];
289
+ if (opts.verbose) {
290
+ console.log(`Processing entire project: ${projectRoot}`);
291
+ }
182
292
  }
183
- // Find the recipe
184
- const recipe = (0, cli_utils_1.findRecipe)(registry, recipeSpec.recipeName, recipeOptions);
185
- if (!recipe) {
186
- process.exit(1);
293
+ // Discover source files from all specified paths
294
+ if (!opts.verbose) {
295
+ spinner.start('Discovering source files...');
187
296
  }
188
- if (opts.verbose) {
189
- console.log(`Running recipe: ${recipe.name}`);
297
+ const sourceFiles = [];
298
+ for (const targetPath of targetPaths) {
299
+ const stat = yield fsp.stat(targetPath);
300
+ if (stat.isDirectory()) {
301
+ const files = yield (0, cli_utils_1.discoverFiles)(targetPath, opts.verbose);
302
+ sourceFiles.push(...files);
303
+ }
304
+ else if (stat.isFile() && (0, cli_utils_1.isAcceptedFile)(targetPath)) {
305
+ sourceFiles.push(targetPath);
306
+ }
190
307
  }
191
- const spinner = new Spinner();
192
- const projectRoot = process.cwd();
193
- // Discover source files
194
- spinner.start('Discovering source files...');
195
- const sourceFiles = yield (0, cli_utils_1.discoverFiles)(projectRoot, opts.verbose);
308
+ // Remove duplicates (in case of overlapping paths)
309
+ const uniqueSourceFiles = [...new Set(sourceFiles)];
196
310
  spinner.stop();
197
- if (sourceFiles.length === 0) {
311
+ if (uniqueSourceFiles.length === 0) {
198
312
  console.log('No source files found to process.');
199
313
  return;
200
314
  }
201
315
  if (opts.verbose) {
202
- console.log(`Found ${sourceFiles.length} source files`);
316
+ console.log(`Found ${uniqueSourceFiles.length} source files`);
203
317
  }
204
- // Parse all source files
205
- spinner.start(`Parsing ${sourceFiles.length} files...`);
206
- const parsedFiles = yield (0, cli_utils_1.parseFiles)(sourceFiles, projectRoot, opts.verbose, (current, total, filePath) => {
207
- spinner.update(`Parsing [${current}/${total}] ${filePath}`);
208
- });
209
- spinner.stop();
210
- if (parsedFiles.length === 0) {
211
- console.log('No files could be parsed.');
212
- return;
318
+ // Set project root for validate-parsing recipe if active
319
+ if (validateParsingRecipe) {
320
+ validateParsingRecipe.setProjectRoot(projectRoot);
213
321
  }
214
- // Run the recipe with streaming output
322
+ // Create streaming parser - files are parsed on-demand as they're consumed
323
+ const totalFiles = uniqueSourceFiles.length;
324
+ const sourceFileStream = (0, cli_utils_1.parseFilesStreaming)(uniqueSourceFiles, projectRoot, {
325
+ verbose: opts.verbose
326
+ });
327
+ // Run the recipe with streaming output - for non-scanning recipes,
328
+ // parsing and processing happen concurrently without collecting all files first
215
329
  const ctx = new execution_1.ExecutionContext();
216
330
  let changeCount = 0;
217
331
  let processedCount = 0;
218
- const totalFiles = parsedFiles.length;
219
- spinner.start(`Running recipe on ${totalFiles} files...`);
332
+ // Progress callback for spinner updates during all phases (disabled in verbose mode)
333
+ const onProgress = opts.verbose ? undefined : (phase, current, total, sourcePath) => {
334
+ const totalStr = total > 0 ? total : totalFiles;
335
+ const phaseLabel = phase.charAt(0).toUpperCase() + phase.slice(1);
336
+ spinner.update(`${phaseLabel} [${current}/${totalStr}] ${sourcePath}`);
337
+ };
338
+ if (!opts.verbose) {
339
+ spinner.start(`Processing ${totalFiles} files...`);
340
+ }
220
341
  try {
221
- for (var _h = true, _j = __asyncValues((0, run_1.scheduleRunStreaming)(recipe, parsedFiles, ctx)), _k; _k = yield _j.next(), _a = _k.done, !_a; _h = true) {
222
- _c = _k.value;
223
- _h = false;
342
+ for (var _m = true, _o = __asyncValues((0, run_1.scheduleRunStreaming)(recipe, sourceFileStream, ctx, onProgress)), _p; _p = yield _o.next(), _a = _p.done, !_a; _m = true) {
343
+ _c = _p.value;
344
+ _m = false;
224
345
  const result = _c;
225
346
  processedCount++;
226
347
  const currentPath = (_g = (_e = (_d = result.after) === null || _d === void 0 ? void 0 : _d.sourcePath) !== null && _e !== void 0 ? _e : (_f = result.before) === null || _f === void 0 ? void 0 : _f.sourcePath) !== null && _g !== void 0 ? _g : '';
227
- spinner.update(`Processing [${processedCount}/${totalFiles}] ${currentPath}`);
228
348
  const statusMsg = `Processing [${processedCount}/${totalFiles}] ${currentPath}`;
229
- if (opts.dryRun) {
230
- // Print colorized diff immediately (skip empty diffs)
231
- const diff = yield result.diff();
232
- const hasChanges = diff.split('\n').some(line => (line.startsWith('+') || line.startsWith('-')) &&
233
- !line.startsWith('+++') && !line.startsWith('---'));
234
- if (hasChanges) {
235
- changeCount++;
236
- spinner.stop();
237
- console.log((0, cli_utils_1.colorizeDiff)(diff));
238
- spinner.start(statusMsg);
239
- }
349
+ // Skip unchanged files - first check object identity (fast path),
350
+ // then check actual diff content for files where visitor returned new object
351
+ if (result.before === result.after) {
352
+ continue; // Definitely unchanged
240
353
  }
241
- else {
354
+ if (opts.apply) {
242
355
  // Apply changes immediately
243
356
  if (result.after) {
244
357
  const filePath = path.join(projectRoot, result.after.sourcePath);
@@ -247,22 +360,49 @@ function main() {
247
360
  yield fsp.mkdir(path.dirname(filePath), { recursive: true });
248
361
  yield fsp.writeFile(filePath, content);
249
362
  changeCount++;
250
- spinner.stop();
363
+ if (!opts.verbose)
364
+ spinner.stop();
365
+ const displayPath = toCwdRelative(result.after.sourcePath, projectRoot);
251
366
  if (result.before) {
252
- console.log(` Modified: ${result.after.sourcePath}`);
367
+ console.log(` Modified: ${displayPath}`);
253
368
  }
254
369
  else {
255
- console.log(` Created: ${result.after.sourcePath}`);
370
+ console.log(` Created: ${displayPath}`);
256
371
  }
257
- spinner.start(statusMsg);
372
+ if (!opts.verbose)
373
+ spinner.start(statusMsg);
258
374
  }
259
375
  else if (result.before) {
260
376
  const filePath = path.join(projectRoot, result.before.sourcePath);
261
377
  yield fsp.unlink(filePath);
262
378
  changeCount++;
263
- spinner.stop();
264
- console.log(` Deleted: ${result.before.sourcePath}`);
265
- spinner.start(statusMsg);
379
+ if (!opts.verbose)
380
+ spinner.stop();
381
+ console.log(` Deleted: ${toCwdRelative(result.before.sourcePath, projectRoot)}`);
382
+ if (!opts.verbose)
383
+ spinner.start(statusMsg);
384
+ }
385
+ }
386
+ else {
387
+ // Dry-run mode: show diff or just list paths
388
+ const diff = yield result.diff();
389
+ const hasChanges = diff.split('\n').some(line => (line.startsWith('+') || line.startsWith('-')) &&
390
+ !line.startsWith('+++') && !line.startsWith('---'));
391
+ if (hasChanges) {
392
+ changeCount++;
393
+ if (!opts.verbose)
394
+ spinner.stop();
395
+ if (opts.list) {
396
+ // Just list the path
397
+ const displayPath = toCwdRelative((_l = (_j = (_h = result.after) === null || _h === void 0 ? void 0 : _h.sourcePath) !== null && _j !== void 0 ? _j : (_k = result.before) === null || _k === void 0 ? void 0 : _k.sourcePath) !== null && _l !== void 0 ? _l : '', projectRoot);
398
+ console.log(displayPath);
399
+ }
400
+ else {
401
+ // Show the diff with CWD-relative paths
402
+ console.log((0, cli_utils_1.colorizeDiff)(transformDiffPaths(diff, projectRoot)));
403
+ }
404
+ if (!opts.verbose)
405
+ spinner.start(statusMsg);
266
406
  }
267
407
  }
268
408
  }
@@ -270,20 +410,28 @@ function main() {
270
410
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
271
411
  finally {
272
412
  try {
273
- if (!_h && !_a && (_b = _j.return)) yield _b.call(_j);
413
+ if (!_m && !_a && (_b = _o.return)) yield _b.call(_o);
274
414
  }
275
415
  finally { if (e_1) throw e_1.error; }
276
416
  }
277
- spinner.stop();
417
+ if (!opts.verbose)
418
+ spinner.stop();
419
+ // For validate-parsing recipe, check for errors and exit accordingly
420
+ if (validateParsingRecipe) {
421
+ if (!validateParsingRecipe.hasErrors) {
422
+ console.log('All files parsed successfully.');
423
+ }
424
+ process.exit(validateParsingRecipe.hasErrors ? 1 : 0);
425
+ }
278
426
  if (changeCount === 0) {
279
427
  console.log('No changes to make.');
280
428
  }
281
- else if (opts.dryRun) {
282
- console.log(`\n${changeCount} file(s) would be changed.`);
283
- }
284
- else {
429
+ else if (opts.apply) {
285
430
  console.log(`\n${changeCount} file(s) changed.`);
286
431
  }
432
+ else if (!opts.list) {
433
+ console.log(`\n${changeCount} file(s) would be changed. Run with --apply to apply changes.`);
434
+ }
287
435
  });
288
436
  }
289
437
  main().catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../src/cli/rewrite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../src/cli/rewrite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Recipe } from '../recipe';
2
+ import { TreeVisitor } from '../visitor';
3
+ import { ExecutionContext } from '../execution';
4
+ /**
5
+ * A recipe that validates parsing by:
6
+ * 1. Reporting parse errors to stderr
7
+ * 2. Checking parse-to-print idempotence and showing diffs for failures
8
+ *
9
+ * Use this recipe to validate that the parser correctly handles your codebase.
10
+ */
11
+ export declare class ValidateParsingRecipe extends Recipe {
12
+ name: string;
13
+ displayName: string;
14
+ description: string;
15
+ private projectRoot;
16
+ private parseErrorCount;
17
+ private idempotenceFailureCount;
18
+ setProjectRoot(root: string): this;
19
+ editor(): Promise<TreeVisitor<any, ExecutionContext>>;
20
+ onComplete(_ctx: ExecutionContext): Promise<void>;
21
+ get hasErrors(): boolean;
22
+ }
23
+ //# sourceMappingURL=validate-parsing-recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-parsing-recipe.d.ts","sourceRoot":"","sources":["../../src/cli/validate-parsing-recipe.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,MAAM,EAAC,MAAM,WAAW,CAAC;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAS9C;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,MAAM;IAC7C,IAAI,SAAsC;IAC1C,WAAW,SAAsB;IACjC,WAAW,SAA2J;IAEtK,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,uBAAuB,CAAK;IAEpC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK5B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAmDrD,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvD,IAAI,SAAS,IAAI,OAAO,CAEvB;CACJ"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.ValidateParsingRecipe = void 0;
46
+ /*
47
+ * Copyright 2025 the original author or authors.
48
+ * <p>
49
+ * Licensed under the Moderne Source Available License (the "License");
50
+ * you may not use this file except in compliance with the License.
51
+ * You may obtain a copy of the License at
52
+ * <p>
53
+ * https://docs.moderne.io/licensing/moderne-source-available-license
54
+ * <p>
55
+ * Unless required by applicable law or agreed to in writing, software
56
+ * distributed under the License is distributed on an "AS IS" BASIS,
57
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
58
+ * See the License for the specific language governing permissions and
59
+ * limitations under the License.
60
+ */
61
+ const recipe_1 = require("../recipe");
62
+ const visitor_1 = require("../visitor");
63
+ const parse_error_1 = require("../parse-error");
64
+ const markers_1 = require("../markers");
65
+ const print_1 = require("../print");
66
+ const diff_1 = require("diff");
67
+ const fs = __importStar(require("fs"));
68
+ const path = __importStar(require("path"));
69
+ /**
70
+ * A recipe that validates parsing by:
71
+ * 1. Reporting parse errors to stderr
72
+ * 2. Checking parse-to-print idempotence and showing diffs for failures
73
+ *
74
+ * Use this recipe to validate that the parser correctly handles your codebase.
75
+ */
76
+ class ValidateParsingRecipe extends recipe_1.Recipe {
77
+ constructor() {
78
+ super(...arguments);
79
+ this.name = 'org.openrewrite.validate-parsing';
80
+ this.displayName = 'Validate parsing';
81
+ this.description = 'Validates that all source files parse correctly and that parse-to-print is idempotent. Reports parse errors and shows diffs for idempotence failures.';
82
+ this.projectRoot = process.cwd();
83
+ this.parseErrorCount = 0;
84
+ this.idempotenceFailureCount = 0;
85
+ }
86
+ setProjectRoot(root) {
87
+ this.projectRoot = root;
88
+ return this;
89
+ }
90
+ editor() {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const recipe = this;
93
+ return new class extends visitor_1.TreeVisitor {
94
+ visit(tree, ctx) {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ var _a;
97
+ if (!tree)
98
+ return undefined;
99
+ const sourceFile = tree;
100
+ // Check for parse errors
101
+ if ((0, parse_error_1.isParseError)(sourceFile)) {
102
+ const parseException = sourceFile.markers.markers.find(m => m.kind === markers_1.MarkersKind.ParseExceptionResult);
103
+ const message = (_a = parseException === null || parseException === void 0 ? void 0 : parseException.message) !== null && _a !== void 0 ? _a : 'Unknown parse error';
104
+ console.error(`Parse error in ${sourceFile.sourcePath}: ${message}`);
105
+ recipe.parseErrorCount++;
106
+ return tree;
107
+ }
108
+ // Check parse-to-print idempotence
109
+ try {
110
+ const printed = yield print_1.TreePrinters.print(sourceFile);
111
+ const originalPath = path.join(recipe.projectRoot, sourceFile.sourcePath);
112
+ const original = fs.readFileSync(originalPath, 'utf-8');
113
+ if (printed !== original) {
114
+ recipe.idempotenceFailureCount++;
115
+ console.error(`Parse-to-print idempotence failure in ${sourceFile.sourcePath}:`);
116
+ // Generate and print diff
117
+ const diff = (0, diff_1.createTwoFilesPatch)(sourceFile.sourcePath, sourceFile.sourcePath, original, printed, 'original', 'printed', { context: 3 });
118
+ console.error(diff);
119
+ }
120
+ }
121
+ catch (e) {
122
+ recipe.idempotenceFailureCount++;
123
+ console.error(`Failed to check idempotence for ${sourceFile.sourcePath}: ${e.message}`);
124
+ }
125
+ return tree;
126
+ });
127
+ }
128
+ };
129
+ });
130
+ }
131
+ onComplete(_ctx) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ if (this.parseErrorCount > 0 || this.idempotenceFailureCount > 0) {
134
+ console.error('');
135
+ if (this.parseErrorCount > 0) {
136
+ console.error(`${this.parseErrorCount} file(s) had parse errors.`);
137
+ }
138
+ if (this.idempotenceFailureCount > 0) {
139
+ console.error(`${this.idempotenceFailureCount} file(s) had parse-to-print idempotence failures.`);
140
+ }
141
+ }
142
+ });
143
+ }
144
+ get hasErrors() {
145
+ return this.parseErrorCount > 0 || this.idempotenceFailureCount > 0;
146
+ }
147
+ }
148
+ exports.ValidateParsingRecipe = ValidateParsingRecipe;
149
+ //# sourceMappingURL=validate-parsing-recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-parsing-recipe.js","sourceRoot":"","sources":["../../src/cli/validate-parsing-recipe.ts"],"names":[],"mappings":"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"}