fallow 2.97.0 → 2.98.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fallow",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.98.0",
|
|
4
4
|
"description": "Deterministic codebase intelligence for TypeScript and JavaScript. Quality, risk, architecture, dependencies, duplication, and safe cleanup evidence for humans, CI, and agents. Optional runtime intelligence layer (Fallow Runtime) adds production execution evidence. Rust-native, sub-second, zero-config framework support.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -83,13 +83,13 @@
|
|
|
83
83
|
"@tanstack/intent": "0.0.42"
|
|
84
84
|
},
|
|
85
85
|
"optionalDependencies": {
|
|
86
|
-
"@fallow-cli/darwin-arm64": "2.
|
|
87
|
-
"@fallow-cli/darwin-x64": "2.
|
|
88
|
-
"@fallow-cli/linux-x64-gnu": "2.
|
|
89
|
-
"@fallow-cli/linux-arm64-gnu": "2.
|
|
90
|
-
"@fallow-cli/linux-x64-musl": "2.
|
|
91
|
-
"@fallow-cli/linux-arm64-musl": "2.
|
|
92
|
-
"@fallow-cli/win32-arm64-msvc": "2.
|
|
93
|
-
"@fallow-cli/win32-x64-msvc": "2.
|
|
86
|
+
"@fallow-cli/darwin-arm64": "2.98.0",
|
|
87
|
+
"@fallow-cli/darwin-x64": "2.98.0",
|
|
88
|
+
"@fallow-cli/linux-x64-gnu": "2.98.0",
|
|
89
|
+
"@fallow-cli/linux-arm64-gnu": "2.98.0",
|
|
90
|
+
"@fallow-cli/linux-x64-musl": "2.98.0",
|
|
91
|
+
"@fallow-cli/linux-arm64-musl": "2.98.0",
|
|
92
|
+
"@fallow-cli/win32-arm64-msvc": "2.98.0",
|
|
93
|
+
"@fallow-cli/win32-x64-msvc": "2.98.0"
|
|
94
94
|
}
|
|
95
95
|
}
|
package/schema.json
CHANGED
|
@@ -159,6 +159,9 @@
|
|
|
159
159
|
"unrendered-components": "warn",
|
|
160
160
|
"unused-component-props": "warn",
|
|
161
161
|
"unused-component-emits": "warn",
|
|
162
|
+
"unused-component-inputs": "warn",
|
|
163
|
+
"unused-component-outputs": "warn",
|
|
164
|
+
"unused-svelte-events": "warn",
|
|
162
165
|
"unused-server-actions": "warn",
|
|
163
166
|
"unused-load-data-keys": "warn",
|
|
164
167
|
"prop-drilling": "off",
|
|
@@ -1052,6 +1055,21 @@
|
|
|
1052
1055
|
"$ref": "#/$defs/Severity",
|
|
1053
1056
|
"default": "error"
|
|
1054
1057
|
},
|
|
1058
|
+
"unused-component-inputs": {
|
|
1059
|
+
"description": "Angular `@Input()` / signal `input()` / `model()` declared input read\nnowhere inside its own component (neither the inline/external template nor\nthe class body). The single-file dead-input direction, the Angular\nanalogue of `unused-component-prop`. Defaults to `warn`, not `error`: an\ninput can be part of a deliberately-stable public component API, so\nanalyzer confidence is lower; warn encodes that without failing CI.",
|
|
1060
|
+
"$ref": "#/$defs/Severity",
|
|
1061
|
+
"default": "error"
|
|
1062
|
+
},
|
|
1063
|
+
"unused-component-outputs": {
|
|
1064
|
+
"description": "Angular `@Output()` / signal `output()` declared output emitted nowhere\ninside its own component (no `this.<output>.emit(...)`). The single-file\ndead-output direction, the Angular analogue of `unused-component-emit`.\nDefaults to `warn`, not `error`: an output can be part of a\ndeliberately-stable public component API, so analyzer confidence is lower;\nwarn encodes that without failing CI.",
|
|
1065
|
+
"$ref": "#/$defs/Severity",
|
|
1066
|
+
"default": "error"
|
|
1067
|
+
},
|
|
1068
|
+
"unused-svelte-events": {
|
|
1069
|
+
"description": "Svelte component dispatching a custom event via `createEventDispatcher()`\nwhose event name is listened to nowhere in the analyzed project. The\ncross-file dead-output direction (no eslint-plugin-svelte / svelte-check\nrule covers the listener side). Defaults to `warn`, not `error`: a\ndispatched event can be part of a deliberately-stable public component\nAPI, or a listener may be added later, so analyzer confidence is lower;\nwarn encodes that without failing CI.",
|
|
1070
|
+
"$ref": "#/$defs/Severity",
|
|
1071
|
+
"default": "warn"
|
|
1072
|
+
},
|
|
1055
1073
|
"unused-server-actions": {
|
|
1056
1074
|
"description": "Next.js Server Action (an export of a `\"use server\"` file) referenced by\nno code in the project: no import-and-call, no `action={fn}` binding, no\n`<form action={fn}>`. Cross-graph dead-export direction, reclassified out\nof `unused-export` for `\"use server\"` files. Defaults to `warn`, not\n`error`: the rule is new and false-negative-preferring, and reflective\naction-dispatch shapes can hide a real consumer; warn encodes that\nwithout failing CI until corpus-validated.",
|
|
1057
1075
|
"$ref": "#/$defs/Severity",
|
|
@@ -1731,6 +1749,36 @@
|
|
|
1731
1749
|
}
|
|
1732
1750
|
]
|
|
1733
1751
|
},
|
|
1752
|
+
"unused-component-inputs": {
|
|
1753
|
+
"anyOf": [
|
|
1754
|
+
{
|
|
1755
|
+
"$ref": "#/$defs/Severity"
|
|
1756
|
+
},
|
|
1757
|
+
{
|
|
1758
|
+
"type": "null"
|
|
1759
|
+
}
|
|
1760
|
+
]
|
|
1761
|
+
},
|
|
1762
|
+
"unused-component-outputs": {
|
|
1763
|
+
"anyOf": [
|
|
1764
|
+
{
|
|
1765
|
+
"$ref": "#/$defs/Severity"
|
|
1766
|
+
},
|
|
1767
|
+
{
|
|
1768
|
+
"type": "null"
|
|
1769
|
+
}
|
|
1770
|
+
]
|
|
1771
|
+
},
|
|
1772
|
+
"unused-svelte-events": {
|
|
1773
|
+
"anyOf": [
|
|
1774
|
+
{
|
|
1775
|
+
"$ref": "#/$defs/Severity"
|
|
1776
|
+
},
|
|
1777
|
+
{
|
|
1778
|
+
"type": "null"
|
|
1779
|
+
}
|
|
1780
|
+
]
|
|
1781
|
+
},
|
|
1734
1782
|
"unused-server-actions": {
|
|
1735
1783
|
"anyOf": [
|
|
1736
1784
|
{
|
package/skills/fallow/SKILL.md
CHANGED
|
@@ -164,6 +164,9 @@ Run `fallow <command> --help` for the full flag list per command (see also refer
|
|
|
164
164
|
| `unrendered-component` | `--unrendered-components` | - | `// fallow-ignore-next-line unrendered-component` | A Vue / Svelte component is reachable through a barrel but rendered nowhere |
|
|
165
165
|
| `unused-component-prop` | `--unused-component-props` | - | `// fallow-ignore-next-line unused-component-prop` | A Vue defineProps prop or React component prop is referenced nowhere in its own component |
|
|
166
166
|
| `unused-component-emit` | `--unused-component-emits` | - | `// fallow-ignore-next-line unused-component-emit` | A Vue <script setup> defineEmits event is emitted nowhere in its own component |
|
|
167
|
+
| `unused-component-input` | `--unused-component-inputs` | - | `// fallow-ignore-next-line unused-component-input` | An Angular @Input() / signal input() / model() is read nowhere in its own component (class body or template); needs `@angular/core` dep |
|
|
168
|
+
| `unused-component-output` | `--unused-component-outputs` | - | `// fallow-ignore-next-line unused-component-output` | An Angular @Output() / signal output() is emitted (.emit()) nowhere in its own component; needs `@angular/core` dep |
|
|
169
|
+
| `unused-svelte-event` | `--unused-svelte-events` | - | `// fallow-ignore-next-line unused-svelte-event` | A Svelte createEventDispatcher event is listened to nowhere in the project; needs `svelte` dep |
|
|
167
170
|
| `unused-server-action` | `--unused-server-actions` | - | `// fallow-ignore-next-line unused-server-action` | A Next.js Server Action exported from a "use server" file is referenced by no code in the project |
|
|
168
171
|
| `unused-load-data-key` | `--unused-load-data-keys` | - | `// fallow-ignore-next-line unused-load-data-key` | A SvelteKit load() return-object key is read by no consumer (needs @sveltejs/kit dep) |
|
|
169
172
|
| `prop-drilling` | - | - | `// fallow-ignore-next-line prop-drilling` | A React/Preact prop is forwarded unchanged through 3+ pass-through components to a distant consumer; Opt-in: set rules.prop-drilling to warn or error to enable. Defaults to off. |
|
|
@@ -66,6 +66,9 @@ Common global flags for this command: [`--format`](#global-flags), [`--quiet`](#
|
|
|
66
66
|
| `--unrendered-components` | A Vue / Svelte component is reachable through a barrel but rendered nowhere |
|
|
67
67
|
| `--unused-component-props` | A Vue defineProps prop or React component prop is referenced nowhere in its own component |
|
|
68
68
|
| `--unused-component-emits` | A Vue <script setup> defineEmits event is emitted nowhere in its own component |
|
|
69
|
+
| `--unused-component-inputs` | An Angular @Input() / signal input() / model() is read nowhere in its own component (class body or template); needs `@angular/core` dep |
|
|
70
|
+
| `--unused-component-outputs` | An Angular @Output() / signal output() is emitted (.emit()) nowhere in its own component; needs `@angular/core` dep |
|
|
71
|
+
| `--unused-svelte-events` | A Svelte createEventDispatcher event is listened to nowhere in the project |
|
|
69
72
|
| `--unused-server-actions` | A Next.js Server Action exported from a "use server" file is referenced by no code in the project |
|
|
70
73
|
| `--unused-load-data-keys` | A SvelteKit load() return-object key is read by no consumer |
|
|
71
74
|
| `--unresolved-imports` | Unresolved imports |
|
|
@@ -501,7 +504,7 @@ fallow health --format json --quiet --trend
|
|
|
501
504
|
{
|
|
502
505
|
"kind": "health",
|
|
503
506
|
"schema_version": 7,
|
|
504
|
-
"version": "2.
|
|
507
|
+
"version": "2.98.0",
|
|
505
508
|
"elapsed_ms": 32,
|
|
506
509
|
"summary": {
|
|
507
510
|
"files_analyzed": 482,
|
|
@@ -888,7 +891,7 @@ fallow audit \
|
|
|
888
891
|
{
|
|
889
892
|
"kind": "audit",
|
|
890
893
|
"schema_version": 7,
|
|
891
|
-
"version": "2.
|
|
894
|
+
"version": "2.98.0",
|
|
892
895
|
"command": "audit",
|
|
893
896
|
"verdict": "fail",
|
|
894
897
|
"changed_files_count": 12,
|
|
@@ -963,7 +966,7 @@ fallow flags --format json --quiet --workspace my-package
|
|
|
963
966
|
```json
|
|
964
967
|
{
|
|
965
968
|
"schema_version": 7,
|
|
966
|
-
"version": "2.
|
|
969
|
+
"version": "2.98.0",
|
|
967
970
|
"elapsed_ms": 116,
|
|
968
971
|
"feature_flags": [],
|
|
969
972
|
"total_flags": 0
|
|
@@ -1063,7 +1066,7 @@ fallow security --gate newly-reachable --changed-since origin/main
|
|
|
1063
1066
|
{
|
|
1064
1067
|
"kind": "security",
|
|
1065
1068
|
"schema_version": "4",
|
|
1066
|
-
"version": "2.
|
|
1069
|
+
"version": "2.98.0",
|
|
1067
1070
|
"elapsed_ms": 42,
|
|
1068
1071
|
"config": {
|
|
1069
1072
|
"rules": {
|
|
@@ -1092,7 +1095,7 @@ fallow security --gate newly-reachable --changed-since origin/main
|
|
|
1092
1095
|
{
|
|
1093
1096
|
"kind": "security",
|
|
1094
1097
|
"schema_version": "4",
|
|
1095
|
-
"version": "2.
|
|
1098
|
+
"version": "2.98.0",
|
|
1096
1099
|
"elapsed_ms": 42,
|
|
1097
1100
|
"config": {
|
|
1098
1101
|
"rules": {
|
|
@@ -1709,7 +1712,7 @@ The HTTP layer mirrors the bash `gh_api_retry` / `curl_retry` helpers: `FALLOW_A
|
|
|
1709
1712
|
{
|
|
1710
1713
|
"kind": "dead-code",
|
|
1711
1714
|
"schema_version": 7,
|
|
1712
|
-
"version": "2.
|
|
1715
|
+
"version": "2.98.0",
|
|
1713
1716
|
"elapsed_ms": 45,
|
|
1714
1717
|
"total_issues": 12,
|
|
1715
1718
|
"entry_points": {
|
|
@@ -1869,7 +1872,7 @@ When `--baseline` is used in combined output, the JSON includes a `baseline_delt
|
|
|
1869
1872
|
{
|
|
1870
1873
|
"kind": "dupes",
|
|
1871
1874
|
"schema_version": 7,
|
|
1872
|
-
"version": "2.
|
|
1875
|
+
"version": "2.98.0",
|
|
1873
1876
|
"elapsed_ms": 82,
|
|
1874
1877
|
"total_clones": 15,
|
|
1875
1878
|
"total_lines_duplicated": 230,
|
|
@@ -1913,11 +1916,11 @@ When running `fallow` with no subcommand (all analyses), the JSON output combine
|
|
|
1913
1916
|
{
|
|
1914
1917
|
"kind": "combined",
|
|
1915
1918
|
"schema_version": 7,
|
|
1916
|
-
"version": "2.
|
|
1919
|
+
"version": "2.98.0",
|
|
1917
1920
|
"elapsed_ms": 159,
|
|
1918
1921
|
"check": {
|
|
1919
1922
|
"schema_version": 7,
|
|
1920
|
-
"version": "2.
|
|
1923
|
+
"version": "2.98.0",
|
|
1921
1924
|
"elapsed_ms": 45,
|
|
1922
1925
|
"total_issues": 12,
|
|
1923
1926
|
"unused_files": [],
|
|
@@ -78,6 +78,18 @@ Don't use `--changed-since` when auditing the full project. Use it for PR checks
|
|
|
78
78
|
|
|
79
79
|
---
|
|
80
80
|
|
|
81
|
+
## Svelte Event Findings Are Project-Wide Listener Checks
|
|
82
|
+
|
|
83
|
+
`unused-svelte-event` reports a Svelte `createEventDispatcher` event that has no reachable listener in the project. This is different from `unused-component-emit`, which checks whether a Vue component ever emits its declared event.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
fallow dead-code --format json --quiet --unused-svelte-events
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Dynamic event names, dispatcher values that escape the component, and projects without a declared Svelte dependency are abstained to avoid false positives.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
81
93
|
## Filter Flags Are Additive
|
|
82
94
|
|
|
83
95
|
Issue type filter flags (`--unused-exports`, `--unused-files`, etc.) are inclusive. They select which issue types to show. Using multiple flags shows the union.
|
|
@@ -323,6 +335,10 @@ Conservative semantics: a method carrying any decorator NOT in the list still ge
|
|
|
323
335
|
|
|
324
336
|
The default empty list preserves today's skip-all behavior, so existing NestJS / Angular / TypeORM projects see no change.
|
|
325
337
|
|
|
338
|
+
### Angular `@Input()` / `@Output()` are still covered by the component rules
|
|
339
|
+
|
|
340
|
+
The skip above applies only to generic `unused-class-member` detection. The dedicated Angular component rules (`unused-component-input` for `@Input()` / signal `input()` / `model()`, and `unused-component-output` for `@Output()` / signal `output()`, both default `warn`, gated on `@angular/core`) scope usage to the component itself: an input is dead when it is read by no code in its own class body or template (inline `template` or external `templateUrl`), and an output is dead when it is emitted (`.emit()`) nowhere in its own component. The scope is the component, not the project: an input that a parent binds via `[input]="..."` but the component itself never reads IS flagged, because the parent binding is satisfied while the value goes unused inside the component. These rules abstain on the whole component for any `extends` clause, a `{...this}` spread, JS-reserved-word names, accessor (`get` / `set`) inputs, and observable-stream `@Output`s (only `new EventEmitter()` initializers are harvested); `model()` is treated as input-only. Suppress an individual finding with `// fallow-ignore-next-line unused-component-input` or `-output`.
|
|
341
|
+
|
|
326
342
|
---
|
|
327
343
|
|
|
328
344
|
## JSDoc Visibility Tags Keep Exports Alive
|
|
@@ -172,7 +172,7 @@ export type IssueAction = (FixAction | SuppressLineAction | SuppressFileAction |
|
|
|
172
172
|
* Discriminant string for [`FixAction`]. Kebab-case per the JSON output
|
|
173
173
|
* contract.
|
|
174
174
|
*/
|
|
175
|
-
export type FixActionType = ("remove-export" | "delete-file" | "remove-dependency" | "move-dependency" | "remove-enum-member" | "remove-class-member" | "resolve-import" | "install-dependency" | "remove-duplicate" | "move-to-dev" | "refactor-cycle" | "refactor-re-export-cycle" | "refactor-boundary" | "export-type" | "remove-catalog-entry" | "remove-empty-catalog-group" | "update-catalog-reference" | "add-catalog-entry" | "remove-catalog-reference" | "remove-dependency-override" | "fix-dependency-override" | "resolve-policy-violation" | "move-to-server-module" | "split-mixed-barrel" | "hoist-directive" | "resolve-route-collision" | "resolve-dynamic-segment-name-conflict")
|
|
175
|
+
export type FixActionType = ("remove-export" | "delete-file" | "remove-dependency" | "move-dependency" | "remove-enum-member" | "remove-class-member" | "resolve-import" | "install-dependency" | "remove-duplicate" | "move-to-dev" | "refactor-cycle" | "refactor-re-export-cycle" | "refactor-boundary" | "export-type" | "remove-catalog-entry" | "remove-empty-catalog-group" | "update-catalog-reference" | "add-catalog-entry" | "remove-catalog-reference" | "remove-dependency-override" | "fix-dependency-override" | "resolve-policy-violation" | "move-to-server-module" | "split-mixed-barrel" | "hoist-directive" | "wire-server-action" | "provide-inject" | "use-load-data" | "render-component" | "use-component-prop" | "emit-component-event" | "wire-svelte-event" | "resolve-route-collision" | "resolve-dynamic-segment-name-conflict")
|
|
176
176
|
/**
|
|
177
177
|
* Singleton discriminant for [`SuppressLineAction`].
|
|
178
178
|
*/
|
|
@@ -1134,6 +1134,28 @@ unused_component_props?: UnusedComponentPropFinding[]
|
|
|
1134
1134
|
* `warn`.
|
|
1135
1135
|
*/
|
|
1136
1136
|
unused_component_emits?: UnusedComponentEmitFinding[]
|
|
1137
|
+
/**
|
|
1138
|
+
* Angular `@Input()` / signal `input()` / `model()` inputs read nowhere in
|
|
1139
|
+
* their own component (neither the template nor the class body). Wrapped in
|
|
1140
|
+
* [`UnusedComponentInputFinding`] so each entry carries a typed `actions`
|
|
1141
|
+
* array natively. Default severity is `warn`.
|
|
1142
|
+
*/
|
|
1143
|
+
unused_component_inputs?: UnusedComponentInputFinding[]
|
|
1144
|
+
/**
|
|
1145
|
+
* Angular `@Output()` / signal `output()` outputs emitted nowhere in their
|
|
1146
|
+
* own component (no `this.<output>.emit(...)`). Wrapped in
|
|
1147
|
+
* [`UnusedComponentOutputFinding`] so each entry carries a typed `actions`
|
|
1148
|
+
* array natively. Default severity is `warn`.
|
|
1149
|
+
*/
|
|
1150
|
+
unused_component_outputs?: UnusedComponentOutputFinding[]
|
|
1151
|
+
/**
|
|
1152
|
+
* Svelte components dispatching a custom event via `createEventDispatcher()`
|
|
1153
|
+
* whose event name is listened to nowhere project-wide (cross-file
|
|
1154
|
+
* dead-output direction). Wrapped in [`UnusedSvelteEventFinding`] so each
|
|
1155
|
+
* entry carries a typed `actions` array natively. Default severity is
|
|
1156
|
+
* `warn`.
|
|
1157
|
+
*/
|
|
1158
|
+
unused_svelte_events?: UnusedSvelteEventFinding[]
|
|
1137
1159
|
/**
|
|
1138
1160
|
* Next.js Server Actions (exports of `"use server"` files) that no code in
|
|
1139
1161
|
* the project references. Reclassified out of `unused_exports` for
|
|
@@ -1277,6 +1299,19 @@ unused_component_props?: number
|
|
|
1277
1299
|
* Vue `<script setup>` emits emitted nowhere inside their own SFC.
|
|
1278
1300
|
*/
|
|
1279
1301
|
unused_component_emits?: number
|
|
1302
|
+
/**
|
|
1303
|
+
* Angular `@Input()` bindings referenced nowhere inside their own component.
|
|
1304
|
+
*/
|
|
1305
|
+
unused_component_inputs?: number
|
|
1306
|
+
/**
|
|
1307
|
+
* Angular `@Output()` bindings emitted nowhere inside their own component.
|
|
1308
|
+
*/
|
|
1309
|
+
unused_component_outputs?: number
|
|
1310
|
+
/**
|
|
1311
|
+
* Svelte components dispatching a custom event via `createEventDispatcher`
|
|
1312
|
+
* whose name is listened to nowhere in the project.
|
|
1313
|
+
*/
|
|
1314
|
+
unused_svelte_events?: number
|
|
1280
1315
|
/**
|
|
1281
1316
|
* Next.js Server Actions (exports of `"use server"` files) referenced by no
|
|
1282
1317
|
* code in the project.
|
|
@@ -2745,7 +2780,8 @@ introduced?: (AuditIntroduced | null)
|
|
|
2745
2780
|
/**
|
|
2746
2781
|
* Wire-shape envelope for an [`UnprovidedInject`] finding. There is no safe
|
|
2747
2782
|
* auto-fix: the fix is binary but judgement-bearing (add a `provide` for the
|
|
2748
|
-
* key, or delete the dead inject).
|
|
2783
|
+
* key, or delete the dead inject). Actions are manual remediation guidance
|
|
2784
|
+
* plus a line-level suppress.
|
|
2749
2785
|
*/
|
|
2750
2786
|
export interface UnprovidedInjectFinding {
|
|
2751
2787
|
/**
|
|
@@ -2782,8 +2818,8 @@ introduced?: (AuditIntroduced | null)
|
|
|
2782
2818
|
/**
|
|
2783
2819
|
* Wire-shape envelope for an [`UnrenderedComponent`] finding. There is no safe
|
|
2784
2820
|
* auto-fix: the fix is binary but judgement-bearing (render the component
|
|
2785
|
-
* somewhere, or delete the dead component).
|
|
2786
|
-
* suppress.
|
|
2821
|
+
* somewhere, or delete the dead component). Actions are manual remediation
|
|
2822
|
+
* guidance plus a line-level suppress.
|
|
2787
2823
|
*/
|
|
2788
2824
|
export interface UnrenderedComponentFinding {
|
|
2789
2825
|
/**
|
|
@@ -2915,8 +2951,8 @@ introduced?: (AuditIntroduced | null)
|
|
|
2915
2951
|
/**
|
|
2916
2952
|
* Wire-shape envelope for an [`UnusedComponentProp`] finding. There is no safe
|
|
2917
2953
|
* auto-fix: removing a declared prop is judgement-bearing (the prop may be part
|
|
2918
|
-
* of a deliberately-stable public component API).
|
|
2919
|
-
* line-level suppress at the prop declaration.
|
|
2954
|
+
* of a deliberately-stable public component API). Actions are manual
|
|
2955
|
+
* remediation guidance plus a line-level suppress at the prop declaration.
|
|
2920
2956
|
*/
|
|
2921
2957
|
export interface UnusedComponentPropFinding {
|
|
2922
2958
|
/**
|
|
@@ -2953,8 +2989,8 @@ introduced?: (AuditIntroduced | null)
|
|
|
2953
2989
|
/**
|
|
2954
2990
|
* Wire-shape envelope for an [`UnusedComponentEmit`] finding. There is no safe
|
|
2955
2991
|
* auto-fix: removing a declared emit is judgement-bearing (the event may be
|
|
2956
|
-
* part of a deliberately-stable public component API).
|
|
2957
|
-
* line-level suppress at the emit declaration.
|
|
2992
|
+
* part of a deliberately-stable public component API). Actions are manual
|
|
2993
|
+
* remediation guidance plus a line-level suppress at the emit declaration.
|
|
2958
2994
|
*/
|
|
2959
2995
|
export interface UnusedComponentEmitFinding {
|
|
2960
2996
|
/**
|
|
@@ -2988,10 +3024,126 @@ actions: IssueAction[]
|
|
|
2988
3024
|
*/
|
|
2989
3025
|
introduced?: (AuditIntroduced | null)
|
|
2990
3026
|
}
|
|
3027
|
+
/**
|
|
3028
|
+
* Wire-shape envelope for an [`UnusedComponentInput`] finding. There is no safe
|
|
3029
|
+
* auto-fix: removing a declared input is judgement-bearing (the input may be
|
|
3030
|
+
* part of a deliberately-stable public component API). The only action is a
|
|
3031
|
+
* line-level suppress at the input declaration.
|
|
3032
|
+
*/
|
|
3033
|
+
export interface UnusedComponentInputFinding {
|
|
3034
|
+
/**
|
|
3035
|
+
* The Angular component/directive `.ts` file declaring the unused input.
|
|
3036
|
+
*/
|
|
3037
|
+
path: string
|
|
3038
|
+
/**
|
|
3039
|
+
* The component name (the `.ts` file stem).
|
|
3040
|
+
*/
|
|
3041
|
+
component_name: string
|
|
3042
|
+
/**
|
|
3043
|
+
* The declared input name that is never read.
|
|
3044
|
+
*/
|
|
3045
|
+
input_name: string
|
|
3046
|
+
/**
|
|
3047
|
+
* 1-based line number of the input declaration.
|
|
3048
|
+
*/
|
|
3049
|
+
line: number
|
|
3050
|
+
/**
|
|
3051
|
+
* 0-based byte column offset of the input declaration.
|
|
3052
|
+
*/
|
|
3053
|
+
col: number
|
|
3054
|
+
/**
|
|
3055
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
3056
|
+
* forward-compat).
|
|
3057
|
+
*/
|
|
3058
|
+
actions: IssueAction[]
|
|
3059
|
+
/**
|
|
3060
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
3061
|
+
* the merge-base.
|
|
3062
|
+
*/
|
|
3063
|
+
introduced?: (AuditIntroduced | null)
|
|
3064
|
+
}
|
|
3065
|
+
/**
|
|
3066
|
+
* Wire-shape envelope for an [`UnusedComponentOutput`] finding. There is no safe
|
|
3067
|
+
* auto-fix: removing a declared output is judgement-bearing (the event may be
|
|
3068
|
+
* part of a deliberately-stable public component API). The only action is a
|
|
3069
|
+
* line-level suppress at the output declaration.
|
|
3070
|
+
*/
|
|
3071
|
+
export interface UnusedComponentOutputFinding {
|
|
3072
|
+
/**
|
|
3073
|
+
* The Angular component/directive `.ts` file declaring the unused output.
|
|
3074
|
+
*/
|
|
3075
|
+
path: string
|
|
3076
|
+
/**
|
|
3077
|
+
* The component name (the `.ts` file stem).
|
|
3078
|
+
*/
|
|
3079
|
+
component_name: string
|
|
3080
|
+
/**
|
|
3081
|
+
* The declared output name that is never emitted.
|
|
3082
|
+
*/
|
|
3083
|
+
output_name: string
|
|
3084
|
+
/**
|
|
3085
|
+
* 1-based line number of the output declaration.
|
|
3086
|
+
*/
|
|
3087
|
+
line: number
|
|
3088
|
+
/**
|
|
3089
|
+
* 0-based byte column offset of the output declaration.
|
|
3090
|
+
*/
|
|
3091
|
+
col: number
|
|
3092
|
+
/**
|
|
3093
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
3094
|
+
* forward-compat).
|
|
3095
|
+
*/
|
|
3096
|
+
actions: IssueAction[]
|
|
3097
|
+
/**
|
|
3098
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
3099
|
+
* the merge-base.
|
|
3100
|
+
*/
|
|
3101
|
+
introduced?: (AuditIntroduced | null)
|
|
3102
|
+
}
|
|
3103
|
+
/**
|
|
3104
|
+
* Wire-shape envelope for an [`UnusedSvelteEvent`] finding. There is no safe
|
|
3105
|
+
* auto-fix: removing a dispatched event is judgement-bearing (the event may be
|
|
3106
|
+
* part of a deliberately-stable public component API, or a listener may be
|
|
3107
|
+
* added later). Actions are manual remediation guidance plus a line-level
|
|
3108
|
+
* suppress at the `dispatch` call.
|
|
3109
|
+
*/
|
|
3110
|
+
export interface UnusedSvelteEventFinding {
|
|
3111
|
+
/**
|
|
3112
|
+
* The `.svelte` component dispatching the unlistened event.
|
|
3113
|
+
*/
|
|
3114
|
+
path: string
|
|
3115
|
+
/**
|
|
3116
|
+
* The component name (the `.svelte` file stem).
|
|
3117
|
+
*/
|
|
3118
|
+
component_name: string
|
|
3119
|
+
/**
|
|
3120
|
+
* The dispatched event name that is listened to nowhere.
|
|
3121
|
+
*/
|
|
3122
|
+
event_name: string
|
|
3123
|
+
/**
|
|
3124
|
+
* 1-based line number of the `dispatch('<name>')` call.
|
|
3125
|
+
*/
|
|
3126
|
+
line: number
|
|
3127
|
+
/**
|
|
3128
|
+
* 0-based byte column offset of the `dispatch('<name>')` call.
|
|
3129
|
+
*/
|
|
3130
|
+
col: number
|
|
3131
|
+
/**
|
|
3132
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
3133
|
+
* forward-compat).
|
|
3134
|
+
*/
|
|
3135
|
+
actions: IssueAction[]
|
|
3136
|
+
/**
|
|
3137
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
3138
|
+
* the merge-base.
|
|
3139
|
+
*/
|
|
3140
|
+
introduced?: (AuditIntroduced | null)
|
|
3141
|
+
}
|
|
2991
3142
|
/**
|
|
2992
3143
|
* Wire-shape envelope for an [`UnusedServerAction`] finding. There is no safe
|
|
2993
3144
|
* auto-fix: the fix is binary but judgement-bearing (wire the action up to a
|
|
2994
|
-
* consumer, or delete it).
|
|
3145
|
+
* consumer, or delete it). Actions are manual remediation guidance plus a
|
|
3146
|
+
* line-level suppress.
|
|
2995
3147
|
*/
|
|
2996
3148
|
export interface UnusedServerActionFinding {
|
|
2997
3149
|
/**
|
|
@@ -3024,7 +3176,8 @@ introduced?: (AuditIntroduced | null)
|
|
|
3024
3176
|
/**
|
|
3025
3177
|
* Wire-shape envelope for an [`UnusedLoadDataKey`] finding. There is no safe
|
|
3026
3178
|
* auto-fix: a `load()` fetch can have side effects, so deleting the key is a
|
|
3027
|
-
* human call.
|
|
3179
|
+
* human call. Actions are manual remediation guidance plus a line-level
|
|
3180
|
+
* suppress.
|
|
3028
3181
|
*/
|
|
3029
3182
|
export interface UnusedLoadDataKeyFinding {
|
|
3030
3183
|
/**
|
|
@@ -7066,6 +7219,28 @@ unused_component_props?: UnusedComponentPropFinding[]
|
|
|
7066
7219
|
* `warn`.
|
|
7067
7220
|
*/
|
|
7068
7221
|
unused_component_emits?: UnusedComponentEmitFinding[]
|
|
7222
|
+
/**
|
|
7223
|
+
* Angular `@Input()` / signal `input()` / `model()` inputs read nowhere in
|
|
7224
|
+
* their own component (neither the template nor the class body). Wrapped in
|
|
7225
|
+
* [`UnusedComponentInputFinding`] so each entry carries a typed `actions`
|
|
7226
|
+
* array natively. Default severity is `warn`.
|
|
7227
|
+
*/
|
|
7228
|
+
unused_component_inputs?: UnusedComponentInputFinding[]
|
|
7229
|
+
/**
|
|
7230
|
+
* Angular `@Output()` / signal `output()` outputs emitted nowhere in their
|
|
7231
|
+
* own component (no `this.<output>.emit(...)`). Wrapped in
|
|
7232
|
+
* [`UnusedComponentOutputFinding`] so each entry carries a typed `actions`
|
|
7233
|
+
* array natively. Default severity is `warn`.
|
|
7234
|
+
*/
|
|
7235
|
+
unused_component_outputs?: UnusedComponentOutputFinding[]
|
|
7236
|
+
/**
|
|
7237
|
+
* Svelte components dispatching a custom event via `createEventDispatcher()`
|
|
7238
|
+
* whose event name is listened to nowhere project-wide (cross-file
|
|
7239
|
+
* dead-output direction). Wrapped in [`UnusedSvelteEventFinding`] so each
|
|
7240
|
+
* entry carries a typed `actions` array natively. Default severity is
|
|
7241
|
+
* `warn`.
|
|
7242
|
+
*/
|
|
7243
|
+
unused_svelte_events?: UnusedSvelteEventFinding[]
|
|
7069
7244
|
/**
|
|
7070
7245
|
* Next.js Server Actions (exports of `"use server"` files) that no code in
|
|
7071
7246
|
* the project references. Reclassified out of `unused_exports` for
|