pruneguard 0.4.0 → 0.5.0

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.
@@ -24,7 +24,8 @@
24
24
  "impact": "warn",
25
25
  "unusedMembers": "warn",
26
26
  "duplicateExports": "warn",
27
- "ignoreExportsUsedInFile": false
27
+ "ignoreExportsUsedInFile": false,
28
+ "memberWriteOnlyIsUnused": true
28
29
  },
29
30
  "allOf": [
30
31
  {
@@ -179,6 +180,13 @@
179
180
  "default": false,
180
181
  "type": "boolean"
181
182
  },
183
+ "ignoreMembers": {
184
+ "description": "Glob patterns for member names to ignore in unused-member analysis.",
185
+ "type": "array",
186
+ "items": {
187
+ "type": "string"
188
+ }
189
+ },
182
190
  "impact": {
183
191
  "default": "warn",
184
192
  "allOf": [
@@ -187,6 +195,11 @@
187
195
  }
188
196
  ]
189
197
  },
198
+ "memberWriteOnlyIsUnused": {
199
+ "description": "Whether write-only member references count as \"used\". When true (default), a member that is only written to (e.g. `obj.field = x`) but never read is reported as unused.",
200
+ "default": true,
201
+ "type": "boolean"
202
+ },
190
203
  "ownership": {
191
204
  "default": "warn",
192
205
  "allOf": [
@@ -195,6 +208,13 @@
195
208
  }
196
209
  ]
197
210
  },
211
+ "publicTagNames": {
212
+ "description": "JSDoc tag names that mark a member as public/intentionally exported. When empty, `@public` is used as the default.",
213
+ "type": "array",
214
+ "items": {
215
+ "type": "string"
216
+ }
217
+ },
198
218
  "unusedDependencies": {
199
219
  "default": "warn",
200
220
  "allOf": [
@@ -329,6 +349,16 @@
329
349
  }
330
350
  ]
331
351
  },
352
+ "babel": {
353
+ "anyOf": [
354
+ {
355
+ "$ref": "#/definitions/FrameworkToggle"
356
+ },
357
+ {
358
+ "type": "null"
359
+ }
360
+ ]
361
+ },
332
362
  "cypress": {
333
363
  "anyOf": [
334
364
  {
@@ -369,6 +399,16 @@
369
399
  }
370
400
  ]
371
401
  },
402
+ "nitro": {
403
+ "anyOf": [
404
+ {
405
+ "$ref": "#/definitions/FrameworkToggle"
406
+ },
407
+ {
408
+ "type": "null"
409
+ }
410
+ ]
411
+ },
372
412
  "nuxt": {
373
413
  "anyOf": [
374
414
  {
@@ -389,6 +429,16 @@
389
429
  }
390
430
  ]
391
431
  },
432
+ "parcel": {
433
+ "anyOf": [
434
+ {
435
+ "$ref": "#/definitions/FrameworkToggle"
436
+ },
437
+ {
438
+ "type": "null"
439
+ }
440
+ ]
441
+ },
392
442
  "playwright": {
393
443
  "anyOf": [
394
444
  {
@@ -399,6 +449,46 @@
399
449
  }
400
450
  ]
401
451
  },
452
+ "playwright_ct": {
453
+ "anyOf": [
454
+ {
455
+ "$ref": "#/definitions/FrameworkToggle"
456
+ },
457
+ {
458
+ "type": "null"
459
+ }
460
+ ]
461
+ },
462
+ "playwright_test": {
463
+ "anyOf": [
464
+ {
465
+ "$ref": "#/definitions/FrameworkToggle"
466
+ },
467
+ {
468
+ "type": "null"
469
+ }
470
+ ]
471
+ },
472
+ "qwik": {
473
+ "anyOf": [
474
+ {
475
+ "$ref": "#/definitions/FrameworkToggle"
476
+ },
477
+ {
478
+ "type": "null"
479
+ }
480
+ ]
481
+ },
482
+ "react_router": {
483
+ "anyOf": [
484
+ {
485
+ "$ref": "#/definitions/FrameworkToggle"
486
+ },
487
+ {
488
+ "type": "null"
489
+ }
490
+ ]
491
+ },
402
492
  "remix": {
403
493
  "anyOf": [
404
494
  {
@@ -409,6 +499,26 @@
409
499
  }
410
500
  ]
411
501
  },
