depgraph-core 1.0.2 → 1.0.3

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.
@@ -1,23 +1,30 @@
1
1
  {
2
2
  "meta": {
3
3
  "version": "1.0.0",
4
- "timestamp": "2026-07-16T02:45:52.311Z",
5
- "totalFiles": 25,
6
- "totalLines": 1968
4
+ "timestamp": "2026-07-22T02:46:32.329Z",
5
+ "totalFiles": 27,
6
+ "totalLines": 4209
7
7
  },
8
8
  "summary": {
9
- "totalNodes": 55,
10
- "totalEdges": 191,
9
+ "totalNodes": 76,
10
+ "totalEdges": 252,
11
11
  "entryPoints": [
12
12
  "makeId__graph_test",
13
13
  "createMockNode__impact_test",
14
14
  "createMockNode__metrics_test",
15
15
  "activeFunc__parser_test",
16
+ "extractEntities__go",
17
+ "extractImports__go",
18
+ "extractExports__go",
16
19
  "estimateComplexity__javascript",
17
20
  "slugify__javascript",
18
21
  "extractEntities__javascript",
19
22
  "extractImports__javascript",
20
23
  "extractExports__javascript",
24
+ "estimateComplexity__python",
25
+ "extractEntities__python",
26
+ "extractImports__python",
27
+ "extractExports__python",
21
28
  "color__main",
22
29
  "getFlag__main",
23
30
  "printHelp__main",
@@ -30,6 +37,12 @@
30
37
  "yellow__main",
31
38
  "red__main",
32
39
  "cyan__main",
40
+ "runGitDiff__gitdiff",
41
+ "parseDiff__gitdiff",
42
+ "extractEntityFromContext__gitdiff",
43
+ "buildDescription__gitdiff",
44
+ "ChangedEntity__gitdiff",
45
+ "GitDiffOptions__gitdiff",
33
46
  "makeId__graph",
34
47
  "resolvePath__graph",
35
48
  "getDirectDependents__impact",
@@ -54,20 +67,111 @@
54
67
  "ImpactReport__types",
55
68
  "OutputJSON__types"
56
69
  ],
57
- "isolatedNodes": [],
70
+ "isolatedNodes": [
71
+ "color__depgraph",
72
+ "getFlag__depgraph",
73
+ "printHelp__depgraph",
74
+ "printBanner__depgraph",
75
+ "printSummary__depgraph",
76
+ "printImpact__depgraph"
77
+ ],
58
78
  "criticalNodes": [
79
+ "registerParser__registry",
80
+ "EntityPattern__registry",
81
+ "LanguageParser__registry",
59
82
  "collectFiles__collector",
83
+ "getChangedEntities__gitdiff",
60
84
  "buildGraph__graph",
61
85
  "simulateImpact__impact",
62
86
  "computeMetrics__metrics",
63
87
  "getCriticalNodes__metrics",
64
88
  "writeOutput__output",
65
89
  "parseFiles__parser",
90
+ "RawEntity__types",
91
+ "RawImport__types",
66
92
  "DepGraph__types",
67
93
  "ImpactReport__types"
68
94
  ]
69
95
  },
70
96
  "nodes": [
97
+ {
98
+ "id": "color__depgraph",
99
+ "name": "color",
100
+ "type": "function",
101
+ "file": "depgraph.js",
102
+ "line": 1063,
103
+ "lang": "js",
104
+ "complexity": "low",
105
+ "inDegree": 0,
106
+ "outDegree": 0,
107
+ "centralityScore": 0,
108
+ "connections": []
109
+ },
110
+ {
111
+ "id": "getFlag__depgraph",
112
+ "name": "getFlag",
113
+ "type": "function",
114
+ "file": "depgraph.js",
115
+ "line": 1074,
116
+ "lang": "js",
117
+ "complexity": "low",
118
+ "inDegree": 0,
119
+ "outDegree": 0,
120
+ "centralityScore": 0,
121
+ "connections": []
122
+ },
123
+ {
124
+ "id": "printHelp__depgraph",
125
+ "name": "printHelp",
126
+ "type": "function",
127
+ "file": "depgraph.js",
128
+ "line": 1078,
129
+ "lang": "js",
130
+ "complexity": "low",
131
+ "inDegree": 0,
132
+ "outDegree": 0,
133
+ "centralityScore": 0,
134
+ "connections": []
135
+ },
136
+ {
137
+ "id": "printBanner__depgraph",
138
+ "name": "printBanner",
139
+ "type": "function",
140
+ "file": "depgraph.js",
141
+ "line": 1126,
142
+ "lang": "js",
143
+ "complexity": "low",
144
+ "inDegree": 0,
145
+ "outDegree": 0,
146
+ "centralityScore": 0,
147
+ "connections": []
148
+ },
149
+ {
150
+ "id": "printSummary__depgraph",
151
+ "name": "printSummary",
152
+ "type": "function",
153
+ "file": "depgraph.js",
154
+ "line": 1133,
155
+ "lang": "js",
156
+ "complexity": "low",
157
+ "inDegree": 0,
158
+ "outDegree": 0,
159
+ "centralityScore": 0,
160
+ "connections": []
161
+ },
162
+ {
163
+ "id": "printImpact__depgraph",
164
+ "name": "printImpact",
165
+ "type": "function",
166
+ "file": "depgraph.js",
167
+ "line": 1146,
168
+ "lang": "js",
169
+ "complexity": "medium",
170
+ "inDegree": 0,
171
+ "outDegree": 0,
172
+ "centralityScore": 0,
173
+ "connections": []
174
+ },
71
175
  {
72
176
  "id": "makeId__graph_test",
73
177
  "name": "makeId",
@@ -137,20 +241,78 @@
137
241
  "parseFile__parser"
138
242
  ]
139
243
  },
244
+ {
245
+ "id": "extractEntities__go",
246
+ "name": "extractEntities",
247
+ "type": "function",
248
+ "file": "src/languages/go.ts",
249
+ "line": 26,
250
+ "lang": "js",
251
+ "complexity": "low",
252
+ "inDegree": 0,
253
+ "outDegree": 5,
254
+ "centralityScore": 5,
255
+ "connections": [
256
+ "RawEntity__types",
257
+ "RawImport__types",
258
+ "EntityPattern__registry",
259
+ "LanguageParser__registry",
260
+ "registerParser__registry"
261
+ ]
262
+ },
263
+ {
264
+ "id": "extractImports__go",
265
+ "name": "extractImports",
266
+ "type": "function",
267
+ "file": "src/languages/go.ts",
268
+ "line": 49,
269
+ "lang": "js",
270
+ "complexity": "medium",
271
+ "inDegree": 0,
272
+ "outDegree": 5,
273
+ "centralityScore": 5,
274
+ "connections": [
275
+ "RawEntity__types",
276
+ "RawImport__types",
277
+ "EntityPattern__registry",
278
+ "LanguageParser__registry",
279
+ "registerParser__registry"
280
+ ]
281
+ },
282
+ {
283
+ "id": "extractExports__go",
284
+ "name": "extractExports",
285
+ "type": "function",
286
+ "file": "src/languages/go.ts",
287
+ "line": 76,
288
+ "lang": "js",
289
+ "complexity": "low",
290
+ "inDegree": 0,
291
+ "outDegree": 5,
292
+ "centralityScore": 5,
293
+ "connections": [
294
+ "RawEntity__types",
295
+ "RawImport__types",
296
+ "EntityPattern__registry",
297
+ "LanguageParser__registry",
298
+ "registerParser__registry"
299
+ ]
300
+ },
140
301
  {
141
302
  "id": "estimateComplexity__javascript",
142
303
  "name": "estimateComplexity",
143
304
  "type": "function",
144
305
  "file": "src/languages/javascript.ts",
145
- "line": 8,
306
+ "line": 14,
146
307
  "lang": "js",
147
308
  "complexity": "high",
148
309
  "inDegree": 0,
149
- "outDegree": 4,
150
- "centralityScore": 4,
310
+ "outDegree": 5,
311
+ "centralityScore": 5,
151
312
  "connections": [
152
313
  "RawEntity__types",
153
314
  "RawImport__types",
315
+ "EntityPattern__registry",
154
316
  "LanguageParser__registry",
155
317
  "registerParser__registry"
156
318
  ]
@@ -160,15 +322,16 @@
160
322
  "name": "slugify",
161
323
  "type": "function",
162
324
  "file": "src/languages/javascript.ts",
163
- "line": 23,
325
+ "line": 34,
164
326
  "lang": "js",
165
327
  "complexity": "low",
166
328
  "inDegree": 0,
167
- "outDegree": 4,
168
- "centralityScore": 4,
329
+ "outDegree": 5,
330
+ "centralityScore": 5,
169
331
  "connections": [
170
332
  "RawEntity__types",
171
333
  "RawImport__types",
334
+ "EntityPattern__registry",
172
335
  "LanguageParser__registry",
173
336
  "registerParser__registry"
174
337
  ]
@@ -178,15 +341,16 @@
178
341
  "name": "extractEntities",
179
342
  "type": "function",
180
343
  "file": "src/languages/javascript.ts",
181
- "line": 29,
344
+ "line": 97,
182
345
  "lang": "js",
183
346
  "complexity": "medium",
184
347
  "inDegree": 0,
185
- "outDegree": 4,
186
- "centralityScore": 4,
348
+ "outDegree": 5,
349
+ "centralityScore": 5,
187
350
  "connections": [
188
351
  "RawEntity__types",
189
352
  "RawImport__types",
353
+ "EntityPattern__registry",
190
354
  "LanguageParser__registry",
191
355
  "registerParser__registry"
192
356
  ]
@@ -196,15 +360,16 @@
196
360
  "name": "extractImports",
197
361
  "type": "function",
198
362
  "file": "src/languages/javascript.ts",
199
- "line": 115,
363
+ "line": 143,
200
364
  "lang": "js",
201
365
  "complexity": "low",
202
366
  "inDegree": 0,
203
- "outDegree": 4,
204
- "centralityScore": 4,
367
+ "outDegree": 5,
368
+ "centralityScore": 5,
205
369
  "connections": [
206
370
  "RawEntity__types",
207
371
  "RawImport__types",
372
+ "EntityPattern__registry",
208
373
  "LanguageParser__registry",
209
374
  "registerParser__registry"
210
375
  ]
@@ -214,15 +379,92 @@
214
379
  "name": "extractExports",
215
380
  "type": "function",
216
381
  "file": "src/languages/javascript.ts",
217
- "line": 156,
382
+ "line": 189,
218
383
  "lang": "js",
219
384
  "complexity": "low",
220
385
  "inDegree": 0,
221
- "outDegree": 4,
222
- "centralityScore": 4,
386
+ "outDegree": 5,
387
+ "centralityScore": 5,
223
388
  "connections": [
224
389
  "RawEntity__types",
225
390
  "RawImport__types",
391
+ "EntityPattern__registry",
392
+ "LanguageParser__registry",
393
+ "registerParser__registry"
394
+ ]
395
+ },
396
+ {
397
+ "id": "estimateComplexity__python",
398
+ "name": "estimateComplexity",
399
+ "type": "function",
400
+ "file": "src/languages/python.ts",
401
+ "line": 13,
402
+ "lang": "js",
403
+ "complexity": "high",
404
+ "inDegree": 0,
405
+ "outDegree": 5,
406
+ "centralityScore": 5,
407
+ "connections": [
408
+ "RawEntity__types",
409
+ "RawImport__types",
410
+ "EntityPattern__registry",
411
+ "LanguageParser__registry",
412
+ "registerParser__registry"
413
+ ]
414
+ },
415
+ {
416
+ "id": "extractEntities__python",
417
+ "name": "extractEntities",
418
+ "type": "function",
419
+ "file": "src/languages/python.ts",
420
+ "line": 58,
421
+ "lang": "js",
422
+ "complexity": "medium",
423
+ "inDegree": 0,
424
+ "outDegree": 5,
425
+ "centralityScore": 5,
426
+ "connections": [
427
+ "RawEntity__types",
428
+ "RawImport__types",
429
+ "EntityPattern__registry",
430
+ "LanguageParser__registry",
431
+ "registerParser__registry"
432
+ ]
433
+ },
434
+ {
435
+ "id": "extractImports__python",
436
+ "name": "extractImports",
437
+ "type": "function",
438
+ "file": "src/languages/python.ts",
439
+ "line": 98,
440
+ "lang": "js",
441
+ "complexity": "low",
442
+ "inDegree": 0,
443
+ "outDegree": 5,
444
+ "centralityScore": 5,
445
+ "connections": [
446
+ "RawEntity__types",
447
+ "RawImport__types",
448
+ "EntityPattern__registry",
449
+ "LanguageParser__registry",
450
+ "registerParser__registry"
451
+ ]
452
+ },
453
+ {
454
+ "id": "extractExports__python",
455
+ "name": "extractExports",
456
+ "type": "function",
457
+ "file": "src/languages/python.ts",
458
+ "line": 142,
459
+ "lang": "js",
460
+ "complexity": "low",
461
+ "inDegree": 0,
462
+ "outDegree": 5,
463
+ "centralityScore": 5,
464
+ "connections": [
465
+ "RawEntity__types",
466
+ "RawImport__types",
467
+ "EntityPattern__registry",
226
468
  "LanguageParser__registry",
227
469
  "registerParser__registry"
228
470
  ]
@@ -232,18 +474,25 @@
232
474
  "name": "registerParser",
233
475
  "type": "function",
234
476
  "file": "src/languages/registry.ts",
235
- "line": 15,
477
+ "line": 60,
236
478
  "lang": "js",
237
479
  "complexity": "low",
238
- "inDegree": 5,
480
+ "inDegree": 12,
239
481
  "outDegree": 2,
240
- "centralityScore": 12,
482
+ "centralityScore": 26,
241
483
  "connections": [
484
+ "extractEntities__go",
485
+ "extractImports__go",
486
+ "extractExports__go",
242
487
  "estimateComplexity__javascript",
243
488
  "slugify__javascript",
244
489
  "extractEntities__javascript",
245
490
  "extractImports__javascript",
246
491
  "extractExports__javascript",
492
+ "estimateComplexity__python",
493
+ "extractEntities__python",
494
+ "extractImports__python",
495
+ "extractExports__python",
247
496
  "RawEntity__types",
248
497
  "RawImport__types"
249
498
  ]
@@ -253,36 +502,78 @@
253
502
  "name": "getLanguageParser",
254
503
  "type": "function",
255
504
  "file": "src/languages/registry.ts",
256
- "line": 19,
505
+ "line": 69,
257
506
  "lang": "js",
258
507
  "complexity": "low",
259
- "inDegree": 2,
508
+ "inDegree": 9,
260
509
  "outDegree": 2,
261
- "centralityScore": 6,
510
+ "centralityScore": 20,
262
511
  "connections": [
263
512
  "RawEntity__types",
264
513
  "RawImport__types",
514
+ "getChangedEntities__gitdiff",
515
+ "runGitDiff__gitdiff",
516
+ "parseDiff__gitdiff",
517
+ "extractEntityFromContext__gitdiff",
518
+ "buildDescription__gitdiff",
519
+ "ChangedEntity__gitdiff",
520
+ "GitDiffOptions__gitdiff",
265
521
  "parseFile__parser",
266
522
  "parseFiles__parser"
267
523
  ]
268
524
  },
525
+ {
526
+ "id": "EntityPattern__registry",
527
+ "name": "EntityPattern",
528
+ "type": "interface",
529
+ "file": "src/languages/registry.ts",
530
+ "line": 8,
531
+ "lang": "js",
532
+ "complexity": "low",
533
+ "inDegree": 12,
534
+ "outDegree": 2,
535
+ "centralityScore": 26,
536
+ "connections": [
537
+ "extractEntities__go",
538
+ "extractImports__go",
539
+ "extractExports__go",
540
+ "estimateComplexity__javascript",
541
+ "slugify__javascript",
542
+ "extractEntities__javascript",
543
+ "extractImports__javascript",
544
+ "extractExports__javascript",
545
+ "estimateComplexity__python",
546
+ "extractEntities__python",
547
+ "extractImports__python",
548
+ "extractExports__python",
549
+ "RawEntity__types",
550
+ "RawImport__types"
551
+ ]
552
+ },
269
553
  {
270
554
  "id": "LanguageParser__registry",
271
555
  "name": "LanguageParser",
272
556
  "type": "interface",
273
557
  "file": "src/languages/registry.ts",
274
- "line": 4,
558
+ "line": 19,
275
559
  "lang": "js",
276
560
  "complexity": "low",
277
- "inDegree": 5,
561
+ "inDegree": 12,
278
562
  "outDegree": 2,
279
- "centralityScore": 12,
563
+ "centralityScore": 26,
280
564
  "connections": [
565
+ "extractEntities__go",
566
+ "extractImports__go",
567
+ "extractExports__go",
281
568
  "estimateComplexity__javascript",
282
569
  "slugify__javascript",
283
570
  "extractEntities__javascript",
284
571
  "extractImports__javascript",
285
572
  "extractExports__javascript",
573
+ "estimateComplexity__python",
574
+ "extractEntities__python",
575
+ "extractImports__python",
576
+ "extractExports__python",
286
577
  "RawEntity__types",
287
578
  "RawImport__types"
288
579
  ]
@@ -292,12 +583,12 @@
292
583
  "name": "color",
293
584
  "type": "function",
294
585
  "file": "src/main.ts",
295
- "line": 19,
586
+ "line": 29,
296
587
  "lang": "js",
297
588
  "complexity": "low",
298
589
  "inDegree": 0,
299
- "outDegree": 7,
300
- "centralityScore": 7,
590
+ "outDegree": 8,
591
+ "centralityScore": 8,
301
592
  "connections": [
302
593
  "collectFiles__collector",
303
594
  "parseFiles__parser",
@@ -305,7 +596,8 @@
305
596
  "computeMetrics__metrics",
306
597
  "getCriticalNodes__metrics",
307
598
  "simulateImpact__impact",
308
- "writeOutput__output"
599
+ "writeOutput__output",
600
+ "getChangedEntities__gitdiff"
309
601
  ]
310
602
  },
311
603
  {
@@ -313,12 +605,12 @@
313
605
  "name": "getFlag",
314
606
  "type": "function",
315
607
  "file": "src/main.ts",
316
- "line": 31,
608
+ "line": 49,
317
609
  "lang": "js",
318
610
  "complexity": "low",
319
611
  "inDegree": 0,
320
- "outDegree": 7,
321
- "centralityScore": 7,
612
+ "outDegree": 8,
613
+ "centralityScore": 8,
322
614
  "connections": [
323
615
  "collectFiles__collector",
324
616
  "parseFiles__parser",
@@ -326,7 +618,8 @@
326
618
  "computeMetrics__metrics",
327
619
  "getCriticalNodes__metrics",
328
620
  "simulateImpact__impact",
329
- "writeOutput__output"
621
+ "writeOutput__output",
622
+ "getChangedEntities__gitdiff"
330
623
  ]
331
624
  },
332
625
  {
@@ -334,12 +627,12 @@
334
627
  "name": "printHelp",
335
628
  "type": "function",
336
629
  "file": "src/main.ts",
337
- "line": 36,
630
+ "line": 57,
338
631
  "lang": "js",
339
632
  "complexity": "low",
340
633
  "inDegree": 0,
341
- "outDegree": 7,
342
- "centralityScore": 7,
634
+ "outDegree": 8,
635
+ "centralityScore": 8,
343
636
  "connections": [
344
637
  "collectFiles__collector",
345
638
  "parseFiles__parser",
@@ -347,7 +640,8 @@
347
640
  "computeMetrics__metrics",
348
641
  "getCriticalNodes__metrics",
349
642
  "simulateImpact__impact",
350
- "writeOutput__output"
643
+ "writeOutput__output",
644
+ "getChangedEntities__gitdiff"
351
645
  ]
352
646
  },
353
647
  {
@@ -355,12 +649,12 @@
355
649
  "name": "printBanner",
356
650
  "type": "function",
357
651
  "file": "src/main.ts",
358
- "line": 66,
652
+ "line": 109,
359
653
  "lang": "js",
360
654
  "complexity": "low",
361
655
  "inDegree": 0,
362
- "outDegree": 7,
363
- "centralityScore": 7,
656
+ "outDegree": 8,
657
+ "centralityScore": 8,
364
658
  "connections": [
365
659
  "collectFiles__collector",
366
660
  "parseFiles__parser",
@@ -368,7 +662,8 @@
368
662
  "computeMetrics__metrics",
369
663
  "getCriticalNodes__metrics",
370
664
  "simulateImpact__impact",
371
- "writeOutput__output"
665
+ "writeOutput__output",
666
+ "getChangedEntities__gitdiff"
372
667
  ]
373
668
  },
374
669
  {
@@ -376,12 +671,12 @@
376
671
  "name": "printSummary",
377
672
  "type": "function",
378
673
  "file": "src/main.ts",
379
- "line": 74,
674
+ "line": 125,
380
675
  "lang": "js",
381
676
  "complexity": "low",
382
677
  "inDegree": 0,
383
- "outDegree": 7,
384
- "centralityScore": 7,
678
+ "outDegree": 8,
679
+ "centralityScore": 8,
385
680
  "connections": [
386
681
  "collectFiles__collector",
387
682
  "parseFiles__parser",
@@ -389,7 +684,8 @@
389
684
  "computeMetrics__metrics",
390
685
  "getCriticalNodes__metrics",
391
686
  "simulateImpact__impact",
392
- "writeOutput__output"
687
+ "writeOutput__output",
688
+ "getChangedEntities__gitdiff"
393
689
  ]
394
690
  },
395
691
  {
@@ -397,12 +693,12 @@
397
693
  "name": "printImpact",
398
694
  "type": "function",
399
695
  "file": "src/main.ts",
400
- "line": 93,
696
+ "line": 149,
401
697
  "lang": "js",
402
698
  "complexity": "medium",
403
699
  "inDegree": 0,
404
- "outDegree": 7,
405
- "centralityScore": 7,
700
+ "outDegree": 8,
701
+ "centralityScore": 8,
406
702
  "connections": [
407
703
  "collectFiles__collector",
408
704
  "parseFiles__parser",
@@ -410,7 +706,8 @@
410
706
  "computeMetrics__metrics",
411
707
  "getCriticalNodes__metrics",
412
708
  "simulateImpact__impact",
413
- "writeOutput__output"
709
+ "writeOutput__output",
710
+ "getChangedEntities__gitdiff"
414
711
  ]
415
712
  },
416
713
  {
@@ -418,12 +715,12 @@
418
715
  "name": "dim",
419
716
  "type": "function",
420
717
  "file": "src/main.ts",
421
- "line": 23,
718
+ "line": 33,
422
719
  "lang": "js",
423
720
  "complexity": "low",
424
721
  "inDegree": 0,
425
- "outDegree": 7,
426
- "centralityScore": 7,
722
+ "outDegree": 8,
723
+ "centralityScore": 8,
427
724
  "connections": [
428
725
  "collectFiles__collector",
429
726
  "parseFiles__parser",
@@ -431,7 +728,8 @@
431
728
  "computeMetrics__metrics",
432
729
  "getCriticalNodes__metrics",
433
730
  "simulateImpact__impact",
434
- "writeOutput__output"
731
+ "writeOutput__output",
732
+ "getChangedEntities__gitdiff"
435
733
  ]
436
734
  },
437
735
  {
@@ -439,12 +737,12 @@
439
737
  "name": "bold",
440
738
  "type": "function",
441
739
  "file": "src/main.ts",
442
- "line": 24,
740
+ "line": 34,
443
741
  "lang": "js",
444
742
  "complexity": "low",
445
743
  "inDegree": 0,
446
- "outDegree": 7,
447
- "centralityScore": 7,
744
+ "outDegree": 8,
745
+ "centralityScore": 8,
448
746
  "connections": [
449
747
  "collectFiles__collector",
450
748
  "parseFiles__parser",
@@ -452,7 +750,8 @@
452
750
  "computeMetrics__metrics",
453
751
  "getCriticalNodes__metrics",
454
752
  "simulateImpact__impact",
455
- "writeOutput__output"
753
+ "writeOutput__output",
754
+ "getChangedEntities__gitdiff"
456
755
  ]
457
756
  },
458
757
  {
@@ -460,12 +759,12 @@
460
759
  "name": "green",
461
760
  "type": "function",
462
761
  "file": "src/main.ts",
463
- "line": 25,
762
+ "line": 35,
464
763
  "lang": "js",
465
764
  "complexity": "low",
466
765
  "inDegree": 0,
467
- "outDegree": 7,
468
- "centralityScore": 7,
766
+ "outDegree": 8,
767
+ "centralityScore": 8,
469
768
  "connections": [
470
769
  "collectFiles__collector",
471
770
  "parseFiles__parser",
@@ -473,7 +772,8 @@
473
772
  "computeMetrics__metrics",
474
773
  "getCriticalNodes__metrics",
475
774
  "simulateImpact__impact",
476
- "writeOutput__output"
775
+ "writeOutput__output",
776
+ "getChangedEntities__gitdiff"
477
777
  ]
478
778
  },
479
779
  {
@@ -481,12 +781,12 @@
481
781
  "name": "yellow",
482
782
  "type": "function",
483
783
  "file": "src/main.ts",
484
- "line": 26,
784
+ "line": 36,
485
785
  "lang": "js",
486
786
  "complexity": "low",
487
787
  "inDegree": 0,
488
- "outDegree": 7,
489
- "centralityScore": 7,
788
+ "outDegree": 8,
789
+ "centralityScore": 8,
490
790
  "connections": [
491
791
  "collectFiles__collector",
492
792
  "parseFiles__parser",
@@ -494,7 +794,8 @@
494
794
  "computeMetrics__metrics",
495
795
  "getCriticalNodes__metrics",
496
796
  "simulateImpact__impact",
497
- "writeOutput__output"
797
+ "writeOutput__output",
798
+ "getChangedEntities__gitdiff"
498
799
  ]
499
800
  },
500
801
  {
@@ -502,12 +803,12 @@
502
803
  "name": "red",
503
804
  "type": "function",
504
805
  "file": "src/main.ts",
505
- "line": 27,
806
+ "line": 37,
506
807
  "lang": "js",
507
808
  "complexity": "low",
508
809
  "inDegree": 0,
509
- "outDegree": 7,
510
- "centralityScore": 7,
810
+ "outDegree": 8,
811
+ "centralityScore": 8,
511
812
  "connections": [
512
813
  "collectFiles__collector",
513
814
  "parseFiles__parser",
@@ -515,7 +816,8 @@
515
816
  "computeMetrics__metrics",
516
817
  "getCriticalNodes__metrics",
517
818
  "simulateImpact__impact",
518
- "writeOutput__output"
819
+ "writeOutput__output",
820
+ "getChangedEntities__gitdiff"
519
821
  ]
520
822
  },
521
823
  {
@@ -523,12 +825,12 @@
523
825
  "name": "cyan",
524
826
  "type": "function",
525
827
  "file": "src/main.ts",
526
- "line": 28,
828
+ "line": 38,
527
829
  "lang": "js",
528
830
  "complexity": "low",
529
831
  "inDegree": 0,
530
- "outDegree": 7,
531
- "centralityScore": 7,
832
+ "outDegree": 8,
833
+ "centralityScore": 8,
532
834
  "connections": [
533
835
  "collectFiles__collector",
534
836
  "parseFiles__parser",
@@ -536,7 +838,8 @@
536
838
  "computeMetrics__metrics",
537
839
  "getCriticalNodes__metrics",
538
840
  "simulateImpact__impact",
539
- "writeOutput__output"
841
+ "writeOutput__output",
842
+ "getChangedEntities__gitdiff"
540
843
  ]
541
844
  },
542
845
  {
@@ -544,7 +847,7 @@
544
847
  "name": "collectFiles",
545
848
  "type": "function",
546
849
  "file": "src/stages/collector.ts",
547
- "line": 5,
850
+ "line": 13,
548
851
  "lang": "js",
549
852
  "complexity": "medium",
550
853
  "inDegree": 12,
@@ -565,12 +868,129 @@
565
868
  "cyan__main"
566
869
  ]
567
870
  },
