fallow 2.74.0 → 2.75.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.
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ fallow dupes --save-baseline # Save current duplication as baseline
|
|
|
75
75
|
|
|
76
76
|
## Framework support
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
95 built-in plugins covering Next.js, Nuxt, Remix, Qwik, SvelteKit, Gatsby, Astro, Angular, NestJS, AdonisJS, Expo Router, Vite, Webpack, Vitest, Jest, Playwright, Cypress, Storybook, ESLint, TypeScript, Tailwind, UnoCSS, Prisma, Drizzle, Convex, Turborepo, Hardhat, and many more. Auto-detected from your `package.json`.
|
|
79
79
|
|
|
80
80
|
## Configuration
|
|
81
81
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.75.0",
|
|
4
4
|
"description": "Codebase intelligence for TypeScript and JavaScript. Finds unused code, duplication, circular dependencies, complexity hotspots, and architecture drift. Optional runtime intelligence layer (Fallow Runtime) adds production execution evidence. Rust-native, sub-second, 94 framework plugins.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -73,13 +73,13 @@
|
|
|
73
73
|
"@tanstack/intent": "0.0.40"
|
|
74
74
|
},
|
|
75
75
|
"optionalDependencies": {
|
|
76
|
-
"@fallow-cli/darwin-arm64": "2.
|
|
77
|
-
"@fallow-cli/darwin-x64": "2.
|
|
78
|
-
"@fallow-cli/linux-x64-gnu": "2.
|
|
79
|
-
"@fallow-cli/linux-arm64-gnu": "2.
|
|
80
|
-
"@fallow-cli/linux-x64-musl": "2.
|
|
81
|
-
"@fallow-cli/linux-arm64-musl": "2.
|
|
82
|
-
"@fallow-cli/win32-arm64-msvc": "2.
|
|
83
|
-
"@fallow-cli/win32-x64-msvc": "2.
|
|
76
|
+
"@fallow-cli/darwin-arm64": "2.75.0",
|
|
77
|
+
"@fallow-cli/darwin-x64": "2.75.0",
|
|
78
|
+
"@fallow-cli/linux-x64-gnu": "2.75.0",
|
|
79
|
+
"@fallow-cli/linux-arm64-gnu": "2.75.0",
|
|
80
|
+
"@fallow-cli/linux-x64-musl": "2.75.0",
|
|
81
|
+
"@fallow-cli/linux-arm64-musl": "2.75.0",
|
|
82
|
+
"@fallow-cli/win32-arm64-msvc": "2.75.0",
|
|
83
|
+
"@fallow-cli/win32-x64-msvc": "2.75.0"
|
|
84
84
|
}
|
|
85
85
|
}
|
package/skills/fallow/SKILL.md
CHANGED
|
@@ -95,12 +95,13 @@ cargo install fallow-cli # build from source
|
|
|
95
95
|
| Unlisted dependencies | `--unlisted-deps` | Used packages missing from package.json. In monorepos, importing a workspace package from a workspace whose own `package.json` does not list it is reported here too; self-references stay allowed without requiring a package to depend on itself. |
|
|
96
96
|
| Duplicate exports | `--duplicate-exports` | Same symbol exported from multiple modules |
|
|
97
97
|
| Circular dependencies | `--circular-deps` | Import cycles in the module graph |
|
|
98
|
-
| Boundary violations | `--boundary-violations` | Imports crossing architecture zone boundaries. Presets: `layered`, `hexagonal`, `feature-sliced`, `bulletproof` |
|
|
98
|
+
| Boundary violations | `--boundary-violations` | Imports crossing architecture zone boundaries. Presets: `layered`, `hexagonal`, `feature-sliced`, `bulletproof`; `autoDiscover` can create one zone per feature directory |
|
|
99
99
|
| Stale suppressions | `--stale-suppressions` | `fallow-ignore` comments or `@expected-unused` JSDoc tags that no longer match any issue |
|
|
100
100
|
| Test-only dependencies | n/a | Production deps only imported from test files (should be devDependencies) |
|
|
101
101
|
| Unused pnpm catalog entries | `--unused-catalog-entries` | `pnpm-workspace.yaml` entries no workspace package.json references via `catalog:` (default `warn`) |
|
|
102
|
+
| Empty pnpm catalog groups | `--empty-catalog-groups` | Named `catalogs.<name>:` groups in `pnpm-workspace.yaml` with no entries. Top-level `catalog:` placeholders are ignored. Default `warn`. |
|
|
102
103
|
| Unresolved pnpm catalog references | `--unresolved-catalog-references` | `package.json` references to `catalog:` / `catalog:<name>` whose catalog does not declare the package; `pnpm install` would fail. Default `error`. Suppress via `ignoreCatalogReferences: [{ package, catalog?, consumer? }]` in fallow config (package.json has no comment syntax). |
|
|
103
|
-
| Unused pnpm dependency overrides | `--unused-dependency-overrides` | `pnpm-workspace.yaml#overrides` / `package.json#pnpm.overrides` entries
|
|
104
|
+
| Unused pnpm dependency overrides | `--unused-dependency-overrides` | `pnpm-workspace.yaml#overrides` / `package.json#pnpm.overrides` entries whose target package is not declared by any workspace `package.json` and is not present in `pnpm-lock.yaml`. Default `warn`. When the lockfile is missing or unreadable the check degrades to a manifest-only fallback and every finding carries a `hint` reminding consumers to verify before removal. Suppress via `ignoreDependencyOverrides: [{ package, source? }]` in fallow config. |
|
|
104
105
|
| Misconfigured pnpm dependency overrides | `--misconfigured-dependency-overrides` | `pnpm.overrides` entries whose key is unparsable (empty, dangling separators, malformed selectors) or value is missing/empty. `pnpm install` would fail. Default `error`. Suppression: same `ignoreDependencyOverrides` config rule. |
|
|
105
106
|
|
|
106
107
|
## MCP Tools
|
|
@@ -72,6 +72,11 @@ Analyzes the project for unused files, exports, dependencies, types, members, an
|
|
|
72
72
|
| `--circular-deps` | Circular dependencies |
|
|
73
73
|
| `--boundary-violations` | Boundary violations (imports crossing architecture zone boundaries) |
|
|
74
74
|
| `--stale-suppressions` | Stale suppression comments or `@expected-unused` JSDoc tags |
|
|
75
|
+
| `--unused-catalog-entries` | Unused pnpm catalog entries |
|
|
76
|
+
| `--empty-catalog-groups` | Empty named pnpm catalog groups |
|
|
77
|
+
| `--unresolved-catalog-references` | Package references to missing pnpm catalog entries |
|
|
78
|
+
| `--unused-dependency-overrides` | Unused pnpm dependency overrides |
|
|
79
|
+
| `--misconfigured-dependency-overrides` | Malformed pnpm dependency overrides |
|
|
75
80
|
|
|
76
81
|
### Examples
|
|
77
82
|
|
|
@@ -432,7 +437,7 @@ fallow health --format json --quiet --trend
|
|
|
432
437
|
```json
|
|
433
438
|
{
|
|
434
439
|
"schema_version": 3,
|
|
435
|
-
"version": "2.
|
|
440
|
+
"version": "2.74.0",
|
|
436
441
|
"elapsed_ms": 32,
|
|
437
442
|
"summary": {
|
|
438
443
|
"files_analyzed": 482,
|
|
@@ -818,7 +823,7 @@ fallow audit \
|
|
|
818
823
|
```json
|
|
819
824
|
{
|
|
820
825
|
"schema_version": 3,
|
|
821
|
-
"version": "2.
|
|
826
|
+
"version": "2.74.0",
|
|
822
827
|
"command": "audit",
|
|
823
828
|
"verdict": "fail",
|
|
824
829
|
"changed_files_count": 12,
|
|
@@ -891,7 +896,7 @@ fallow flags --format json --quiet --workspace my-package
|
|
|
891
896
|
```json
|
|
892
897
|
{
|
|
893
898
|
"schema_version": 3,
|
|
894
|
-
"version": "2.
|
|
899
|
+
"version": "2.74.0",
|
|
895
900
|
"elapsed_ms": 116,
|
|
896
901
|
"feature_flags": [],
|
|
897
902
|
"total_flags": 0
|
|
@@ -1310,7 +1315,7 @@ The HTTP layer mirrors the bash `gh_api_retry` / `curl_retry` helpers: `FALLOW_A
|
|
|
1310
1315
|
```json
|
|
1311
1316
|
{
|
|
1312
1317
|
"schema_version": 3,
|
|
1313
|
-
"version": "2.
|
|
1318
|
+
"version": "2.74.0",
|
|
1314
1319
|
"elapsed_ms": 45,
|
|
1315
1320
|
"total_issues": 12,
|
|
1316
1321
|
"entry_points": {
|
|
@@ -1457,7 +1462,7 @@ When `--baseline` is used in combined output, the JSON includes a `baseline_delt
|
|
|
1457
1462
|
```json
|
|
1458
1463
|
{
|
|
1459
1464
|
"schema_version": 3,
|
|
1460
|
-
"version": "2.
|
|
1465
|
+
"version": "2.74.0",
|
|
1461
1466
|
"elapsed_ms": 82,
|
|
1462
1467
|
"total_clones": 15,
|
|
1463
1468
|
"total_lines_duplicated": 230,
|
|
@@ -1501,7 +1506,7 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
|
|
|
1501
1506
|
{
|
|
1502
1507
|
"check": {
|
|
1503
1508
|
"schema_version": 3,
|
|
1504
|
-
"version": "2.
|
|
1509
|
+
"version": "2.74.0",
|
|
1505
1510
|
"elapsed_ms": 45,
|
|
1506
1511
|
"total_issues": 12,
|
|
1507
1512
|
"unused_files": [],
|
|
@@ -1523,7 +1528,7 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
|
|
|
1523
1528
|
},
|
|
1524
1529
|
"dupes": {
|
|
1525
1530
|
"schema_version": 3,
|
|
1526
|
-
"version": "2.
|
|
1531
|
+
"version": "2.74.0",
|
|
1527
1532
|
"elapsed_ms": 82,
|
|
1528
1533
|
"total_clones": 15,
|
|
1529
1534
|
"total_lines_duplicated": 230,
|
|
@@ -1532,7 +1537,7 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
|
|
|
1532
1537
|
},
|
|
1533
1538
|
"health": {
|
|
1534
1539
|
"schema_version": 3,
|
|
1535
|
-
"version": "2.
|
|
1540
|
+
"version": "2.74.0",
|
|
1536
1541
|
"elapsed_ms": 32,
|
|
1537
1542
|
"summary": {},
|
|
1538
1543
|
"findings": [],
|
|
@@ -1614,10 +1619,20 @@ Config files are searched in priority order: `.fallowrc.json` > `.fallowrc.jsonc
|
|
|
1614
1619
|
"ignorePatterns": ["**/*.generated.ts"]
|
|
1615
1620
|
},
|
|
1616
1621
|
|
|
1617
|
-
// Architecture boundaries (preset
|
|
1622
|
+
// Architecture boundaries (preset, custom zones/rules, or auto-discovered feature zones)
|
|
1618
1623
|
// Presets: "layered", "hexagonal", "feature-sliced", "bulletproof"
|
|
1619
1624
|
"boundaries": {
|
|
1620
1625
|
"preset": "bulletproof"
|
|
1626
|
+
// Or:
|
|
1627
|
+
// "zones": [
|
|
1628
|
+
// { "name": "app", "patterns": ["src/app/**"] },
|
|
1629
|
+
// { "name": "features", "autoDiscover": ["src/features"] },
|
|
1630
|
+
// { "name": "shared", "patterns": ["src/shared/**"] }
|
|
1631
|
+
// ],
|
|
1632
|
+
// "rules": [
|
|
1633
|
+
// { "from": "app", "allow": ["features", "shared"] },
|
|
1634
|
+
// { "from": "features", "allow": ["shared"] }
|
|
1635
|
+
// ]
|
|
1621
1636
|
},
|
|
1622
1637
|
|
|
1623
1638
|
// Production mode
|