502
+ "rsbuild": {
503
+ "anyOf": [
504
+ {
505
+ "$ref": "#/definitions/FrameworkToggle"
506
+ },
507
+ {
508
+ "type": "null"
509
+ }
510
+ ]
511
+ },
512
+ "rslib": {
513
+ "anyOf": [
514
+ {
515
+ "$ref": "#/definitions/FrameworkToggle"
516
+ },
517
+ {
518
+ "type": "null"
519
+ }
520
+ ]
521
+ },
412
522
  "storybook": {
413
523
  "anyOf": [
414
524
  {
@@ -419,6 +529,16 @@
419
529
  }
420
530
  ]
421
531
  },
532
+ "svelte": {
533
+ "anyOf": [
534
+ {
535
+ "$ref": "#/definitions/FrameworkToggle"
536
+ },
537
+ {
538
+ "type": "null"
539
+ }
540
+ ]
541
+ },
422
542
  "sveltekit": {
423
543
  "anyOf": [
424
544
  {
@@ -429,6 +549,26 @@
429
549
  }
430
550
  ]
431
551
  },
552
+ "tanstack_router": {
553
+ "anyOf": [
554
+ {
555
+ "$ref": "#/definitions/FrameworkToggle"
556
+ },
557
+ {
558
+ "type": "null"
559
+ }
560
+ ]
561
+ },
562
+ "trigger_dev": {
563
+ "anyOf": [
564
+ {
565
+ "$ref": "#/definitions/FrameworkToggle"
566
+ },
567
+ {
568
+ "type": "null"
569
+ }
570
+ ]
571
+ },
432
572
  "turborepo": {
433
573
  "anyOf": [
434
574
  {
@@ -439,6 +579,16 @@
439
579
  }
440
580
  ]
441
581
  },
582
+ "vike": {
583
+ "anyOf": [
584
+ {
585
+ "$ref": "#/definitions/FrameworkToggle"
586
+ },
587
+ {
588
+ "type": "null"
589
+ }
590
+ ]
591
+ },
442
592
  "vite": {
443
593
  "anyOf": [
444
594
  {
@@ -468,6 +618,16 @@
468
618
  "type": "null"
469
619
  }
470
620
  ]
621
+ },
622
+ "vue": {
623
+ "anyOf": [
624
+ {
625
+ "$ref": "#/definitions/FrameworkToggle"
626
+ },
627
+ {
628
+ "type": "null"
629
+ }
630
+ ]
471
631
  }
472
632
  }
473
633
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pruneguard",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Repo truth engine for JS/TS monorepos",
5
5
  "keywords": [
6
6
  "javascript",
@@ -45,14 +45,14 @@
45
45
  }
46
46
  },
47
47
  "optionalDependencies": {
48
- "@pruneguard/cli-darwin-arm64": "0.4.0",
49
- "@pruneguard/cli-darwin-x64": "0.4.0",
50
- "@pruneguard/cli-linux-arm64-gnu": "0.4.0",
51
- "@pruneguard/cli-linux-arm64-musl": "0.4.0",
52
- "@pruneguard/cli-linux-x64-gnu": "0.4.0",
53
- "@pruneguard/cli-linux-x64-musl": "0.4.0",
54
- "@pruneguard/cli-win32-arm64-msvc": "0.4.0",
55
- "@pruneguard/cli-win32-x64-msvc": "0.4.0"
48
+ "@pruneguard/cli-darwin-arm64": "0.5.0",
49
+ "@pruneguard/cli-darwin-x64": "0.5.0",
50
+ "@pruneguard/cli-linux-arm64-gnu": "0.5.0",
51
+ "@pruneguard/cli-linux-arm64-musl": "0.5.0",
52
+ "@pruneguard/cli-linux-x64-gnu": "0.5.0",
53
+ "@pruneguard/cli-linux-x64-musl": "0.5.0",
54
+ "@pruneguard/cli-win32-arm64-msvc": "0.5.0",
55
+ "@pruneguard/cli-win32-x64-msvc": "0.5.0"
56
56
  },
57
57
  "engines": {
58
58
  "node": ">=18.0.0"
@@ -41,6 +41,17 @@
41
41
  }
42
42
  ]
43
43
  },
