fallow 3.33.0 → 3.34.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.
@@ -1401,6 +1401,114 @@
1401
1401
  "license_note": null,
1402
1402
  "docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-load-data-keys"
1403
1403
  },
1404
+ {
1405
+ "id": "unused-effect-layer",
1406
+ "rule_id": "fallow/unused-effect-layer",
1407
+ "command": "dead-code",
1408
+ "category": "Dead code",
1409
+ "description": "An Effect layer is composed only into layers that nothing uses",
1410
+ "label": "Unused Effect Layers",
1411
+ "config_key": "unused-effect-layers",
1412
+ "registry_index": 38,
1413
+ "aliases": [
1414
+ "unused-effect-layers"
1415
+ ],
1416
+ "lsp": true,
1417
+ "filter_flag": "--unused-effect-layers",
1418
+ "result_key": "unused_effect_layers",
1419
+ "summary_label": "Unused Effect layers",
1420
+ "summary_docs_anchor": "unused-effect-layers",
1421
+ "sarif_rule_ids": [
1422
+ "fallow/unused-effect-layer"
1423
+ ],
1424
+ "codeclimate_check_names": [
1425
+ "fallow/unused-effect-layer"
1426
+ ],
1427
+ "ts_alias": null,
1428
+ "counts_in_total": true,
1429
+ "fixable": false,
1430
+ "suppressible": true,
1431
+ "suppress_comment": "// fallow-ignore-next-line unused-effect-layer",
1432
+ "default_severity": "warn",
1433
+ "opt_in": false,
1434
+ "frameworks": [],
1435
+ "note": null,
1436
+ "license": "free",
1437
+ "license_note": null,
1438
+ "docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-effect-layers"
1439
+ },
1440
+ {
1441
+ "id": "unused-tagged-error",
1442
+ "rule_id": "fallow/unused-tagged-error",
1443
+ "command": "dead-code",
1444
+ "category": "Dead code",
1445
+ "description": "An Effect tagged error class is referenced only as a type or a catchTag string, and no code constructs or fails with it",
1446
+ "label": "Unused Tagged Errors",
1447
+ "config_key": "unused-tagged-errors",
1448
+ "registry_index": 39,
1449
+ "aliases": [
1450
+ "unused-tagged-errors"
1451
+ ],
1452
+ "lsp": true,
1453
+ "filter_flag": "--unused-tagged-errors",
1454
+ "result_key": "unused_tagged_errors",
1455
+ "summary_label": "Unused tagged errors",
1456
+ "summary_docs_anchor": "unused-tagged-errors",
1457
+ "sarif_rule_ids": [
1458
+ "fallow/unused-tagged-error"
1459
+ ],
1460
+ "codeclimate_check_names": [
1461
+ "fallow/unused-tagged-error"
1462
+ ],
1463
+ "ts_alias": null,
1464
+ "counts_in_total": true,
1465
+ "fixable": false,
1466
+ "suppressible": true,
1467
+ "suppress_comment": "// fallow-ignore-next-line unused-tagged-error",
1468
+ "default_severity": "warn",
1469
+ "opt_in": false,
1470
+ "frameworks": [],
1471
+ "note": null,
1472
+ "license": "free",
1473
+ "license_note": null,
1474
+ "docs_url": "https://fallow.tools/docs/explanations/dead-code/#unused-tagged-errors"
1475
+ },
1476
+ {
1477
+ "id": "unproduced-catch-tag",
1478
+ "rule_id": "fallow/unproduced-catch-tag",
1479
+ "command": "dead-code",
1480
+ "category": "Dead code",
1481
+ "description": "A catchTag handler names a project error tag that no code produces",
1482
+ "label": "Unproduced Catch Tags",
1483
+ "config_key": "unproduced-catch-tags",
1484
+ "registry_index": 40,
1485
+ "aliases": [
1486
+ "unproduced-catch-tags"
1487
+ ],
1488
+ "lsp": true,
1489
+ "filter_flag": "--unproduced-catch-tags",
1490
+ "result_key": "unproduced_catch_tags",
1491
+ "summary_label": "Unproduced catch tags",
1492
+ "summary_docs_anchor": "unproduced-catch-tags",
1493
+ "sarif_rule_ids": [
1494
+ "fallow/unproduced-catch-tag"
1495
+ ],
1496
+ "codeclimate_check_names": [
1497
+ "fallow/unproduced-catch-tag"
1498
+ ],
1499
+ "ts_alias": null,
1500
+ "counts_in_total": true,
1501
+ "fixable": false,
1502
+ "suppressible": true,
1503
+ "suppress_comment": "// fallow-ignore-next-line unproduced-catch-tag",
1504
+ "default_severity": "warn",
1505
+ "opt_in": false,
1506
+ "frameworks": [],
1507
+ "note": null,
1508
+ "license": "free",
1509
+ "license_note": null,
1510
+ "docs_url": "https://fallow.tools/docs/explanations/dead-code/#unproduced-catch-tags"
1511
+ },
1404
1512
  {
1405
1513
  "id": "route-collision",
1406
1514
  "rule_id": "fallow/route-collision",
@@ -1409,7 +1517,7 @@
1409
1517
  "description": "Two or more Next.js App Router route files resolve to the same URL",
1410
1518
  "label": "Route Collisions",
1411
1519
  "config_key": "route-collision",
1412
- "registry_index": 38,
1520
+ "registry_index": 41,
1413
1521
  "aliases": [
1414
1522
  "route-collisions"
1415
1523
  ],
@@ -1447,7 +1555,7 @@
1447
1555
  "description": "Sibling Next.js dynamic route segments use different slug names at the same position",
1448
1556
  "label": "Dynamic Segment Conflicts",
1449
1557
  "config_key": "dynamic-segment-name-conflict",
1450
- "registry_index": 39,
1558
+ "registry_index": 42,
1451
1559
  "aliases": [
1452
1560
  "dynamic-segment-name-conflicts"
1453
1561
  ],
@@ -1485,7 +1593,7 @@
1485
1593
  "description": "Suppression comment or tag no longer matches any issue",
1486
1594
  "label": "Stale Suppressions",
1487
1595
  "config_key": "stale-suppressions",
1488
- "registry_index": 40,
1596
+ "registry_index": 43,
1489
1597
  "aliases": [],
1490
1598
  "lsp": true,
1491
1599
  "filter_flag": "--stale-suppressions",
@@ -1521,7 +1629,7 @@
1521
1629
  "description": "Suppression comment omits a required reason",
1522
1630
  "label": "Missing Suppression Reasons",
1523
1631
  "config_key": "require-suppression-reason",
1524
- "registry_index": 41,
1632
+ "registry_index": 44,
1525
1633
  "aliases": [
1526
1634
  "missing-suppression-reasons"
1527
1635
  ],
@@ -1553,7 +1661,7 @@
1553
1661
  "description": "Catalog entry not referenced by any workspace package",
1554
1662
  "label": "Unused Catalog Entries",
1555
1663
  "config_key": "unused-catalog-entries",
1556
- "registry_index": 42,
1664
+ "registry_index": 45,
1557
1665
  "aliases": [
1558
1666
  "catalog",
1559
1667
  "unused-catalog-entries"
@@ -1593,7 +1701,7 @@
1593
1701
  "description": "Named catalog group has no entries",
1594
1702
  "label": "Empty Catalog Groups",
1595
1703
  "config_key": "empty-catalog-groups",
1596
- "registry_index": 43,
1704
+ "registry_index": 46,
1597
1705
  "aliases": [
1598
1706
  "empty-catalog",
1599
1707
  "empty-catalog-groups"
@@ -1633,7 +1741,7 @@
1633
1741
  "description": "package.json references a catalog that does not declare the package",
1634
1742
  "label": "Unresolved Catalog References",
1635
1743
  "config_key": "unresolved-catalog-references",
1636
- "registry_index": 44,
1744
+ "registry_index": 47,
1637
1745
  "aliases": [
1638
1746
  "unresolved-catalog",
1639
1747
  "unresolved-catalog-references"
@@ -1673,7 +1781,7 @@
1673
1781
  "description": "Package-manager override target is not declared or resolved",
1674
1782
  "label": "Unused Dependency Overrides",
1675
1783
  "config_key": "unused-dependency-overrides",
1676
- "registry_index": 45,
1784
+ "registry_index": 48,
1677
1785
  "aliases": [
1678
1786
  "unused-dependency-overrides",
1679
1787
  "unused-override",
@@ -1714,7 +1822,7 @@
1714
1822
  "description": "Package-manager override has an unparsable key or value",
1715
1823
  "label": "Misconfigured Dependency Overrides",
1716
1824
  "config_key": "misconfigured-dependency-overrides",
1717
- "registry_index": 46,
1825
+ "registry_index": 49,
1718
1826
  "aliases": [
1719
1827
  "misconfigured-dependency-overrides",
1720
1828
  "misconfigured-override",
@@ -1755,7 +1863,7 @@
1755
1863
  "description": "Detected feature flag pattern",
1756
1864
  "label": "Feature Flags",
1757
1865
  "config_key": "feature-flags",
1758
- "registry_index": 50,
1866
+ "registry_index": 53,
1759
1867
  "aliases": [],
1760
1868
  "lsp": false,
1761
1869
  "filter_flag": null,
@@ -1785,7 +1893,7 @@
1785
1893
  "description": "A React/Preact prop is forwarded unchanged through 3+ pass-through components to a distant consumer",
1786
1894
  "label": "Prop Drilling",
1787
1895
  "config_key": "prop-drilling",
1788
- "registry_index": 52,
1896
+ "registry_index": 55,
1789
1897
  "aliases": [],
1790
1898
  "lsp": true,
1791
1899
  "filter_flag": null,
@@ -1795,16 +1903,18 @@
1795
1903
  "sarif_rule_ids": [
1796
1904
  "fallow/prop-drilling"
1797
1905
  ],
1798
- "codeclimate_check_names": null,
1906
+ "codeclimate_check_names": [
1907
+ "fallow/prop-drilling"
1908
+ ],
1799
1909
  "ts_alias": null,
1800
- "counts_in_total": false,
1910
+ "counts_in_total": true,
1801
1911
  "fixable": false,
1802
1912
  "suppressible": true,
1803
1913
  "suppress_comment": "// fallow-ignore-next-line prop-drilling",
1804
1914
  "default_severity": "off",
1805
1915
  "opt_in": true,
1806
1916
  "frameworks": [],
1807
- "note": "Opt-in: set rules.prop-drilling to warn or error to enable. Defaults to off.",
1917
+ "note": "Opt-in: error gates CI; warn remains advisory even with --fail-on-issues. Defaults to off. Source-hop overrides decide severity.",
1808
1918
  "license": "free",
1809
1919
  "license_note": null,
1810
1920
  "docs_url": "https://fallow.tools/docs/explanations/dead-code/#prop-drilling"
@@ -1817,7 +1927,7 @@
1817
1927
  "description": "A React/Preact component whose whole body is a single spread-forwarded child render (a candidate for inlining)",
1818
1928
  "label": "Thin Wrappers",
1819
1929
  "config_key": "thin-wrapper",
1820
- "registry_index": 53,
1930
+ "registry_index": 56,
1821
1931
  "aliases": [
1822
1932
  "thin-wrappers"
1823
1933
  ],
@@ -1851,7 +1961,7 @@
1851
1961
  "description": "Three or more React/Preact components across two or more files declare an identical prop-name set (a missing shared Props type)",
1852
1962
  "label": "Duplicate Prop Shapes",
1853
1963
  "config_key": "duplicate-prop-shape",
1854
- "registry_index": 54,
1964
+ "registry_index": 57,
1855
1965
  "aliases": [
1856
1966
  "duplicate-prop-shapes"
1857
1967
  ],
@@ -1885,7 +1995,7 @@
1885
1995
  "description": "CSS or CSS-in-JS hardcoded styling value bypasses the design token system",
1886
1996
  "label": "CSS Token Drift",
1887
1997
  "config_key": "css-token-drift",
1888
- "registry_index": 55,
1998
+ "registry_index": 58,
1889
1999
  "aliases": [],
1890
2000
  "lsp": false,
1891
2001
  "filter_flag": null,
@@ -1915,7 +2025,7 @@
1915
2025
  "description": "CSS or CSS-in-JS declaration block is duplicated across rules",
1916
2026
  "label": "CSS Duplicate Block",
1917
2027
  "config_key": "css-duplicate-block",
1918
- "registry_index": 56,
2028
+ "registry_index": 59,
1919
2029
  "aliases": [],
1920
2030
  "lsp": false,
1921
2031
  "filter_flag": null,
@@ -1945,7 +2055,7 @@
1945
2055
  "description": "CSS selector, nesting, or important usage is structurally complex",
1946
2056
  "label": "CSS Selector Complexity",
1947
2057
  "config_key": "css-selector-complexity",
1948
- "registry_index": 57,
2058
+ "registry_index": 60,
1949
2059
  "aliases": [],
1950
2060
  "lsp": false,
1951
2061
  "filter_flag": null,
@@ -1975,7 +2085,7 @@
1975
2085
  "description": "CSS or CSS-in-JS surface appears unused",
1976
2086
  "label": "CSS Dead Surface",
1977
2087
  "config_key": "css-dead-surface",
1978
- "registry_index": 58,
2088
+ "registry_index": 61,
1979
2089
  "aliases": [],
1980
2090
  "lsp": false,
1981
2091
  "filter_flag": null,
@@ -2005,7 +2115,7 @@
2005
2115
  "description": "CSS or CSS-in-JS reference resolves to no stylesheet definition",
2006
2116
  "label": "CSS Broken Reference",
2007
2117
  "config_key": "css-broken-reference",
2008
- "registry_index": 59,
2118
+ "registry_index": 62,
2009
2119
  "aliases": [],
2010
2120
  "lsp": false,
2011
2121
  "filter_flag": null,
@@ -2027,6 +2137,156 @@
2027
2137
  "license_note": null,
2028
2138
  "docs_url": "https://fallow.tools/docs/explanations/health/#css-broken-reference"
2029
2139
  },
2140
+ {
2141
+ "id": "weakened-tests",
2142
+ "rule_id": "fallow/weakened-tests",
2143
+ "command": "audit",
2144
+ "category": "Audit",
2145
+ "description": "The change weakens tests or a coverage threshold",
2146
+ "label": "Weakened Tests",
2147
+ "config_key": "weakened-tests",
2148
+ "registry_index": 63,
2149
+ "aliases": [],
2150
+ "lsp": false,
2151
+ "filter_flag": null,
2152
+ "result_key": null,
2153
+ "summary_label": null,
2154
+ "summary_docs_anchor": null,
2155
+ "sarif_rule_ids": null,
2156
+ "codeclimate_check_names": null,
2157
+ "ts_alias": null,
2158
+ "counts_in_total": false,
2159
+ "fixable": false,
2160
+ "suppressible": true,
2161
+ "suppress_comment": "// fallow-ignore-next-line weakened-tests",
2162
+ "default_severity": "warn",
2163
+ "opt_in": false,
2164
+ "frameworks": [],
2165
+ "note": null,
2166
+ "license": "free",
2167
+ "license_note": null,
2168
+ "docs_url": "https://fallow.tools/docs/cli/audit/#diff-risk-rules"
2169
+ },
2170
+ {
2171
+ "id": "added-suppression",
2172
+ "rule_id": "fallow/added-suppression",
2173
+ "command": "audit",
2174
+ "category": "Audit",
2175
+ "description": "The change adds a suppression comment",
2176
+ "label": "Added Suppressions",
2177
+ "config_key": "added-suppression",
2178
+ "registry_index": 64,
2179
+ "aliases": [],
2180
+ "lsp": false,
2181
+ "filter_flag": null,
2182
+ "result_key": null,
2183
+ "summary_label": null,
2184
+ "summary_docs_anchor": null,
2185
+ "sarif_rule_ids": null,
2186
+ "codeclimate_check_names": null,
2187
+ "ts_alias": null,
2188
+ "counts_in_total": false,
2189
+ "fixable": false,
2190
+ "suppressible": true,
2191
+ "suppress_comment": "// fallow-ignore-next-line added-suppression",
2192
+ "default_severity": "warn",
2193
+ "opt_in": false,
2194
+ "frameworks": [],
2195
+ "note": null,
2196
+ "license": "free",
2197
+ "license_note": null,
2198
+ "docs_url": "https://fallow.tools/docs/cli/audit/#diff-risk-rules"
2199
+ },
2200
+ {
2201
+ "id": "test-only-branch",
2202
+ "rule_id": "fallow/test-only-branch",
2203
+ "command": "audit",
2204
+ "category": "Audit",
2205
+ "description": "The change adds a test-environment branch to source code",
2206
+ "label": "Test-Only Branches",
2207
+ "config_key": "test-only-branch",
2208
+ "registry_index": 65,
2209
+ "aliases": [],
2210
+ "lsp": false,
2211
+ "filter_flag": null,
2212
+ "result_key": null,
2213
+ "summary_label": null,
2214
+ "summary_docs_anchor": null,
2215
+ "sarif_rule_ids": null,
2216
+ "codeclimate_check_names": null,
2217
+ "ts_alias": null,
2218
+ "counts_in_total": false,
2219
+ "fixable": false,
2220
+ "suppressible": true,
2221
+ "suppress_comment": "// fallow-ignore-next-line test-only-branch",
2222
+ "default_severity": "warn",
2223
+ "opt_in": false,
2224
+ "frameworks": [],
2225
+ "note": null,
2226
+ "license": "free",
2227
+ "license_note": null,
2228
+ "docs_url": "https://fallow.tools/docs/cli/audit/#diff-risk-rules"
2229
+ },
2230
+ {
2231
+ "id": "diverged-clone-sibling",
2232
+ "rule_id": "fallow/diverged-clone-sibling",
2233
+ "command": "audit",
2234
+ "category": "Audit",
2235
+ "description": "The change edits one copy of duplicated code but not its siblings",
2236
+ "label": "Diverged Clone Siblings",
2237
+ "config_key": "diverged-clone-sibling",
2238
+ "registry_index": 66,
2239
+ "aliases": [],
2240
+ "lsp": false,
2241
+ "filter_flag": null,
2242
+ "result_key": null,
2243
+ "summary_label": null,
2244
+ "summary_docs_anchor": null,
2245
+ "sarif_rule_ids": null,
2246
+ "codeclimate_check_names": null,
2247
+ "ts_alias": null,
2248
+ "counts_in_total": false,
2249
+ "fixable": false,
2250
+ "suppressible": true,
2251
+ "suppress_comment": "// fallow-ignore-next-line diverged-clone-sibling",
2252
+ "default_severity": "off",
2253
+ "opt_in": true,
2254
+ "frameworks": [],
2255
+ "note": null,
2256
+ "license": "free",
2257
+ "license_note": null,
2258
+ "docs_url": "https://fallow.tools/docs/cli/audit/#diff-risk-rules"
2259
+ },
2260
+ {
2261
+ "id": "added-dependency",
2262
+ "rule_id": "fallow/added-dependency",
2263
+ "command": "audit",
2264
+ "category": "Audit",
2265
+ "description": "The change adds a dependency",
2266
+ "label": "Added Dependencies",
2267
+ "config_key": "added-dependency",
2268
+ "registry_index": 67,
2269
+ "aliases": [],
2270
+ "lsp": false,
2271
+ "filter_flag": null,
2272
+ "result_key": null,
2273
+ "summary_label": null,
2274
+ "summary_docs_anchor": null,
2275
+ "sarif_rule_ids": null,
2276
+ "codeclimate_check_names": null,
2277
+ "ts_alias": null,
2278
+ "counts_in_total": false,
2279
+ "fixable": false,
2280
+ "suppressible": false,
2281
+ "suppress_comment": null,
2282
+ "default_severity": "off",
2283
+ "opt_in": true,
2284
+ "frameworks": [],
2285
+ "note": null,
2286
+ "license": "free",
2287
+ "license_note": null,
2288
+ "docs_url": "https://fallow.tools/docs/cli/audit/#diff-risk-rules"
2289
+ },
2030
2290
  {
2031
2291
  "id": "angular-trusted-html",
2032
2292
  "rule_id": "security/angular-trusted-html",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fallow",
3
- "version": "3.33.0",
3
+ "version": "3.34.0",
4
4
  "mcpName": "io.github.fallow-rs/fallow",
5
5
  "description": "Codebase intelligence for TypeScript and JavaScript: health, complexity, duplication, architecture, styling drift, and unused code from one graph. CLI, LSP, and MCP server. Zero config for over 100 frameworks.",
6
6
  "license": "MIT",
@@ -86,17 +86,17 @@
86
86
  "detect-libc": "2.1.2"
87
87
  },
88
88
  "devDependencies": {
89
- "@tanstack/intent": "0.4.0"
89
+ "@tanstack/intent": "0.5.5"
90
90
  },
91
91
  "optionalDependencies": {
92
- "@fallow-cli/darwin-arm64": "3.33.0",
93
- "@fallow-cli/darwin-x64": "3.33.0",
94
- "@fallow-cli/linux-x64-gnu": "3.33.0",
95
- "@fallow-cli/linux-arm64-gnu": "3.33.0",
96
- "@fallow-cli/linux-x64-musl": "3.33.0",
97
- "@fallow-cli/linux-arm64-musl": "3.33.0",
98
- "@fallow-cli/win32-arm64-msvc": "3.33.0",
99
- "@fallow-cli/win32-x64-msvc": "3.33.0",
100
- "fallow-type-aware": "3.33.0"
92
+ "@fallow-cli/darwin-arm64": "3.34.0",
93
+ "@fallow-cli/darwin-x64": "3.34.0",
94
+ "@fallow-cli/linux-x64-gnu": "3.34.0",
95
+ "@fallow-cli/linux-arm64-gnu": "3.34.0",
96
+ "@fallow-cli/linux-x64-musl": "3.34.0",
97
+ "@fallow-cli/linux-arm64-musl": "3.34.0",
98
+ "@fallow-cli/win32-arm64-msvc": "3.34.0",
99
+ "@fallow-cli/win32-x64-msvc": "3.34.0",
100
+ "fallow-type-aware": "3.34.0"
101
101
  }
102
102
  }