driftdetect 0.2.3 → 0.3.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.
Files changed (83) hide show
  1. package/dist/bin/drift.js +15 -1
  2. package/dist/bin/drift.js.map +1 -1
  3. package/dist/commands/boundaries.d.ts.map +1 -0
  4. package/dist/commands/boundaries.js +602 -0
  5. package/dist/commands/boundaries.js.map +1 -0
  6. package/dist/commands/dna/export.d.ts.map +1 -0
  7. package/dist/commands/dna/export.js +91 -0
  8. package/dist/commands/dna/export.js.map +1 -0
  9. package/dist/commands/dna/gene.d.ts.map +1 -0
  10. package/dist/commands/dna/gene.js +96 -0
  11. package/dist/commands/dna/gene.js.map +1 -0
  12. package/dist/commands/dna/index.d.ts.map +1 -0
  13. package/dist/commands/dna/index.js +25 -0
  14. package/dist/commands/dna/index.js.map +1 -0
  15. package/dist/commands/dna/mutations.d.ts.map +1 -0
  16. package/dist/commands/dna/mutations.js +111 -0
  17. package/dist/commands/dna/mutations.js.map +1 -0
  18. package/dist/commands/dna/playbook.d.ts.map +1 -0
  19. package/dist/commands/dna/playbook.js +67 -0
  20. package/dist/commands/dna/playbook.js.map +1 -0
  21. package/dist/commands/dna/scan.d.ts.map +1 -0
  22. package/dist/commands/dna/scan.js +117 -0
  23. package/dist/commands/dna/scan.js.map +1 -0
  24. package/dist/commands/dna/status.d.ts.map +1 -0
  25. package/dist/commands/dna/status.js +106 -0
  26. package/dist/commands/dna/status.js.map +1 -0
  27. package/dist/commands/index.d.ts.map +1 -1
  28. package/dist/commands/index.js +4 -0
  29. package/dist/commands/index.js.map +1 -1
  30. package/dist/commands/parser.d.ts.map +1 -0
  31. package/dist/commands/parser.js +521 -0
  32. package/dist/commands/parser.js.map +1 -0
  33. package/dist/commands/scan.d.ts.map +1 -1
  34. package/dist/commands/scan.js +118 -3
  35. package/dist/commands/scan.js.map +1 -1
  36. package/dist/commands/trends.d.ts.map +1 -0
  37. package/dist/commands/trends.js +115 -0
  38. package/dist/commands/trends.js.map +1 -0
  39. package/dist/commands/watch.d.ts.map +1 -1
  40. package/dist/commands/watch.js +24 -3
  41. package/dist/commands/watch.js.map +1 -1
  42. package/dist/services/boundary-scanner.d.ts.map +1 -0
  43. package/dist/services/boundary-scanner.js +374 -0
  44. package/dist/services/boundary-scanner.js.map +1 -0
  45. package/dist/services/contract-scanner.d.ts.map +1 -1
  46. package/dist/services/contract-scanner.js +49 -1
  47. package/dist/services/contract-scanner.js.map +1 -1
  48. package/dist/services/scanner-service.d.ts.map +1 -1
  49. package/dist/services/scanner-service.js +75 -3
  50. package/dist/services/scanner-service.js.map +1 -1
  51. package/package.json +4 -4
  52. package/dist/bin/drift.d.ts +0 -11
  53. package/dist/commands/approve.d.ts +0 -18
  54. package/dist/commands/check.d.ts +0 -39
  55. package/dist/commands/dashboard.d.ts +0 -16
  56. package/dist/commands/export.d.ts +0 -16
  57. package/dist/commands/files.d.ts +0 -15
  58. package/dist/commands/ignore.d.ts +0 -18
  59. package/dist/commands/index.d.ts +0 -18
  60. package/dist/commands/init.d.ts +0 -19
  61. package/dist/commands/report.d.ts +0 -20
  62. package/dist/commands/scan.d.ts +0 -29
  63. package/dist/commands/status.d.ts +0 -18
  64. package/dist/commands/watch.d.ts +0 -13
  65. package/dist/commands/where.d.ts +0 -15
  66. package/dist/git/hooks.d.ts +0 -108
  67. package/dist/git/index.d.ts +0 -6
  68. package/dist/git/staged-files.d.ts +0 -41
  69. package/dist/index.d.ts +0 -17
  70. package/dist/reporters/github-reporter.d.ts +0 -13
  71. package/dist/reporters/gitlab-reporter.d.ts +0 -16
  72. package/dist/reporters/index.d.ts +0 -9
  73. package/dist/reporters/json-reporter.d.ts +0 -13
  74. package/dist/reporters/text-reporter.d.ts +0 -13
  75. package/dist/reporters/types.d.ts +0 -42
  76. package/dist/services/contract-scanner.d.ts +0 -35
  77. package/dist/services/scanner-service.d.ts +0 -166
  78. package/dist/types/index.d.ts +0 -24
  79. package/dist/ui/index.d.ts +0 -11
  80. package/dist/ui/progress.d.ts +0 -115
  81. package/dist/ui/prompts.d.ts +0 -91
  82. package/dist/ui/spinner.d.ts +0 -109
  83. package/dist/ui/table.d.ts +0 -118