44
+ "parityScore": {
45
+ "description": "External parity corpus score, if available.",
46
+ "anyOf": [
47
+ {
48
+ "$ref": "#/definitions/ExternalParityReport"
49
+ },
50
+ {
51
+ "type": "null"
52
+ }
53
+ ]
54
+ },
44
55
  "profile": {
45
56
  "description": "The profile used for this analysis.",
46
57
  "type": "string"
@@ -191,6 +202,218 @@
191
202
  "daemon"
192
203
  ]
193
204
  },
205
+ "ExternalParityCaseResult": {
206
+ "description": "Result of a single parity case in the external report.",
207
+ "type": "object",
208
+ "required": [
209
+ "family",
210
+ "name",
211
+ "passed",
212
+ "passedChecks",
213
+ "referenceTool",
214
+ "totalChecks"
215
+ ],
216
+ "properties": {
217
+ "failures": {
218
+ "type": "array",
219
+ "items": {
220
+ "type": "string"
221
+ }
222
+ },
223
+ "family": {
224
+ "type": "string"
225
+ },
226
+ "name": {
227
+ "type": "string"
228
+ },
229
+ "passed": {
230
+ "type": "boolean"
231
+ },
232
+ "passedChecks": {
233
+ "type": "integer",
234
+ "format": "uint",
235
+ "minimum": 0.0
236
+ },
237
+ "referenceTool": {
238
+ "type": "string"
239
+ },
240
+ "totalChecks": {
241
+ "type": "integer",
242
+ "format": "uint",
243
+ "minimum": 0.0
244
+ }
245
+ }
246
+ },
247
+ "ExternalParityFamilyScore": {
248
+ "description": "Per-family score in the external parity report.",
249
+ "type": "object",
250
+ "required": [
251
+ "family",
252
+ "passedCases",
253
+ "pct",
254
+ "totalCases"
255
+ ],
256
+ "properties": {
257
+ "family": {
258
+ "type": "string"
259
+ },
260
+ "passedCases": {
261
+ "type": "integer",
262
+ "format": "uint",
263
+ "minimum": 0.0
264
+ },
265
+ "pct": {
266
+ "type": "number",
267
+ "format": "double"
268
+ },
269
+ "totalCases": {
270
+ "type": "integer",
271
+ "format": "uint",
272
+ "minimum": 0.0
273
+ }
274
+ }
275
+ },
276
+ "ExternalParityReport": {
277
+ "description": "External parity report from the fixture-derived corpus.",
278
+ "type": "object",
279
+ "required": [
280
+ "overallPct",
281
+ "passedCases",
282
+ "passedChecks",
283
+ "totalCases",
284
+ "totalChecks"
285
+ ],
286
+ "properties": {
287
+ "byFamily": {
288
+ "description": "Per-family parity breakdown.",
289
+ "type": "array",
290
+ "items": {
291
+ "$ref": "#/definitions/ExternalParityFamilyScore"
292
+ }
293
+ },
294
+ "byReferenceTool": {
295
+ "description": "Per-reference-tool parity breakdown.",
296
+ "type": "array",
297
+ "items": {
298
+ "$ref": "#/definitions/ExternalParityToolScore"
299
+ }
300
+ },
301
+ "caseResults": {
302
+ "description": "Individual case results.",
303
+ "type": "array",
304
+ "items": {
305
+ "$ref": "#/definitions/ExternalParityCaseResult"
306
+ }
307
+ },
308
+ "overallPct": {
309
+ "description": "Overall parity percentage (0-100).",
310
+ "type": "number",
311
+ "format": "double"
312
+ },
313
+ "passedCases": {
314
+ "description": "Number of fully passing cases.",
315
+ "type": "integer",
316
+ "format": "uint",
317
+ "minimum": 0.0
318
+ },
319
+ "passedChecks": {
320
+ "description": "Number of individual checks that passed.",
321
+ "type": "integer",
322
+ "format": "uint",
323
+ "minimum": 0.0
324
+ },
325
+ "staleDeltas": {
326
+ "description": "Stale matrix deltas (features where the hand-authored tracker disagrees with reality).",
327
+ "type": "array",
328
+ "items": {
329
+ "$ref": "#/definitions/ParityStaleDelta"
330
+ }
331
+ },
332
+ "totalCases": {
333
+ "description": "Total number of parity test cases.",
334
+ "type": "integer",
335
+ "format": "uint",
336
+ "minimum": 0.0
337
+ },
338
+ "totalChecks": {
339
+ "description": "Total number of individual checks across all cases.",
340
+ "type": "integer",
341
+ "format": "uint",
342
+ "minimum": 0.0
343
+ }
344
+ }
345
+ },
346
+ "ExternalParitySummary": {
347
+ "description": "Summary of external parity score for the stats section.",
348
+ "type": "object",
349
+ "required": [
350
+ "overallPct",
351
+ "passedCases",
352
+ "passedChecks",
353
+ "totalCases",
354
+ "totalChecks"
355
+ ],
356
+ "properties": {
357
+ "overallPct": {
358
+ "description": "Overall parity percentage (0-100).",
359
+ "type": "number",
360
+ "format": "double"
361
+ },
362
+ "passedCases": {
363
+ "description": "Cases that fully passed.",
364
+ "type": "integer",
365
+ "format": "uint",
366
+ "minimum": 0.0
367
+ },
368
+ "passedChecks": {
369
+ "description": "Individual checks that passed.",
370
+ "type": "integer",
371
+ "format": "uint",
372
+ "minimum": 0.0
373
+ },
374
+ "totalCases": {
375
+ "description": "Total cases evaluated.",
376
+ "type": "integer",
377
+ "format": "uint",
378
+ "minimum": 0.0
379
+ },
380
+ "totalChecks": {
381
+ "description": "Total individual checks.",
382
+ "type": "integer",
383
+ "format": "uint",
384
+ "minimum": 0.0
385
+ }
386
+ }
387
+ },
388
+ "ExternalParityToolScore": {
389
+ "description": "Per-tool score in the external parity report.",
390
+ "type": "object",
391
+ "required": [
392
+ "passedCases",
393
+ "pct",
394
+ "tool",
395
+ "totalCases"
396
+ ],
397
+ "properties": {
398
+ "passedCases": {
399
+ "type": "integer",
400
+ "format": "uint",
401
+ "minimum": 0.0
402
+ },
403
+ "pct": {
404
+ "type": "number",
405
+ "format": "double"
406
+ },
407
+ "tool": {
408
+ "type": "string"
409
+ },
410
+ "totalCases": {
411
+ "type": "integer",
412
+ "format": "uint",
413
+ "minimum": 0.0
414
+ }
415
+ }
416
+ },
194
417
  "FileInfo": {
195
418
  "description": "Info about a discovered file.",
196
419
  "type": "object",
@@ -505,6 +728,29 @@
505
728
  }
