fallow 3.30.0 → 3.32.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 +18 -13
- package/capabilities.json +402 -177
- package/issue-registry.json +241 -166
- package/package.json +14 -13
- package/schema.json +89 -6
- package/skills/fallow/SKILL.md +30 -9
- package/skills/fallow/references/cli-reference.md +103 -44
- package/skills/fallow/references/gotchas.md +45 -13
- package/skills/fallow/references/issue-types.md +4 -2
- package/skills/fallow/references/mcp.md +48 -6
- package/skills/fallow/references/node-bindings.md +9 -3
- package/skills/fallow/references/patterns.md +37 -12
- package/skills/fallow-setup/SKILL.md +50 -0
- package/skills/fallow-setup/agents/openai.yaml +4 -0
- package/skills/fallow-setup/references/ci-gate.md +61 -0
- package/skills/fallow-setup/references/configure-and-install.md +56 -0
- package/skills/fallow-setup/references/tooling-detection.md +44 -0
- package/types/output-contract.d.ts +1044 -35
|
@@ -112,7 +112,7 @@ kind: "similar-code-review"
|
|
|
112
112
|
/**
|
|
113
113
|
* Schema projection for the audit envelope's exact version.
|
|
114
114
|
*/
|
|
115
|
-
export type AuditSchemaVersion =
|
|
115
|
+
export type AuditSchemaVersion = 12
|
|
116
116
|
/**
|
|
117
117
|
* Fallow CLI version that produced this envelope. Renders to the JSON wire as
|
|
118
118
|
* a bare string (e.g. `"2.74.0"`).
|
|
@@ -204,7 +204,7 @@ export type TypeAwareAbstentionReason = ("no-project" | "ambiguous-project" | "b
|
|
|
204
204
|
/**
|
|
205
205
|
* Schema projection for the dead-code envelope's exact version.
|
|
206
206
|
*/
|
|
207
|
-
export type CheckSchemaVersion =
|
|
207
|
+
export type CheckSchemaVersion = 10
|
|
208
208
|
/**
|
|
209
209
|
* A suggested action attached to a finding in the JSON output. Each finding
|
|
210
210
|
* carries an `actions` array; consumers (agents, IDE clients, CI bots) can
|
|
@@ -261,7 +261,7 @@ export type IssueAction = (FixAction | SuppressLineAction | SuppressFileAction |
|
|
|
261
261
|
* Discriminant string for [`FixAction`]. Kebab-case per the JSON output
|
|
262
262
|
* contract.
|
|
263
263
|
*/
|
|
264
|
-
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" | "move-to-prod" | "refactor-cycle" | "refactor-re-export-cycle" | "refactor-boundary" | "export-type" | "migrate-deprecated-export" | "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" | "add-suppression-reason" | "remove-stale-suppression")
|
|
264
|
+
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" | "move-to-prod" | "refactor-cycle" | "refactor-re-export-cycle" | "refactor-boundary" | "export-type" | "migrate-deprecated-export" | "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" | "review-component-prop" | "emit-component-event" | "wire-svelte-event" | "resolve-route-collision" | "resolve-dynamic-segment-name-conflict" | "add-suppression-reason" | "remove-stale-suppression")
|
|
265
265
|
/**
|
|
266
266
|
* Singleton discriminant for [`SuppressLineAction`].
|
|
267
267
|
*/
|
|
@@ -315,7 +315,7 @@ export type AuditIntroduced = boolean
|
|
|
315
315
|
* commands differ: the `fallow audit` `new-only` gate fails only on introduced
|
|
316
316
|
* findings, so an inherited `error` finding does not fail the audit, and the
|
|
317
317
|
* combined command (`fallow` without a subcommand) exits 0 for machine
|
|
318
|
-
* formats.
|
|
318
|
+
* formats unless `--fail-on-issues` or `--ci` is set.
|
|
319
319
|
*
|
|
320
320
|
* Complexity findings carry the same type. The `complexity-cyclomatic`,
|
|
321
321
|
* `complexity-cognitive` and `complexity-crap` rules set it, and the
|
|
@@ -380,7 +380,7 @@ export type ReExportCycleKind = ("multi-node" | "self-loop")
|
|
|
380
380
|
/**
|
|
381
381
|
* Which rule-pack rule kind produced a [`PolicyViolation`].
|
|
382
382
|
*/
|
|
383
|
-
export type PolicyRuleKind = ("banned-call" | "banned-import" | "banned-effect" | "banned-export")
|
|
383
|
+
export type PolicyRuleKind = ("banned-call" | "banned-import" | "banned-effect" | "banned-export" | "gdp-proof-producer")
|
|
384
384
|
/**
|
|
385
385
|
* Effective severity of a single [`PolicyViolation`]. Per-rule `severity`
|
|
386
386
|
* overrides the `rules."policy-violation"` master; `off` rules emit nothing,
|
|
@@ -460,7 +460,15 @@ export type BaselineStalenessAdvisory = ("none" | "zero-overlap" | "partial")
|
|
|
460
460
|
* `--workspace` and `--changed-workspaces` for the same reason. A consumer
|
|
461
461
|
* must therefore not assume a given command emits a given name.
|
|
462
462
|
*/
|
|
463
|
-
export type ScopeReason = ("diff" | "changed-since" | "changed-files" | "workspace" | "changed-workspaces" | "scope" | "file" | "issue-type-filter" | "production")
|
|
463
|
+
export type ScopeReason = ("diff" | "changed-since" | "package-baselines" | "changed-files" | "workspace" | "changed-workspaces" | "scope" | "file" | "issue-type-filter" | "production" | "include-entry-exports")
|
|
464
|
+
/**
|
|
465
|
+
* One reason why a missing id does not prove that the finding is gone.
|
|
466
|
+
*
|
|
467
|
+
* Serialized as kebab-case inside `inconclusive_reasons`. The set is OPEN: a
|
|
468
|
+
* name this build does not emit means "some reason", not an error, and the
|
|
469
|
+
* query stays inconclusive.
|
|
470
|
+
*/
|
|
471
|
+
export type FindingIdQueryReason = ("diff" | "changed-since" | "package-baselines" | "changed-files" | "workspace" | "changed-workspaces" | "scope" | "file" | "issue-type-filter" | "production" | "include-entry-exports" | "baseline" | "rule-off" | "filtered")
|
|
464
472
|
/**
|
|
465
473
|
* Status of a regression-check pass.
|
|
466
474
|
*/
|
|
@@ -554,7 +562,7 @@ kind: "malformed-tsconfig"
|
|
|
554
562
|
kind: "tsconfig-reference-dir-missing"
|
|
555
563
|
} | {
|
|
556
564
|
/**
|
|
557
|
-
*
|
|
565
|
+
* YAML parse error text.
|
|
558
566
|
*/
|
|
559
567
|
error: string
|
|
560
568
|
kind: "malformed-pnpm-workspace-yaml"
|
|
@@ -594,8 +602,15 @@ kind: "bun-lockb-override-resolution-skipped"
|
|
|
594
602
|
} | {
|
|
595
603
|
kind: "bun-lock-override-resolution-skipped"
|
|
596
604
|
} | {
|
|
605
|
+
kind: "pnpm-lock-override-resolution-skipped"
|
|
606
|
+
} | {
|
|
607
|
+
kind: "npm-lock-override-resolution-skipped"
|
|
608
|
+
} | {
|
|
597
609
|
kind: "bun-resolutions-shadowed-by-overrides"
|
|
598
610
|
} | {
|
|
611
|
+
cause: PnpmWorkspaceOverridesIgnoredCause
|
|
612
|
+
kind: "pnpm-workspace-overrides-ignored"
|
|
613
|
+
} | {
|
|
599
614
|
kind: "node-modules-missing"
|
|
600
615
|
} | {
|
|
601
616
|
kind: "boundaries-not-configured"
|
|
@@ -682,6 +697,13 @@ kind: "ownership-unavailable"
|
|
|
682
697
|
error: string
|
|
683
698
|
kind: "trend-snapshot-unreadable"
|
|
684
699
|
} | {
|
|
700
|
+
/**
|
|
701
|
+
* Why the groups have no baseline, as a kebab-case token:
|
|
702
|
+
* `snapshot-has-no-groups` or `grouped-by-mismatch`. The set is open.
|
|
703
|
+
*/
|
|
704
|
+
cause: string
|
|
705
|
+
kind: "trend-group-baseline-unavailable"
|
|
706
|
+
} | {
|
|
685
707
|
/**
|
|
686
708
|
* The plugin that read the config, as it labels itself:
|
|
687
709
|
* `module-federation` for a standalone `module-federation.config.*`,
|
|
@@ -740,7 +762,24 @@ kind: "flag-age-shallow-clone"
|
|
|
740
762
|
*/
|
|
741
763
|
cause: string
|
|
742
764
|
kind: "flag-age-unavailable"
|
|
765
|
+
} | {
|
|
766
|
+
/**
|
|
767
|
+
* The `ignoreDependencies` entry, as written in the config.
|
|
768
|
+
*/
|
|
769
|
+
pattern: string
|
|
770
|
+
kind: "ignore-dependencies-glob-unmatched"
|
|
771
|
+
} | {
|
|
772
|
+
/**
|
|
773
|
+
* The `ignoreFindings` entry, as written in the config.
|
|
774
|
+
*/
|
|
775
|
+
pattern: string
|
|
776
|
+
kind: "ignore-findings-pattern-unmatched"
|
|
743
777
|
})
|
|
778
|
+
/**
|
|
779
|
+
* Why the declared pnpm version ignores the `overrides` section of
|
|
780
|
+
* `pnpm-workspace.yaml`.
|
|
781
|
+
*/
|
|
782
|
+
export type PnpmWorkspaceOverridesIgnoredCause = ("package-json-overrides" | "pnpm-version")
|
|
744
783
|
/**
|
|
745
784
|
* Discriminant for [`CloneGroupAction::kind`]. Mirrors the action types
|
|
746
785
|
* emitted by the legacy `build_clone_group_actions` walker.
|
|
@@ -819,6 +858,15 @@ export type CoverageInputFormat = ("istanbul" | "v8")
|
|
|
819
858
|
* Whether CRAP findings in the report used one coverage-source kind or a mix.
|
|
820
859
|
*/
|
|
821
860
|
export type CoverageSourceConsistency = ("uniform" | "mixed")
|
|
861
|
+
/**
|
|
862
|
+
* One health section that a run produced.
|
|
863
|
+
*
|
|
864
|
+
* A section is in [`HealthReport::sections`] when the run computed it and
|
|
865
|
+
* the report carries its result, also when that result is empty. The value
|
|
866
|
+
* set is OPEN: a later release can add a section, so a consumer must accept
|
|
867
|
+
* a token that it does not know.
|
|
868
|
+
*/
|
|
869
|
+
export type HealthSection = ("complexity" | "vital-signs" | "score" | "file-scores" | "coverage-gaps" | "hotspots" | "targets" | "trend" | "runtime-coverage" | "css")
|
|
822
870
|
/**
|
|
823
871
|
* Lifecycle state for a configured threshold override.
|
|
824
872
|
*/
|
|
@@ -1182,6 +1230,12 @@ export type HealthSchemaVersion = 11
|
|
|
1182
1230
|
* groups by GitLab CODEOWNERS `[Section]` header name.
|
|
1183
1231
|
*/
|
|
1184
1232
|
export type GroupByMode = ("owner" | "directory" | "package" | "section")
|
|
1233
|
+
/**
|
|
1234
|
+
* What the group trend compared, for one group.
|
|
1235
|
+
*
|
|
1236
|
+
* The value set is open: read an unknown value as "no trend for this group".
|
|
1237
|
+
*/
|
|
1238
|
+
export type GroupTrendStatus = ("compared" | "new_group" | "no_group_baseline")
|
|
1185
1239
|
/**
|
|
1186
1240
|
* Schema projection for the duplication envelope's CLI and programmatic
|
|
1187
1241
|
* version lineages.
|
|
@@ -1298,7 +1352,7 @@ export type SecurityBlindSpotsSchemaVersion = "1"
|
|
|
1298
1352
|
/**
|
|
1299
1353
|
* Schema projection for the combined envelope's exact version.
|
|
1300
1354
|
*/
|
|
1301
|
-
export type CombinedSchemaVersion =
|
|
1355
|
+
export type CombinedSchemaVersion = 13
|
|
1302
1356
|
/**
|
|
1303
1357
|
* Schema projection for the feature-flags envelope's exact version.
|
|
1304
1358
|
*/
|
|
@@ -1343,7 +1397,7 @@ export type VendorFlagState = ("on" | "off" | "rolled_out" | "archived" | "exper
|
|
|
1343
1397
|
* Independently-versioned wire-version newtype for the brief envelope.
|
|
1344
1398
|
* Serializes as the integer `REVIEW_BRIEF_SCHEMA_VERSION`.
|
|
1345
1399
|
*/
|
|
1346
|
-
export type ReviewBriefSchemaVersion =
|
|
1400
|
+
export type ReviewBriefSchemaVersion = 12
|
|
1347
1401
|
/**
|
|
1348
1402
|
* The exactly-three shippable decision categories (the SOLID-3). No cut category
|
|
1349
1403
|
* (abstraction / deletion / convention / irreversibility) is representable: this
|
|
@@ -1667,7 +1721,8 @@ duplication_demoted: number
|
|
|
1667
1721
|
* gate and leaves the object absent.
|
|
1668
1722
|
*
|
|
1669
1723
|
* The names this build can emit are `error-severity-findings`, `regression`,
|
|
1670
|
-
* `stale-baseline`, `
|
|
1724
|
+
* `stale-baseline`, `baseline-growth`, `duplication-threshold`,
|
|
1725
|
+
* `duplication-findings`, `health-min-score`,
|
|
1671
1726
|
* `health-min-severity`, `health-findings`, `health-coverage-gaps`,
|
|
1672
1727
|
* `health-runtime-coverage`, `security`, `security-advisory`, `audit-verdict`,
|
|
1673
1728
|
* `type-aware-require` and `parse-error`. The set is OPEN: a name a consumer does not
|
|
@@ -1699,13 +1754,15 @@ status: GateStatus
|
|
|
1699
1754
|
* True when a `fail` from this gate makes the run exit non-zero. False
|
|
1700
1755
|
* when the verdict is published for information only: the gate was never
|
|
1701
1756
|
* armed, the run was told never to fail, or the combined machine formats
|
|
1702
|
-
* exit 0 for the gate.
|
|
1757
|
+
* exit 0 for the gate (bare `fallow` without `--fail-on-issues`).
|
|
1703
1758
|
*/
|
|
1704
1759
|
enforced: boolean
|
|
1705
1760
|
/**
|
|
1706
1761
|
* The measured value the gate compared, when there is one: the duplication
|
|
1707
1762
|
* percentage, the health score, the number of findings at or above the
|
|
1708
|
-
* severity floor,
|
|
1763
|
+
* severity floor, the number of `error` findings of `health-findings` and
|
|
1764
|
+
* of `error-severity-findings`, or
|
|
1765
|
+
* the number of files in `files`. Whole numbers are
|
|
1709
1766
|
* carried as JSON numbers, so a count of three reads as `3.0`. Absent for
|
|
1710
1767
|
* gates that compare no number.
|
|
1711
1768
|
*/
|
|
@@ -1718,7 +1775,9 @@ threshold?: (number | null)
|
|
|
1718
1775
|
/**
|
|
1719
1776
|
* How the limit was spelled, for a gate whose `threshold` number does not
|
|
1720
1777
|
* carry its own unit. `health-min-severity` sets it to the severity floor
|
|
1721
|
-
* (`moderate`, `high` or `critical`); `
|
|
1778
|
+
* (`moderate`, `high` or `critical`); `health-findings` and
|
|
1779
|
+
* `error-severity-findings` set it to `error`, the rule severity they
|
|
1780
|
+
* count; `regression` sets it to the
|
|
1722
1781
|
* tolerance as the user wrote it (`"50%"` or `"5"`), because `threshold`
|
|
1723
1782
|
* there is the allowance in issues and the percentage would otherwise be
|
|
1724
1783
|
* unrecoverable on the grouped envelope, which carries no `regression`
|
|
@@ -2818,6 +2877,12 @@ circular_dependencies: CircularDependencyFinding[]
|
|
|
2818
2877
|
* suppression breaks the cycle).
|
|
2819
2878
|
*/
|
|
2820
2879
|
re_export_cycles?: ReExportCycleFinding[]
|
|
2880
|
+
/**
|
|
2881
|
+
* Dependency cycles between workspace packages, built from resolved
|
|
2882
|
+
* cross-package imports. Wrapped in [`PackageCycleFinding`] so each
|
|
2883
|
+
* entry carries a typed `actions` array natively.
|
|
2884
|
+
*/
|
|
2885
|
+
package_cycles?: PackageCycleFinding[]
|
|
2821
2886
|
/**
|
|
2822
2887
|
* Imports that cross architecture boundary rules. Wrapped in
|
|
2823
2888
|
* [`BoundaryViolationFinding`] so each entry carries a typed `actions`
|
|
@@ -2950,6 +3015,10 @@ dynamic_segment_name_conflicts?: DynamicSegmentNameConflictFinding[]
|
|
|
2950
3015
|
* array natively. Default severity is `warn`.
|
|
2951
3016
|
*/
|
|
2952
3017
|
unused_component_props?: UnusedComponentPropFinding[]
|
|
3018
|
+
/**
|
|
3019
|
+
* Used optional component inputs absent from inspected reachable callers. Off by default.
|
|
3020
|
+
*/
|
|
3021
|
+
absent_component_props?: AbsentComponentPropFinding[]
|
|
2953
3022
|
/**
|
|
2954
3023
|
* Vue `<script setup>` `defineEmits` events emitted nowhere in their own SFC
|
|
2955
3024
|
* (no `emit('<name>')` call). Wrapped in [`UnusedComponentEmitFinding`] so
|
|
@@ -3046,6 +3115,14 @@ baseline?: (BaselineMatch | null)
|
|
|
3046
3115
|
* can report `matched_entries: 0` on a healthy baseline.
|
|
3047
3116
|
*/
|
|
3048
3117
|
baseline_staleness?: (BaselineStaleness | null)
|
|
3118
|
+
/**
|
|
3119
|
+
* The answer to `--finding-id`, present only when the run received one
|
|
3120
|
+
* or more `--finding-id` values. The report then holds only the
|
|
3121
|
+
* requested findings. Read `missing` as resolved only when `conclusive`
|
|
3122
|
+
* is true; a scope, a baseline or a filter can hide a finding that still
|
|
3123
|
+
* exists. See [`crate::FindingIdQuery`].
|
|
3124
|
+
*/
|
|
3125
|
+
finding_id_query?: (FindingIdQuery | null)
|
|
3049
3126
|
/**
|
|
3050
3127
|
* Regression verdict against the baseline, in `--fail-on-regression` runs.
|
|
3051
3128
|
*/
|
|
@@ -3070,6 +3147,11 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
3070
3147
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
3071
3148
|
*/
|
|
3072
3149
|
request_outcomes?: (RequestOutcomes | null)
|
|
3150
|
+
/**
|
|
3151
|
+
* Applied Git refs for exact workspace packages. Absent when no package
|
|
3152
|
+
* baselines were selected, including runs with a global changed-since ref.
|
|
3153
|
+
*/
|
|
3154
|
+
package_baselines?: PackageBaselineStatus[]
|
|
3073
3155
|
/**
|
|
3074
3156
|
* `_meta` block with docs and rule definitions, when `--explain` was
|
|
3075
3157
|
* passed.
|
|
@@ -3090,7 +3172,10 @@ _meta?: (Meta | null)
|
|
|
3090
3172
|
* detectors: `malformed-pnpm-workspace-yaml`,
|
|
3091
3173
|
* `bun-lockb-override-resolution-skipped`;
|
|
3092
3174
|
* - framework plugins, while they read their own build configs:
|
|
3093
|
-
* `plugin-config-unreadable`, `plugin-effect-not-modeled
|
|
3175
|
+
* `plugin-config-unreadable`, `plugin-effect-not-modeled`;
|
|
3176
|
+
* - the dead-code result, for config patterns that matched nothing:
|
|
3177
|
+
* `ignore-dependencies-glob-unmatched`,
|
|
3178
|
+
* `ignore-findings-pattern-unmatched`.
|
|
3094
3179
|
*
|
|
3095
3180
|
* Analysis-stage and plugin-stage kinds therefore reach only the envelopes
|
|
3096
3181
|
* whose run includes a dead-code analyze pass, never a standalone
|
|
@@ -3210,6 +3295,10 @@ unrendered_components?: number
|
|
|
3210
3295
|
* Vue, Svelte, or React props referenced nowhere inside their own component.
|
|
3211
3296
|
*/
|
|
3212
3297
|
unused_component_props?: number
|
|
3298
|
+
/**
|
|
3299
|
+
* Optional consumed props omitted by known reachable callers, for manual review.
|
|
3300
|
+
*/
|
|
3301
|
+
absent_component_props?: number
|
|
3213
3302
|
/**
|
|
3214
3303
|
* Vue `<script setup>` emits emitted nowhere inside their own SFC.
|
|
3215
3304
|
*/
|
|
@@ -3272,6 +3361,10 @@ circular_dependencies: number
|
|
|
3272
3361
|
* re-exporting from each other in a loop).
|
|
3273
3362
|
*/
|
|
3274
3363
|
re_export_cycles?: number
|
|
3364
|
+
/**
|
|
3365
|
+
* Dependency cycles between workspace packages.
|
|
3366
|
+
*/
|
|
3367
|
+
package_cycles?: number
|
|
3275
3368
|
/**
|
|
3276
3369
|
* Imports that cross architecture boundary rules.
|
|
3277
3370
|
*/
|
|
@@ -3351,6 +3444,14 @@ export interface UnusedFileFinding {
|
|
|
3351
3444
|
* Absolute path to the unused file.
|
|
3352
3445
|
*/
|
|
3353
3446
|
path: string
|
|
3447
|
+
/**
|
|
3448
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3449
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3450
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3451
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3452
|
+
* new id. Absent in output from older versions.
|
|
3453
|
+
*/
|
|
3454
|
+
finding_id?: (string | null)
|
|
3354
3455
|
/**
|
|
3355
3456
|
* Suggested next steps: a `delete-file` primary and a `suppress-file`
|
|
3356
3457
|
* secondary. Always emitted (possibly empty for forward-compat).
|
|
@@ -3582,6 +3683,14 @@ deprecated?: boolean
|
|
|
3582
3683
|
* not deprecated or the tag carries no text.
|
|
3583
3684
|
*/
|
|
3584
3685
|
deprecated_reason?: (string | null)
|
|
3686
|
+
/**
|
|
3687
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3688
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3689
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3690
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3691
|
+
* new id. Absent in output from older versions.
|
|
3692
|
+
*/
|
|
3693
|
+
finding_id?: (string | null)
|
|
3585
3694
|
/**
|
|
3586
3695
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3587
3696
|
* forward-compat).
|
|
@@ -3657,6 +3766,14 @@ deprecated?: boolean
|
|
|
3657
3766
|
* not deprecated or the tag carries no text.
|
|
3658
3767
|
*/
|
|
3659
3768
|
deprecated_reason?: (string | null)
|
|
3769
|
+
/**
|
|
3770
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3771
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3772
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3773
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3774
|
+
* new id. Absent in output from older versions.
|
|
3775
|
+
*/
|
|
3776
|
+
finding_id?: (string | null)
|
|
3660
3777
|
/**
|
|
3661
3778
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3662
3779
|
* forward-compat).
|
|
@@ -3722,6 +3839,14 @@ span_start: number
|
|
|
3722
3839
|
* package-public leak across files or re-exports.
|
|
3723
3840
|
*/
|
|
3724
3841
|
semantic?: (SemanticPrivateTypeLeak | null)
|
|
3842
|
+
/**
|
|
3843
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3844
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3845
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3846
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3847
|
+
* new id. Absent in output from older versions.
|
|
3848
|
+
*/
|
|
3849
|
+
finding_id?: (string | null)
|
|
3725
3850
|
/**
|
|
3726
3851
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3727
3852
|
* forward-compat).
|
|
@@ -3794,6 +3919,14 @@ consumers: DeprecatedExportConsumer[]
|
|
|
3794
3919
|
* are not visible, so the finding makes no removal claim.
|
|
3795
3920
|
*/
|
|
3796
3921
|
public_api: boolean
|
|
3922
|
+
/**
|
|
3923
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3924
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3925
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3926
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3927
|
+
* new id. Absent in output from older versions.
|
|
3928
|
+
*/
|
|
3929
|
+
finding_id?: (string | null)
|
|
3797
3930
|
/**
|
|
3798
3931
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3799
3932
|
* forward-compat).
|
|
@@ -3856,6 +3989,20 @@ line: number
|
|
|
3856
3989
|
* Workspace roots that import this package even though the declaring workspace does not.
|
|
3857
3990
|
*/
|
|
3858
3991
|
used_in_workspaces?: string[]
|
|
3992
|
+
/**
|
|
3993
|
+
* Workspace roots whose package.json declares this package for the files
|
|
3994
|
+
* that import it. Only a root finding fills this field: these imports use
|
|
3995
|
+
* the nearer workspace declaration, so the root declaration stays unused.
|
|
3996
|
+
*/
|
|
3997
|
+
declared_and_imported_in?: string[]
|
|
3998
|
+
/**
|
|
3999
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4000
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4001
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4002
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4003
|
+
* new id. Absent in output from older versions.
|
|
4004
|
+
*/
|
|
4005
|
+
finding_id?: (string | null)
|
|
3859
4006
|
/**
|
|
3860
4007
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3861
4008
|
* forward-compat).
|
|
@@ -3909,6 +4056,20 @@ line: number
|
|
|
3909
4056
|
* Workspace roots that import this package even though the declaring workspace does not.
|
|
3910
4057
|
*/
|
|
3911
4058
|
used_in_workspaces?: string[]
|
|
4059
|
+
/**
|
|
4060
|
+
* Workspace roots whose package.json declares this package for the files
|
|
4061
|
+
* that import it. Only a root finding fills this field: these imports use
|
|
4062
|
+
* the nearer workspace declaration, so the root declaration stays unused.
|
|
4063
|
+
*/
|
|
4064
|
+
declared_and_imported_in?: string[]
|
|
4065
|
+
/**
|
|
4066
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4067
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4068
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4069
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4070
|
+
* new id. Absent in output from older versions.
|
|
4071
|
+
*/
|
|
4072
|
+
finding_id?: (string | null)
|
|
3912
4073
|
/**
|
|
3913
4074
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3914
4075
|
* forward-compat).
|
|
@@ -3962,6 +4123,20 @@ line: number
|
|
|
3962
4123
|
* Workspace roots that import this package even though the declaring workspace does not.
|
|
3963
4124
|
*/
|
|
3964
4125
|
used_in_workspaces?: string[]
|
|
4126
|
+
/**
|
|
4127
|
+
* Workspace roots whose package.json declares this package for the files
|
|
4128
|
+
* that import it. Only a root finding fills this field: these imports use
|
|
4129
|
+
* the nearer workspace declaration, so the root declaration stays unused.
|
|
4130
|
+
*/
|
|
4131
|
+
declared_and_imported_in?: string[]
|
|
4132
|
+
/**
|
|
4133
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4134
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4135
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4136
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4137
|
+
* new id. Absent in output from older versions.
|
|
4138
|
+
*/
|
|
4139
|
+
finding_id?: (string | null)
|
|
3965
4140
|
/**
|
|
3966
4141
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3967
4142
|
* forward-compat).
|
|
@@ -4015,6 +4190,14 @@ line: number
|
|
|
4015
4190
|
* 0-based byte column offset.
|
|
4016
4191
|
*/
|
|
4017
4192
|
col: number
|
|
4193
|
+
/**
|
|
4194
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4195
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4196
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4197
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4198
|
+
* new id. Absent in output from older versions.
|
|
4199
|
+
*/
|
|
4200
|
+
finding_id?: (string | null)
|
|
4018
4201
|
/**
|
|
4019
4202
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4020
4203
|
* forward-compat).
|
|
@@ -4070,6 +4253,14 @@ line: number
|
|
|
4070
4253
|
* 0-based byte column offset.
|
|
4071
4254
|
*/
|
|
4072
4255
|
col: number
|
|
4256
|
+
/**
|
|
4257
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4258
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4259
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4260
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4261
|
+
* new id. Absent in output from older versions.
|
|
4262
|
+
*/
|
|
4263
|
+
finding_id?: (string | null)
|
|
4073
4264
|
/**
|
|
4074
4265
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4075
4266
|
* forward-compat).
|
|
@@ -4134,6 +4325,14 @@ line: number
|
|
|
4134
4325
|
* 0-based byte column offset.
|
|
4135
4326
|
*/
|
|
4136
4327
|
col: number
|
|
4328
|
+
/**
|
|
4329
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4330
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4331
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4332
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4333
|
+
* new id. Absent in output from older versions.
|
|
4334
|
+
*/
|
|
4335
|
+
finding_id?: (string | null)
|
|
4137
4336
|
/**
|
|
4138
4337
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4139
4338
|
* forward-compat).
|
|
@@ -4191,6 +4390,14 @@ col: number
|
|
|
4191
4390
|
* Used by the LSP to underline just the specifier, not the entire import line.
|
|
4192
4391
|
*/
|
|
4193
4392
|
specifier_col: number
|
|
4393
|
+
/**
|
|
4394
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4395
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4396
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4397
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4398
|
+
* new id. Absent in output from older versions.
|
|
4399
|
+
*/
|
|
4400
|
+
finding_id?: (string | null)
|
|
4194
4401
|
/**
|
|
4195
4402
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4196
4403
|
* forward-compat).
|
|
@@ -4224,6 +4431,14 @@ package_name: string
|
|
|
4224
4431
|
* Import sites where this unlisted dependency is used (file path, line, column).
|
|
4225
4432
|
*/
|
|
4226
4433
|
imported_from: ImportSite[]
|
|
4434
|
+
/**
|
|
4435
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4436
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4437
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4438
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4439
|
+
* new id. Absent in output from older versions.
|
|
4440
|
+
*/
|
|
4441
|
+
finding_id?: (string | null)
|
|
4227
4442
|
/**
|
|
4228
4443
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4229
4444
|
* forward-compat).
|
|
@@ -4281,6 +4496,14 @@ export_name: string
|
|
|
4281
4496
|
* Locations where this export name appears.
|
|
4282
4497
|
*/
|
|
4283
4498
|
locations: DuplicateLocation[]
|
|
4499
|
+
/**
|
|
4500
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4501
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4502
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4503
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4504
|
+
* new id. Absent in output from older versions.
|
|
4505
|
+
*/
|
|
4506
|
+
finding_id?: (string | null)
|
|
4284
4507
|
/**
|
|
4285
4508
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4286
4509
|
* forward-compat).
|
|
@@ -4334,6 +4557,14 @@ path: string
|
|
|
4334
4557
|
* 1-based line number of the dependency entry in package.json.
|
|
4335
4558
|
*/
|
|
4336
4559
|
line: number
|
|
4560
|
+
/**
|
|
4561
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4562
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4563
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4564
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4565
|
+
* new id. Absent in output from older versions.
|
|
4566
|
+
*/
|
|
4567
|
+
finding_id?: (string | null)
|
|
4337
4568
|
/**
|
|
4338
4569
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4339
4570
|
* forward-compat).
|
|
@@ -4371,6 +4602,14 @@ path: string
|
|
|
4371
4602
|
* 1-based line number of the dependency entry in package.json.
|
|
4372
4603
|
*/
|
|
4373
4604
|
line: number
|
|
4605
|
+
/**
|
|
4606
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4607
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4608
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4609
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4610
|
+
* new id. Absent in output from older versions.
|
|
4611
|
+
*/
|
|
4612
|
+
finding_id?: (string | null)
|
|
4374
4613
|
/**
|
|
4375
4614
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4376
4615
|
* forward-compat).
|
|
@@ -4409,6 +4648,14 @@ path: string
|
|
|
4409
4648
|
* 1-based line number of the dependency entry in package.json.
|
|
4410
4649
|
*/
|
|
4411
4650
|
line: number
|
|
4651
|
+
/**
|
|
4652
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4653
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4654
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4655
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4656
|
+
* new id. Absent in output from older versions.
|
|
4657
|
+
*/
|
|
4658
|
+
finding_id?: (string | null)
|
|
4412
4659
|
/**
|
|
4413
4660
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4414
4661
|
* forward-compat).
|
|
@@ -4463,6 +4710,14 @@ edges?: CircularDependencyEdge[]
|
|
|
4463
4710
|
* Whether this cycle crosses workspace package boundaries.
|
|
4464
4711
|
*/
|
|
4465
4712
|
is_cross_package?: boolean
|
|
4713
|
+
/**
|
|
4714
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4715
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4716
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4717
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4718
|
+
* new id. Absent in output from older versions.
|
|
4719
|
+
*/
|
|
4720
|
+
finding_id?: (string | null)
|
|
4466
4721
|
/**
|
|
4467
4722
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4468
4723
|
* forward-compat).
|
|
@@ -4525,6 +4780,14 @@ export interface ReExportCycleFinding {
|
|
|
4525
4780
|
*/
|
|
4526
4781
|
files: string[]
|
|
4527
4782
|
kind: ReExportCycleKind
|
|
4783
|
+
/**
|
|
4784
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4785
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4786
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4787
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4788
|
+
* new id. Absent in output from older versions.
|
|
4789
|
+
*/
|
|
4790
|
+
finding_id?: (string | null)
|
|
4528
4791
|
/**
|
|
4529
4792
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4530
4793
|
* forward-compat).
|
|
@@ -4543,6 +4806,109 @@ introduced?: (AuditIntroduced | null)
|
|
|
4543
4806
|
*/
|
|
4544
4807
|
effective_severity?: (EffectiveSeverity | null)
|
|
4545
4808
|
}
|
|
4809
|
+
/**
|
|
4810
|
+
* Wire-shape envelope for a [`PackageCycle`] finding. Mirrors
|
|
4811
|
+
* [`CircularDependencyFinding`]: flattens the bare finding and carries a
|
|
4812
|
+
* typed `actions` array (`refactor-cycle` primary plus `suppress-line`
|
|
4813
|
+
* secondary).
|
|
4814
|
+
*/
|
|
4815
|
+
export interface PackageCycleFinding {
|
|
4816
|
+
/**
|
|
4817
|
+
* Workspace package labels in cycle order. The first entry is the
|
|
4818
|
+
* lexicographically smallest label; the last entry imports the first.
|
|
4819
|
+
* A label is the package name. When two or more workspace packages
|
|
4820
|
+
* share a name, the label is `name (root)` with the project-relative
|
|
4821
|
+
* package root, so that each label names one package.
|
|
4822
|
+
*/
|
|
4823
|
+
packages: string[]
|
|
4824
|
+
/**
|
|
4825
|
+
* Package root directories in cycle order: `package_roots[i]` is the
|
|
4826
|
+
* root of `packages[i]`.
|
|
4827
|
+
*/
|
|
4828
|
+
package_roots: string[]
|
|
4829
|
+
/**
|
|
4830
|
+
* Number of packages in the cycle.
|
|
4831
|
+
*/
|
|
4832
|
+
length: number
|
|
4833
|
+
/**
|
|
4834
|
+
* One example import per hop, in cycle order: `edges[i]` goes from
|
|
4835
|
+
* `packages[i]` to `packages[(i + 1) % length]`.
|
|
4836
|
+
*/
|
|
4837
|
+
edges: PackageCycleEdge[]
|
|
4838
|
+
/**
|
|
4839
|
+
* True when the group of packages that holds this cycle has more
|
|
4840
|
+
* cycles than fallow lists. The listing stops at 20 cycles per group,
|
|
4841
|
+
* or earlier on a very dense package graph. Break a listed cycle and
|
|
4842
|
+
* run again to see the rest.
|
|
4843
|
+
*/
|
|
4844
|
+
group_truncated: boolean
|
|
4845
|
+
/**
|
|
4846
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4847
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4848
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4849
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4850
|
+
* new id. Absent in output from older versions.
|
|
4851
|
+
*/
|
|
4852
|
+
finding_id?: (string | null)
|
|
4853
|
+
/**
|
|
4854
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
4855
|
+
* forward-compat).
|
|
4856
|
+
*/
|
|
4857
|
+
actions: IssueAction[]
|
|
4858
|
+
/**
|
|
4859
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
4860
|
+
* the merge-base.
|
|
4861
|
+
*/
|
|
4862
|
+
introduced?: (AuditIntroduced | null)
|
|
4863
|
+
/**
|
|
4864
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4865
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4866
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4867
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4868
|
+
*/
|
|
4869
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4870
|
+
}
|
|
4871
|
+
/**
|
|
4872
|
+
* One package hop in a [`PackageCycle`]: `from_package` imports
|
|
4873
|
+
* `to_package`, and `path` holds one example import for that hop.
|
|
4874
|
+
*
|
|
4875
|
+
* The example import is the first runtime import by `(path, line)`. When
|
|
4876
|
+
* every import on the hop is type-only, it is the first type-only import.
|
|
4877
|
+
*/
|
|
4878
|
+
export interface PackageCycleEdge {
|
|
4879
|
+
/**
|
|
4880
|
+
* Label of the importing workspace package, as in
|
|
4881
|
+
* [`PackageCycle::packages`].
|
|
4882
|
+
*/
|
|
4883
|
+
from_package: string
|
|
4884
|
+
/**
|
|
4885
|
+
* Label of the imported workspace package, as in
|
|
4886
|
+
* [`PackageCycle::packages`].
|
|
4887
|
+
*/
|
|
4888
|
+
to_package: string
|
|
4889
|
+
/**
|
|
4890
|
+
* File in `from_package` that holds the example import.
|
|
4891
|
+
*/
|
|
4892
|
+
path: string
|
|
4893
|
+
/**
|
|
4894
|
+
* File in `to_package` that the example import resolves to.
|
|
4895
|
+
*/
|
|
4896
|
+
target_path: string
|
|
4897
|
+
/**
|
|
4898
|
+
* 1-based line number of the example import.
|
|
4899
|
+
*/
|
|
4900
|
+
line: number
|
|
4901
|
+
/**
|
|
4902
|
+
* 0-based byte column offset of the example import.
|
|
4903
|
+
*/
|
|
4904
|
+
col: number
|
|
4905
|
+
/**
|
|
4906
|
+
* True when every import from `from_package` to `to_package` is
|
|
4907
|
+
* type-only. A type-only hop has no runtime effect, but it can still
|
|
4908
|
+
* force a build order (for example with declaration builds).
|
|
4909
|
+
*/
|
|
4910
|
+
type_only: boolean
|
|
4911
|
+
}
|
|
4546
4912
|
/**
|
|
4547
4913
|
* Wire-shape envelope for a [`BoundaryViolation`] finding. Mirrors
|
|
4548
4914
|
* [`UnusedFileFinding`]: flattens the bare finding and carries a typed
|
|
@@ -4555,7 +4921,9 @@ export interface BoundaryViolationFinding {
|
|
|
4555
4921
|
*/
|
|
4556
4922
|
from_path: string
|
|
4557
4923
|
/**
|
|
4558
|
-
* The file being imported that violates the boundary.
|
|
4924
|
+
* The file being imported that violates the boundary. When the import
|
|
4925
|
+
* goes through a re-export chain, this is the origin module that
|
|
4926
|
+
* declares the imported symbol, not the barrel.
|
|
4559
4927
|
*/
|
|
4560
4928
|
to_path: string
|
|
4561
4929
|
/**
|
|
@@ -4578,6 +4946,19 @@ line: number
|
|
|
4578
4946
|
* 0-based byte column offset of the import statement.
|
|
4579
4947
|
*/
|
|
4580
4948
|
col: number
|
|
4949
|
+
/**
|
|
4950
|
+
* The barrel file that the source file imports directly, when the
|
|
4951
|
+
* violation comes from a re-export chain. Absent for a direct import.
|
|
4952
|
+
*/
|
|
4953
|
+
via_path?: (string | null)
|
|
4954
|
+
/**
|
|
4955
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4956
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4957
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4958
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4959
|
+
* new id. Absent in output from older versions.
|
|
4960
|
+
*/
|
|
4961
|
+
finding_id?: (string | null)
|
|
4581
4962
|
/**
|
|
4582
4963
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4583
4964
|
* forward-compat).
|
|
@@ -4614,6 +4995,14 @@ line: number
|
|
|
4614
4995
|
* 0-based byte column offset used for diagnostics.
|
|
4615
4996
|
*/
|
|
4616
4997
|
col: number
|
|
4998
|
+
/**
|
|
4999
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5000
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5001
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5002
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5003
|
+
* new id. Absent in output from older versions.
|
|
5004
|
+
*/
|
|
5005
|
+
finding_id?: (string | null)
|
|
4617
5006
|
/**
|
|
4618
5007
|
* Suggested next steps.
|
|
4619
5008
|
*/
|
|
@@ -4662,6 +5051,14 @@ callee: string
|
|
|
4662
5051
|
* consumers can see both the written path and the rule that fired.
|
|
4663
5052
|
*/
|
|
4664
5053
|
pattern: string
|
|
5054
|
+
/**
|
|
5055
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5056
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5057
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5058
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5059
|
+
* new id. Absent in output from older versions.
|
|
5060
|
+
*/
|
|
5061
|
+
finding_id?: (string | null)
|
|
4665
5062
|
/**
|
|
4666
5063
|
* Suggested next steps.
|
|
4667
5064
|
*/
|
|
@@ -4711,7 +5108,8 @@ kind: PolicyRuleKind
|
|
|
4711
5108
|
* What matched: the written callee path for `banned-call` (e.g.
|
|
4712
5109
|
* `cp.exec`), the raw import specifier for `banned-import` (e.g.
|
|
4713
5110
|
* `moment/locale/nl`), `<effect>: <callee>` for `banned-effect`, or the
|
|
4714
|
-
* exported name for `banned-export`.
|
|
5111
|
+
* exported name for `banned-export`. For `gdp-proof-producer`, the canonical
|
|
5112
|
+
* factory with its JSON-quoted literal label or `...` for a dynamic label.
|
|
4715
5113
|
*/
|
|
4716
5114
|
matched: string
|
|
4717
5115
|
severity: PolicyViolationSeverity
|
|
@@ -4719,6 +5117,14 @@ severity: PolicyViolationSeverity
|
|
|
4719
5117
|
* The rule's author-provided message, when set.
|
|
4720
5118
|
*/
|
|
4721
5119
|
message?: (string | null)
|
|
5120
|
+
/**
|
|
5121
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5122
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5123
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5124
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5125
|
+
* new id. Absent in output from older versions.
|
|
5126
|
+
*/
|
|
5127
|
+
finding_id?: (string | null)
|
|
4722
5128
|
/**
|
|
4723
5129
|
* Suggested next steps.
|
|
4724
5130
|
*/
|
|
@@ -4751,6 +5157,14 @@ origin: SuppressionOrigin
|
|
|
4751
5157
|
* comment or tag that has no reason.
|
|
4752
5158
|
*/
|
|
4753
5159
|
missing_reason?: boolean
|
|
5160
|
+
/**
|
|
5161
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5162
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5163
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5164
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5165
|
+
* new id. Absent in output from older versions.
|
|
5166
|
+
*/
|
|
5167
|
+
finding_id?: (string | null)
|
|
4754
5168
|
/**
|
|
4755
5169
|
* Suggested next steps. Always emitted.
|
|
4756
5170
|
*/
|
|
@@ -4793,6 +5207,14 @@ line: number
|
|
|
4793
5207
|
* output.
|
|
4794
5208
|
*/
|
|
4795
5209
|
hardcoded_consumers?: string[]
|
|
5210
|
+
/**
|
|
5211
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5212
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5213
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5214
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5215
|
+
* new id. Absent in output from older versions.
|
|
5216
|
+
*/
|
|
5217
|
+
finding_id?: (string | null)
|
|
4796
5218
|
/**
|
|
4797
5219
|
* Suggested next steps. Always emitted.
|
|
4798
5220
|
*/
|
|
@@ -4828,6 +5250,14 @@ path: string
|
|
|
4828
5250
|
* 1-based line number of the empty group header within the source file.
|
|
4829
5251
|
*/
|
|
4830
5252
|
line: number
|
|
5253
|
+
/**
|
|
5254
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5255
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5256
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5257
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5258
|
+
* new id. Absent in output from older versions.
|
|
5259
|
+
*/
|
|
5260
|
+
finding_id?: (string | null)
|
|
4831
5261
|
/**
|
|
4832
5262
|
* Suggested next steps. Always emitted.
|
|
4833
5263
|
*/
|
|
@@ -4884,6 +5314,14 @@ line: number
|
|
|
4884
5314
|
* catalog or to add the entry to the named catalog.
|
|
4885
5315
|
*/
|
|
4886
5316
|
available_in_catalogs?: string[]
|
|
5317
|
+
/**
|
|
5318
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5319
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5320
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5321
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5322
|
+
* new id. Absent in output from older versions.
|
|
5323
|
+
*/
|
|
5324
|
+
finding_id?: (string | null)
|
|
4887
5325
|
/**
|
|
4888
5326
|
* Suggested next steps. Always emitted; position 0 is the discriminated
|
|
4889
5327
|
* primary (see struct docs).
|
|
@@ -4954,6 +5392,14 @@ line: number
|
|
|
4954
5392
|
* use the conservative package-manifest fallback.
|
|
4955
5393
|
*/
|
|
4956
5394
|
hint?: (string | null)
|
|
5395
|
+
/**
|
|
5396
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5397
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5398
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5399
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5400
|
+
* new id. Absent in output from older versions.
|
|
5401
|
+
*/
|
|
5402
|
+
finding_id?: (string | null)
|
|
4957
5403
|
/**
|
|
4958
5404
|
* Suggested next steps. Always emitted.
|
|
4959
5405
|
*/
|
|
@@ -5010,6 +5456,14 @@ path: string
|
|
|
5010
5456
|
* 1-based line number of the entry within the source file.
|
|
5011
5457
|
*/
|
|
5012
5458
|
line: number
|
|
5459
|
+
/**
|
|
5460
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5461
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5462
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5463
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5464
|
+
* new id. Absent in output from older versions.
|
|
5465
|
+
*/
|
|
5466
|
+
finding_id?: (string | null)
|
|
5013
5467
|
/**
|
|
5014
5468
|
* Suggested next steps. Always emitted.
|
|
5015
5469
|
*/
|
|
@@ -5057,6 +5511,14 @@ line: number
|
|
|
5057
5511
|
* 0-based byte column offset of the export.
|
|
5058
5512
|
*/
|
|
5059
5513
|
col: number
|
|
5514
|
+
/**
|
|
5515
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5516
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5517
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5518
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5519
|
+
* new id. Absent in output from older versions.
|
|
5520
|
+
*/
|
|
5521
|
+
finding_id?: (string | null)
|
|
5060
5522
|
/**
|
|
5061
5523
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5062
5524
|
* forward-compat).
|
|
@@ -5105,6 +5567,14 @@ line: number
|
|
|
5105
5567
|
* 0-based byte column offset of the barrel's first offending re-export.
|
|
5106
5568
|
*/
|
|
5107
5569
|
col: number
|
|
5570
|
+
/**
|
|
5571
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5572
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5573
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5574
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5575
|
+
* new id. Absent in output from older versions.
|
|
5576
|
+
*/
|
|
5577
|
+
finding_id?: (string | null)
|
|
5108
5578
|
/**
|
|
5109
5579
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5110
5580
|
* forward-compat).
|
|
@@ -5148,6 +5618,14 @@ line: number
|
|
|
5148
5618
|
* 0-based byte column offset of the misplaced directive statement.
|
|
5149
5619
|
*/
|
|
5150
5620
|
col: number
|
|
5621
|
+
/**
|
|
5622
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5623
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5624
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5625
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5626
|
+
* new id. Absent in output from older versions.
|
|
5627
|
+
*/
|
|
5628
|
+
finding_id?: (string | null)
|
|
5151
5629
|
/**
|
|
5152
5630
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5153
5631
|
* forward-compat).
|
|
@@ -5193,6 +5671,14 @@ line: number
|
|
|
5193
5671
|
* 0-based byte column offset of the inject / getContext call.
|
|
5194
5672
|
*/
|
|
5195
5673
|
col: number
|
|
5674
|
+
/**
|
|
5675
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5676
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5677
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5678
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5679
|
+
* new id. Absent in output from older versions.
|
|
5680
|
+
*/
|
|
5681
|
+
finding_id?: (string | null)
|
|
5196
5682
|
/**
|
|
5197
5683
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5198
5684
|
* forward-compat).
|
|
@@ -5249,6 +5735,14 @@ line: number
|
|
|
5249
5735
|
* 0-based byte column offset.
|
|
5250
5736
|
*/
|
|
5251
5737
|
col: number
|
|
5738
|
+
/**
|
|
5739
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5740
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5741
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5742
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5743
|
+
* new id. Absent in output from older versions.
|
|
5744
|
+
*/
|
|
5745
|
+
finding_id?: (string | null)
|
|
5252
5746
|
/**
|
|
5253
5747
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5254
5748
|
* forward-compat).
|
|
@@ -5298,6 +5792,14 @@ line: number
|
|
|
5298
5792
|
* 0-based byte column offset (file-level finding, always 0).
|
|
5299
5793
|
*/
|
|
5300
5794
|
col: number
|
|
5795
|
+
/**
|
|
5796
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5797
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5798
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5799
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5800
|
+
* new id. Absent in output from older versions.
|
|
5801
|
+
*/
|
|
5802
|
+
finding_id?: (string | null)
|
|
5301
5803
|
/**
|
|
5302
5804
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5303
5805
|
* forward-compat).
|
|
@@ -5351,6 +5853,14 @@ line: number
|
|
|
5351
5853
|
* 0-based byte column offset (file-level finding, always 0).
|
|
5352
5854
|
*/
|
|
5353
5855
|
col: number
|
|
5856
|
+
/**
|
|
5857
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5858
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5859
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5860
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5861
|
+
* new id. Absent in output from older versions.
|
|
5862
|
+
*/
|
|
5863
|
+
finding_id?: (string | null)
|
|
5354
5864
|
/**
|
|
5355
5865
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5356
5866
|
* forward-compat).
|
|
@@ -5396,6 +5906,14 @@ line: number
|
|
|
5396
5906
|
* 0-based byte column offset of the prop declaration.
|
|
5397
5907
|
*/
|
|
5398
5908
|
col: number
|
|
5909
|
+
/**
|
|
5910
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5911
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5912
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5913
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5914
|
+
* new id. Absent in output from older versions.
|
|
5915
|
+
*/
|
|
5916
|
+
finding_id?: (string | null)
|
|
5399
5917
|
/**
|
|
5400
5918
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5401
5919
|
* forward-compat).
|
|
@@ -5414,6 +5932,92 @@ introduced?: (AuditIntroduced | null)
|
|
|
5414
5932
|
*/
|
|
5415
5933
|
effective_severity?: (EffectiveSeverity | null)
|
|
5416
5934
|
}
|
|
5935
|
+
/**
|
|
5936
|
+
* Wire-shape envelope for an [`AbsentComponentProp`] finding. There is no safe
|
|
5937
|
+
* auto-fix: removing a declared prop is judgement-bearing (the prop may be part
|
|
5938
|
+
* of a deliberately-stable public component API). Actions are manual
|
|
5939
|
+
* remediation guidance plus a line-level suppress at the prop declaration.
|
|
5940
|
+
*/
|
|
5941
|
+
export interface AbsentComponentPropFinding {
|
|
5942
|
+
/**
|
|
5943
|
+
* Source path of the input declaration.
|
|
5944
|
+
*/
|
|
5945
|
+
path: string
|
|
5946
|
+
/**
|
|
5947
|
+
* Semantic declaration name, or SFC filename stem.
|
|
5948
|
+
*/
|
|
5949
|
+
component_name: string
|
|
5950
|
+
/**
|
|
5951
|
+
* Public framework token.
|
|
5952
|
+
*/
|
|
5953
|
+
framework: string
|
|
5954
|
+
/**
|
|
5955
|
+
* Public optional input name.
|
|
5956
|
+
*/
|
|
5957
|
+
prop_name: string
|
|
5958
|
+
/**
|
|
5959
|
+
* 1-based declaration line.
|
|
5960
|
+
*/
|
|
5961
|
+
line: number
|
|
5962
|
+
/**
|
|
5963
|
+
* 0-based declaration byte column.
|
|
5964
|
+
*/
|
|
5965
|
+
col: number
|
|
5966
|
+
/**
|
|
5967
|
+
* Whether omission has a declared default.
|
|
5968
|
+
*/
|
|
5969
|
+
has_default: boolean
|
|
5970
|
+
/**
|
|
5971
|
+
* Every inspected reachable caller, deterministically ordered.
|
|
5972
|
+
*/
|
|
5973
|
+
inspected_call_sites: ComponentPropCallSite[]
|
|
5974
|
+
/**
|
|
5975
|
+
* Manual-review meaning and limits of static evidence.
|
|
5976
|
+
*/
|
|
5977
|
+
explanation: string
|
|
5978
|
+
/**
|
|
5979
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5980
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5981
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5982
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5983
|
+
* new id. Absent in output from older versions.
|
|
5984
|
+
*/
|
|
5985
|
+
finding_id?: (string | null)
|
|
5986
|
+
/**
|
|
5987
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
5988
|
+
* forward-compat).
|
|
5989
|
+
*/
|
|
5990
|
+
actions: IssueAction[]
|
|
5991
|
+
/**
|
|
5992
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
5993
|
+
* the merge-base.
|
|
5994
|
+
*/
|
|
5995
|
+
introduced?: (AuditIntroduced | null)
|
|
5996
|
+
/**
|
|
5997
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
5998
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
5999
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
6000
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
6001
|
+
*/
|
|
6002
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
6003
|
+
}
|
|
6004
|
+
/**
|
|
6005
|
+
* One inspected reachable component invocation.
|
|
6006
|
+
*/
|
|
6007
|
+
export interface ComponentPropCallSite {
|
|
6008
|
+
/**
|
|
6009
|
+
* Caller source path.
|
|
6010
|
+
*/
|
|
6011
|
+
path: string
|
|
6012
|
+
/**
|
|
6013
|
+
* 1-based opening-tag line.
|
|
6014
|
+
*/
|
|
6015
|
+
line: number
|
|
6016
|
+
/**
|
|
6017
|
+
* 0-based original-source byte column.
|
|
6018
|
+
*/
|
|
6019
|
+
col: number
|
|
6020
|
+
}
|
|
5417
6021
|
/**
|
|
5418
6022
|
* Wire-shape envelope for an [`UnusedComponentEmit`] finding. There is no safe
|
|
5419
6023
|
* auto-fix: removing a declared emit is judgement-bearing (the event may be
|
|
@@ -5441,6 +6045,14 @@ line: number
|
|
|
5441
6045
|
* 0-based byte column offset of the emit declaration.
|
|
5442
6046
|
*/
|
|
5443
6047
|
col: number
|
|
6048
|
+
/**
|
|
6049
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6050
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6051
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6052
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6053
|
+
* new id. Absent in output from older versions.
|
|
6054
|
+
*/
|
|
6055
|
+
finding_id?: (string | null)
|
|
5444
6056
|
/**
|
|
5445
6057
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5446
6058
|
* forward-compat).
|
|
@@ -5486,6 +6098,14 @@ line: number
|
|
|
5486
6098
|
* 0-based byte column offset of the input declaration.
|
|
5487
6099
|
*/
|
|
5488
6100
|
col: number
|
|
6101
|
+
/**
|
|
6102
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6103
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6104
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6105
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6106
|
+
* new id. Absent in output from older versions.
|
|
6107
|
+
*/
|
|
6108
|
+
finding_id?: (string | null)
|
|
5489
6109
|
/**
|
|
5490
6110
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5491
6111
|
* forward-compat).
|
|
@@ -5531,6 +6151,14 @@ line: number
|
|
|
5531
6151
|
* 0-based byte column offset of the output declaration.
|
|
5532
6152
|
*/
|
|
5533
6153
|
col: number
|
|
6154
|
+
/**
|
|
6155
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6156
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6157
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6158
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6159
|
+
* new id. Absent in output from older versions.
|
|
6160
|
+
*/
|
|
6161
|
+
finding_id?: (string | null)
|
|
5534
6162
|
/**
|
|
5535
6163
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5536
6164
|
* forward-compat).
|
|
@@ -5577,6 +6205,14 @@ line: number
|
|
|
5577
6205
|
* 0-based byte column offset of the `dispatch('<name>')` call.
|
|
5578
6206
|
*/
|
|
5579
6207
|
col: number
|
|
6208
|
+
/**
|
|
6209
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6210
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6211
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6212
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6213
|
+
* new id. Absent in output from older versions.
|
|
6214
|
+
*/
|
|
6215
|
+
finding_id?: (string | null)
|
|
5580
6216
|
/**
|
|
5581
6217
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5582
6218
|
* forward-compat).
|
|
@@ -5618,6 +6254,14 @@ line: number
|
|
|
5618
6254
|
* 0-based byte column offset of the export.
|
|
5619
6255
|
*/
|
|
5620
6256
|
col: number
|
|
6257
|
+
/**
|
|
6258
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6259
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6260
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6261
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6262
|
+
* new id. Absent in output from older versions.
|
|
6263
|
+
*/
|
|
6264
|
+
finding_id?: (string | null)
|
|
5621
6265
|
/**
|
|
5622
6266
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5623
6267
|
* forward-compat).
|
|
@@ -5665,6 +6309,14 @@ col: number
|
|
|
5665
6309
|
* determinable.
|
|
5666
6310
|
*/
|
|
5667
6311
|
route_dir?: (string | null)
|
|
6312
|
+
/**
|
|
6313
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6314
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6315
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6316
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6317
|
+
* new id. Absent in output from older versions.
|
|
6318
|
+
*/
|
|
6319
|
+
finding_id?: (string | null)
|
|
5668
6320
|
/**
|
|
5669
6321
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5670
6322
|
* forward-compat).
|
|
@@ -5706,6 +6358,14 @@ depth: number
|
|
|
5706
6358
|
* finding anchor is the first hop (`path` / `line` for suppression + CI).
|
|
5707
6359
|
*/
|
|
5708
6360
|
hops: PropDrillHop[]
|
|
6361
|
+
/**
|
|
6362
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6363
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6364
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6365
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6366
|
+
* new id. Absent in output from older versions.
|
|
6367
|
+
*/
|
|
6368
|
+
finding_id?: (string | null)
|
|
5709
6369
|
/**
|
|
5710
6370
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5711
6371
|
* forward-compat).
|
|
@@ -5771,6 +6431,14 @@ component: string
|
|
|
5771
6431
|
* at the render site).
|
|
5772
6432
|
*/
|
|
5773
6433
|
child_component: string
|
|
6434
|
+
/**
|
|
6435
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6436
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6437
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6438
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6439
|
+
* new id. Absent in output from older versions.
|
|
6440
|
+
*/
|
|
6441
|
+
finding_id?: (string | null)
|
|
5774
6442
|
/**
|
|
5775
6443
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5776
6444
|
* forward-compat).
|
|
@@ -5829,6 +6497,14 @@ group_size: number
|
|
|
5829
6497
|
* here, because the group is real regardless of suppression.
|
|
5830
6498
|
*/
|
|
5831
6499
|
sharing_components: DuplicatePropShapeMember[]
|
|
6500
|
+
/**
|
|
6501
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6502
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6503
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6504
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6505
|
+
* new id. Absent in output from older versions.
|
|
6506
|
+
*/
|
|
6507
|
+
finding_id?: (string | null)
|
|
5832
6508
|
/**
|
|
5833
6509
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5834
6510
|
* forward-compat).
|
|
@@ -5962,6 +6638,18 @@ stale_entries: number
|
|
|
5962
6638
|
* when every entry went unmatched.
|
|
5963
6639
|
*/
|
|
5964
6640
|
current_findings: number
|
|
6641
|
+
/**
|
|
6642
|
+
* Health only: the number of functions above a complexity threshold that
|
|
6643
|
+
* the baseline does not accept. This is a count of functions, like
|
|
6644
|
+
* `summary.functions_above_threshold`, not a count of baseline entries,
|
|
6645
|
+
* and it is the value before `--top`. A run that does not list the
|
|
6646
|
+
* complexity findings (for example `--score`) still reports it, so a
|
|
6647
|
+
* reader can tell the new functions from the accepted ones.
|
|
6648
|
+
*
|
|
6649
|
+
* `dead-code` and `dupes` do not emit it. An envelope from a fallow
|
|
6650
|
+
* version before this member does not carry it either.
|
|
6651
|
+
*/
|
|
6652
|
+
remaining_findings?: (number | null)
|
|
5965
6653
|
/**
|
|
5966
6654
|
* True when this run analyzed only part of the project, so a whole-project
|
|
5967
6655
|
* baseline matches less of it for reasons that are not rot. The channels
|
|
@@ -6033,6 +6721,14 @@ unrecognised_format?: boolean
|
|
|
6033
6721
|
* uses the same value for its stderr note.
|
|
6034
6722
|
*/
|
|
6035
6723
|
saved_by?: string
|
|
6724
|
+
/**
|
|
6725
|
+
* `legacy` when the loaded dead-code baseline has no `identity`, so its
|
|
6726
|
+
* entries use the old key forms and some of them hold a line. The run
|
|
6727
|
+
* still applies the file. `--save-baseline` rewrites it with line-free
|
|
6728
|
+
* keys. Absent for a current baseline and on `dupes` and `health`. The
|
|
6729
|
+
* value set is OPEN.
|
|
6730
|
+
*/
|
|
6731
|
+
format?: string
|
|
6036
6732
|
/**
|
|
6037
6733
|
* Which channels narrowed this run, present and non-empty exactly when
|
|
6038
6734
|
* `change_scoped` is true. Both members are derived from one function, so
|
|
@@ -6050,6 +6746,75 @@ saved_by?: string
|
|
|
6050
6746
|
*/
|
|
6051
6747
|
scope_reasons?: ScopeReason[]
|
|
6052
6748
|
}
|
|
6749
|
+
/**
|
|
6750
|
+
* The result of a `--finding-id` query, present only when the run received
|
|
6751
|
+
* one or more `--finding-id` values.
|
|
6752
|
+
*
|
|
6753
|
+
* A requested id that is missing from a conclusive run means "fixed,
|
|
6754
|
+
* suppressed, or ignored by config", never "unknown": an inline suppression
|
|
6755
|
+
* comment or an `ignoreFindings` entry is a choice a person made to hide the
|
|
6756
|
+
* finding, so it counts as absent. A missing id in a run that is not
|
|
6757
|
+
* conclusive is unknown, never resolved.
|
|
6758
|
+
*
|
|
6759
|
+
* Every list keeps the order of `requested`. `found` and `missing` partition
|
|
6760
|
+
* `requested`. `filtered` is a subset of `missing`.
|
|
6761
|
+
*/
|
|
6762
|
+
export interface FindingIdQuery {
|
|
6763
|
+
/**
|
|
6764
|
+
* The requested ids, without duplicates, in the order of the arguments.
|
|
6765
|
+
*/
|
|
6766
|
+
requested: string[]
|
|
6767
|
+
/**
|
|
6768
|
+
* The requested ids that this report contains.
|
|
6769
|
+
*/
|
|
6770
|
+
found: string[]
|
|
6771
|
+
/**
|
|
6772
|
+
* The requested ids that this report does not contain. When `conclusive`
|
|
6773
|
+
* is true, a missing id is fixed, suppressed, or ignored by config.
|
|
6774
|
+
* Otherwise its state is unknown.
|
|
6775
|
+
*/
|
|
6776
|
+
missing: string[]
|
|
6777
|
+
/**
|
|
6778
|
+
* The missing ids that the analysis still found before a filter of this
|
|
6779
|
+
* run (scope, baseline, issue-type filter) removed them. Such a finding
|
|
6780
|
+
* still exists.
|
|
6781
|
+
*/
|
|
6782
|
+
filtered: string[]
|
|
6783
|
+
/**
|
|
6784
|
+
* True when no option of this run can hide a finding without a fix, and
|
|
6785
|
+
* no requested id was filtered. Only then does a missing id mean that
|
|
6786
|
+
* the analysis no longer reports the finding.
|
|
6787
|
+
*/
|
|
6788
|
+
conclusive: boolean
|
|
6789
|
+
/**
|
|
6790
|
+
* Why the query is not conclusive, sorted. Empty exactly when
|
|
6791
|
+
* `conclusive` is true.
|
|
6792
|
+
*/
|
|
6793
|
+
inconclusive_reasons: FindingIdQueryReason[]
|
|
6794
|
+
/**
|
|
6795
|
+
* A stable hash (`af1:<16 hex digits>`) of every input other than the
|
|
6796
|
+
* source code that decides which findings the run reports:
|
|
6797
|
+
* - the fallow version;
|
|
6798
|
+
* - the merged config after `extends` (without keys that only shape other
|
|
6799
|
+
* commands), the loaded external plugins and rule packs;
|
|
6800
|
+
* - production mode, `includeEntryExports`, the effective rules, the
|
|
6801
|
+
* type-aware mode, requirement and project list, the file size limit;
|
|
6802
|
+
* - the root-relative path and content of each repository `.gitignore`,
|
|
6803
|
+
* `.ignore` and `.git/info/exclude`, each `package.json`, each
|
|
6804
|
+
* `tsconfig*.json` and `jsconfig*.json` with the files its `extends`
|
|
6805
|
+
* names, and each file that matches a built-in or external plugin
|
|
6806
|
+
* config pattern (for example `vite.config.ts`).
|
|
6807
|
+
*
|
|
6808
|
+
* File content is normalized (CRLF to LF, trailing newlines removed).
|
|
6809
|
+
* Known exclusions: the global git excludes file and other machine
|
|
6810
|
+
* environment outside the `FALLOW_*` variables. Store the fingerprint
|
|
6811
|
+
* with a verdict. A later query with another fingerprint is unknown, even
|
|
6812
|
+
* when `conclusive` is true. An edit to a source file keeps it; an edit
|
|
6813
|
+
* to a manifest or project config changes it, also when the edit fixes a
|
|
6814
|
+
* dependency finding.
|
|
6815
|
+
*/
|
|
6816
|
+
analysis_fingerprint: string
|
|
6817
|
+
}
|
|
6053
6818
|
/**
|
|
6054
6819
|
* Result of regression detection (`--fail-on-regression`). Compares current
|
|
6055
6820
|
* issue counts against a baseline from config or an explicit file.
|
|
@@ -6099,9 +6864,11 @@ reason?: (string | null)
|
|
|
6099
6864
|
* empty object is never emitted: it would assert that something was asked and
|
|
6100
6865
|
* all of it applied, which is a different and false claim.
|
|
6101
6866
|
*
|
|
6102
|
-
* The names this build can emit are `changed-since`, `diff-filter
|
|
6103
|
-
* `sarif-file`. The reasons are `git-missing`,
|
|
6104
|
-
* `git-failed` and `invalid-ref` for `changed-since`,
|
|
6867
|
+
* The names this build can emit are `changed-since`, `diff-filter`,
|
|
6868
|
+
* `package-baselines`, `sarif-file` and `group-filter`. The reasons are `git-missing`,
|
|
6869
|
+
* `not-a-repository`, `git-failed` and `invalid-ref` for `changed-since`,
|
|
6870
|
+
* `unknown-workspace`, `git-missing`, `not-a-repository` and `git-failed`
|
|
6871
|
+
* for `package-baselines`, `oversize`,
|
|
6105
6872
|
* `unreadable`, `not-utf8`, `foreign-namespace` and `ambiguous-base` for
|
|
6106
6873
|
* `diff-filter`, and `directory-create-failed`, `write-failed` and
|
|
6107
6874
|
* `serialize-failed` for `sarif-file`. Every set is OPEN: a name a consumer
|
|
@@ -6116,9 +6883,11 @@ reason?: (string | null)
|
|
|
6116
6883
|
* whole object narrows the report tells its reader an unwritten SARIF file
|
|
6117
6884
|
* widened the analysis, which is what `affects` exists to prevent.
|
|
6118
6885
|
*
|
|
6119
|
-
* `scope_size` is emitted for `diff-filter`, in added lines,
|
|
6120
|
-
* `changed-since`, in changed files that the run analyzed
|
|
6121
|
-
*
|
|
6886
|
+
* `scope_size` is emitted for `diff-filter`, in added lines, for
|
|
6887
|
+
* `changed-since`, in changed files that the run analyzed, and for
|
|
6888
|
+
* `group-filter`, in groups that the run kept. `package-baselines`
|
|
6889
|
+
* and `sarif-file` measure no scope; the applied package refs travel in
|
|
6890
|
+
* `package_baselines`. A consumer reads the unit off the name, so a name that
|
|
6122
6891
|
* starts to measure its own scope in a later release needs no change here.
|
|
6123
6892
|
*
|
|
6124
6893
|
* `invalid-ref` is reachable only through the programmatic API. The
|
|
@@ -6144,7 +6913,9 @@ affects: RequestEffect
|
|
|
6144
6913
|
* `changed-since`, the diff source label (`--diff-file pr.diff`,
|
|
6145
6914
|
* `--diff-stdin`, `$FALLOW_DIFF_FILE build/pr.diff`, or
|
|
6146
6915
|
* `diffFile pr.diff` for the programmatic option) for `diff-filter`,
|
|
6147
|
-
*
|
|
6916
|
+
* `workspaces.changedSince` for `package-baselines`, the target path for
|
|
6917
|
+
* `sarif-file`, the comma-joined selector patterns for `group-filter`.
|
|
6918
|
+
* Echoed rather than normalised, so a
|
|
6148
6919
|
* consumer must not join it to the project root the way it joins every
|
|
6149
6920
|
* other path-shaped field.
|
|
6150
6921
|
*/
|
|
@@ -6161,7 +6932,7 @@ requested: string
|
|
|
6161
6932
|
* rule dropped does not count, so a change to a README only gives `0`. A
|
|
6162
6933
|
* combined run counts a file that any of its analyses kept, because a
|
|
6163
6934
|
* per-analysis `production` setting can give its analyses different
|
|
6164
|
-
* files.
|
|
6935
|
+
* files. `group-filter` counts the groups that the run kept.
|
|
6165
6936
|
* Read the unit off the name the entry is keyed under, never across names,
|
|
6166
6937
|
* and read an absent member as "not measured" rather than as zero.
|
|
6167
6938
|
*
|
|
@@ -6189,6 +6960,19 @@ reason?: (string | null)
|
|
|
6189
6960
|
*/
|
|
6190
6961
|
message?: (string | null)
|
|
6191
6962
|
}
|
|
6963
|
+
/**
|
|
6964
|
+
* One applied baseline for an exact, project-relative workspace root.
|
|
6965
|
+
*/
|
|
6966
|
+
export interface PackageBaselineStatus {
|
|
6967
|
+
/**
|
|
6968
|
+
* Workspace package root, relative to the analysis root with `/` separators.
|
|
6969
|
+
*/
|
|
6970
|
+
workspace_root: string
|
|
6971
|
+
/**
|
|
6972
|
+
* Git ref used to select changed files in this package.
|
|
6973
|
+
*/
|
|
6974
|
+
reference: string
|
|
6975
|
+
}
|
|
6192
6976
|
/**
|
|
6193
6977
|
* A read-only follow-up command fallow surfaces from the current findings,
|
|
6194
6978
|
* emitted as the top-level `next_steps` array on each command's JSON envelope.
|
|
@@ -6365,6 +7149,15 @@ end_col: number
|
|
|
6365
7149
|
* wants the source reads it from the file.
|
|
6366
7150
|
*/
|
|
6367
7151
|
fragment?: string
|
|
7152
|
+
/**
|
|
7153
|
+
* Whether the file path is a symlink, or lies under a symlinked
|
|
7154
|
+
* directory, inside the project root. Omitted when `false`.
|
|
7155
|
+
*
|
|
7156
|
+
* A clone with a symlinked instance can be the same file under two
|
|
7157
|
+
* paths, not copied code. `duplicates.ignoreSymlinks` (or
|
|
7158
|
+
* `fallow dupes --ignore-symlinks`) removes these instances.
|
|
7159
|
+
*/
|
|
7160
|
+
is_symlink?: boolean
|
|
6368
7161
|
}
|
|
6369
7162
|
/**
|
|
6370
7163
|
* Per-action wire shape attached to each `CloneGroupFinding` and
|
|
@@ -6579,6 +7372,15 @@ export interface HealthReport {
|
|
|
6579
7372
|
*/
|
|
6580
7373
|
findings: HealthFinding[]
|
|
6581
7374
|
summary: HealthSummary
|
|
7375
|
+
/**
|
|
7376
|
+
* The sections that this run produced, in a fixed order. A renderer
|
|
7377
|
+
* reads it to tell an empty section from a section that the run did not
|
|
7378
|
+
* produce: `findings` is the complexity list only when `complexity` is
|
|
7379
|
+
* in this array. The value set is OPEN (see [`HealthSection`]). Absent
|
|
7380
|
+
* in an envelope from a fallow version before this member, and on a
|
|
7381
|
+
* report that no health run built.
|
|
7382
|
+
*/
|
|
7383
|
+
sections?: (HealthSection[] | null)
|
|
6582
7384
|
/**
|
|
6583
7385
|
* Configured threshold override states. Entries are emitted for active
|
|
6584
7386
|
* exceptions, stale exceptions, and full-run no-match cleanup hints.
|
|
@@ -9015,6 +9817,11 @@ score?: (number | null)
|
|
|
9015
9817
|
* Letter grade from the snapshot.
|
|
9016
9818
|
*/
|
|
9017
9819
|
grade?: (string | null)
|
|
9820
|
+
/**
|
|
9821
|
+
* Formula used for the stored score; absent on legacy snapshots.
|
|
9822
|
+
* A score delta is emitted only when this matches the current score formula.
|
|
9823
|
+
*/
|
|
9824
|
+
score_formula_version?: (number | null)
|
|
9018
9825
|
/**
|
|
9019
9826
|
* Coverage model used for CRAP computation in this snapshot.
|
|
9020
9827
|
*/
|
|
@@ -10842,17 +11649,26 @@ imported_by: string[]
|
|
|
10842
11649
|
*/
|
|
10843
11650
|
type_only_imported_by: string[]
|
|
10844
11651
|
/**
|
|
10845
|
-
* Whether the dependency is invoked from package.json scripts
|
|
11652
|
+
* Whether the dependency is invoked from package.json scripts, CI configs
|
|
11653
|
+
* or git hooks.
|
|
10846
11654
|
*/
|
|
10847
11655
|
used_in_scripts: boolean
|
|
10848
11656
|
/**
|
|
10849
|
-
* Whether the dependency is used at all
|
|
11657
|
+
* Whether the dependency is used at all: imported, invoked from scripts,
|
|
11658
|
+
* or listed as a peer by a used package (`peer_of`).
|
|
10850
11659
|
*/
|
|
10851
11660
|
is_used: boolean
|
|
10852
11661
|
/**
|
|
10853
11662
|
* Total import count.
|
|
10854
11663
|
*/
|
|
10855
11664
|
import_count: number
|
|
11665
|
+
/**
|
|
11666
|
+
* Used packages that list this dependency in their installed
|
|
11667
|
+
* `peerDependencies`, required or optional, sorted by name. The
|
|
11668
|
+
* unused-dependency check credits such a peer, because the package that
|
|
11669
|
+
* lists it loads it at runtime. Absent when no used package lists it.
|
|
11670
|
+
*/
|
|
11671
|
+
peer_of?: string[]
|
|
10856
11672
|
/**
|
|
10857
11673
|
* The configs that declare this name as a Module Federation remote alias
|
|
10858
11674
|
* under `remotes`, one per config. A remote alias is provided by a
|
|
@@ -10860,6 +11676,58 @@ import_count: number
|
|
|
10860
11676
|
* Federation config declares the name (issue #2796).
|
|
10861
11677
|
*/
|
|
10862
11678
|
sources?: TraceSource[]
|
|
11679
|
+
/**
|
|
11680
|
+
* Why the unused devDependency check credits the dependency as tooling
|
|
11681
|
+
* when no file imports it and no script, CI workflow or git hook runs it.
|
|
11682
|
+
* When present, `is_used` is `true`. Absent otherwise.
|
|
11683
|
+
*/
|
|
11684
|
+
tooling_credit?: (ToolingCredit | null)
|
|
11685
|
+
/**
|
|
11686
|
+
* The manifests that the unused-dependency check flags for this name,
|
|
11687
|
+
* relative to the project root and sorted. The check reads each
|
|
11688
|
+
* declaring manifest on its own. An import credits the nearest manifest
|
|
11689
|
+
* that installs the package, so a name that one workspace uses can still
|
|
11690
|
+
* be unused in the root manifest or in another workspace. Absent when no
|
|
11691
|
+
* manifest is flagged.
|
|
11692
|
+
*/
|
|
11693
|
+
unused_in?: string[]
|
|
11694
|
+
}
|
|
11695
|
+
/**
|
|
11696
|
+
* Why the unused devDependency check counts a dependency as used tooling
|
|
11697
|
+
* although no source file imports it.
|
|
11698
|
+
*/
|
|
11699
|
+
export interface ToolingCredit {
|
|
11700
|
+
/**
|
|
11701
|
+
* The evidence: `plugin-config` when the plugin that declares the
|
|
11702
|
+
* dependency found its own config file, `plugin-reference` when a
|
|
11703
|
+
* package.json script, a CI workflow or a git hook runs one of that
|
|
11704
|
+
* plugin's packages, `ambient-types` for a type package that declares
|
|
11705
|
+
* globals, `types-target` when the project declares or imports the
|
|
11706
|
+
* package that a `@types/` package types, `types-config` when a config
|
|
11707
|
+
* file, such as a tsconfig `types` entry, names the type package,
|
|
11708
|
+
* `known-tooling` for a library from the tooling catalogue,
|
|
11709
|
+
* `known-tooling-config` when a command-line tool from the catalogue has
|
|
11710
|
+
* its own config file, and `own-peer` when the same manifest lists the
|
|
11711
|
+
* devDependency in `peerDependencies`. The set is open.
|
|
11712
|
+
*/
|
|
11713
|
+
reason: string
|
|
11714
|
+
/**
|
|
11715
|
+
* The plugin that declares the dependency as tooling.
|
|
11716
|
+
*/
|
|
11717
|
+
plugin?: (string | null)
|
|
11718
|
+
/**
|
|
11719
|
+
* The config file found, relative to the project root, for
|
|
11720
|
+
* `plugin-config` and `known-tooling-config`. A `package.json` path when
|
|
11721
|
+
* the config is a package.json key. For `own-peer`, the manifest that
|
|
11722
|
+
* lists the dependency.
|
|
11723
|
+
*/
|
|
11724
|
+
config?: (string | null)
|
|
11725
|
+
/**
|
|
11726
|
+
* The package that a script, CI workflow or git hook runs, for
|
|
11727
|
+
* `plugin-reference`, or the package that a `@types/` package types,
|
|
11728
|
+
* for `types-target`.
|
|
11729
|
+
*/
|
|
11730
|
+
reference?: (string | null)
|
|
10863
11731
|
}
|
|
10864
11732
|
/**
|
|
10865
11733
|
* Result of tracing a clone: all groups containing the code at a source
|
|
@@ -11008,7 +11876,8 @@ type_only: boolean
|
|
|
11008
11876
|
/**
|
|
11009
11877
|
* Whether the edge carries a runtime value but no static one: the target
|
|
11010
11878
|
* loads only on demand (`import()`, a lazy glob or template pattern) or
|
|
11011
|
-
* on another thread (a worker URL,
|
|
11879
|
+
* on another thread (a worker URL, a worker loader request,
|
|
11880
|
+
* `child_process.fork`). False for a
|
|
11012
11881
|
* static hop and for a type-only hop.
|
|
11013
11882
|
*/
|
|
11014
11883
|
dynamic: boolean
|
|
@@ -11351,6 +12220,13 @@ body: string
|
|
|
11351
12220
|
* Stable finding fingerprint used for comment reconciliation.
|
|
11352
12221
|
*/
|
|
11353
12222
|
fingerprint: string
|
|
12223
|
+
/**
|
|
12224
|
+
* The fingerprint that an older Fallow release wrote into the
|
|
12225
|
+
* `fallow-fingerprint:v2:` marker of this comment, when it is different
|
|
12226
|
+
* from `fingerprint`. For one release, an existing comment whose marker
|
|
12227
|
+
* holds this value is the same comment. Omitted when equal.
|
|
12228
|
+
*/
|
|
12229
|
+
legacy_fingerprint?: (string | null)
|
|
11354
12230
|
/**
|
|
11355
12231
|
* True when the body was cut to fit the provider size limit; omitted
|
|
11356
12232
|
* when false.
|
|
@@ -11370,6 +12246,13 @@ position: GitLabReviewPosition
|
|
|
11370
12246
|
* Stable finding fingerprint used for comment reconciliation.
|
|
11371
12247
|
*/
|
|
11372
12248
|
fingerprint: string
|
|
12249
|
+
/**
|
|
12250
|
+
* The fingerprint that an older Fallow release wrote into the
|
|
12251
|
+
* `fallow-fingerprint:v2:` marker of this comment, when it is different
|
|
12252
|
+
* from `fingerprint`. For one release, an existing comment whose marker
|
|
12253
|
+
* holds this value is the same comment. Omitted when equal.
|
|
12254
|
+
*/
|
|
12255
|
+
legacy_fingerprint?: (string | null)
|
|
11373
12256
|
/**
|
|
11374
12257
|
* True when the body was cut to fit the provider size limit; omitted
|
|
11375
12258
|
* when false.
|
|
@@ -11834,6 +12717,15 @@ elapsed_ms: ElapsedMs
|
|
|
11834
12717
|
*/
|
|
11835
12718
|
findings: HealthFinding[]
|
|
11836
12719
|
summary: HealthSummary
|
|
12720
|
+
/**
|
|
12721
|
+
* The sections that this run produced, in a fixed order. A renderer
|
|
12722
|
+
* reads it to tell an empty section from a section that the run did not
|
|
12723
|
+
* produce: `findings` is the complexity list only when `complexity` is
|
|
12724
|
+
* in this array. The value set is OPEN (see [`HealthSection`]). Absent
|
|
12725
|
+
* in an envelope from a fallow version before this member, and on a
|
|
12726
|
+
* report that no health run built.
|
|
12727
|
+
*/
|
|
12728
|
+
sections?: (HealthSection[] | null)
|
|
11837
12729
|
/**
|
|
11838
12730
|
* Configured threshold override states. Entries are emitted for active
|
|
11839
12731
|
* exceptions, stale exceptions, and full-run no-match cleanup hints.
|
|
@@ -11958,6 +12850,12 @@ grouped_by?: (GroupByMode | null)
|
|
|
11958
12850
|
* Per-bucket recomputed metrics; present only in grouped output.
|
|
11959
12851
|
*/
|
|
11960
12852
|
groups?: (HealthGroup[] | null)
|
|
12853
|
+
/**
|
|
12854
|
+
* The `--group` selector patterns, as given, when the run kept only some
|
|
12855
|
+
* groups. A group that is not in `groups` was filtered out by this
|
|
12856
|
+
* selector. The project-level sections are not filtered.
|
|
12857
|
+
*/
|
|
12858
|
+
group_filter?: (string[] | null)
|
|
11961
12859
|
/**
|
|
11962
12860
|
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
11963
12861
|
* always emits it, with the command's default exit rule in it also when
|
|
@@ -12007,6 +12905,11 @@ next_steps?: NextStep[]
|
|
|
12007
12905
|
* a single invocation. `files_analyzed` and `functions_above_threshold`
|
|
12008
12906
|
* summarise the subset for parity with the project-level
|
|
12009
12907
|
* project-level health summary.
|
|
12908
|
+
*
|
|
12909
|
+
* A group carries a per-file list (`findings`, `file_scores`, `hotspots`,
|
|
12910
|
+
* `large_functions`, `targets`) only when the project report shows the same
|
|
12911
|
+
* list. A `--score` run keeps the score and the counts of each group and
|
|
12912
|
+
* omits the lists.
|
|
12010
12913
|
*/
|
|
12011
12914
|
export interface HealthGroup {
|
|
12012
12915
|
/**
|
|
@@ -12031,9 +12934,37 @@ files_analyzed: number
|
|
|
12031
12934
|
* Number of findings in this group, mirroring the project-level
|
|
12032
12935
|
* `summary.functions_above_threshold` semantics post-baseline /
|
|
12033
12936
|
* post-`--top` truncation. When `--top` was supplied this reflects the
|
|
12034
|
-
* rendered finding count, not the un-truncated total.
|
|
12937
|
+
* rendered finding count of the group, not the un-truncated total.
|
|
12035
12938
|
*/
|
|
12036
12939
|
functions_above_threshold: number
|
|
12940
|
+
/**
|
|
12941
|
+
* Number of critical-severity findings in this group, after the baseline
|
|
12942
|
+
* filter and before `--top`. The project `summary.severity_critical_count`
|
|
12943
|
+
* counts before the baseline filter, so with `--baseline` the group
|
|
12944
|
+
* counts can add up to less.
|
|
12945
|
+
*/
|
|
12946
|
+
severity_critical_count: number
|
|
12947
|
+
/**
|
|
12948
|
+
* Number of high-severity findings in this group, after the baseline
|
|
12949
|
+
* filter and before `--top`. The project `summary.severity_high_count`
|
|
12950
|
+
* counts before the baseline filter, so with `--baseline` the group
|
|
12951
|
+
* counts can add up to less.
|
|
12952
|
+
*/
|
|
12953
|
+
severity_high_count: number
|
|
12954
|
+
/**
|
|
12955
|
+
* Number of moderate-severity findings in this group, after the baseline
|
|
12956
|
+
* filter and before `--top`. The project `summary.severity_moderate_count`
|
|
12957
|
+
* counts before the baseline filter, so with `--baseline` the group
|
|
12958
|
+
* counts can add up to less.
|
|
12959
|
+
*/
|
|
12960
|
+
severity_moderate_count: number
|
|
12961
|
+
/**
|
|
12962
|
+
* Number of ranked hotspot entries in this group, before `--top`. This
|
|
12963
|
+
* is the length of the group's ranked hotspot list. It is not
|
|
12964
|
+
* `vital_signs.hotspot_count`, which counts only the files with a
|
|
12965
|
+
* hotspot score of 50 or more and feeds the health score.
|
|
12966
|
+
*/
|
|
12967
|
+
hotspot_count: number
|
|
12037
12968
|
/**
|
|
12038
12969
|
* Whether CRAP findings in this group share a single coverage-source kind
|
|
12039
12970
|
* (`uniform`) or combine Istanbul / estimated / inherited sources
|
|
@@ -12047,9 +12978,24 @@ coverage_source_consistency?: (CoverageSourceConsistency | null)
|
|
|
12047
12978
|
vital_signs?: (VitalSigns | null)
|
|
12048
12979
|
/**
|
|
12049
12980
|
* Per-group health score recomputed from the per-group vital signs. Absent
|
|
12050
|
-
* when --score was not requested.
|
|
12981
|
+
* when --score was not requested. The duplication penalty counts each
|
|
12982
|
+
* clone group with two or more instances in total and one or more in
|
|
12983
|
+
* this group, and counts only the lines of the instances in this group.
|
|
12984
|
+
* A clone that spans two groups thus lowers the score of each group.
|
|
12985
|
+
* `dupes --group-by` assigns each clone group to one owner instead.
|
|
12051
12986
|
*/
|
|
12052
12987
|
health_score?: (HealthScore | null)
|
|
12988
|
+
/**
|
|
12989
|
+
* Trend of this group against the same group in the baseline snapshot.
|
|
12990
|
+
* Present only when `--trend` or `--trend-from` was requested and the
|
|
12991
|
+
* baseline holds this group with the same `grouped_by` mode.
|
|
12992
|
+
*/
|
|
12993
|
+
trend?: (HealthTrend | null)
|
|
12994
|
+
/**
|
|
12995
|
+
* Why `trend` is present or absent. Present only when a trend was
|
|
12996
|
+
* requested and a baseline snapshot was loaded.
|
|
12997
|
+
*/
|
|
12998
|
+
trend_status?: (GroupTrendStatus | null)
|
|
12053
12999
|
/**
|
|
12054
13000
|
* Findings restricted to files in this group. Each entry is the typed
|
|
12055
13001
|
* [`HealthFinding`] wrapper around a
|
|
@@ -12164,9 +13110,10 @@ baseline_staleness?: (BaselineStaleness | null)
|
|
|
12164
13110
|
/**
|
|
12165
13111
|
* The verdict of every gate this run armed, keyed by name, absent when
|
|
12166
13112
|
* it armed none. `dupes` has no default exit rule: a run with no armed
|
|
12167
|
-
* gate always exits 0, so an absent object means that the run passed.
|
|
12168
|
-
*
|
|
12169
|
-
*
|
|
13113
|
+
* gate always exits 0, so an absent object means that the run passed.
|
|
13114
|
+
* `--fail-on-issues` and `--ci` arm `duplication-findings`, which fails
|
|
13115
|
+
* on any clone group. A gate fails the build when `status` is `fail` AND
|
|
13116
|
+
* `enforced` is true. See [`crate::GateOutcomes`].
|
|
12170
13117
|
*/
|
|
12171
13118
|
gate_outcomes?: (GateOutcomes | null)
|
|
12172
13119
|
/**
|
|
@@ -12179,6 +13126,10 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
12179
13126
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
12180
13127
|
*/
|
|
12181
13128
|
request_outcomes?: (RequestOutcomes | null)
|
|
13129
|
+
/**
|
|
13130
|
+
* Applied package Git refs, omitted outside package-baseline runs.
|
|
13131
|
+
*/
|
|
13132
|
+
package_baselines?: PackageBaselineStatus[]
|
|
12182
13133
|
/**
|
|
12183
13134
|
* `_meta` block with metric / rule definitions, emitted when `--explain`
|
|
12184
13135
|
* is passed (always present in MCP responses).
|
|
@@ -12310,6 +13261,15 @@ end_col: number
|
|
|
12310
13261
|
* wants the source reads it from the file.
|
|
12311
13262
|
*/
|
|
12312
13263
|
fragment?: string
|
|
13264
|
+
/**
|
|
13265
|
+
* Whether the file path is a symlink, or lies under a symlinked
|
|
13266
|
+
* directory, inside the project root. Omitted when `false`.
|
|
13267
|
+
*
|
|
13268
|
+
* A clone with a symlinked instance can be the same file under two
|
|
13269
|
+
* paths, not copied code. `duplicates.ignoreSymlinks` (or
|
|
13270
|
+
* `fallow dupes --ignore-symlinks`) removes these instances.
|
|
13271
|
+
*/
|
|
13272
|
+
is_symlink?: boolean
|
|
12313
13273
|
/**
|
|
12314
13274
|
* Resolver key for this specific instance (per-instance, not the
|
|
12315
13275
|
* group-level largest-owner).
|
|
@@ -12337,6 +13297,14 @@ total_issues: number
|
|
|
12337
13297
|
* One bucket per resolver key.
|
|
12338
13298
|
*/
|
|
12339
13299
|
groups: CheckGroupedEntry[]
|
|
13300
|
+
/**
|
|
13301
|
+
* `true` when the `unused-load-data-key` detector abstained for the whole
|
|
13302
|
+
* project. The abstain has no file, so it is on the root and not in a
|
|
13303
|
+
* group. An empty `unused_load_data_keys` with this flag set does not
|
|
13304
|
+
* mean the project is clean: the rule could not run safely. Serialized
|
|
13305
|
+
* only when `true`, like the flat `CheckOutput` field.
|
|
13306
|
+
*/
|
|
13307
|
+
unused_load_data_keys_global_abstain?: boolean
|
|
12340
13308
|
/**
|
|
12341
13309
|
* This run's view of the loaded baseline, present only in baseline runs.
|
|
12342
13310
|
* Carries the staleness counts, the advisory verdict and `gate_trips`, the
|
|
@@ -12346,6 +13314,14 @@ groups: CheckGroupedEntry[]
|
|
|
12346
13314
|
* can report `matched_entries: 0` on a healthy baseline.
|
|
12347
13315
|
*/
|
|
12348
13316
|
baseline_staleness?: (BaselineStaleness | null)
|
|
13317
|
+
/**
|
|
13318
|
+
* The answer to `--finding-id`, present only when the run received one
|
|
13319
|
+
* or more `--finding-id` values. The report then holds only the
|
|
13320
|
+
* requested findings. Read `missing` as resolved only when `conclusive`
|
|
13321
|
+
* is true; a scope, a baseline or a filter can hide a finding that still
|
|
13322
|
+
* exists. See [`crate::FindingIdQuery`].
|
|
13323
|
+
*/
|
|
13324
|
+
finding_id_query?: (FindingIdQuery | null)
|
|
12349
13325
|
/**
|
|
12350
13326
|
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
12351
13327
|
* always emits it, with the command's default exit rule in it also when
|
|
@@ -12366,6 +13342,10 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
12366
13342
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
12367
13343
|
*/
|
|
12368
13344
|
request_outcomes?: (RequestOutcomes | null)
|
|
13345
|
+
/**
|
|
13346
|
+
* Applied package Git refs, omitted outside package-baseline runs.
|
|
13347
|
+
*/
|
|
13348
|
+
package_baselines?: PackageBaselineStatus[]
|
|
12369
13349
|
/**
|
|
12370
13350
|
* `_meta` block with docs and rule definitions, when `--explain` was
|
|
12371
13351
|
* passed.
|
|
@@ -12525,6 +13505,12 @@ circular_dependencies: CircularDependencyFinding[]
|
|
|
12525
13505
|
* suppression breaks the cycle).
|
|
12526
13506
|
*/
|
|
12527
13507
|
re_export_cycles?: ReExportCycleFinding[]
|
|
13508
|
+
/**
|
|
13509
|
+
* Dependency cycles between workspace packages, built from resolved
|
|
13510
|
+
* cross-package imports. Wrapped in [`PackageCycleFinding`] so each
|
|
13511
|
+
* entry carries a typed `actions` array natively.
|
|
13512
|
+
*/
|
|
13513
|
+
package_cycles?: PackageCycleFinding[]
|
|
12528
13514
|
/**
|
|
12529
13515
|
* Imports that cross architecture boundary rules. Wrapped in
|
|
12530
13516
|
* [`BoundaryViolationFinding`] so each entry carries a typed `actions`
|
|
@@ -12657,6 +13643,10 @@ dynamic_segment_name_conflicts?: DynamicSegmentNameConflictFinding[]
|
|
|
12657
13643
|
* array natively. Default severity is `warn`.
|
|
12658
13644
|
*/
|
|
12659
13645
|
unused_component_props?: UnusedComponentPropFinding[]
|
|
13646
|
+
/**
|
|
13647
|
+
* Used optional component inputs absent from inspected reachable callers. Off by default.
|
|
13648
|
+
*/
|
|
13649
|
+
absent_component_props?: AbsentComponentPropFinding[]
|
|
12660
13650
|
/**
|
|
12661
13651
|
* Vue `<script setup>` `defineEmits` events emitted nowhere in their own SFC
|
|
12662
13652
|
* (no `emit('<name>')` call). Wrapped in [`UnusedComponentEmitFinding`] so
|
|
@@ -13993,9 +14983,13 @@ elapsed_ms: ElapsedMs
|
|
|
13993
14983
|
/**
|
|
13994
14984
|
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
13995
14985
|
* always emits it, with the default exit rule of each section that ran
|
|
13996
|
-
* (`error-severity-findings`, `health-findings`).
|
|
13997
|
-
*
|
|
13998
|
-
*
|
|
14986
|
+
* (`error-severity-findings`, `health-findings`). Without
|
|
14987
|
+
* `--fail-on-issues` or `--ci`, the machine formats of the combined run
|
|
14988
|
+
* exit 0 for findings, so most entries have `enforced: false`. With one of
|
|
14989
|
+
* these flags, the findings rules and `duplication-threshold` are
|
|
14990
|
+
* `enforced`, the dupes section adds an enforced `duplication-findings`
|
|
14991
|
+
* entry, and every format exits 1 when one fails. For the default
|
|
14992
|
+
* exit rules (`error-severity-findings`,
|
|
13999
14993
|
* `health-findings`), `status` gives the verdict of the human run. An
|
|
14000
14994
|
* advisory entry can report `fail` without a failure of the human run: an
|
|
14001
14995
|
* example is a `stale-baseline` entry that `--fail-on-stale-baseline` did
|
|
@@ -14014,6 +15008,11 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
14014
15008
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
14015
15009
|
*/
|
|
14016
15010
|
request_outcomes?: (RequestOutcomes | null)
|
|
15011
|
+
/**
|
|
15012
|
+
* Applied package Git refs of the `check` and `dupes` sections. The map
|
|
15013
|
+
* does not narrow the `health` section.
|
|
15014
|
+
*/
|
|
15015
|
+
package_baselines?: PackageBaselineStatus[]
|
|
14017
15016
|
/**
|
|
14018
15017
|
* Per-section `_meta` blocks, when `--explain` was passed.
|
|
14019
15018
|
*/
|
|
@@ -16952,6 +17951,16 @@ export type EmptyCatalogGroup = EmptyCatalogGroupFinding;
|
|
|
16952
17951
|
*/
|
|
16953
17952
|
export type MisconfiguredDependencyOverride = MisconfiguredDependencyOverrideFinding;
|
|
16954
17953
|
|
|
17954
|
+
/**
|
|
17955
|
+
* Backwards-compat alias for the pre-#384 bare `PackageCycle` name.
|
|
17956
|
+
* The wire shape is byte-identical: `PackageCycleFinding` flattens the bare
|
|
17957
|
+
* finding's fields via `#[serde(flatten)]` and adds `actions[]` plus
|
|
17958
|
+
* the optional audit-mode `introduced` flag. Consumers that imported
|
|
17959
|
+
* `PackageCycle` from `fallow/types` pre-migration continue to work via
|
|
17960
|
+
* this alias; new code should prefer `PackageCycleFinding`.
|
|
17961
|
+
*/
|
|
17962
|
+
export type PackageCycle = PackageCycleFinding;
|
|
17963
|
+
|
|
16955
17964
|
/**
|
|
16956
17965
|
* Backwards-compat alias for the pre-#384 bare `PrivateTypeLeak` name.
|
|
16957
17966
|
* The wire shape is byte-identical: `PrivateTypeLeakFinding` flattens the bare
|