@@ -0,0 +1,521 @@
1
+ /**
2
+ * Parser Command - drift parser
3
+ *
4
+ * Show parser information and diagnostics for drift's language parsers.
5
+ * Displays which parsers are available, their capabilities, and allows
6
+ * testing parsing on specific files.
7
+ *
8
+ * @requirements Phase 4 - CLI Integration
9
+ */
10
+ import { Command } from 'commander';
11
+ import * as fs from 'node:fs/promises';
12
+ import * as path from 'node:path';
13
+ import chalk from 'chalk';
14
+ /**
15
+ * Get Python parser information
16
+ */
17
+ async function getPythonParserInfo() {
18
+ try {
19
+ const { isTreeSitterAvailable, getLoadingError } = await import('driftdetect-core');
20
+ const available = isTreeSitterAvailable();
21
+ const loadingError = getLoadingError() ?? undefined;
22
+ return {
23
+ treeSitterAvailable: available,
24
+ activeParser: available ? 'tree-sitter' : 'regex',
25
+ capabilities: {
26
+ basicRouteDetection: true,
27
+ simplePydanticModels: true,
28
+ pydanticModels: available,
29
+ nestedTypes: available,
30
+ fieldConstraints: available,
31
+ inheritance: available,
32
+ generics: available,
33
+ django: available,
34
+ typeHints: available,
35
+ },
36
+ supportedFrameworks: available
37
+ ? ['fastapi', 'flask', 'django', 'starlette']
38
+ : ['fastapi', 'flask'],
39
+ loadingError,
40
+ };
41
+ }
42
+ catch {
43
+ return {
44
+ treeSitterAvailable: false,
45
+ activeParser: 'regex',
46
+ capabilities: {
47
+ basicRouteDetection: true,
48
+ simplePydanticModels: true,
49
+ pydanticModels: false,
50
+ nestedTypes: false,
51
+ fieldConstraints: false,
52
+ inheritance: false,
53
+ generics: false,
54
+ django: false,
55
+ typeHints: false,
56
+ },
57
+ supportedFrameworks: ['fastapi', 'flask'],
58
+ loadingError: 'driftdetect-core not available',
59
+ };
60
+ }
61
+ }
62
+ /**
63
+ * Get C# parser information
64
+ */
65
+ async function getCSharpParserInfo() {
66
+ try {
67
+ const { isCSharpTreeSitterAvailable, getCSharpLoadingError } = await import('driftdetect-core');
68
+ const available = isCSharpTreeSitterAvailable();
69
+ const loadingError = getCSharpLoadingError() ?? undefined;
70
+ return {
71
+ treeSitterAvailable: available,
72
+ activeParser: available ? 'tree-sitter' : 'regex',
73
+ capabilities: {
74
+ basicParsing: true,
75
+ classExtraction: available,
76
+ methodExtraction: available,
77
+ attributeExtraction: available,
78
+ aspNetControllers: available,
79
+ minimalApis: available,
80
+ recordTypes: available,
81
+ },
82
+ supportedFrameworks: available
83
+ ? ['asp.net-core', 'minimal-apis', 'web-api']
84
+ : [],
85
+ loadingError,
86
+ };
87
+ }
88
+ catch {
89
+ return {
90
+ treeSitterAvailable: false,
91
+ activeParser: 'regex',
92
+ capabilities: {
93
+ basicParsing: true,
94
+ classExtraction: false,
95
+ methodExtraction: false,
96
+ attributeExtraction: false,
97
+ aspNetControllers: false,
98
+ minimalApis: false,
99
+ recordTypes: false,
100
+ },
101
+ supportedFrameworks: [],
102
+ loadingError: 'C# parser not available',
103
+ };
104
+ }
105
+ }
106
+ /**
107
+ * Get Java parser information
108
+ *
109
+ * Java uses semantic detectors for pattern detection.
110
+ * Tree-sitter support can be added when tree-sitter-java is installed.
111
+ */
112
+ async function getJavaParserInfo() {
113
+ // Check if Java tree-sitter is available (future support)
114
+ let treeSitterAvailable = false;
115
+ let loadingError;
116
+ try {
117
+ // Try to dynamically check for Java tree-sitter support
118
+ // This will be available when tree-sitter-java is installed
119
+ const core = await import('driftdetect-core');
120
+ if ('isJavaTreeSitterAvailable' in core) {
121
+ treeSitterAvailable = core.isJavaTreeSitterAvailable();
122
+ if ('getJavaLoadingError' in core) {
123
+ loadingError = core.getJavaLoadingError() ?? undefined;
124
+ }
125
+ }
126
+ }
127
+ catch {
128
+ // Java tree-sitter not yet available - use semantic detectors
129
+ loadingError = undefined; // Not an error, just not available yet
130
+ }
131
+ return {
132
+ treeSitterAvailable,
133
+ activeParser: treeSitterAvailable ? 'tree-sitter' : 'semantic',
134
+ capabilities: {
135
+ basicParsing: true,
136
+ classExtraction: true, // Via semantic detectors
137
+ methodExtraction: true, // Via semantic detectors
138
+ annotationExtraction: true, // Via semantic detectors
139
+ springControllers: true, // Via Spring semantic detectors
140
+ springData: true,
141
+ springSecurity: true,
142
+ recordTypes: treeSitterAvailable,
143
+ },
144
+ supportedFrameworks: ['spring-boot', 'spring-mvc', 'spring-data', 'spring-security'],
145
+ loadingError,
146
+ };
147
+ }
148
+ /**
149
+ * Get TypeScript parser information
150
+ */
151
+ function getTypeScriptParserInfo() {
152
+ return {
153
+ activeParser: 'typescript-compiler-api',
154
+ capabilities: {
155
+ fullAST: true,
156
+ typeInference: true,
157
+ interfaces: true,
158
+ generics: true,
159
+ decorators: true,
160
+ },
161
+ };
162
+ }
163
+ /**
164
+ * Count nodes in an AST (generic implementation)
165
+ */
166
+ function countASTNodes(ast) {
167
+ if (!ast || typeof ast !== 'object')
168
+ return 0;
169
+ let count = 1;
170
+ const node = ast;
171
+ if (node['children'] && Array.isArray(node['children'])) {
172
+ for (const child of node['children']) {
173
+ count += countASTNodes(child);
174
+ }
175
+ }
176
+ return count;
177
+ }
178
+ /**
179
+ * Test parsing a specific file
180
+ */
181
+ async function testFileParsing(filePath, _verbose) {
182
+ const ext = path.extname(filePath).toLowerCase();
183
+ // Determine language
184
+ let language;
185
+ if (['.py', '.pyw', '.pyi'].includes(ext)) {
186
+ language = 'python';
187
+ }
188
+ else if (['.ts', '.tsx'].includes(ext)) {
189
+ language = 'typescript';
190
+ }
191
+ else if (['.js', '.jsx'].includes(ext)) {
192
+ language = 'javascript';
193
+ }
194
+ else if (['.cs'].includes(ext)) {
195
+ language = 'csharp';
196
+ }
197
+ else if (['.java'].includes(ext)) {
198
+ language = 'java';
199
+ }
200
+ else {
201
+ return {
202
+ success: false,
203
+ language: 'unknown',
204
+ parser: 'none',
205
+ nodeCount: undefined,
206
+ pydanticModels: undefined,
207
+ errors: [`Unsupported file extension: ${ext}`],
208
+ };
209
+ }
210
+ // Read file content
211
+ let content;
212
+ try {
213
+ content = await fs.readFile(filePath, 'utf-8');
214
+ }
215
+ catch (err) {
216
+ return {
217
+ success: false,
218
+ language,
219
+ parser: 'none',
220
+ nodeCount: undefined,
221
+ pydanticModels: undefined,
222
+ errors: [`Failed to read file: ${err instanceof Error ? err.message : String(err)}`],
223
+ };
224
+ }
225
+ // Parse based on language
226
+ if (language === 'python') {
227
+ try {
228
+ const { TreeSitterPythonParser, isTreeSitterAvailable } = await import('driftdetect-core');
229
+ if (isTreeSitterAvailable()) {
230
+ const parser = new TreeSitterPythonParser();
231
+ const result = parser.parse(content, filePath);
232
+ if (result.success && result.ast) {
233
+ const models = result.pydanticModels ?? [];
234
+ return {
235
+ success: true,
236
+ language,
237
+ parser: 'tree-sitter',
238
+ nodeCount: countASTNodes(result.ast),
239
+ pydanticModels: models.map(m => ({
240
+ name: m.name,
241
+ fieldCount: m.fields.length,
242
+ })),
243
+ errors: undefined,
244
+ };
245
+ }
246
+ else {
247
+ return {
248
+ success: false,
249
+ language,
250
+ parser: 'tree-sitter',
251
+ nodeCount: undefined,
252
+ pydanticModels: undefined,
253
+ errors: result.errors.map(e => e.message),
254
+ };
255
+ }
256
+ }
257
+ else {
258
+ return {
259
+ success: true,
260
+ language,
261
+ parser: 'regex',
262
+ nodeCount: undefined,
263
+ pydanticModels: [],
264
+ errors: undefined,
265
+ };
266
+ }
267
+ }
268
+ catch (err) {
269
+ return {
270
+ success: false,
271
+ language,
272
+ parser: 'unknown',
273
+ nodeCount: undefined,
274
+ pydanticModels: undefined,
275
+ errors: [err instanceof Error ? err.message : String(err)],
276
+ };
277
+ }
278
+ }
279
+ if (language === 'csharp') {
280
+ try {
281
+ const { TreeSitterCSharpParser, isCSharpTreeSitterAvailable } = await import('driftdetect-core');
282
+ if (isCSharpTreeSitterAvailable()) {
283
+ const parser = new TreeSitterCSharpParser();
284
+ const result = parser.parse(content, filePath);
285
+ if (result.success && result.ast) {
286
+ return {
287
+ success: true,
288
+ language,
289
+ parser: 'tree-sitter',
290
+ nodeCount: countASTNodes(result.ast),
291
+ pydanticModels: undefined,
292
+ errors: undefined,
293
+ };
294
+ }
295
+ else {
296
+ return {
297
+ success: false,
298
+ language,
299
+ parser: 'tree-sitter',
300
+ nodeCount: undefined,
301
+ pydanticModels: undefined,
302
+ errors: result.errors.map(e => e.message),
303
+ };
304
+ }
305
+ }
306
+ else {
307
+ return {
308
+ success: true,
309
+ language,
310
+ parser: 'regex',
311
+ nodeCount: undefined,
312
+ pydanticModels: undefined,
313
+ errors: undefined,
314
+ };
315
+ }
316
+ }
317
+ catch (err) {
318
+ return {
319
+ success: false,
320
+ language,
321
+ parser: 'unknown',
322
+ nodeCount: undefined,
323
+ pydanticModels: undefined,
324
+ errors: [err instanceof Error ? err.message : String(err)],
325
+ };
326
+ }
327
+ }
328
+ if (language === 'java') {
329
+ // Java uses semantic detectors for pattern detection
330
+ return {
331
+ success: true,
332
+ language,
333
+ parser: 'semantic',
334
+ nodeCount: undefined,
335
+ pydanticModels: undefined,
336
+ errors: undefined,
337
+ };
338
+ }
339
+ // TypeScript/JavaScript - just report success
340
+ return {
341
+ success: true,
342
+ language,
343
+ parser: 'typescript-compiler-api',
344
+ nodeCount: undefined,
345
+ pydanticModels: undefined,
346
+ errors: undefined,
347
+ };
348
+ }
349
+ /**
350
+ * Parser command implementation
351
+ */
352
+ async function parserAction(options) {
353
+ const format = options.format ?? 'text';
354
+ const verbose = options.verbose ?? false;
355
+ // Gather parser info
356
+ const pythonInfo = await getPythonParserInfo();
357
+ const csharpInfo = await getCSharpParserInfo();
358
+ const javaInfo = await getJavaParserInfo();
359
+ const tsInfo = getTypeScriptParserInfo();
360
+ // JSON output
361
+ if (format === 'json') {
362
+ const output = {
363
+ python: pythonInfo,
364
+ csharp: csharpInfo,
365
+ java: javaInfo,
366
+ typescript: tsInfo,
367
+ };
368
+ if (options.test) {
369
+ output['testResult'] = await testFileParsing(options.test, verbose);
370
+ }
371
+ console.log(JSON.stringify(output, null, 2));
372
+ return;
373
+ }
374
+ // Text output
375
+ console.log();
376
+ console.log(chalk.bold('🔧 Drift Parser Status'));
377
+ console.log(chalk.gray('─'.repeat(50)));
378
+ // Python
379
+ console.log();
380
+ console.log(chalk.bold('Python:'));
381
+ console.log(` Active parser: ${pythonInfo.treeSitterAvailable ? chalk.green('tree-sitter') : chalk.yellow('regex')}`);
382
+ console.log(` Tree-sitter: ${pythonInfo.treeSitterAvailable ? chalk.green('✓ available') : chalk.red('✗ not installed')}`);
383
+ if (pythonInfo.loadingError && verbose) {
384
+ console.log(chalk.gray(` Loading error: ${pythonInfo.loadingError}`));
385
+ }
386
+ if (pythonInfo.treeSitterAvailable) {
387
+ console.log(chalk.green(' Capabilities:'));
388
+ console.log(chalk.green(' ✓ Pydantic model extraction'));
389
+ console.log(chalk.green(' ✓ Nested type resolution'));
390
+ console.log(chalk.green(' ✓ Field constraints'));
391
+ console.log(chalk.green(' ✓ Model inheritance'));
392
+ console.log(chalk.green(' ✓ Generic types'));
393
+ console.log(chalk.green(' ✓ Django REST Framework'));
394
+ console.log(chalk.green(' ✓ Type hint extraction'));
395
+ }
396
+ else {
397
+ console.log(chalk.yellow(' Limited capabilities (regex-based):'));
398
+ console.log(chalk.yellow(' ✓ Basic route detection'));
399
+ console.log(chalk.yellow(' ✓ Simple Pydantic models'));
400
+ console.log(chalk.red(' ✗ Nested types'));
401
+ console.log(chalk.red(' ✗ Field constraints'));
402
+ console.log(chalk.red(' ✗ Django support'));
403
+ console.log();
404
+ console.log(chalk.gray(' To enable full Python support:'));
405
+ console.log(chalk.cyan(' pnpm add tree-sitter tree-sitter-python'));
406
+ }
407
+ console.log(` Frameworks: ${pythonInfo.supportedFrameworks.join(', ')}`);
408
+ // C#
409
+ console.log();
410
+ console.log(chalk.bold('C#:'));
411
+ console.log(` Active parser: ${csharpInfo.treeSitterAvailable ? chalk.green('tree-sitter') : chalk.yellow('regex')}`);
412
+ console.log(` Tree-sitter: ${csharpInfo.treeSitterAvailable ? chalk.green('✓ available') : chalk.red('✗ not installed')}`);
413
+ if (csharpInfo.treeSitterAvailable) {
414
+ console.log(chalk.green(' Capabilities:'));
415
+ console.log(chalk.green(' ✓ Class extraction'));
416
+ console.log(chalk.green(' ✓ Method extraction'));
417
+ console.log(chalk.green(' ✓ Attribute extraction'));
418
+ console.log(chalk.green(' ✓ ASP.NET Controllers'));
419
+ console.log(chalk.green(' ✓ Minimal APIs'));
420
+ console.log(chalk.green(' ✓ Record types'));
421
+ }
422
+ else {
423
+ console.log(chalk.yellow(' Limited capabilities:'));
424
+ console.log(chalk.yellow(' ✓ Basic parsing'));
425
+ console.log(chalk.red(' ✗ Full AST analysis'));
426
+ console.log();
427
+ console.log(chalk.gray(' To enable full C# support:'));
428
+ console.log(chalk.cyan(' pnpm add tree-sitter tree-sitter-c-sharp'));
429
+ }
430
+ if (csharpInfo.supportedFrameworks.length > 0) {
431
+ console.log(` Frameworks: ${csharpInfo.supportedFrameworks.join(', ')}`);
432
+ }
433
+ // Java
434
+ console.log();
435
+ console.log(chalk.bold('Java:'));
436
+ console.log(` Active parser: ${javaInfo.treeSitterAvailable ? chalk.green('tree-sitter') : chalk.green('semantic')}`);
437
+ console.log(` Tree-sitter: ${javaInfo.treeSitterAvailable ? chalk.green('✓ available') : chalk.gray('○ optional')}`);
438
+ console.log(chalk.green(' Capabilities (via semantic detectors):'));
439
+ console.log(chalk.green(' ✓ Class extraction'));
440
+ console.log(chalk.green(' ✓ Method extraction'));
441
+ console.log(chalk.green(' ✓ Annotation extraction'));
442
+ console.log(chalk.green(' ✓ Spring Controllers'));
443
+ console.log(chalk.green(' ✓ Spring Data'));
444
+ console.log(chalk.green(' ✓ Spring Security'));
445
+ if (javaInfo.treeSitterAvailable) {
446
+ console.log(chalk.green(' ✓ Record types (tree-sitter)'));
447
+ }
448
+ else {
449
+ console.log(chalk.gray(' ○ Record types (requires tree-sitter)'));
450
+ }
451
+ if (javaInfo.supportedFrameworks.length > 0) {
452
+ console.log(` Frameworks: ${javaInfo.supportedFrameworks.join(', ')}`);
453
+ }
454
+ // TypeScript
455
+ console.log();
456
+ console.log(chalk.bold('TypeScript/JavaScript:'));
457
+ console.log(` Active parser: ${chalk.green('typescript-compiler-api')}`);
458
+ console.log(chalk.green(' Capabilities:'));
459
+ console.log(chalk.green(' ✓ Full AST analysis'));
460
+ console.log(chalk.green(' ✓ Type inference'));
461
+ console.log(chalk.green(' ✓ Interface extraction'));
462
+ console.log(chalk.green(' ✓ Generic types'));
463
+ console.log(chalk.green(' ✓ Decorators'));
464
+ // Test file parsing if requested
465
+ if (options.test) {
466
+ console.log();
467
+ console.log(chalk.bold(`Testing: ${options.test}`));
468
+ console.log(chalk.gray('─'.repeat(50)));
469
+ const result = await testFileParsing(options.test, verbose);
470
+ if (result.success) {
471
+ console.log(chalk.green(' ✓ Parsed successfully'));
472
+ console.log(chalk.gray(` Language: ${result.language}`));
473
+ console.log(chalk.gray(` Parser: ${result.parser}`));
474
+ if (result.nodeCount !== undefined) {
475
+ console.log(chalk.gray(` AST nodes: ${result.nodeCount}`));
476
+ }
477
+ if (result.pydanticModels && result.pydanticModels.length > 0) {
478
+ console.log(chalk.gray(` Pydantic models: ${result.pydanticModels.length}`));
479
+ for (const model of result.pydanticModels) {
480
+ console.log(chalk.gray(` - ${model.name} (${model.fieldCount} fields)`));
481
+ }
482
+ }
483
+ }
484
+ else {
485
+ console.log(chalk.red(' ✗ Parse failed'));
486
+ if (result.errors) {
487
+ for (const error of result.errors) {
488
+ console.log(chalk.red(` ${error}`));
489
+ }
490
+ }
491
+ }
492
+ }
493
+ // Summary
494
+ console.log();
495
+ console.log(chalk.gray('─'.repeat(50)));
496
+ const allTreeSitterAvailable = pythonInfo.treeSitterAvailable && csharpInfo.treeSitterAvailable;
497
+ if (allTreeSitterAvailable) {
498
+ console.log(chalk.green('All tree-sitter parsers available. Full parsing capabilities enabled.'));
499
+ console.log(chalk.green('Java: Using semantic detectors (tree-sitter optional).'));
500
+ }
501
+ else {
502
+ const missing = [];
503
+ if (!pythonInfo.treeSitterAvailable)
504
+ missing.push('Python');
505
+ if (!csharpInfo.treeSitterAvailable)
506
+ missing.push('C#');
507
+ if (missing.length > 0) {
508
+ console.log(chalk.yellow(`Tree-sitter not available for: ${missing.join(', ')}`));
509
+ console.log(chalk.gray('Install tree-sitter packages for improved parsing accuracy.'));
510
+ }
511
+ console.log(chalk.green('Java: Using semantic detectors (tree-sitter optional).'));
512
+ }
513
+ console.log();
514
+ }
515
+ export const parserCommand = new Command('parser')
516
+ .description('Show parser information and diagnostics')
517
+ .option('--test <file>', 'Test parsing a specific file')
518
+ .option('-f, --format <format>', 'Output format (text, json)', 'text')
519
+ .option('--verbose', 'Enable verbose output')
520
+ .action(parserAction);
521
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/commands/parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAkkBD,eAAO,MAAM,WAAW,SAUH,CAAC"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA8rBD,eAAO,MAAM,WAAW,SAiBpB,CAAC"}