506
729
  }
507
730
  },
731
+ "ParityStaleDelta": {
732
+ "description": "A stale delta where the hand-authored parity matrix disagrees with actual test results.",
733
+ "type": "object",
734
+ "required": [
735
+ "actualLevel",
736
+ "feature",
737
+ "matrixLevel"
738
+ ],
739
+ "properties": {
740
+ "actualLevel": {
741
+ "description": "Actual level observed from test results.",
742
+ "type": "string"
743
+ },
744
+ "feature": {
745
+ "description": "Feature or test case name.",
746
+ "type": "string"
747
+ },
748
+ "matrixLevel": {
749
+ "description": "Level claimed in the parity matrix.",
750
+ "type": "string"
751
+ }
752
+ }
753
+ },
508
754
  "RemediationActionKind": {
509
755
  "description": "The kind of remediation action to take.",
510
756
  "type": "string",
@@ -637,6 +883,25 @@
637
883
  }
638
884
  ]
639
885
  },
886
+ "externalParity": {
887
+ "description": "External parity score summary, if available.",
888
+ "anyOf": [
889
+ {
890
+ "$ref": "#/definitions/ExternalParitySummary"
891
+ },
892
+ {
893
+ "type": "null"
894
+ }
895
+ ]
896
+ },
897
+ "externalParityPct": {
898
+ "description": "External parity score percentage (0-100), if computed.",
899
+ "type": [
900
+ "number",
901
+ "null"
902
+ ],
903
+ "format": "double"
904
+ },
640
905
  "filesCached": {
641
906
  "type": "integer",
642
907
  "format": "uint",
@@ -794,6 +1059,13 @@
794
1059
  "format": "uint",
795
1060
  "minimum": 0.0
796
1061
  },
1062
+ "unsupportedFrameworks": {
1063
+ "description": "Names of unsupported frameworks detected in the workspace.",
1064
+ "type": "array",
1065
+ "items": {
1066
+ "type": "string"
1067
+ }
1068
+ },
797
1069
  "watcherLagMs": {
798
1070
  "description": "Lag of the file-system watcher in milliseconds.",
799
1071
  "type": [