871
+ {
872
+ "id": "getChangedEntities__gitdiff",
873
+ "name": "getChangedEntities",
874
+ "type": "function",
875
+ "file": "src/stages/gitdiff.ts",
876
+ "line": 35,
877
+ "lang": "js",
878
+ "complexity": "low",
879
+ "inDegree": 12,
880
+ "outDegree": 1,
881
+ "centralityScore": 25,
882
+ "connections": [
883
+ "color__main",
884
+ "getFlag__main",
885
+ "printHelp__main",
886
+ "printBanner__main",
887
+ "printSummary__main",
888
+ "printImpact__main",
889
+ "dim__main",
890
+ "bold__main",
891
+ "green__main",
892
+ "yellow__main",
893
+ "red__main",
894
+ "cyan__main",
895
+ "getLanguageParser__registry"
896
+ ]
897
+ },
898
+ {
899
+ "id": "runGitDiff__gitdiff",
900
+ "name": "runGitDiff",
901
+ "type": "function",
902
+ "file": "src/stages/gitdiff.ts",
903
+ "line": 43,
904
+ "lang": "js",
905
+ "complexity": "high",
906
+ "inDegree": 0,
907
+ "outDegree": 1,
908
+ "centralityScore": 1,
909
+ "connections": [
910
+ "getLanguageParser__registry"
911
+ ]
912
+ },
913
+ {
914
+ "id": "parseDiff__gitdiff",
915
+ "name": "parseDiff",
916
+ "type": "function",
917
+ "file": "src/stages/gitdiff.ts",
918
+ "line": 85,
919
+ "lang": "js",
920
+ "complexity": "high",
921
+ "inDegree": 0,
922
+ "outDegree": 1,
923
+ "centralityScore": 1,
924
+ "connections": [
925
+ "getLanguageParser__registry"
926
+ ]
927
+ },
928
+ {
929
+ "id": "extractEntityFromContext__gitdiff",
930
+ "name": "extractEntityFromContext",
931
+ "type": "function",
932
+ "file": "src/stages/gitdiff.ts",
933
+ "line": 167,
934
+ "lang": "js",
935
+ "complexity": "medium",
936
+ "inDegree": 0,
937
+ "outDegree": 1,
938
+ "centralityScore": 1,
939
+ "connections": [
940
+ "getLanguageParser__registry"
941
+ ]
942
+ },
943
+ {
944
+ "id": "buildDescription__gitdiff",
945
+ "name": "buildDescription",
946
+ "type": "function",
947
+ "file": "src/stages/gitdiff.ts",
948
+ "line": 204,
949
+ "lang": "js",
950
+ "complexity": "medium",
951
+ "inDegree": 0,
952
+ "outDegree": 1,
953
+ "centralityScore": 1,
954
+ "connections": [
955
+ "getLanguageParser__registry"
956
+ ]
957
+ },
958
+ {
959
+ "id": "ChangedEntity__gitdiff",
960
+ "name": "ChangedEntity",
961
+ "type": "interface",
962
+ "file": "src/stages/gitdiff.ts",
963
+ "line": 7,
964
+ "lang": "js",
965
+ "complexity": "low",
966
+ "inDegree": 0,
967
+ "outDegree": 1,
968
+ "centralityScore": 1,
969
+ "connections": [
970
+ "getLanguageParser__registry"
971
+ ]
972
+ },
973
+ {
974
+ "id": "GitDiffOptions__gitdiff",
975
+ "name": "GitDiffOptions",
976
+ "type": "interface",
977
+ "file": "src/stages/gitdiff.ts",
978
+ "line": 14,
979
+ "lang": "js",
980
+ "complexity": "low",
981
+ "inDegree": 0,
982
+ "outDegree": 1,
983
+ "centralityScore": 1,
984
+ "connections": [
985
+ "getLanguageParser__registry"
986
+ ]
987
+ },
568
988
  {
569
989
  "id": "buildGraph__graph",
570
990
  "name": "buildGraph",
571
991
  "type": "function",
572
992
  "file": "src/stages/graph.ts",
573
- "line": 4,
993
+ "line": 11,
574
994
  "lang": "js",
575
995
  "complexity": "high",
576
996
  "inDegree": 13,
@@ -601,7 +1021,7 @@
601
1021
  "name": "makeId",
602
1022
  "type": "function",
603
1023
  "file": "src/stages/graph.ts",
604
- "line": 111,
1024
+ "line": 124,
605
1025
  "lang": "js",
606
1026
  "complexity": "low",
607
1027
  "inDegree": 0,
@@ -619,7 +1039,7 @@
619
1039
  "name": "resolvePath",
620
1040
  "type": "function",
621
1041
  "file": "src/stages/graph.ts",
622
- "line": 118,
1042
+ "line": 139,
623
1043
  "lang": "js",
624
1044
  "complexity": "low",
625
1045
  "inDegree": 0,
@@ -637,7 +1057,7 @@
637
1057
  "name": "simulateImpact",
638
1058
  "type": "function",
639
1059
  "file": "src/stages/impact.ts",
640
- "line": 4,
1060
+ "line": 14,
641
1061
  "lang": "js",
642
1062
  "complexity": "medium",
643
1063
  "inDegree": 13,
@@ -667,7 +1087,7 @@
667
1087
  "name": "getDirectDependents",
668
1088
  "type": "function",
669
1089
  "file": "src/stages/impact.ts",
670
- "line": 94,
1090
+ "line": 110,
671
1091
  "lang": "js",
672
1092
  "complexity": "low",
673
1093
  "inDegree": 0,
@@ -684,7 +1104,7 @@
684
1104
  "name": "getImpactLevel",
685
1105
  "type": "function",
686
1106
  "file": "src/stages/impact.ts",
687
- "line": 100,
1107
+ "line": 123,
688
1108
  "lang": "js",
689
1109
  "complexity": "low",
690
1110
  "inDegree": 0,
@@ -701,7 +1121,7 @@
701
1121
  "name": "computeRiskScore",
702
1122
  "type": "function",
703
1123
  "file": "src/stages/impact.ts",
704
- "line": 107,
1124
+ "line": 138,
705
1125
  "lang": "js",
706
1126
  "complexity": "low",
707
1127
  "inDegree": 0,
@@ -718,7 +1138,7 @@
718
1138
  "name": "getRiskLevel",
719
1139
  "type": "function",
720
1140
  "file": "src/stages/impact.ts",
721
- "line": 117,
1141
+ "line": 155,
722
1142
  "lang": "js",
723
1143
  "complexity": "low",
724
1144
  "inDegree": 0,
@@ -735,7 +1155,7 @@
735
1155
  "name": "getReason",
736
1156
  "type": "function",
737
1157
  "file": "src/stages/impact.ts",
738
- "line": 124,
1158
+ "line": 170,
739
1159
  "lang": "js",
740
1160
  "complexity": "low",
741
1161
  "inDegree": 0,
@@ -752,7 +1172,7 @@
752
1172
  "name": "getChangeRequired",
753
1173
  "type": "function",
754
1174
  "file": "src/stages/impact.ts",
755
- "line": 130,
1175
+ "line": 184,
756
1176
  "lang": "js",
757
1177
  "complexity": "medium",
758
1178
  "inDegree": 0,
@@ -769,7 +1189,7 @@
769
1189
  "name": "buildTestingPlan",
770
1190
  "type": "function",
771
1191
  "file": "src/stages/impact.ts",
772
- "line": 137,
1192
+ "line": 198,
773
1193
  "lang": "js",
774
1194
  "complexity": "low",
775
1195
  "inDegree": 0,
@@ -786,7 +1206,7 @@
786
1206
  "name": "buildRecommendations",
787
1207
  "type": "function",
788
1208
  "file": "src/stages/impact.ts",
789
- "line": 159,
1209
+ "line": 227,
790
1210
  "lang": "js",
791
1211
  "complexity": "medium",
792
1212
  "inDegree": 0,
@@ -803,7 +1223,7 @@
803
1223
  "name": "emptyReport",
804
1224
  "type": "function",
805
1225
  "file": "src/stages/impact.ts",
806
- "line": 185,
1226
+ "line": 261,
807
1227
  "lang": "js",
808
1228
  "complexity": "low",
809
1229
  "inDegree": 0,
@@ -820,7 +1240,7 @@
820
1240
  "name": "computeMetrics",
821
1241
  "type": "function",
822
1242
  "file": "src/stages/metrics.ts",
823
- "line": 3,
1243
+ "line": 10,
824
1244
  "lang": "js",
825
1245
  "complexity": "medium",
826
1246
  "inDegree": 13,
@@ -849,7 +1269,7 @@
849
1269
  "name": "getEntryPoints",
850
1270
  "type": "function",
851
1271
  "file": "src/stages/metrics.ts",
852
- "line": 29,
1272
+ "line": 43,
853
1273
  "lang": "js",
854
1274
  "complexity": "low",
855
1275
  "inDegree": 2,
@@ -867,7 +1287,7 @@
867
1287
  "name": "getLeafNodes",
868
1288
  "type": "function",
869
1289
  "file": "src/stages/metrics.ts",
870
- "line": 37,
1290
+ "line": 58,
871
1291
  "lang": "js",
872
1292
  "complexity": "low",
873
1293
  "inDegree": 2,
@@ -885,7 +1305,7 @@
885
1305
  "name": "getIsolatedNodes",
886
1306
  "type": "function",
887
1307
  "file": "src/stages/metrics.ts",
888
- "line": 45,
1308
+ "line": 73,
889
1309
  "lang": "js",
890
1310
  "complexity": "low",
891
1311
  "inDegree": 2,
@@ -903,7 +1323,7 @@
903
1323
  "name": "getCriticalNodes",
904
1324
  "type": "function",
905
1325
  "file": "src/stages/metrics.ts",
906
- "line": 53,
1326
+ "line": 88,
907
1327
  "lang": "js",
908
1328
  "complexity": "low",
909
1329
  "inDegree": 14,
@@ -933,7 +1353,7 @@
933
1353
  "name": "writeOutput",
934
1354
  "type": "function",
935
1355
  "file": "src/stages/output.ts",
936
- "line": 11,
1356
+ "line": 21,
937
1357
  "lang": "js",
938
1358
  "complexity": "low",
939
1359
  "inDegree": 12,
@@ -967,7 +1387,7 @@
967
1387
  "name": "parseFile",
968
1388
  "type": "function",
969
1389
  "file": "src/stages/parser.ts",
970
- "line": 6,
1390
+ "line": 13,
971
1391
  "lang": "js",
972
1392
  "complexity": "low",
973
1393
  "inDegree": 1,
@@ -986,7 +1406,7 @@
986
1406
  "name": "parseFiles",
987
1407
  "type": "function",
988
1408
  "file": "src/stages/parser.ts",
989
- "line": 41,
1409
+ "line": 55,
990
1410
  "lang": "js",
991
1411
  "complexity": "low",
992
1412
  "inDegree": 12,
@@ -1016,20 +1436,28 @@
1016
1436
  "name": "RawEntity",
1017
1437
  "type": "interface",
1018
1438
  "file": "src/types.ts",
1019
- "line": 4,
1439
+ "line": 8,
1020
1440
  "lang": "js",
1021
1441
  "complexity": "low",
1022
- "inDegree": 10,
1442
+ "inDegree": 18,
1023
1443
  "outDegree": 0,
1024
- "centralityScore": 20,
1444
+ "centralityScore": 36,
1025
1445
  "connections": [
1446
+ "extractEntities__go",
1447
+ "extractImports__go",
1448
+ "extractExports__go",
1026
1449
  "estimateComplexity__javascript",
1027
1450
  "slugify__javascript",
1028
1451
  "extractEntities__javascript",
1029
1452
  "extractImports__javascript",
1030
1453
  "extractExports__javascript",
1454
+ "estimateComplexity__python",
1455
+ "extractEntities__python",
1456
+ "extractImports__python",
1457
+ "extractExports__python",
1031
1458
  "registerParser__registry",
1032
1459
  "getLanguageParser__registry",
1460
+ "EntityPattern__registry",
1033
1461
  "LanguageParser__registry",
1034
1462
  "parseFile__parser",
1035
1463
  "parseFiles__parser"
@@ -1040,20 +1468,28 @@
1040
1468
  "name": "RawImport",
1041
1469
  "type": "interface",
1042
1470
  "file": "src/types.ts",
1043
- "line": 11,
1471
+ "line": 22,
1044
1472
  "lang": "js",
1045
1473
  "complexity": "low",
1046
- "inDegree": 10,
1474
+ "inDegree": 18,
1047
1475
  "outDegree": 0,
1048
- "centralityScore": 20,
1476
+ "centralityScore": 36,
1049
1477
  "connections": [
1478
+ "extractEntities__go",
1479
+ "extractImports__go",
1480
+ "extractExports__go",
1050
1481
  "estimateComplexity__javascript",
1051
1482
  "slugify__javascript",
1052
1483
  "extractEntities__javascript",
1053
1484
  "extractImports__javascript",
1054
1485
  "extractExports__javascript",
1486
+ "estimateComplexity__python",
1487
+ "extractEntities__python",
1488
+ "extractImports__python",
1489
+ "extractExports__python",
1055
1490
  "registerParser__registry",
1056
1491
  "getLanguageParser__registry",
1492
+ "EntityPattern__registry",
1057
1493
  "LanguageParser__registry",
1058
1494
  "parseFile__parser",
1059
1495
  "parseFiles__parser"
@@ -1064,7 +1500,7 @@
1064
1500
  "name": "ParsedFile",
1065
1501
  "type": "interface",
1066
1502
  "file": "src/types.ts",
1067
- "line": 17,
1503
+ "line": 34,
1068
1504
  "lang": "js",
1069
1505
  "complexity": "low",
1070
1506
  "inDegree": 7,
@@ -1085,7 +1521,7 @@
1085
1521
  "name": "DepNode",
1086
1522
  "type": "interface",
1087
1523
  "file": "src/types.ts",
1088
- "line": 26,
1524
+ "line": 52,
1089
1525
  "lang": "js",
1090
1526
  "complexity": "low",
1091
1527
  "inDegree": 10,
@@ -1109,7 +1545,7 @@
1109
1545
  "name": "DepEdge",
1110
1546
  "type": "interface",
1111
1547
  "file": "src/types.ts",
1112
- "line": 43,
1548
+ "line": 86,
1113
1549
  "lang": "js",
1114
1550
  "complexity": "low",
1115
1551
  "inDegree": 3,
@@ -1126,7 +1562,7 @@
1126
1562
  "name": "DepGraph",
1127
1563
  "type": "interface",
1128
1564
  "file": "src/types.ts",
1129
- "line": 50,
1565
+ "line": 100,
1130
1566
  "lang": "js",
1131
1567
  "complexity": "low",
1132
1568
  "inDegree": 21,
@@ -1161,7 +1597,7 @@
1161
1597
  "name": "AffectedNode",
1162
1598
  "type": "interface",
1163
1599
  "file": "src/types.ts",
1164
- "line": 55,
1600
+ "line": 110,
1165
1601
  "lang": "js",
1166
1602
  "complexity": "low",
1167
1603
  "inDegree": 10,
@@ -1185,7 +1621,7 @@
1185
1621
  "name": "ImpactReport",
1186
1622
  "type": "interface",
1187
1623
  "file": "src/types.ts",
1188
- "line": 66,
1624
+ "line": 132,
1189
1625
  "lang": "js",
1190
1626
  "complexity": "low",
1191
1627
  "inDegree": 11,
@@ -1210,7 +1646,7 @@
1210
1646
  "name": "OutputJSON",
1211
1647
  "type": "interface",
1212
1648
  "file": "src/types.ts",
1213
- "line": 77,
1649
+ "line": 154,
1214
1650
  "lang": "js",
1215
1651
  "complexity": "low",
1216
1652
  "inDegree": 1,
@@ -1235,70 +1671,160 @@
1235
1671
  "description": "makeId imports ParsedFile from types.ts"
1236
1672
  },
1237
1673
  {
1238
- "from": "createMockNode__impact_test",
1239
- "to": "simulateImpact__impact",
1674
+ "from": "createMockNode__impact_test",
1675
+ "to": "simulateImpact__impact",
1676
+ "type": "imports",
1677
+ "description": "createMockNode imports simulateImpact from impact.ts"
1678
+ },
1679
+ {
1680
+ "from": "createMockNode__impact_test",
1681
+ "to": "DepGraph__types",
1682
+ "type": "imports",
1683
+ "description": "createMockNode imports DepGraph from types.ts"
1684
+ },
1685
+ {
1686
+ "from": "createMockNode__impact_test",
1687
+ "to": "DepNode__types",
1688
+ "type": "imports",
1689
+ "description": "createMockNode imports DepNode from types.ts"
1690
+ },
1691
+ {
1692
+ "from": "createMockNode__metrics_test",
1693
+ "to": "computeMetrics__metrics",
1694
+ "type": "imports",
1695
+ "description": "createMockNode imports computeMetrics from metrics.ts"
1696
+ },
1697
+ {
1698
+ "from": "createMockNode__metrics_test",
1699
+ "to": "getEntryPoints__metrics",
1700
+ "type": "imports",
1701
+ "description": "createMockNode imports getEntryPoints from metrics.ts"
1702
+ },
1703
+ {
1704
+ "from": "createMockNode__metrics_test",
1705
+ "to": "getLeafNodes__metrics",
1706
+ "type": "imports",
1707
+ "description": "createMockNode imports getLeafNodes from metrics.ts"
1708
+ },
1709
+ {
1710
+ "from": "createMockNode__metrics_test",
1711
+ "to": "getIsolatedNodes__metrics",
1712
+ "type": "imports",
1713
+ "description": "createMockNode imports getIsolatedNodes from metrics.ts"
1714
+ },
1715
+ {
1716
+ "from": "createMockNode__metrics_test",
1717
+ "to": "getCriticalNodes__metrics",
1718
+ "type": "imports",
1719
+ "description": "createMockNode imports getCriticalNodes from metrics.ts"
1720
+ },
1721
+ {
1722
+ "from": "createMockNode__metrics_test",
1723
+ "to": "DepGraph__types",
1724
+ "type": "imports",
1725
+ "description": "createMockNode imports DepGraph from types.ts"
1726
+ },
1727
+ {
1728
+ "from": "createMockNode__metrics_test",
1729
+ "to": "DepNode__types",
1730
+ "type": "imports",
1731
+ "description": "createMockNode imports DepNode from types.ts"
1732
+ },
1733
+ {
1734
+ "from": "activeFunc__parser_test",
1735
+ "to": "parseFile__parser",
1736
+ "type": "imports",
1737
+ "description": "activeFunc imports parseFile from parser.ts"
1738
+ },
1739
+ {
1740
+ "from": "extractEntities__go",
1741
+ "to": "RawEntity__types",
1742
+ "type": "imports",
1743
+ "description": "extractEntities imports RawEntity from types.ts"
1744
+ },
1745
+ {
1746
+ "from": "extractImports__go",
1747
+ "to": "RawEntity__types",
1748
+ "type": "imports",
1749
+ "description": "extractImports imports RawEntity from types.ts"
1750
+ },
1751
+ {
1752
+ "from": "extractExports__go",
1753
+ "to": "RawEntity__types",
1754
+ "type": "imports",
1755
+ "description": "extractExports imports RawEntity from types.ts"
1756
+ },
1757
+ {
1758
+ "from": "extractEntities__go",
1759
+ "to": "RawImport__types",
1760
+ "type": "imports",
1761
+ "description": "extractEntities imports RawImport from types.ts"
1762
+ },
1763
+ {
1764
+ "from": "extractImports__go",
1765
+ "to": "RawImport__types",
1240
1766
  "type": "imports",
1241
- "description": "createMockNode imports simulateImpact from impact.ts"
1767
+ "description": "extractImports imports RawImport from types.ts"
1242
1768
  },
1243
1769
  {
1244
- "from": "createMockNode__impact_test",
1245
- "to": "DepGraph__types",
1770
+ "from": "extractExports__go",
1771
+ "to": "RawImport__types",
1246
1772
  "type": "imports",
1247
- "description": "createMockNode imports DepGraph from types.ts"
1773
+ "description": "extractExports imports RawImport from types.ts"
1248
1774
  },
1249
1775
  {
1250
- "from": "createMockNode__impact_test",
1251
- "to": "DepNode__types",
1776
+ "from": "extractEntities__go",
1777
+ "to": "EntityPattern__registry",
1252
1778
  "type": "imports",
1253
- "description": "createMockNode imports DepNode from types.ts"
1779
+ "description": "extractEntities imports EntityPattern from registry.ts"
1254
1780
  },
1255
1781
  {
1256
- "from": "createMockNode__metrics_test",
1257
- "to": "computeMetrics__metrics",
1782
+ "from": "extractImports__go",
1783
+ "to": "EntityPattern__registry",
1258
1784
  "type": "imports",
1259
- "description": "createMockNode imports computeMetrics from metrics.ts"
1785
+ "description": "extractImports imports EntityPattern from registry.ts"
1260
1786
  },
1261
1787
  {
1262
- "from": "createMockNode__metrics_test",
1263
- "to": "getEntryPoints__metrics",
1788
+ "from": "extractExports__go",
1789
+ "to": "EntityPattern__registry",
1264
1790
  "type": "imports",
1265
- "description": "createMockNode imports getEntryPoints from metrics.ts"
1791
+ "description": "extractExports imports EntityPattern from registry.ts"
1266
1792
  },
1267
1793
  {
1268
- "from": "createMockNode__metrics_test",
1269
- "to": "getLeafNodes__metrics",
1794
+ "from": "extractEntities__go",
1795
+ "to": "LanguageParser__registry",
1270
1796
  "type": "imports",
1271
- "description": "createMockNode imports getLeafNodes from metrics.ts"
1797
+ "description": "extractEntities imports LanguageParser from registry.ts"
1272
1798
  },
1273
1799
  {
1274
- "from": "createMockNode__metrics_test",
1275
- "to": "getIsolatedNodes__metrics",
1800
+ "from": "extractImports__go",
1801
+ "to": "LanguageParser__registry",
1276
1802
  "type": "imports",
1277
- "description": "createMockNode imports getIsolatedNodes from metrics.ts"
1803
+ "description": "extractImports imports LanguageParser from registry.ts"
1278
1804
  },
1279
1805
  {
1280
- "from": "createMockNode__metrics_test",
1281
- "to": "getCriticalNodes__metrics",
1806
+ "from": "extractExports__go",
1807
+ "to": "LanguageParser__registry",
1282
1808
  "type": "imports",
1283
- "description": "createMockNode imports getCriticalNodes from metrics.ts"
1809
+ "description": "extractExports imports LanguageParser from registry.ts"
1284
1810
  },
1285
1811
  {
1286
- "from": "createMockNode__metrics_test",
1287
- "to": "DepGraph__types",
1812
+ "from": "extractEntities__go",
1813
+ "to": "registerParser__registry",
1288
1814
  "type": "imports",
1289
- "description": "createMockNode imports DepGraph from types.ts"
1815
+ "description": "extractEntities imports registerParser from registry.ts"
1290
1816
  },
1291
1817
  {
1292
- "from": "createMockNode__metrics_test",
1293
- "to": "DepNode__types",
1818
+ "from": "extractImports__go",
1819
+ "to": "registerParser__registry",
1294
1820
  "type": "imports",
1295
- "description": "createMockNode imports DepNode from types.ts"
1821
+ "description": "extractImports imports registerParser from registry.ts"
1296
1822
  },
1297
1823
  {
1298
- "from": "activeFunc__parser_test",
1299
- "to": "parseFile__parser",
1824
+ "from": "extractExports__go",
1825
+ "to": "registerParser__registry",
1300
1826
  "type": "imports",
1301
- "description": "activeFunc imports parseFile from parser.ts"
1827
+ "description": "extractExports imports registerParser from registry.ts"
1302
1828
  },
1303
1829
  {
1304
1830
  "from": "estimateComplexity__javascript",
@@ -1360,6 +1886,36 @@
1360
1886
  "type": "imports",
1361
1887
  "description": "extractExports imports RawImport from types.ts"
1362
1888
  },
1889
+ {
1890
+ "from": "estimateComplexity__javascript",
1891
+ "to": "EntityPattern__registry",
1892
+ "type": "imports",
1893
+ "description": "estimateComplexity imports EntityPattern from registry.ts"
1894
+ },
1895
+ {
1896
+ "from": "slugify__javascript",
1897
+ "to": "EntityPattern__registry",
1898
+ "type": "imports",
1899
+ "description": "slugify imports EntityPattern from registry.ts"
1900
+ },
1901
+ {
1902
+ "from": "extractEntities__javascript",
1903
+ "to": "EntityPattern__registry",
1904
+ "type": "imports",
1905
+ "description": "extractEntities imports EntityPattern from registry.ts"
1906
+ },
1907
+ {
1908
+ "from": "extractImports__javascript",
1909
+ "to": "EntityPattern__registry",
1910
+ "type": "imports",
1911
+ "description": "extractImports imports EntityPattern from registry.ts"
1912
+ },
1913
+ {
1914
+ "from": "extractExports__javascript",
1915
+ "to": "EntityPattern__registry",
1916
+ "type": "imports",
1917
+ "description": "extractExports imports EntityPattern from registry.ts"
1918
+ },
1363
1919
  {
1364
1920
  "from": "estimateComplexity__javascript",
1365
1921
  "to": "LanguageParser__registry",
@@ -1420,6 +1976,126 @@
1420
1976
  "type": "imports",
1421
1977
  "description": "extractExports imports registerParser from registry.ts"
1422
1978
  },
1979
+ {
1980
+ "from": "estimateComplexity__python",
1981
+ "to": "RawEntity__types",
1982
+ "type": "imports",
1983
+ "description": "estimateComplexity imports RawEntity from types.ts"
1984
+ },
1985
+ {
1986
+ "from": "extractEntities__python",
1987
+ "to": "RawEntity__types",
1988
+ "type": "imports",
1989
+ "description": "extractEntities imports RawEntity from types.ts"
1990
+ },
1991
+ {
1992
+ "from": "extractImports__python",
1993
+ "to": "RawEntity__types",
1994
+ "type": "imports",
1995
+ "description": "extractImports imports RawEntity from types.ts"
1996
+ },
1997
+ {
1998
+ "from": "extractExports__python",
1999
+ "to": "RawEntity__types",
2000
+ "type": "imports",
2001
+ "description": "extractExports imports RawEntity from types.ts"
2002
+ },
2003
+ {
2004
+ "from": "estimateComplexity__python",
2005
+ "to": "RawImport__types",
2006
+ "type": "imports",
2007
+ "description": "estimateComplexity imports RawImport from types.ts"
2008
+ },
2009
+ {
2010
+ "from": "extractEntities__python",
2011
+ "to": "RawImport__types",
2012
+ "type": "imports",
2013
+ "description": "extractEntities imports RawImport from types.ts"
2014
+ },
2015
+ {
2016
+ "from": "extractImports__python",
2017
+ "to": "RawImport__types",
2018
+ "type": "imports",
2019
+ "description": "extractImports imports RawImport from types.ts"
2020
+ },
2021
+ {
2022
+ "from": "extractExports__python",
2023
+ "to": "RawImport__types",
2024
+ "type": "imports",
2025
+ "description": "extractExports imports RawImport from types.ts"
2026
+ },
2027
+ {
2028
+ "from": "estimateComplexity__python",
2029
+ "to": "EntityPattern__registry",
2030
+ "type": "imports",
2031
+ "description": "estimateComplexity imports EntityPattern from registry.ts"
2032
+ },
2033
+ {
2034
+ "from": "extractEntities__python",
2035
+ "to": "EntityPattern__registry",
2036
+ "type": "imports",
2037
+ "description": "extractEntities imports EntityPattern from registry.ts"
2038
+ },
2039
+ {
2040
+ "from": "extractImports__python",
2041
+ "to": "EntityPattern__registry",
2042
+ "type": "imports",
2043
+ "description": "extractImports imports EntityPattern from registry.ts"
2044
+ },
2045
+ {
2046
+ "from": "extractExports__python",
2047
+ "to": "EntityPattern__registry",
2048
+ "type": "imports",
2049
+ "description": "extractExports imports EntityPattern from registry.ts"
2050
+ },
2051
+ {
2052
+ "from": "estimateComplexity__python",
2053
+ "to": "LanguageParser__registry",
2054
+ "type": "imports",
2055
+ "description": "estimateComplexity imports LanguageParser from registry.ts"
2056
+ },
2057
+ {
2058
+ "from": "extractEntities__python",
2059
+ "to": "LanguageParser__registry",
2060
+ "type": "imports",
2061
+ "description": "extractEntities imports LanguageParser from registry.ts"
2062
+ },
2063
+ {
2064
+ "from": "extractImports__python",
2065
+ "to": "LanguageParser__registry",
2066
+ "type": "imports",
2067
+ "description": "extractImports imports LanguageParser from registry.ts"
2068
+ },
2069
+ {
2070
+ "from": "extractExports__python",
2071
+ "to": "LanguageParser__registry",
2072
+ "type": "imports",
2073
+ "description": "extractExports imports LanguageParser from registry.ts"
2074
+ },
2075
+ {
2076
+ "from": "estimateComplexity__python",
2077
+ "to": "registerParser__registry",
2078
+ "type": "imports",
2079
+ "description": "estimateComplexity imports registerParser from registry.ts"
2080
+ },
2081
+ {
2082
+ "from": "extractEntities__python",
2083
+ "to": "registerParser__registry",
2084
+ "type": "imports",
2085
+ "description": "extractEntities imports registerParser from registry.ts"
2086
+ },
2087
+ {
2088
+ "from": "extractImports__python",
2089
+ "to": "registerParser__registry",
2090
+ "type": "imports",
2091
+ "description": "extractImports imports registerParser from registry.ts"
2092
+ },
2093
+ {
2094
+ "from": "extractExports__python",
2095
+ "to": "registerParser__registry",
2096
+ "type": "imports",
2097
+ "description": "extractExports imports registerParser from registry.ts"
2098
+ },
1423
2099
  {
1424
2100
  "from": "registerParser__registry",
1425
2101
  "to": "RawEntity__types",
@@ -1432,6 +2108,12 @@
1432
2108
  "type": "imports",
1433
2109
  "description": "getLanguageParser imports RawEntity from types.ts"
1434
2110
  },
2111
+ {
2112
+ "from": "EntityPattern__registry",
2113
+ "to": "RawEntity__types",
2114
+ "type": "imports",
2115
+ "description": "EntityPattern imports RawEntity from types.ts"
2116
+ },
1435
2117
  {
1436
2118
  "from": "LanguageParser__registry",
1437
2119
  "to": "RawEntity__types",
@@ -1450,6 +2132,12 @@
1450
2132
  "type": "imports",
1451
2133
  "description": "getLanguageParser imports RawImport from types.ts"
1452
2134
  },
2135
+ {
2136
+ "from": "EntityPattern__registry",
2137
+ "to": "RawImport__types",
2138
+ "type": "imports",
2139
+ "description": "EntityPattern imports RawImport from types.ts"
2140
+ },
1453
2141
  {
1454
2142
  "from": "LanguageParser__registry",
1455
2143
  "to": "RawImport__types",
@@ -1928,37 +2616,151 @@
1928
2616
  "from": "dim__main",
1929
2617
  "to": "writeOutput__output",
1930
2618
  "type": "imports",
1931
- "description": "dim imports writeOutput from output.ts"
2619
+ "description": "dim imports writeOutput from output.ts"
2620
+ },
2621
+ {
2622
+ "from": "bold__main",
2623
+ "to": "writeOutput__output",
2624
+ "type": "imports",
2625
+ "description": "bold imports writeOutput from output.ts"
2626
+ },
2627
+ {
2628
+ "from": "green__main",
2629
+ "to": "writeOutput__output",
2630
+ "type": "imports",
2631
+ "description": "green imports writeOutput from output.ts"
2632
+ },
2633
+ {
2634
+ "from": "yellow__main",
2635
+ "to": "writeOutput__output",
2636
+ "type": "imports",
2637
+ "description": "yellow imports writeOutput from output.ts"
2638
+ },
2639
+ {
2640
+ "from": "red__main",
2641
+ "to": "writeOutput__output",
2642
+ "type": "imports",
2643
+ "description": "red imports writeOutput from output.ts"
2644
+ },
2645
+ {
2646
+ "from": "cyan__main",
2647
+ "to": "writeOutput__output",
2648
+ "type": "imports",
2649
+ "description": "cyan imports writeOutput from output.ts"
2650
+ },
2651
+ {
2652
+ "from": "color__main",
2653
+ "to": "getChangedEntities__gitdiff",
2654
+ "type": "imports",
2655
+ "description": "color imports getChangedEntities from gitdiff.ts"
2656
+ },
2657
+ {
2658
+ "from": "getFlag__main",
2659
+ "to": "getChangedEntities__gitdiff",
2660
+ "type": "imports",
2661
+ "description": "getFlag imports getChangedEntities from gitdiff.ts"
2662
+ },
2663
+ {
2664
+ "from": "printHelp__main",
2665
+ "to": "getChangedEntities__gitdiff",
2666
+ "type": "imports",
2667
+ "description": "printHelp imports getChangedEntities from gitdiff.ts"
2668
+ },
2669
+ {
2670
+ "from": "printBanner__main",
2671
+ "to": "getChangedEntities__gitdiff",
2672
+ "type": "imports",
2673
+ "description": "printBanner imports getChangedEntities from gitdiff.ts"
2674
+ },
2675
+ {
2676
+ "from": "printSummary__main",
2677
+ "to": "getChangedEntities__gitdiff",
2678
+ "type": "imports",
2679
+ "description": "printSummary imports getChangedEntities from gitdiff.ts"
2680
+ },
2681
+ {
2682
+ "from": "printImpact__main",
2683
+ "to": "getChangedEntities__gitdiff",
2684
+ "type": "imports",
2685
+ "description": "printImpact imports getChangedEntities from gitdiff.ts"
2686
+ },
2687
+ {
2688
+ "from": "dim__main",
2689
+ "to": "getChangedEntities__gitdiff",
2690
+ "type": "imports",
2691
+ "description": "dim imports getChangedEntities from gitdiff.ts"
2692
+ },
2693
+ {
2694
+ "from": "bold__main",
2695
+ "to": "getChangedEntities__gitdiff",
2696
+ "type": "imports",
2697
+ "description": "bold imports getChangedEntities from gitdiff.ts"
2698
+ },
2699
+ {
2700
+ "from": "green__main",
2701
+ "to": "getChangedEntities__gitdiff",
2702
+ "type": "imports",
2703
+ "description": "green imports getChangedEntities from gitdiff.ts"
2704
+ },
2705
+ {
2706
+ "from": "yellow__main",
2707
+ "to": "getChangedEntities__gitdiff",
2708
+ "type": "imports",
2709
+ "description": "yellow imports getChangedEntities from gitdiff.ts"
2710
+ },
2711
+ {
2712
+ "from": "red__main",
2713
+ "to": "getChangedEntities__gitdiff",
2714
+ "type": "imports",
2715
+ "description": "red imports getChangedEntities from gitdiff.ts"
2716
+ },
2717
+ {
2718
+ "from": "cyan__main",
2719
+ "to": "getChangedEntities__gitdiff",
2720
+ "type": "imports",
2721
+ "description": "cyan imports getChangedEntities from gitdiff.ts"
2722
+ },
2723
+ {
2724
+ "from": "getChangedEntities__gitdiff",
2725
+ "to": "getLanguageParser__registry",
2726
+ "type": "imports",
2727
+ "description": "getChangedEntities imports getLanguageParser from registry.ts"
2728
+ },
2729
+ {
2730
+ "from": "runGitDiff__gitdiff",
2731
+ "to": "getLanguageParser__registry",
2732
+ "type": "imports",
2733
+ "description": "runGitDiff imports getLanguageParser from registry.ts"
1932
2734
  },
1933
2735
  {
1934
- "from": "bold__main",
1935
- "to": "writeOutput__output",
2736
+ "from": "parseDiff__gitdiff",
2737
+ "to": "getLanguageParser__registry",
1936
2738
  "type": "imports",
1937
- "description": "bold imports writeOutput from output.ts"
2739
+ "description": "parseDiff imports getLanguageParser from registry.ts"
1938
2740
  },
1939
2741
  {
1940
- "from": "green__main",
1941
- "to": "writeOutput__output",
2742
+ "from": "extractEntityFromContext__gitdiff",
2743
+ "to": "getLanguageParser__registry",
1942
2744
  "type": "imports",
1943
- "description": "green imports writeOutput from output.ts"
2745
+ "description": "extractEntityFromContext imports getLanguageParser from registry.ts"
1944
2746
  },
1945
2747
  {
1946
- "from": "yellow__main",
1947
- "to": "writeOutput__output",
2748
+ "from": "buildDescription__gitdiff",
2749
+ "to": "getLanguageParser__registry",
1948
2750
  "type": "imports",
1949
- "description": "yellow imports writeOutput from output.ts"
2751
+ "description": "buildDescription imports getLanguageParser from registry.ts"
1950
2752
  },
1951
2753
  {
1952
- "from": "red__main",
1953
- "to": "writeOutput__output",
2754
+ "from": "ChangedEntity__gitdiff",
2755
+ "to": "getLanguageParser__registry",
1954
2756
  "type": "imports",
1955
- "description": "red imports writeOutput from output.ts"
2757
+ "description": "ChangedEntity imports getLanguageParser from registry.ts"
1956
2758
  },
1957
2759
  {
1958
- "from": "cyan__main",
1959
- "to": "writeOutput__output",
2760
+ "from": "GitDiffOptions__gitdiff",
2761
+ "to": "getLanguageParser__registry",
1960
2762
  "type": "imports",
1961
- "description": "cyan imports writeOutput from output.ts"
2763
+ "description": "GitDiffOptions imports getLanguageParser from registry.ts"
1962
2764
  },
1963
2765
  {
1964
2766
  "from": "buildGraph__graph",
@@ -2370,6 +3172,59 @@
2370
3172
  }
2371
3173
  ],
2372
3174
  "files": [
3175
+ {
3176
+ "filePath": "depgraph.js",
3177
+ "lang": "js",
3178
+ "lines": 1252,
3179
+ "entities": [
3180
+ {
3181
+ "name": "color",
3182
+ "type": "function",
3183
+ "line": 1063,
3184
+ "complexity": "low"
3185
+ },
3186
+ {
3187
+ "name": "getFlag",
3188
+ "type": "function",
3189
+ "line": 1074,
3190
+ "complexity": "low"
3191
+ },
3192
+ {
3193
+ "name": "printHelp",
3194
+ "type": "function",
3195
+ "line": 1078,
3196
+ "complexity": "low"
3197
+ },
3198
+ {
3199
+ "name": "printBanner",
3200
+ "type": "function",
3201
+ "line": 1126,
3202
+ "complexity": "low"
3203
+ },
3204
+ {
3205
+ "name": "printSummary",
3206
+ "type": "function",
3207
+ "line": 1133,
3208
+ "complexity": "low"
3209
+ },
3210
+ {
3211
+ "name": "printImpact",
3212
+ "type": "function",
3213
+ "line": 1146,
3214
+ "complexity": "medium"
3215
+ }
3216
+ ],
3217
+ "imports": [
3218
+ {
3219
+ "source": "child_process",
3220
+ "names": [
3221
+ "child_process_1"
3222
+ ],
3223
+ "isLocal": false
3224
+ }
3225
+ ],
3226
+ "exports": []
3227
+ },
2373
3228
  {
2374
3229
  "filePath": "src/__tests__/collector.test.ts",
2375
3230
  "lang": "js",
@@ -2635,7 +3490,7 @@
2635
3490
  {
2636
3491
  "filePath": "src/constants.ts",
2637
3492
  "lang": "js",
2638
- "lines": 26,
3493
+ "lines": 53,
2639
3494
  "entities": [],
2640
3495
  "imports": [],
2641
3496
  "exports": [
@@ -2658,10 +3513,49 @@
2658
3513
  {
2659
3514
  "filePath": "src/languages/go.ts",
2660
3515
  "lang": "js",
2661
- "lines": 1,
2662
- "entities": [],
2663
- "imports": [],
2664
- "exports": []
3516
+ "lines": 102,
3517
+ "entities": [
3518
+ {
3519
+ "name": "extractEntities",
3520
+ "type": "function",
3521
+ "line": 26,
3522
+ "complexity": "low"
3523
+ },
3524
+ {
3525
+ "name": "extractImports",
3526
+ "type": "function",
3527
+ "line": 49,
3528
+ "complexity": "medium"
3529
+ },
3530
+ {
3531
+ "name": "extractExports",
3532
+ "type": "function",
3533
+ "line": 76,
3534
+ "complexity": "low"
3535
+ }
3536
+ ],
3537
+ "imports": [
3538
+ {
3539
+ "source": "../types",
3540
+ "names": [
3541
+ "RawEntity",
3542
+ "RawImport"
3543
+ ],
3544
+ "isLocal": true
3545
+ },
3546
+ {
3547
+ "source": "./registry",
3548
+ "names": [
3549
+ "EntityPattern",
3550
+ "LanguageParser",
3551
+ "registerParser"
3552
+ ],
3553
+ "isLocal": true
3554
+ }
3555
+ ],
3556
+ "exports": [
3557
+ "goEntityPatterns"
3558
+ ]
2665
3559
  },
2666
3560
  {
2667
3561
  "filePath": "src/languages/java.ts",
@@ -2674,36 +3568,36 @@
2674
3568
  {
2675
3569
  "filePath": "src/languages/javascript.ts",
2676
3570
  "lang": "js",
2677
- "lines": 186,
3571
+ "lines": 223,
2678
3572
  "entities": [
2679
3573
  {
2680
3574
  "name": "estimateComplexity",
2681
3575
  "type": "function",
2682
- "line": 8,
3576
+ "line": 14,
2683
3577
  "complexity": "high"
2684
3578
  },
2685
3579
  {
2686
3580
  "name": "slugify",
2687
3581
  "type": "function",
2688
- "line": 23,
3582
+ "line": 34,
2689
3583
  "complexity": "low"
2690
3584
  },
2691
3585
  {
2692
3586
  "name": "extractEntities",
2693
3587
  "type": "function",
2694
- "line": 29,
3588
+ "line": 97,
2695
3589
  "complexity": "medium"
2696
3590
  },
2697
3591
  {
2698
3592
  "name": "extractImports",
2699
3593
  "type": "function",
2700
- "line": 115,
3594
+ "line": 143,
2701
3595
  "complexity": "low"
2702
3596
  },
2703
3597
  {
2704
3598
  "name": "extractExports",
2705
3599
  "type": "function",
2706
- "line": 156,
3600
+ "line": 189,
2707
3601
  "complexity": "low"
2708
3602
  }
2709
3603
  ],
@@ -2719,6 +3613,7 @@
2719
3613
  {
2720
3614
  "source": "./registry",
2721
3615
  "names": [
3616
+ "EntityPattern",
2722
3617
  "LanguageParser",
2723
3618
  "registerParser"
2724
3619
  ],
@@ -2739,7 +3634,9 @@
2739
3634
  "isLocal": false
2740
3635
  }
2741
3636
  ],
2742
- "exports": []
3637
+ "exports": [
3638
+ "jsEntityPatterns"
3639
+ ]
2743
3640
  },
2744
3641
  {
2745
3642
  "filePath": "src/languages/kotlin.ts",
@@ -2760,32 +3657,90 @@
2760
3657
  {
2761
3658
  "filePath": "src/languages/python.ts",
2762
3659
  "lang": "js",
2763
- "lines": 1,
2764
- "entities": [],
2765
- "imports": [],
2766
- "exports": []
3660
+ "lines": 168,
3661
+ "entities": [
3662
+ {
3663
+ "name": "estimateComplexity",
3664
+ "type": "function",
3665
+ "line": 13,
3666
+ "complexity": "high"
3667
+ },
3668
+ {
3669
+ "name": "extractEntities",
3670
+ "type": "function",
3671
+ "line": 58,
3672
+ "complexity": "medium"
3673
+ },
3674
+ {
3675
+ "name": "extractImports",
3676
+ "type": "function",
3677
+ "line": 98,
3678
+ "complexity": "low"
3679
+ },
3680
+ {
3681
+ "name": "extractExports",
3682
+ "type": "function",
3683
+ "line": 142,
3684
+ "complexity": "low"
3685
+ }
3686
+ ],
3687
+ "imports": [
3688
+ {
3689
+ "source": "../types",
3690
+ "names": [
3691
+ "RawEntity",
3692
+ "RawImport"
3693
+ ],
3694
+ "isLocal": true
3695
+ },
3696
+ {
3697
+ "source": "./registry",
3698
+ "names": [
3699
+ "EntityPattern",
3700
+ "LanguageParser",
3701
+ "registerParser"
3702
+ ],
3703
+ "isLocal": true
3704
+ },
3705
+ {
3706
+ "source": "../constants",
3707
+ "names": [
3708
+ "COMPLEXITY_THRESHOLDS"
3709
+ ],
3710
+ "isLocal": true
3711
+ }
3712
+ ],
3713
+ "exports": [
3714
+ "pyEntityPatterns"
3715
+ ]
2767
3716
  },
2768
3717
  {
2769
3718
  "filePath": "src/languages/registry.ts",
2770
3719
  "lang": "js",
2771
- "lines": 21,
3720
+ "lines": 71,
2772
3721
  "entities": [
2773
3722
  {
2774
3723
  "name": "registerParser",
2775
3724
  "type": "function",
2776
- "line": 15,
3725
+ "line": 60,
2777
3726
  "complexity": "low"
2778
3727
  },
2779
3728
  {
2780
3729
  "name": "getLanguageParser",
2781
3730
  "type": "function",
2782
- "line": 19,
3731
+ "line": 69,
3732
+ "complexity": "low"
3733
+ },
3734
+ {
3735
+ "name": "EntityPattern",
3736
+ "type": "interface",
3737
+ "line": 8,
2783
3738
  "complexity": "low"
2784
3739
  },
2785
3740
  {
2786
3741
  "name": "LanguageParser",
2787
3742
  "type": "interface",
2788
- "line": 4,
3743
+ "line": 19,
2789
3744
  "complexity": "low"
2790
3745
  }
2791
3746
  ],
@@ -2800,6 +3755,7 @@
2800
3755
  }
2801
3756
  ],
2802
3757
  "exports": [
3758
+ "EntityPattern",
2803
3759
  "LanguageParser",
2804
3760
  "registerParser",
2805
3761
  "getLanguageParser"
@@ -2824,78 +3780,78 @@
2824
3780
  {
2825
3781
  "filePath": "src/main.ts",
2826
3782
  "lang": "js",
2827
- "lines": 183,
3783
+ "lines": 290,
2828
3784
  "entities": [
2829
3785
  {
2830
3786
  "name": "color",
2831
3787
  "type": "function",
2832
- "line": 19,
3788
+ "line": 29,
2833
3789
  "complexity": "low"
2834
3790
  },
2835
3791
  {
2836
3792
  "name": "getFlag",
2837
3793
  "type": "function",
2838
- "line": 31,
3794
+ "line": 49,
2839
3795
  "complexity": "low"
2840
3796
  },
2841
3797
  {
2842
3798
  "name": "printHelp",
2843
3799
  "type": "function",
2844
- "line": 36,
3800
+ "line": 57,
2845
3801
  "complexity": "low"
2846
3802
  },
2847
3803
  {
2848
3804
  "name": "printBanner",
2849
3805
  "type": "function",
2850
- "line": 66,
3806
+ "line": 109,
2851
3807
  "complexity": "low"
2852
3808
  },
2853
3809
  {
2854
3810
  "name": "printSummary",
2855
3811
  "type": "function",
2856
- "line": 74,
3812
+ "line": 125,
2857
3813
  "complexity": "low"
2858
3814
  },
2859
3815
  {
2860
3816
  "name": "printImpact",
2861
3817
  "type": "function",
2862
- "line": 93,
3818
+ "line": 149,
2863
3819
  "complexity": "medium"
2864
3820
  },
2865
3821
  {
2866
3822
  "name": "dim",
2867
3823
  "type": "function",
2868
- "line": 23,
3824
+ "line": 33,
2869
3825
  "complexity": "low"
2870
3826
  },
2871
3827
  {
2872
3828
  "name": "bold",
2873
3829
  "type": "function",
2874
- "line": 24,
3830
+ "line": 34,
2875
3831
  "complexity": "low"
2876
3832
  },
2877
3833
  {
2878
3834
  "name": "green",
2879
3835
  "type": "function",
2880
- "line": 25,
3836
+ "line": 35,
2881
3837
  "complexity": "low"
2882
3838
  },
2883
3839
  {
2884
3840
  "name": "yellow",
2885
3841
  "type": "function",
2886
- "line": 26,
3842
+ "line": 36,
2887
3843
  "complexity": "low"
2888
3844
  },
2889
3845
  {
2890
3846
  "name": "red",
2891
3847
  "type": "function",
2892
- "line": 27,
3848
+ "line": 37,
2893
3849
  "complexity": "low"
2894
3850
  },
2895
3851
  {
2896
3852
  "name": "cyan",
2897
3853
  "type": "function",
2898
- "line": 28,
3854
+ "line": 38,
2899
3855
  "complexity": "low"
2900
3856
  }
2901
3857
  ],
@@ -2943,6 +3899,13 @@
2943
3899
  ],
2944
3900
  "isLocal": true
2945
3901
  },
3902
+ {
3903
+ "source": "./stages/gitdiff",
3904
+ "names": [
3905
+ "getChangedEntities"
3906
+ ],
3907
+ "isLocal": true
3908
+ },
2946
3909
  {
2947
3910
  "source": "fs",
2948
3911
  "names": [
@@ -2956,12 +3919,12 @@
2956
3919
  {
2957
3920
  "filePath": "src/stages/collector.ts",
2958
3921
  "lang": "js",
2959
- "lines": 48,
3922
+ "lines": 60,
2960
3923
  "entities": [
2961
3924
  {
2962
3925
  "name": "collectFiles",
2963
3926
  "type": "function",
2964
- "line": 5,
3927
+ "line": 13,
2965
3928
  "complexity": "medium"
2966
3929
  }
2967
3930
  ],
@@ -2994,27 +3957,104 @@
2994
3957
  "collectFiles"
2995
3958
  ]
2996
3959
  },
3960
+ {
3961
+ "filePath": "src/stages/gitdiff.ts",
3962
+ "lang": "js",
3963
+ "lines": 239,
3964
+ "entities": [
3965
+ {
3966
+ "name": "getChangedEntities",
3967
+ "type": "function",
3968
+ "line": 35,
3969
+ "complexity": "low"
3970
+ },
3971
+ {
3972
+ "name": "runGitDiff",
3973
+ "type": "function",
3974
+ "line": 43,
3975
+ "complexity": "high"
3976
+ },
3977
+ {
3978
+ "name": "parseDiff",
3979
+ "type": "function",
3980
+ "line": 85,
3981
+ "complexity": "high"
3982
+ },
3983
+ {
3984
+ "name": "extractEntityFromContext",
3985
+ "type": "function",
3986
+ "line": 167,
3987
+ "complexity": "medium"
3988
+ },
3989
+ {
3990
+ "name": "buildDescription",
3991
+ "type": "function",
3992
+ "line": 204,
3993
+ "complexity": "medium"
3994
+ },
3995
+ {
3996
+ "name": "ChangedEntity",
3997
+ "type": "interface",
3998
+ "line": 7,
3999
+ "complexity": "low"
4000
+ },
4001
+ {
4002
+ "name": "GitDiffOptions",
4003
+ "type": "interface",
4004
+ "line": 14,
4005
+ "complexity": "low"
4006
+ }
4007
+ ],
4008
+ "imports": [
4009
+ {
4010
+ "source": "child_process",
4011
+ "names": [
4012
+ "execSync"
4013
+ ],
4014
+ "isLocal": false
4015
+ },
4016
+ {
4017
+ "source": "../languages/registry",
4018
+ "names": [
4019
+ "getLanguageParser"
4020
+ ],
4021
+ "isLocal": true
4022
+ },
4023
+ {
4024
+ "source": "path",
4025
+ "names": [
4026
+ "path"
4027
+ ],
4028
+ "isLocal": false
4029
+ }
4030
+ ],
4031
+ "exports": [
4032
+ "ChangedEntity",
4033
+ "GitDiffOptions",
4034
+ "getChangedEntities"
4035
+ ]
4036
+ },
2997
4037
  {
2998
4038
  "filePath": "src/stages/graph.ts",
2999
4039
  "lang": "js",
3000
- "lines": 145,
4040
+ "lines": 166,
3001
4041
  "entities": [
3002
4042
  {
3003
4043
  "name": "buildGraph",
3004
4044
  "type": "function",
3005
- "line": 4,
4045
+ "line": 11,
3006
4046
  "complexity": "high"
3007
4047
  },
3008
4048
  {
3009
4049
  "name": "makeId",
3010
4050
  "type": "function",
3011
- "line": 111,
4051
+ "line": 124,
3012
4052
  "complexity": "low"
3013
4053
  },
3014
4054
  {
3015
4055
  "name": "resolvePath",
3016
4056
  "type": "function",
3017
- "line": 118,
4057
+ "line": 139,
3018
4058
  "complexity": "low"
3019
4059
  }
3020
4060
  ],
@@ -3044,66 +4084,66 @@
3044
4084
  {
3045
4085
  "filePath": "src/stages/impact.ts",
3046
4086
  "lang": "js",
3047
- "lines": 200,
4087
+ "lines": 276,
3048
4088
  "entities": [
3049
4089
  {
3050
4090
  "name": "simulateImpact",
3051
4091
  "type": "function",
3052
- "line": 4,
4092
+ "line": 14,
3053
4093
  "complexity": "medium"
3054
4094
  },
3055
4095
  {
3056
4096
  "name": "getDirectDependents",
3057
4097
  "type": "function",
3058
- "line": 94,
4098
+ "line": 110,
3059
4099
  "complexity": "low"
3060
4100
  },
3061
4101
  {
3062
4102
  "name": "getImpactLevel",
3063
4103
  "type": "function",
3064
- "line": 100,
4104
+ "line": 123,
3065
4105
  "complexity": "low"
3066
4106
  },
3067
4107
  {
3068
4108
  "name": "computeRiskScore",
3069
4109
  "type": "function",
3070
- "line": 107,
4110
+ "line": 138,
3071
4111
  "complexity": "low"
3072
4112
  },
3073
4113
  {
3074
4114
  "name": "getRiskLevel",
3075
4115
  "type": "function",
3076
- "line": 117,
4116
+ "line": 155,
3077
4117
  "complexity": "low"
3078
4118
  },
3079
4119
  {
3080
4120
  "name": "getReason",
3081
4121
  "type": "function",
3082
- "line": 124,
4122
+ "line": 170,
3083
4123
  "complexity": "low"
3084
4124
  },
3085
4125
  {
3086
4126
  "name": "getChangeRequired",
3087
4127
  "type": "function",
3088
- "line": 130,
4128
+ "line": 184,
3089
4129
  "complexity": "medium"
3090
4130
  },
3091
4131
  {
3092
4132
  "name": "buildTestingPlan",
3093
4133
  "type": "function",
3094
- "line": 137,
4134
+ "line": 198,
3095
4135
  "complexity": "low"
3096
4136
  },
3097
4137
  {
3098
4138
  "name": "buildRecommendations",
3099
4139
  "type": "function",
3100
- "line": 159,
4140
+ "line": 227,
3101
4141
  "complexity": "medium"
3102
4142
  },
3103
4143
  {
3104
4144
  "name": "emptyReport",
3105
4145
  "type": "function",
3106
- "line": 185,
4146
+ "line": 261,
3107
4147
  "complexity": "low"
3108
4148
  }
3109
4149
  ],
@@ -3132,36 +4172,36 @@
3132
4172
  {
3133
4173
  "filePath": "src/stages/metrics.ts",
3134
4174
  "lang": "js",
3135
- "lines": 59,
4175
+ "lines": 94,
3136
4176
  "entities": [
3137
4177
  {
3138
4178
  "name": "computeMetrics",
3139
4179
  "type": "function",
3140
- "line": 3,
4180
+ "line": 10,
3141
4181
  "complexity": "medium"
3142
4182
  },
3143
4183
  {
3144
4184
  "name": "getEntryPoints",
3145
4185
  "type": "function",
3146
- "line": 29,
4186
+ "line": 43,
3147
4187
  "complexity": "low"
3148
4188
  },
3149
4189
  {
3150
4190
  "name": "getLeafNodes",
3151
4191
  "type": "function",
3152
- "line": 37,
4192
+ "line": 58,
3153
4193
  "complexity": "low"
3154
4194
  },
3155
4195
  {
3156
4196
  "name": "getIsolatedNodes",
3157
4197
  "type": "function",
3158
- "line": 45,
4198
+ "line": 73,
3159
4199
  "complexity": "low"
3160
4200
  },
3161
4201
  {
3162
4202
  "name": "getCriticalNodes",
3163
4203
  "type": "function",
3164
- "line": 53,
4204
+ "line": 88,
3165
4205
  "complexity": "low"
3166
4206
  }
3167
4207
  ],
@@ -3186,12 +4226,12 @@
3186
4226
  {
3187
4227
  "filePath": "src/stages/output.ts",
3188
4228
  "lang": "js",
3189
- "lines": 75,
4229
+ "lines": 85,
3190
4230
  "entities": [
3191
4231
  {
3192
4232
  "name": "writeOutput",
3193
4233
  "type": "function",
3194
- "line": 11,
4234
+ "line": 21,
3195
4235
  "complexity": "low"
3196
4236
  }
3197
4237
  ],
@@ -3238,18 +4278,18 @@
3238
4278
  {
3239
4279
  "filePath": "src/stages/parser.ts",
3240
4280
  "lang": "js",
3241
- "lines": 52,
4281
+ "lines": 66,
3242
4282
  "entities": [
3243
4283
  {
3244
4284
  "name": "parseFile",
3245
4285
  "type": "function",
3246
- "line": 6,
4286
+ "line": 13,
3247
4287
  "complexity": "low"
3248
4288
  },
3249
4289
  {
3250
4290
  "name": "parseFiles",
3251
4291
  "type": "function",
3252
- "line": 41,
4292
+ "line": 55,
3253
4293
  "complexity": "low"
3254
4294
  }
3255
4295
  ],
@@ -3293,60 +4333,60 @@
3293
4333
  {
3294
4334
  "filePath": "src/types.ts",
3295
4335
  "lang": "js",
3296
- "lines": 96,
4336
+ "lines": 189,
3297
4337
  "entities": [
3298
4338
  {
3299
4339
  "name": "RawEntity",
3300
4340
  "type": "interface",
3301
- "line": 4,
4341
+ "line": 8,
3302
4342
  "complexity": "low"
3303
4343
  },
3304
4344
  {
3305
4345
  "name": "RawImport",
3306
4346
  "type": "interface",
3307
- "line": 11,
4347
+ "line": 22,
3308
4348
  "complexity": "low"
3309
4349
  },
3310
4350
  {
3311
4351
  "name": "ParsedFile",
3312
4352
  "type": "interface",
3313
- "line": 17,
4353
+ "line": 34,
3314
4354
  "complexity": "low"
3315
4355
  },
3316
4356
  {
3317
4357
  "name": "DepNode",
3318
4358
  "type": "interface",
3319
- "line": 26,
4359
+ "line": 52,
3320
4360
  "complexity": "low"
3321
4361
  },
3322
4362
  {
3323
4363
  "name": "DepEdge",
3324
4364
  "type": "interface",
3325
- "line": 43,
4365
+ "line": 86,
3326
4366
  "complexity": "low"
3327
4367
  },
3328
4368
  {
3329
4369
  "name": "DepGraph",
3330
4370
  "type": "interface",
3331
- "line": 50,
4371
+ "line": 100,
3332
4372
  "complexity": "low"
3333
4373
  },
3334
4374
  {
3335
4375
  "name": "AffectedNode",
3336
4376
  "type": "interface",
3337
- "line": 55,
4377
+ "line": 110,
3338
4378
  "complexity": "low"
3339
4379
  },
3340
4380
  {
3341
4381
  "name": "ImpactReport",
3342
4382
  "type": "interface",
3343
- "line": 66,
4383
+ "line": 132,
3344
4384
  "complexity": "low"
3345
4385
  },
3346
4386
  {
3347
4387
  "name": "OutputJSON",
3348
4388
  "type": "interface",
3349
- "line": 77,
4389
+ "line": 154,
3350
4390
  "complexity": "low"
3351
4391
  }
3352
4392
  ],