fallow 3.29.0 → 3.31.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 +2 -4
- package/capabilities.json +288 -49
- package/issue-registry.json +106 -37
- package/package.json +12 -11
- package/schema.json +67 -7
- package/skills/fallow/SKILL.md +4 -2
- package/skills/fallow/references/cli-reference.md +54 -18
- package/skills/fallow/references/gotchas.md +24 -0
- package/skills/fallow/references/issue-types.md +3 -1
- package/skills/fallow/references/mcp.md +32 -2
- package/types/output-contract.d.ts +1133 -15
|
@@ -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
|
|
@@ -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
|
*/
|
|
@@ -731,6 +739,27 @@ reason: string
|
|
|
731
739
|
kind: "plugin-effect-not-modeled"
|
|
732
740
|
} | {
|
|
733
741
|
kind: "coverage-auto-detected"
|
|
742
|
+
} | {
|
|
743
|
+
kind: "flag-age-shallow-clone"
|
|
744
|
+
} | {
|
|
745
|
+
/**
|
|
746
|
+
* Why no history is available, as a kebab-case token:
|
|
747
|
+
* `not-a-repository` or `no-commits`. The set is open.
|
|
748
|
+
*/
|
|
749
|
+
cause: string
|
|
750
|
+
kind: "flag-age-unavailable"
|
|
751
|
+
} | {
|
|
752
|
+
/**
|
|
753
|
+
* The `ignoreDependencies` entry, as written in the config.
|
|
754
|
+
*/
|
|
755
|
+
pattern: string
|
|
756
|
+
kind: "ignore-dependencies-glob-unmatched"
|
|
757
|
+
} | {
|
|
758
|
+
/**
|
|
759
|
+
* The `ignoreFindings` entry, as written in the config.
|
|
760
|
+
*/
|
|
761
|
+
pattern: string
|
|
762
|
+
kind: "ignore-findings-pattern-unmatched"
|
|
734
763
|
})
|
|
735
764
|
/**
|
|
736
765
|
* Discriminant for [`CloneGroupAction::kind`]. Mirrors the action types
|
|
@@ -905,6 +934,11 @@ export type RuntimeCoverageVerdict = ("safe_to_delete" | "review_required" | "co
|
|
|
905
934
|
* Confidence level for a runtime coverage finding.
|
|
906
935
|
*/
|
|
907
936
|
export type RuntimeCoverageConfidence = ("very_high" | "high" | "medium" | "low" | "none" | "unknown")
|
|
937
|
+
/**
|
|
938
|
+
* The per-call cost that `optimization_target.cost_score` multiplies with
|
|
939
|
+
* `invocations`.
|
|
940
|
+
*/
|
|
941
|
+
export type RuntimeCoverageCostBasis = ("inner_iterations" | "cognitive")
|
|
908
942
|
/**
|
|
909
943
|
* Blast-radius risk band. The current thresholds are high at >=20 static
|
|
910
944
|
* callers or >=1,000,000 traffic-weighted caller reach; medium at >=5 callers
|
|
@@ -1301,6 +1335,30 @@ export type FeatureFlagConfidence = ("high" | "medium" | "low")
|
|
|
1301
1335
|
* Feature flag action discriminants.
|
|
1302
1336
|
*/
|
|
1303
1337
|
export type FeatureFlagActionType = ("investigate-flag" | "suppress-line")
|
|
1338
|
+
/**
|
|
1339
|
+
* How the report measures the age of a flag.
|
|
1340
|
+
*/
|
|
1341
|
+
export type FlagAgeMode = ("blame" | "pickaxe" | "off")
|
|
1342
|
+
/**
|
|
1343
|
+
* How a retirement row's flag was detected.
|
|
1344
|
+
*/
|
|
1345
|
+
export type RetirementFlagKind = ("environment_variable" | "sdk_call" | "config_object" | "constant" | "vendor_export")
|
|
1346
|
+
/**
|
|
1347
|
+
* What a site does with the flag.
|
|
1348
|
+
*/
|
|
1349
|
+
export type FlagSiteRole = ("read" | "definition")
|
|
1350
|
+
/**
|
|
1351
|
+
* Why a flag is a retirement candidate.
|
|
1352
|
+
*/
|
|
1353
|
+
export type RetirementReason = ("single-read-site" | "test-only" | "literal-constant" | "identical-branches" | "empty-branch" | "guards-dead-code" | "defined-never-read" | "fully-rolled-out" | "archived-in-vendor" | "missing-in-vendor" | "vendor-only")
|
|
1354
|
+
/**
|
|
1355
|
+
* Action discriminants for a retirement row.
|
|
1356
|
+
*/
|
|
1357
|
+
export type RetirementActionType = "review-retirement"
|
|
1358
|
+
/**
|
|
1359
|
+
* State of a flag in a `--flag-state` vendor export.
|
|
1360
|
+
*/
|
|
1361
|
+
export type VendorFlagState = ("on" | "off" | "rolled_out" | "archived" | "experiment")
|
|
1304
1362
|
/**
|
|
1305
1363
|
* Independently-versioned wire-version newtype for the brief envelope.
|
|
1306
1364
|
* Serializes as the integer `REVIEW_BRIEF_SCHEMA_VERSION`.
|
|
@@ -1629,7 +1687,7 @@ duplication_demoted: number
|
|
|
1629
1687
|
* gate and leaves the object absent.
|
|
1630
1688
|
*
|
|
1631
1689
|
* The names this build can emit are `error-severity-findings`, `regression`,
|
|
1632
|
-
* `stale-baseline`, `duplication-threshold`, `health-min-score`,
|
|
1690
|
+
* `stale-baseline`, `baseline-growth`, `duplication-threshold`, `health-min-score`,
|
|
1633
1691
|
* `health-min-severity`, `health-findings`, `health-coverage-gaps`,
|
|
1634
1692
|
* `health-runtime-coverage`, `security`, `security-advisory`, `audit-verdict`,
|
|
1635
1693
|
* `type-aware-require` and `parse-error`. The set is OPEN: a name a consumer does not
|
|
@@ -1661,7 +1719,7 @@ status: GateStatus
|
|
|
1661
1719
|
* True when a `fail` from this gate makes the run exit non-zero. False
|
|
1662
1720
|
* when the verdict is published for information only: the gate was never
|
|
1663
1721
|
* armed, the run was told never to fail, or the combined machine formats
|
|
1664
|
-
* exit 0 for the gate.
|
|
1722
|
+
* exit 0 for the gate (bare `fallow` without `--fail-on-issues`).
|
|
1665
1723
|
*/
|
|
1666
1724
|
enforced: boolean
|
|
1667
1725
|
/**
|
|
@@ -2780,6 +2838,12 @@ circular_dependencies: CircularDependencyFinding[]
|
|
|
2780
2838
|
* suppression breaks the cycle).
|
|
2781
2839
|
*/
|
|
2782
2840
|
re_export_cycles?: ReExportCycleFinding[]
|
|
2841
|
+
/**
|
|
2842
|
+
* Dependency cycles between workspace packages, built from resolved
|
|
2843
|
+
* cross-package imports. Wrapped in [`PackageCycleFinding`] so each
|
|
2844
|
+
* entry carries a typed `actions` array natively.
|
|
2845
|
+
*/
|
|
2846
|
+
package_cycles?: PackageCycleFinding[]
|
|
2783
2847
|
/**
|
|
2784
2848
|
* Imports that cross architecture boundary rules. Wrapped in
|
|
2785
2849
|
* [`BoundaryViolationFinding`] so each entry carries a typed `actions`
|
|
@@ -3008,6 +3072,14 @@ baseline?: (BaselineMatch | null)
|
|
|
3008
3072
|
* can report `matched_entries: 0` on a healthy baseline.
|
|
3009
3073
|
*/
|
|
3010
3074
|
baseline_staleness?: (BaselineStaleness | null)
|
|
3075
|
+
/**
|
|
3076
|
+
* The answer to `--finding-id`, present only when the run received one
|
|
3077
|
+
* or more `--finding-id` values. The report then holds only the
|
|
3078
|
+
* requested findings. Read `missing` as resolved only when `conclusive`
|
|
3079
|
+
* is true; a scope, a baseline or a filter can hide a finding that still
|
|
3080
|
+
* exists. See [`crate::FindingIdQuery`].
|
|
3081
|
+
*/
|
|
3082
|
+
finding_id_query?: (FindingIdQuery | null)
|
|
3011
3083
|
/**
|
|
3012
3084
|
* Regression verdict against the baseline, in `--fail-on-regression` runs.
|
|
3013
3085
|
*/
|
|
@@ -3032,6 +3104,11 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
3032
3104
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
3033
3105
|
*/
|
|
3034
3106
|
request_outcomes?: (RequestOutcomes | null)
|
|
3107
|
+
/**
|
|
3108
|
+
* Applied Git refs for exact workspace packages. Absent when no package
|
|
3109
|
+
* baselines were selected, including runs with a global changed-since ref.
|
|
3110
|
+
*/
|
|
3111
|
+
package_baselines?: PackageBaselineStatus[]
|
|
3035
3112
|
/**
|
|
3036
3113
|
* `_meta` block with docs and rule definitions, when `--explain` was
|
|
3037
3114
|
* passed.
|
|
@@ -3052,7 +3129,10 @@ _meta?: (Meta | null)
|
|
|
3052
3129
|
* detectors: `malformed-pnpm-workspace-yaml`,
|
|
3053
3130
|
* `bun-lockb-override-resolution-skipped`;
|
|
3054
3131
|
* - framework plugins, while they read their own build configs:
|
|
3055
|
-
* `plugin-config-unreadable`, `plugin-effect-not-modeled
|
|
3132
|
+
* `plugin-config-unreadable`, `plugin-effect-not-modeled`;
|
|
3133
|
+
* - the dead-code result, for config patterns that matched nothing:
|
|
3134
|
+
* `ignore-dependencies-glob-unmatched`,
|
|
3135
|
+
* `ignore-findings-pattern-unmatched`.
|
|
3056
3136
|
*
|
|
3057
3137
|
* Analysis-stage and plugin-stage kinds therefore reach only the envelopes
|
|
3058
3138
|
* whose run includes a dead-code analyze pass, never a standalone
|
|
@@ -3234,6 +3314,10 @@ circular_dependencies: number
|
|
|
3234
3314
|
* re-exporting from each other in a loop).
|
|
3235
3315
|
*/
|
|
3236
3316
|
re_export_cycles?: number
|
|
3317
|
+
/**
|
|
3318
|
+
* Dependency cycles between workspace packages.
|
|
3319
|
+
*/
|
|
3320
|
+
package_cycles?: number
|
|
3237
3321
|
/**
|
|
3238
3322
|
* Imports that cross architecture boundary rules.
|
|
3239
3323
|
*/
|
|
@@ -3313,6 +3397,14 @@ export interface UnusedFileFinding {
|
|
|
3313
3397
|
* Absolute path to the unused file.
|
|
3314
3398
|
*/
|
|
3315
3399
|
path: string
|
|
3400
|
+
/**
|
|
3401
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3402
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3403
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3404
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3405
|
+
* new id. Absent in output from older versions.
|
|
3406
|
+
*/
|
|
3407
|
+
finding_id?: (string | null)
|
|
3316
3408
|
/**
|
|
3317
3409
|
* Suggested next steps: a `delete-file` primary and a `suppress-file`
|
|
3318
3410
|
* secondary. Always emitted (possibly empty for forward-compat).
|
|
@@ -3544,6 +3636,14 @@ deprecated?: boolean
|
|
|
3544
3636
|
* not deprecated or the tag carries no text.
|
|
3545
3637
|
*/
|
|
3546
3638
|
deprecated_reason?: (string | null)
|
|
3639
|
+
/**
|
|
3640
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3641
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3642
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3643
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3644
|
+
* new id. Absent in output from older versions.
|
|
3645
|
+
*/
|
|
3646
|
+
finding_id?: (string | null)
|
|
3547
3647
|
/**
|
|
3548
3648
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3549
3649
|
* forward-compat).
|
|
@@ -3619,6 +3719,14 @@ deprecated?: boolean
|
|
|
3619
3719
|
* not deprecated or the tag carries no text.
|
|
3620
3720
|
*/
|
|
3621
3721
|
deprecated_reason?: (string | null)
|
|
3722
|
+
/**
|
|
3723
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3724
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3725
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3726
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3727
|
+
* new id. Absent in output from older versions.
|
|
3728
|
+
*/
|
|
3729
|
+
finding_id?: (string | null)
|
|
3622
3730
|
/**
|
|
3623
3731
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3624
3732
|
* forward-compat).
|
|
@@ -3684,6 +3792,14 @@ span_start: number
|
|
|
3684
3792
|
* package-public leak across files or re-exports.
|
|
3685
3793
|
*/
|
|
3686
3794
|
semantic?: (SemanticPrivateTypeLeak | null)
|
|
3795
|
+
/**
|
|
3796
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3797
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3798
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3799
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3800
|
+
* new id. Absent in output from older versions.
|
|
3801
|
+
*/
|
|
3802
|
+
finding_id?: (string | null)
|
|
3687
3803
|
/**
|
|
3688
3804
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3689
3805
|
* forward-compat).
|
|
@@ -3756,6 +3872,14 @@ consumers: DeprecatedExportConsumer[]
|
|
|
3756
3872
|
* are not visible, so the finding makes no removal claim.
|
|
3757
3873
|
*/
|
|
3758
3874
|
public_api: boolean
|
|
3875
|
+
/**
|
|
3876
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3877
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3878
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3879
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3880
|
+
* new id. Absent in output from older versions.
|
|
3881
|
+
*/
|
|
3882
|
+
finding_id?: (string | null)
|
|
3759
3883
|
/**
|
|
3760
3884
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3761
3885
|
* forward-compat).
|
|
@@ -3818,6 +3942,14 @@ line: number
|
|
|
3818
3942
|
* Workspace roots that import this package even though the declaring workspace does not.
|
|
3819
3943
|
*/
|
|
3820
3944
|
used_in_workspaces?: string[]
|
|
3945
|
+
/**
|
|
3946
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
3947
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
3948
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
3949
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
3950
|
+
* new id. Absent in output from older versions.
|
|
3951
|
+
*/
|
|
3952
|
+
finding_id?: (string | null)
|
|
3821
3953
|
/**
|
|
3822
3954
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3823
3955
|
* forward-compat).
|
|
@@ -3871,6 +4003,14 @@ line: number
|
|
|
3871
4003
|
* Workspace roots that import this package even though the declaring workspace does not.
|
|
3872
4004
|
*/
|
|
3873
4005
|
used_in_workspaces?: string[]
|
|
4006
|
+
/**
|
|
4007
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4008
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4009
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4010
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4011
|
+
* new id. Absent in output from older versions.
|
|
4012
|
+
*/
|
|
4013
|
+
finding_id?: (string | null)
|
|
3874
4014
|
/**
|
|
3875
4015
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3876
4016
|
* forward-compat).
|
|
@@ -3924,6 +4064,14 @@ line: number
|
|
|
3924
4064
|
* Workspace roots that import this package even though the declaring workspace does not.
|
|
3925
4065
|
*/
|
|
3926
4066
|
used_in_workspaces?: string[]
|
|
4067
|
+
/**
|
|
4068
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4069
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4070
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4071
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4072
|
+
* new id. Absent in output from older versions.
|
|
4073
|
+
*/
|
|
4074
|
+
finding_id?: (string | null)
|
|
3927
4075
|
/**
|
|
3928
4076
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3929
4077
|
* forward-compat).
|
|
@@ -3977,6 +4125,14 @@ line: number
|
|
|
3977
4125
|
* 0-based byte column offset.
|
|
3978
4126
|
*/
|
|
3979
4127
|
col: number
|
|
4128
|
+
/**
|
|
4129
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4130
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4131
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4132
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4133
|
+
* new id. Absent in output from older versions.
|
|
4134
|
+
*/
|
|
4135
|
+
finding_id?: (string | null)
|
|
3980
4136
|
/**
|
|
3981
4137
|
* Suggested next steps. Always emitted (possibly empty for
|
|
3982
4138
|
* forward-compat).
|
|
@@ -4032,6 +4188,14 @@ line: number
|
|
|
4032
4188
|
* 0-based byte column offset.
|
|
4033
4189
|
*/
|
|
4034
4190
|
col: number
|
|
4191
|
+
/**
|
|
4192
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4193
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4194
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4195
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4196
|
+
* new id. Absent in output from older versions.
|
|
4197
|
+
*/
|
|
4198
|
+
finding_id?: (string | null)
|
|
4035
4199
|
/**
|
|
4036
4200
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4037
4201
|
* forward-compat).
|
|
@@ -4096,6 +4260,14 @@ line: number
|
|
|
4096
4260
|
* 0-based byte column offset.
|
|
4097
4261
|
*/
|
|
4098
4262
|
col: number
|
|
4263
|
+
/**
|
|
4264
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4265
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4266
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4267
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4268
|
+
* new id. Absent in output from older versions.
|
|
4269
|
+
*/
|
|
4270
|
+
finding_id?: (string | null)
|
|
4099
4271
|
/**
|
|
4100
4272
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4101
4273
|
* forward-compat).
|
|
@@ -4153,6 +4325,14 @@ col: number
|
|
|
4153
4325
|
* Used by the LSP to underline just the specifier, not the entire import line.
|
|
4154
4326
|
*/
|
|
4155
4327
|
specifier_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)
|
|
4156
4336
|
/**
|
|
4157
4337
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4158
4338
|
* forward-compat).
|
|
@@ -4186,6 +4366,14 @@ package_name: string
|
|
|
4186
4366
|
* Import sites where this unlisted dependency is used (file path, line, column).
|
|
4187
4367
|
*/
|
|
4188
4368
|
imported_from: ImportSite[]
|
|
4369
|
+
/**
|
|
4370
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4371
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4372
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4373
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4374
|
+
* new id. Absent in output from older versions.
|
|
4375
|
+
*/
|
|
4376
|
+
finding_id?: (string | null)
|
|
4189
4377
|
/**
|
|
4190
4378
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4191
4379
|
* forward-compat).
|
|
@@ -4243,6 +4431,14 @@ export_name: string
|
|
|
4243
4431
|
* Locations where this export name appears.
|
|
4244
4432
|
*/
|
|
4245
4433
|
locations: DuplicateLocation[]
|
|
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)
|
|
4246
4442
|
/**
|
|
4247
4443
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4248
4444
|
* forward-compat).
|
|
@@ -4296,6 +4492,14 @@ path: string
|
|
|
4296
4492
|
* 1-based line number of the dependency entry in package.json.
|
|
4297
4493
|
*/
|
|
4298
4494
|
line: number
|
|
4495
|
+
/**
|
|
4496
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4497
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4498
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4499
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4500
|
+
* new id. Absent in output from older versions.
|
|
4501
|
+
*/
|
|
4502
|
+
finding_id?: (string | null)
|
|
4299
4503
|
/**
|
|
4300
4504
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4301
4505
|
* forward-compat).
|
|
@@ -4333,6 +4537,14 @@ path: string
|
|
|
4333
4537
|
* 1-based line number of the dependency entry in package.json.
|
|
4334
4538
|
*/
|
|
4335
4539
|
line: number
|
|
4540
|
+
/**
|
|
4541
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4542
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4543
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4544
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4545
|
+
* new id. Absent in output from older versions.
|
|
4546
|
+
*/
|
|
4547
|
+
finding_id?: (string | null)
|
|
4336
4548
|
/**
|
|
4337
4549
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4338
4550
|
* forward-compat).
|
|
@@ -4371,6 +4583,14 @@ path: string
|
|
|
4371
4583
|
* 1-based line number of the dependency entry in package.json.
|
|
4372
4584
|
*/
|
|
4373
4585
|
line: number
|
|
4586
|
+
/**
|
|
4587
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4588
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4589
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4590
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4591
|
+
* new id. Absent in output from older versions.
|
|
4592
|
+
*/
|
|
4593
|
+
finding_id?: (string | null)
|
|
4374
4594
|
/**
|
|
4375
4595
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4376
4596
|
* forward-compat).
|
|
@@ -4425,6 +4645,14 @@ edges?: CircularDependencyEdge[]
|
|
|
4425
4645
|
* Whether this cycle crosses workspace package boundaries.
|
|
4426
4646
|
*/
|
|
4427
4647
|
is_cross_package?: boolean
|
|
4648
|
+
/**
|
|
4649
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4650
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4651
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4652
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4653
|
+
* new id. Absent in output from older versions.
|
|
4654
|
+
*/
|
|
4655
|
+
finding_id?: (string | null)
|
|
4428
4656
|
/**
|
|
4429
4657
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4430
4658
|
* forward-compat).
|
|
@@ -4487,6 +4715,14 @@ export interface ReExportCycleFinding {
|
|
|
4487
4715
|
*/
|
|
4488
4716
|
files: string[]
|
|
4489
4717
|
kind: ReExportCycleKind
|
|
4718
|
+
/**
|
|
4719
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4720
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4721
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4722
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4723
|
+
* new id. Absent in output from older versions.
|
|
4724
|
+
*/
|
|
4725
|
+
finding_id?: (string | null)
|
|
4490
4726
|
/**
|
|
4491
4727
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4492
4728
|
* forward-compat).
|
|
@@ -4505,6 +4741,109 @@ introduced?: (AuditIntroduced | null)
|
|
|
4505
4741
|
*/
|
|
4506
4742
|
effective_severity?: (EffectiveSeverity | null)
|
|
4507
4743
|
}
|
|
4744
|
+
/**
|
|
4745
|
+
* Wire-shape envelope for a [`PackageCycle`] finding. Mirrors
|
|
4746
|
+
* [`CircularDependencyFinding`]: flattens the bare finding and carries a
|
|
4747
|
+
* typed `actions` array (`refactor-cycle` primary plus `suppress-line`
|
|
4748
|
+
* secondary).
|
|
4749
|
+
*/
|
|
4750
|
+
export interface PackageCycleFinding {
|
|
4751
|
+
/**
|
|
4752
|
+
* Workspace package labels in cycle order. The first entry is the
|
|
4753
|
+
* lexicographically smallest label; the last entry imports the first.
|
|
4754
|
+
* A label is the package name. When two or more workspace packages
|
|
4755
|
+
* share a name, the label is `name (root)` with the project-relative
|
|
4756
|
+
* package root, so that each label names one package.
|
|
4757
|
+
*/
|
|
4758
|
+
packages: string[]
|
|
4759
|
+
/**
|
|
4760
|
+
* Package root directories in cycle order: `package_roots[i]` is the
|
|
4761
|
+
* root of `packages[i]`.
|
|
4762
|
+
*/
|
|
4763
|
+
package_roots: string[]
|
|
4764
|
+
/**
|
|
4765
|
+
* Number of packages in the cycle.
|
|
4766
|
+
*/
|
|
4767
|
+
length: number
|
|
4768
|
+
/**
|
|
4769
|
+
* One example import per hop, in cycle order: `edges[i]` goes from
|
|
4770
|
+
* `packages[i]` to `packages[(i + 1) % length]`.
|
|
4771
|
+
*/
|
|
4772
|
+
edges: PackageCycleEdge[]
|
|
4773
|
+
/**
|
|
4774
|
+
* True when the group of packages that holds this cycle has more
|
|
4775
|
+
* cycles than fallow lists. The listing stops at 20 cycles per group,
|
|
4776
|
+
* or earlier on a very dense package graph. Break a listed cycle and
|
|
4777
|
+
* run again to see the rest.
|
|
4778
|
+
*/
|
|
4779
|
+
group_truncated: boolean
|
|
4780
|
+
/**
|
|
4781
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4782
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4783
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4784
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4785
|
+
* new id. Absent in output from older versions.
|
|
4786
|
+
*/
|
|
4787
|
+
finding_id?: (string | null)
|
|
4788
|
+
/**
|
|
4789
|
+
* Suggested next steps. Always emitted (possibly empty for
|
|
4790
|
+
* forward-compat).
|
|
4791
|
+
*/
|
|
4792
|
+
actions: IssueAction[]
|
|
4793
|
+
/**
|
|
4794
|
+
* Set by the audit pass when this finding is introduced relative to
|
|
4795
|
+
* the merge-base.
|
|
4796
|
+
*/
|
|
4797
|
+
introduced?: (AuditIntroduced | null)
|
|
4798
|
+
/**
|
|
4799
|
+
* Gate severity of this finding after `rules` and `overrides[].rules`
|
|
4800
|
+
* resolve for its path. CI formats read it for the annotation, SARIF
|
|
4801
|
+
* and CodeClimate level. Absent in output from older versions. Not
|
|
4802
|
+
* part of the finding identity, baseline keys or fingerprints.
|
|
4803
|
+
*/
|
|
4804
|
+
effective_severity?: (EffectiveSeverity | null)
|
|
4805
|
+
}
|
|
4806
|
+
/**
|
|
4807
|
+
* One package hop in a [`PackageCycle`]: `from_package` imports
|
|
4808
|
+
* `to_package`, and `path` holds one example import for that hop.
|
|
4809
|
+
*
|
|
4810
|
+
* The example import is the first runtime import by `(path, line)`. When
|
|
4811
|
+
* every import on the hop is type-only, it is the first type-only import.
|
|
4812
|
+
*/
|
|
4813
|
+
export interface PackageCycleEdge {
|
|
4814
|
+
/**
|
|
4815
|
+
* Label of the importing workspace package, as in
|
|
4816
|
+
* [`PackageCycle::packages`].
|
|
4817
|
+
*/
|
|
4818
|
+
from_package: string
|
|
4819
|
+
/**
|
|
4820
|
+
* Label of the imported workspace package, as in
|
|
4821
|
+
* [`PackageCycle::packages`].
|
|
4822
|
+
*/
|
|
4823
|
+
to_package: string
|
|
4824
|
+
/**
|
|
4825
|
+
* File in `from_package` that holds the example import.
|
|
4826
|
+
*/
|
|
4827
|
+
path: string
|
|
4828
|
+
/**
|
|
4829
|
+
* File in `to_package` that the example import resolves to.
|
|
4830
|
+
*/
|
|
4831
|
+
target_path: string
|
|
4832
|
+
/**
|
|
4833
|
+
* 1-based line number of the example import.
|
|
4834
|
+
*/
|
|
4835
|
+
line: number
|
|
4836
|
+
/**
|
|
4837
|
+
* 0-based byte column offset of the example import.
|
|
4838
|
+
*/
|
|
4839
|
+
col: number
|
|
4840
|
+
/**
|
|
4841
|
+
* True when every import from `from_package` to `to_package` is
|
|
4842
|
+
* type-only. A type-only hop has no runtime effect, but it can still
|
|
4843
|
+
* force a build order (for example with declaration builds).
|
|
4844
|
+
*/
|
|
4845
|
+
type_only: boolean
|
|
4846
|
+
}
|
|
4508
4847
|
/**
|
|
4509
4848
|
* Wire-shape envelope for a [`BoundaryViolation`] finding. Mirrors
|
|
4510
4849
|
* [`UnusedFileFinding`]: flattens the bare finding and carries a typed
|
|
@@ -4517,7 +4856,9 @@ export interface BoundaryViolationFinding {
|
|
|
4517
4856
|
*/
|
|
4518
4857
|
from_path: string
|
|
4519
4858
|
/**
|
|
4520
|
-
* The file being imported that violates the boundary.
|
|
4859
|
+
* The file being imported that violates the boundary. When the import
|
|
4860
|
+
* goes through a re-export chain, this is the origin module that
|
|
4861
|
+
* declares the imported symbol, not the barrel.
|
|
4521
4862
|
*/
|
|
4522
4863
|
to_path: string
|
|
4523
4864
|
/**
|
|
@@ -4540,6 +4881,19 @@ line: number
|
|
|
4540
4881
|
* 0-based byte column offset of the import statement.
|
|
4541
4882
|
*/
|
|
4542
4883
|
col: number
|
|
4884
|
+
/**
|
|
4885
|
+
* The barrel file that the source file imports directly, when the
|
|
4886
|
+
* violation comes from a re-export chain. Absent for a direct import.
|
|
4887
|
+
*/
|
|
4888
|
+
via_path?: (string | null)
|
|
4889
|
+
/**
|
|
4890
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4891
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4892
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4893
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4894
|
+
* new id. Absent in output from older versions.
|
|
4895
|
+
*/
|
|
4896
|
+
finding_id?: (string | null)
|
|
4543
4897
|
/**
|
|
4544
4898
|
* Suggested next steps. Always emitted (possibly empty for
|
|
4545
4899
|
* forward-compat).
|
|
@@ -4576,6 +4930,14 @@ line: number
|
|
|
4576
4930
|
* 0-based byte column offset used for diagnostics.
|
|
4577
4931
|
*/
|
|
4578
4932
|
col: number
|
|
4933
|
+
/**
|
|
4934
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4935
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4936
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4937
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4938
|
+
* new id. Absent in output from older versions.
|
|
4939
|
+
*/
|
|
4940
|
+
finding_id?: (string | null)
|
|
4579
4941
|
/**
|
|
4580
4942
|
* Suggested next steps.
|
|
4581
4943
|
*/
|
|
@@ -4624,6 +4986,14 @@ callee: string
|
|
|
4624
4986
|
* consumers can see both the written path and the rule that fired.
|
|
4625
4987
|
*/
|
|
4626
4988
|
pattern: string
|
|
4989
|
+
/**
|
|
4990
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
4991
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
4992
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
4993
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
4994
|
+
* new id. Absent in output from older versions.
|
|
4995
|
+
*/
|
|
4996
|
+
finding_id?: (string | null)
|
|
4627
4997
|
/**
|
|
4628
4998
|
* Suggested next steps.
|
|
4629
4999
|
*/
|
|
@@ -4681,6 +5051,14 @@ severity: PolicyViolationSeverity
|
|
|
4681
5051
|
* The rule's author-provided message, when set.
|
|
4682
5052
|
*/
|
|
4683
5053
|
message?: (string | null)
|
|
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)
|
|
4684
5062
|
/**
|
|
4685
5063
|
* Suggested next steps.
|
|
4686
5064
|
*/
|
|
@@ -4713,6 +5091,14 @@ origin: SuppressionOrigin
|
|
|
4713
5091
|
* comment or tag that has no reason.
|
|
4714
5092
|
*/
|
|
4715
5093
|
missing_reason?: boolean
|
|
5094
|
+
/**
|
|
5095
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5096
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5097
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5098
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5099
|
+
* new id. Absent in output from older versions.
|
|
5100
|
+
*/
|
|
5101
|
+
finding_id?: (string | null)
|
|
4716
5102
|
/**
|
|
4717
5103
|
* Suggested next steps. Always emitted.
|
|
4718
5104
|
*/
|
|
@@ -4755,6 +5141,14 @@ line: number
|
|
|
4755
5141
|
* output.
|
|
4756
5142
|
*/
|
|
4757
5143
|
hardcoded_consumers?: string[]
|
|
5144
|
+
/**
|
|
5145
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5146
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5147
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5148
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5149
|
+
* new id. Absent in output from older versions.
|
|
5150
|
+
*/
|
|
5151
|
+
finding_id?: (string | null)
|
|
4758
5152
|
/**
|
|
4759
5153
|
* Suggested next steps. Always emitted.
|
|
4760
5154
|
*/
|
|
@@ -4790,6 +5184,14 @@ path: string
|
|
|
4790
5184
|
* 1-based line number of the empty group header within the source file.
|
|
4791
5185
|
*/
|
|
4792
5186
|
line: number
|
|
5187
|
+
/**
|
|
5188
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5189
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5190
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5191
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5192
|
+
* new id. Absent in output from older versions.
|
|
5193
|
+
*/
|
|
5194
|
+
finding_id?: (string | null)
|
|
4793
5195
|
/**
|
|
4794
5196
|
* Suggested next steps. Always emitted.
|
|
4795
5197
|
*/
|
|
@@ -4846,6 +5248,14 @@ line: number
|
|
|
4846
5248
|
* catalog or to add the entry to the named catalog.
|
|
4847
5249
|
*/
|
|
4848
5250
|
available_in_catalogs?: string[]
|
|
5251
|
+
/**
|
|
5252
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5253
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5254
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5255
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5256
|
+
* new id. Absent in output from older versions.
|
|
5257
|
+
*/
|
|
5258
|
+
finding_id?: (string | null)
|
|
4849
5259
|
/**
|
|
4850
5260
|
* Suggested next steps. Always emitted; position 0 is the discriminated
|
|
4851
5261
|
* primary (see struct docs).
|
|
@@ -4916,6 +5326,14 @@ line: number
|
|
|
4916
5326
|
* use the conservative package-manifest fallback.
|
|
4917
5327
|
*/
|
|
4918
5328
|
hint?: (string | null)
|
|
5329
|
+
/**
|
|
5330
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5331
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5332
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5333
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5334
|
+
* new id. Absent in output from older versions.
|
|
5335
|
+
*/
|
|
5336
|
+
finding_id?: (string | null)
|
|
4919
5337
|
/**
|
|
4920
5338
|
* Suggested next steps. Always emitted.
|
|
4921
5339
|
*/
|
|
@@ -4972,6 +5390,14 @@ path: string
|
|
|
4972
5390
|
* 1-based line number of the entry within the source file.
|
|
4973
5391
|
*/
|
|
4974
5392
|
line: number
|
|
5393
|
+
/**
|
|
5394
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5395
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5396
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5397
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5398
|
+
* new id. Absent in output from older versions.
|
|
5399
|
+
*/
|
|
5400
|
+
finding_id?: (string | null)
|
|
4975
5401
|
/**
|
|
4976
5402
|
* Suggested next steps. Always emitted.
|
|
4977
5403
|
*/
|
|
@@ -5019,6 +5445,14 @@ line: number
|
|
|
5019
5445
|
* 0-based byte column offset of the export.
|
|
5020
5446
|
*/
|
|
5021
5447
|
col: number
|
|
5448
|
+
/**
|
|
5449
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5450
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5451
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5452
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5453
|
+
* new id. Absent in output from older versions.
|
|
5454
|
+
*/
|
|
5455
|
+
finding_id?: (string | null)
|
|
5022
5456
|
/**
|
|
5023
5457
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5024
5458
|
* forward-compat).
|
|
@@ -5067,6 +5501,14 @@ line: number
|
|
|
5067
5501
|
* 0-based byte column offset of the barrel's first offending re-export.
|
|
5068
5502
|
*/
|
|
5069
5503
|
col: number
|
|
5504
|
+
/**
|
|
5505
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5506
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5507
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5508
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5509
|
+
* new id. Absent in output from older versions.
|
|
5510
|
+
*/
|
|
5511
|
+
finding_id?: (string | null)
|
|
5070
5512
|
/**
|
|
5071
5513
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5072
5514
|
* forward-compat).
|
|
@@ -5110,6 +5552,14 @@ line: number
|
|
|
5110
5552
|
* 0-based byte column offset of the misplaced directive statement.
|
|
5111
5553
|
*/
|
|
5112
5554
|
col: number
|
|
5555
|
+
/**
|
|
5556
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5557
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5558
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5559
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5560
|
+
* new id. Absent in output from older versions.
|
|
5561
|
+
*/
|
|
5562
|
+
finding_id?: (string | null)
|
|
5113
5563
|
/**
|
|
5114
5564
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5115
5565
|
* forward-compat).
|
|
@@ -5155,6 +5605,14 @@ line: number
|
|
|
5155
5605
|
* 0-based byte column offset of the inject / getContext call.
|
|
5156
5606
|
*/
|
|
5157
5607
|
col: number
|
|
5608
|
+
/**
|
|
5609
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5610
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5611
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5612
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5613
|
+
* new id. Absent in output from older versions.
|
|
5614
|
+
*/
|
|
5615
|
+
finding_id?: (string | null)
|
|
5158
5616
|
/**
|
|
5159
5617
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5160
5618
|
* forward-compat).
|
|
@@ -5211,6 +5669,14 @@ line: number
|
|
|
5211
5669
|
* 0-based byte column offset.
|
|
5212
5670
|
*/
|
|
5213
5671
|
col: number
|
|
5672
|
+
/**
|
|
5673
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5674
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5675
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5676
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5677
|
+
* new id. Absent in output from older versions.
|
|
5678
|
+
*/
|
|
5679
|
+
finding_id?: (string | null)
|
|
5214
5680
|
/**
|
|
5215
5681
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5216
5682
|
* forward-compat).
|
|
@@ -5260,6 +5726,14 @@ line: number
|
|
|
5260
5726
|
* 0-based byte column offset (file-level finding, always 0).
|
|
5261
5727
|
*/
|
|
5262
5728
|
col: number
|
|
5729
|
+
/**
|
|
5730
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5731
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5732
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5733
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5734
|
+
* new id. Absent in output from older versions.
|
|
5735
|
+
*/
|
|
5736
|
+
finding_id?: (string | null)
|
|
5263
5737
|
/**
|
|
5264
5738
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5265
5739
|
* forward-compat).
|
|
@@ -5313,6 +5787,14 @@ line: number
|
|
|
5313
5787
|
* 0-based byte column offset (file-level finding, always 0).
|
|
5314
5788
|
*/
|
|
5315
5789
|
col: number
|
|
5790
|
+
/**
|
|
5791
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5792
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5793
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5794
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5795
|
+
* new id. Absent in output from older versions.
|
|
5796
|
+
*/
|
|
5797
|
+
finding_id?: (string | null)
|
|
5316
5798
|
/**
|
|
5317
5799
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5318
5800
|
* forward-compat).
|
|
@@ -5358,6 +5840,14 @@ line: number
|
|
|
5358
5840
|
* 0-based byte column offset of the prop declaration.
|
|
5359
5841
|
*/
|
|
5360
5842
|
col: number
|
|
5843
|
+
/**
|
|
5844
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5845
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5846
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5847
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5848
|
+
* new id. Absent in output from older versions.
|
|
5849
|
+
*/
|
|
5850
|
+
finding_id?: (string | null)
|
|
5361
5851
|
/**
|
|
5362
5852
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5363
5853
|
* forward-compat).
|
|
@@ -5403,6 +5893,14 @@ line: number
|
|
|
5403
5893
|
* 0-based byte column offset of the emit declaration.
|
|
5404
5894
|
*/
|
|
5405
5895
|
col: number
|
|
5896
|
+
/**
|
|
5897
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5898
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5899
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5900
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5901
|
+
* new id. Absent in output from older versions.
|
|
5902
|
+
*/
|
|
5903
|
+
finding_id?: (string | null)
|
|
5406
5904
|
/**
|
|
5407
5905
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5408
5906
|
* forward-compat).
|
|
@@ -5448,6 +5946,14 @@ line: number
|
|
|
5448
5946
|
* 0-based byte column offset of the input declaration.
|
|
5449
5947
|
*/
|
|
5450
5948
|
col: number
|
|
5949
|
+
/**
|
|
5950
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
5951
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
5952
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
5953
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
5954
|
+
* new id. Absent in output from older versions.
|
|
5955
|
+
*/
|
|
5956
|
+
finding_id?: (string | null)
|
|
5451
5957
|
/**
|
|
5452
5958
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5453
5959
|
* forward-compat).
|
|
@@ -5493,6 +5999,14 @@ line: number
|
|
|
5493
5999
|
* 0-based byte column offset of the output declaration.
|
|
5494
6000
|
*/
|
|
5495
6001
|
col: number
|
|
6002
|
+
/**
|
|
6003
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6004
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6005
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6006
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6007
|
+
* new id. Absent in output from older versions.
|
|
6008
|
+
*/
|
|
6009
|
+
finding_id?: (string | null)
|
|
5496
6010
|
/**
|
|
5497
6011
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5498
6012
|
* forward-compat).
|
|
@@ -5539,6 +6053,14 @@ line: number
|
|
|
5539
6053
|
* 0-based byte column offset of the `dispatch('<name>')` call.
|
|
5540
6054
|
*/
|
|
5541
6055
|
col: number
|
|
6056
|
+
/**
|
|
6057
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6058
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6059
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6060
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6061
|
+
* new id. Absent in output from older versions.
|
|
6062
|
+
*/
|
|
6063
|
+
finding_id?: (string | null)
|
|
5542
6064
|
/**
|
|
5543
6065
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5544
6066
|
* forward-compat).
|
|
@@ -5580,6 +6102,14 @@ line: number
|
|
|
5580
6102
|
* 0-based byte column offset of the export.
|
|
5581
6103
|
*/
|
|
5582
6104
|
col: number
|
|
6105
|
+
/**
|
|
6106
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6107
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6108
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6109
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6110
|
+
* new id. Absent in output from older versions.
|
|
6111
|
+
*/
|
|
6112
|
+
finding_id?: (string | null)
|
|
5583
6113
|
/**
|
|
5584
6114
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5585
6115
|
* forward-compat).
|
|
@@ -5627,6 +6157,14 @@ col: number
|
|
|
5627
6157
|
* determinable.
|
|
5628
6158
|
*/
|
|
5629
6159
|
route_dir?: (string | null)
|
|
6160
|
+
/**
|
|
6161
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6162
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6163
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6164
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6165
|
+
* new id. Absent in output from older versions.
|
|
6166
|
+
*/
|
|
6167
|
+
finding_id?: (string | null)
|
|
5630
6168
|
/**
|
|
5631
6169
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5632
6170
|
* forward-compat).
|
|
@@ -5668,6 +6206,14 @@ depth: number
|
|
|
5668
6206
|
* finding anchor is the first hop (`path` / `line` for suppression + CI).
|
|
5669
6207
|
*/
|
|
5670
6208
|
hops: PropDrillHop[]
|
|
6209
|
+
/**
|
|
6210
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6211
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6212
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6213
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6214
|
+
* new id. Absent in output from older versions.
|
|
6215
|
+
*/
|
|
6216
|
+
finding_id?: (string | null)
|
|
5671
6217
|
/**
|
|
5672
6218
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5673
6219
|
* forward-compat).
|
|
@@ -5733,6 +6279,14 @@ component: string
|
|
|
5733
6279
|
* at the render site).
|
|
5734
6280
|
*/
|
|
5735
6281
|
child_component: string
|
|
6282
|
+
/**
|
|
6283
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6284
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6285
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6286
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6287
|
+
* new id. Absent in output from older versions.
|
|
6288
|
+
*/
|
|
6289
|
+
finding_id?: (string | null)
|
|
5736
6290
|
/**
|
|
5737
6291
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5738
6292
|
* forward-compat).
|
|
@@ -5791,6 +6345,14 @@ group_size: number
|
|
|
5791
6345
|
* here, because the group is real regardless of suppression.
|
|
5792
6346
|
*/
|
|
5793
6347
|
sharing_components: DuplicatePropShapeMember[]
|
|
6348
|
+
/**
|
|
6349
|
+
* Stable id of this finding: `dc1:<rule>:<16 hex digits>`, with a
|
|
6350
|
+
* `~<k>` suffix when several findings of one type share an identity.
|
|
6351
|
+
* Line and column are not inputs, so the id survives line shifts,
|
|
6352
|
+
* reformats and reorders. A rename of the file or the symbol gives a
|
|
6353
|
+
* new id. Absent in output from older versions.
|
|
6354
|
+
*/
|
|
6355
|
+
finding_id?: (string | null)
|
|
5794
6356
|
/**
|
|
5795
6357
|
* Suggested next steps. Always emitted (possibly empty for
|
|
5796
6358
|
* forward-compat).
|
|
@@ -5995,6 +6557,14 @@ unrecognised_format?: boolean
|
|
|
5995
6557
|
* uses the same value for its stderr note.
|
|
5996
6558
|
*/
|
|
5997
6559
|
saved_by?: string
|
|
6560
|
+
/**
|
|
6561
|
+
* `legacy` when the loaded dead-code baseline has no `identity`, so its
|
|
6562
|
+
* entries use the old key forms and some of them hold a line. The run
|
|
6563
|
+
* still applies the file. `--save-baseline` rewrites it with line-free
|
|
6564
|
+
* keys. Absent for a current baseline and on `dupes` and `health`. The
|
|
6565
|
+
* value set is OPEN.
|
|
6566
|
+
*/
|
|
6567
|
+
format?: string
|
|
5998
6568
|
/**
|
|
5999
6569
|
* Which channels narrowed this run, present and non-empty exactly when
|
|
6000
6570
|
* `change_scoped` is true. Both members are derived from one function, so
|
|
@@ -6012,6 +6582,75 @@ saved_by?: string
|
|
|
6012
6582
|
*/
|
|
6013
6583
|
scope_reasons?: ScopeReason[]
|
|
6014
6584
|
}
|
|
6585
|
+
/**
|
|
6586
|
+
* The result of a `--finding-id` query, present only when the run received
|
|
6587
|
+
* one or more `--finding-id` values.
|
|
6588
|
+
*
|
|
6589
|
+
* A requested id that is missing from a conclusive run means "fixed,
|
|
6590
|
+
* suppressed, or ignored by config", never "unknown": an inline suppression
|
|
6591
|
+
* comment or an `ignoreFindings` entry is a choice a person made to hide the
|
|
6592
|
+
* finding, so it counts as absent. A missing id in a run that is not
|
|
6593
|
+
* conclusive is unknown, never resolved.
|
|
6594
|
+
*
|
|
6595
|
+
* Every list keeps the order of `requested`. `found` and `missing` partition
|
|
6596
|
+
* `requested`. `filtered` is a subset of `missing`.
|
|
6597
|
+
*/
|
|
6598
|
+
export interface FindingIdQuery {
|
|
6599
|
+
/**
|
|
6600
|
+
* The requested ids, without duplicates, in the order of the arguments.
|
|
6601
|
+
*/
|
|
6602
|
+
requested: string[]
|
|
6603
|
+
/**
|
|
6604
|
+
* The requested ids that this report contains.
|
|
6605
|
+
*/
|
|
6606
|
+
found: string[]
|
|
6607
|
+
/**
|
|
6608
|
+
* The requested ids that this report does not contain. When `conclusive`
|
|
6609
|
+
* is true, a missing id is fixed, suppressed, or ignored by config.
|
|
6610
|
+
* Otherwise its state is unknown.
|
|
6611
|
+
*/
|
|
6612
|
+
missing: string[]
|
|
6613
|
+
/**
|
|
6614
|
+
* The missing ids that the analysis still found before a filter of this
|
|
6615
|
+
* run (scope, baseline, issue-type filter) removed them. Such a finding
|
|
6616
|
+
* still exists.
|
|
6617
|
+
*/
|
|
6618
|
+
filtered: string[]
|
|
6619
|
+
/**
|
|
6620
|
+
* True when no option of this run can hide a finding without a fix, and
|
|
6621
|
+
* no requested id was filtered. Only then does a missing id mean that
|
|
6622
|
+
* the analysis no longer reports the finding.
|
|
6623
|
+
*/
|
|
6624
|
+
conclusive: boolean
|
|
6625
|
+
/**
|
|
6626
|
+
* Why the query is not conclusive, sorted. Empty exactly when
|
|
6627
|
+
* `conclusive` is true.
|
|
6628
|
+
*/
|
|
6629
|
+
inconclusive_reasons: FindingIdQueryReason[]
|
|
6630
|
+
/**
|
|
6631
|
+
* A stable hash (`af1:<16 hex digits>`) of every input other than the
|
|
6632
|
+
* source code that decides which findings the run reports:
|
|
6633
|
+
* - the fallow version;
|
|
6634
|
+
* - the merged config after `extends` (without keys that only shape other
|
|
6635
|
+
* commands), the loaded external plugins and rule packs;
|
|
6636
|
+
* - production mode, `includeEntryExports`, the effective rules, the
|
|
6637
|
+
* type-aware mode, requirement and project list, the file size limit;
|
|
6638
|
+
* - the root-relative path and content of each repository `.gitignore`,
|
|
6639
|
+
* `.ignore` and `.git/info/exclude`, each `package.json`, each
|
|
6640
|
+
* `tsconfig*.json` and `jsconfig*.json` with the files its `extends`
|
|
6641
|
+
* names, and each file that matches a built-in or external plugin
|
|
6642
|
+
* config pattern (for example `vite.config.ts`).
|
|
6643
|
+
*
|
|
6644
|
+
* File content is normalized (CRLF to LF, trailing newlines removed).
|
|
6645
|
+
* Known exclusions: the global git excludes file and other machine
|
|
6646
|
+
* environment outside the `FALLOW_*` variables. Store the fingerprint
|
|
6647
|
+
* with a verdict. A later query with another fingerprint is unknown, even
|
|
6648
|
+
* when `conclusive` is true. An edit to a source file keeps it; an edit
|
|
6649
|
+
* to a manifest or project config changes it, also when the edit fixes a
|
|
6650
|
+
* dependency finding.
|
|
6651
|
+
*/
|
|
6652
|
+
analysis_fingerprint: string
|
|
6653
|
+
}
|
|
6015
6654
|
/**
|
|
6016
6655
|
* Result of regression detection (`--fail-on-regression`). Compares current
|
|
6017
6656
|
* issue counts against a baseline from config or an explicit file.
|
|
@@ -6061,9 +6700,11 @@ reason?: (string | null)
|
|
|
6061
6700
|
* empty object is never emitted: it would assert that something was asked and
|
|
6062
6701
|
* all of it applied, which is a different and false claim.
|
|
6063
6702
|
*
|
|
6064
|
-
* The names this build can emit are `changed-since`, `diff-filter
|
|
6065
|
-
* `sarif-file`. The reasons are `git-missing`,
|
|
6066
|
-
* `git-failed` and `invalid-ref` for `changed-since`,
|
|
6703
|
+
* The names this build can emit are `changed-since`, `diff-filter`,
|
|
6704
|
+
* `package-baselines` and `sarif-file`. The reasons are `git-missing`,
|
|
6705
|
+
* `not-a-repository`, `git-failed` and `invalid-ref` for `changed-since`,
|
|
6706
|
+
* `unknown-workspace`, `git-missing`, `not-a-repository` and `git-failed`
|
|
6707
|
+
* for `package-baselines`, `oversize`,
|
|
6067
6708
|
* `unreadable`, `not-utf8`, `foreign-namespace` and `ambiguous-base` for
|
|
6068
6709
|
* `diff-filter`, and `directory-create-failed`, `write-failed` and
|
|
6069
6710
|
* `serialize-failed` for `sarif-file`. Every set is OPEN: a name a consumer
|
|
@@ -6079,8 +6720,9 @@ reason?: (string | null)
|
|
|
6079
6720
|
* widened the analysis, which is what `affects` exists to prevent.
|
|
6080
6721
|
*
|
|
6081
6722
|
* `scope_size` is emitted for `diff-filter`, in added lines, and for
|
|
6082
|
-
* `changed-since`, in changed files that the run analyzed. `
|
|
6083
|
-
*
|
|
6723
|
+
* `changed-since`, in changed files that the run analyzed. `package-baselines`
|
|
6724
|
+
* and `sarif-file` measure no scope; the applied package refs travel in
|
|
6725
|
+
* `package_baselines`. A consumer reads the unit off the name, so a name that
|
|
6084
6726
|
* starts to measure its own scope in a later release needs no change here.
|
|
6085
6727
|
*
|
|
6086
6728
|
* `invalid-ref` is reachable only through the programmatic API. The
|
|
@@ -6106,7 +6748,8 @@ affects: RequestEffect
|
|
|
6106
6748
|
* `changed-since`, the diff source label (`--diff-file pr.diff`,
|
|
6107
6749
|
* `--diff-stdin`, `$FALLOW_DIFF_FILE build/pr.diff`, or
|
|
6108
6750
|
* `diffFile pr.diff` for the programmatic option) for `diff-filter`,
|
|
6109
|
-
*
|
|
6751
|
+
* `workspaces.changedSince` for `package-baselines`, the target path for
|
|
6752
|
+
* `sarif-file`. Echoed rather than normalised, so a
|
|
6110
6753
|
* consumer must not join it to the project root the way it joins every
|
|
6111
6754
|
* other path-shaped field.
|
|
6112
6755
|
*/
|
|
@@ -6151,6 +6794,19 @@ reason?: (string | null)
|
|
|
6151
6794
|
*/
|
|
6152
6795
|
message?: (string | null)
|
|
6153
6796
|
}
|
|
6797
|
+
/**
|
|
6798
|
+
* One applied baseline for an exact, project-relative workspace root.
|
|
6799
|
+
*/
|
|
6800
|
+
export interface PackageBaselineStatus {
|
|
6801
|
+
/**
|
|
6802
|
+
* Workspace package root, relative to the analysis root with `/` separators.
|
|
6803
|
+
*/
|
|
6804
|
+
workspace_root: string
|
|
6805
|
+
/**
|
|
6806
|
+
* Git ref used to select changed files in this package.
|
|
6807
|
+
*/
|
|
6808
|
+
reference: string
|
|
6809
|
+
}
|
|
6154
6810
|
/**
|
|
6155
6811
|
* A read-only follow-up command fallow surfaces from the current findings,
|
|
6156
6812
|
* emitted as the top-level `next_steps` array on each command's JSON envelope.
|
|
@@ -8362,6 +9018,48 @@ percentile: number
|
|
|
8362
9018
|
* when empty.
|
|
8363
9019
|
*/
|
|
8364
9020
|
actions?: RuntimeCoverageAction[]
|
|
9021
|
+
/**
|
|
9022
|
+
* Per-call cost inputs and the speed-work score for this hot function.
|
|
9023
|
+
* Omitted when the hot path has no `stable_id` or no static counterpart
|
|
9024
|
+
* in this checkout.
|
|
9025
|
+
*/
|
|
9026
|
+
optimization_target?: (RuntimeCoverageOptimizationTarget | null)
|
|
9027
|
+
}
|
|
9028
|
+
/**
|
|
9029
|
+
* Speed-work inputs for one hot function: how often it runs and how much
|
|
9030
|
+
* work each call does. `importance` ranks the risk of a change; this block
|
|
9031
|
+
* ranks where speed work gives the largest gain.
|
|
9032
|
+
*/
|
|
9033
|
+
export interface RuntimeCoverageOptimizationTarget {
|
|
9034
|
+
/**
|
|
9035
|
+
* `invocations` multiplied by the per-call cost that `cost_basis` names.
|
|
9036
|
+
* Uncapped integer. Compare it only between hot paths with the same
|
|
9037
|
+
* `cost_basis`: sort by `cost_basis` first, then by `cost_score`
|
|
9038
|
+
* descending. On the `cognitive` basis the per-call cost is at least 1.
|
|
9039
|
+
*/
|
|
9040
|
+
cost_score: number
|
|
9041
|
+
cost_basis: RuntimeCoverageCostBasis
|
|
9042
|
+
/**
|
|
9043
|
+
* Static cognitive complexity of the function. A static proxy for the
|
|
9044
|
+
* work per call, not a measurement.
|
|
9045
|
+
*/
|
|
9046
|
+
cognitive: number
|
|
9047
|
+
/**
|
|
9048
|
+
* Static cyclomatic complexity of the function.
|
|
9049
|
+
*/
|
|
9050
|
+
cyclomatic: number
|
|
9051
|
+
/**
|
|
9052
|
+
* Number of lines in the function body.
|
|
9053
|
+
*/
|
|
9054
|
+
line_count: number
|
|
9055
|
+
/**
|
|
9056
|
+
* Peak executions of one block inside the function per call, from V8
|
|
9057
|
+
* block coverage. `1.0` means no block ran more than once per call. A
|
|
9058
|
+
* loop body that runs 3 times per call gives `3.0`. Calls to other
|
|
9059
|
+
* functions do not change the value.
|
|
9060
|
+
* Omitted when the coverage input has no block counts for the function.
|
|
9061
|
+
*/
|
|
9062
|
+
inner_iterations_per_call?: (number | null)
|
|
8365
9063
|
}
|
|
8366
9064
|
/**
|
|
8367
9065
|
* One blast-radius entry in `runtime_coverage.blast_radius`: how far a
|
|
@@ -10925,6 +11623,14 @@ to: string
|
|
|
10925
11623
|
* chain is a real compile-time coupling.
|
|
10926
11624
|
*/
|
|
10927
11625
|
type_only: boolean
|
|
11626
|
+
/**
|
|
11627
|
+
* Whether the edge carries a runtime value but no static one: the target
|
|
11628
|
+
* loads only on demand (`import()`, a lazy glob or template pattern) or
|
|
11629
|
+
* on another thread (a worker URL, a worker loader request,
|
|
11630
|
+
* `child_process.fork`). False for a
|
|
11631
|
+
* static hop and for a type-only hop.
|
|
11632
|
+
*/
|
|
11633
|
+
dynamic: boolean
|
|
10928
11634
|
/**
|
|
10929
11635
|
* 1-based line in `from` of the imported binding that creates this edge:
|
|
10930
11636
|
* the first value-carrying symbol on the import, or the first symbol when
|
|
@@ -11264,6 +11970,13 @@ body: string
|
|
|
11264
11970
|
* Stable finding fingerprint used for comment reconciliation.
|
|
11265
11971
|
*/
|
|
11266
11972
|
fingerprint: string
|
|
11973
|
+
/**
|
|
11974
|
+
* The fingerprint that an older Fallow release wrote into the
|
|
11975
|
+
* `fallow-fingerprint:v2:` marker of this comment, when it is different
|
|
11976
|
+
* from `fingerprint`. For one release, an existing comment whose marker
|
|
11977
|
+
* holds this value is the same comment. Omitted when equal.
|
|
11978
|
+
*/
|
|
11979
|
+
legacy_fingerprint?: (string | null)
|
|
11267
11980
|
/**
|
|
11268
11981
|
* True when the body was cut to fit the provider size limit; omitted
|
|
11269
11982
|
* when false.
|
|
@@ -11283,6 +11996,13 @@ position: GitLabReviewPosition
|
|
|
11283
11996
|
* Stable finding fingerprint used for comment reconciliation.
|
|
11284
11997
|
*/
|
|
11285
11998
|
fingerprint: string
|
|
11999
|
+
/**
|
|
12000
|
+
* The fingerprint that an older Fallow release wrote into the
|
|
12001
|
+
* `fallow-fingerprint:v2:` marker of this comment, when it is different
|
|
12002
|
+
* from `fingerprint`. For one release, an existing comment whose marker
|
|
12003
|
+
* holds this value is the same comment. Omitted when equal.
|
|
12004
|
+
*/
|
|
12005
|
+
legacy_fingerprint?: (string | null)
|
|
11286
12006
|
/**
|
|
11287
12007
|
* True when the body was cut to fit the provider size limit; omitted
|
|
11288
12008
|
* when false.
|
|
@@ -12092,6 +12812,10 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
12092
12812
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
12093
12813
|
*/
|
|
12094
12814
|
request_outcomes?: (RequestOutcomes | null)
|
|
12815
|
+
/**
|
|
12816
|
+
* Applied package Git refs, omitted outside package-baseline runs.
|
|
12817
|
+
*/
|
|
12818
|
+
package_baselines?: PackageBaselineStatus[]
|
|
12095
12819
|
/**
|
|
12096
12820
|
* `_meta` block with metric / rule definitions, emitted when `--explain`
|
|
12097
12821
|
* is passed (always present in MCP responses).
|
|
@@ -12250,6 +12974,14 @@ total_issues: number
|
|
|
12250
12974
|
* One bucket per resolver key.
|
|
12251
12975
|
*/
|
|
12252
12976
|
groups: CheckGroupedEntry[]
|
|
12977
|
+
/**
|
|
12978
|
+
* `true` when the `unused-load-data-key` detector abstained for the whole
|
|
12979
|
+
* project. The abstain has no file, so it is on the root and not in a
|
|
12980
|
+
* group. An empty `unused_load_data_keys` with this flag set does not
|
|
12981
|
+
* mean the project is clean: the rule could not run safely. Serialized
|
|
12982
|
+
* only when `true`, like the flat `CheckOutput` field.
|
|
12983
|
+
*/
|
|
12984
|
+
unused_load_data_keys_global_abstain?: boolean
|
|
12253
12985
|
/**
|
|
12254
12986
|
* This run's view of the loaded baseline, present only in baseline runs.
|
|
12255
12987
|
* Carries the staleness counts, the advisory verdict and `gate_trips`, the
|
|
@@ -12259,6 +12991,14 @@ groups: CheckGroupedEntry[]
|
|
|
12259
12991
|
* can report `matched_entries: 0` on a healthy baseline.
|
|
12260
12992
|
*/
|
|
12261
12993
|
baseline_staleness?: (BaselineStaleness | null)
|
|
12994
|
+
/**
|
|
12995
|
+
* The answer to `--finding-id`, present only when the run received one
|
|
12996
|
+
* or more `--finding-id` values. The report then holds only the
|
|
12997
|
+
* requested findings. Read `missing` as resolved only when `conclusive`
|
|
12998
|
+
* is true; a scope, a baseline or a filter can hide a finding that still
|
|
12999
|
+
* exists. See [`crate::FindingIdQuery`].
|
|
13000
|
+
*/
|
|
13001
|
+
finding_id_query?: (FindingIdQuery | null)
|
|
12262
13002
|
/**
|
|
12263
13003
|
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
12264
13004
|
* always emits it, with the command's default exit rule in it also when
|
|
@@ -12279,6 +13019,10 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
12279
13019
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
12280
13020
|
*/
|
|
12281
13021
|
request_outcomes?: (RequestOutcomes | null)
|
|
13022
|
+
/**
|
|
13023
|
+
* Applied package Git refs, omitted outside package-baseline runs.
|
|
13024
|
+
*/
|
|
13025
|
+
package_baselines?: PackageBaselineStatus[]
|
|
12282
13026
|
/**
|
|
12283
13027
|
* `_meta` block with docs and rule definitions, when `--explain` was
|
|
12284
13028
|
* passed.
|
|
@@ -12438,6 +13182,12 @@ circular_dependencies: CircularDependencyFinding[]
|
|
|
12438
13182
|
* suppression breaks the cycle).
|
|
12439
13183
|
*/
|
|
12440
13184
|
re_export_cycles?: ReExportCycleFinding[]
|
|
13185
|
+
/**
|
|
13186
|
+
* Dependency cycles between workspace packages, built from resolved
|
|
13187
|
+
* cross-package imports. Wrapped in [`PackageCycleFinding`] so each
|
|
13188
|
+
* entry carries a typed `actions` array natively.
|
|
13189
|
+
*/
|
|
13190
|
+
package_cycles?: PackageCycleFinding[]
|
|
12441
13191
|
/**
|
|
12442
13192
|
* Imports that cross architecture boundary rules. Wrapped in
|
|
12443
13193
|
* [`BoundaryViolationFinding`] so each entry carries a typed `actions`
|
|
@@ -13906,9 +14656,12 @@ elapsed_ms: ElapsedMs
|
|
|
13906
14656
|
/**
|
|
13907
14657
|
* The verdict of every gate this run evaluated, keyed by name. The CLI
|
|
13908
14658
|
* always emits it, with the default exit rule of each section that ran
|
|
13909
|
-
* (`error-severity-findings`, `health-findings`).
|
|
13910
|
-
*
|
|
13911
|
-
*
|
|
14659
|
+
* (`error-severity-findings`, `health-findings`). Without
|
|
14660
|
+
* `--fail-on-issues` or `--ci`, the machine formats of the combined run
|
|
14661
|
+
* exit 0 for findings, so most entries have `enforced: false`. With one of
|
|
14662
|
+
* these flags, the findings rules and `duplication-threshold` are
|
|
14663
|
+
* `enforced`, and every format exits 1 when one fails. For the default
|
|
14664
|
+
* exit rules (`error-severity-findings`,
|
|
13912
14665
|
* `health-findings`), `status` gives the verdict of the human run. An
|
|
13913
14666
|
* advisory entry can report `fail` without a failure of the human run: an
|
|
13914
14667
|
* example is a `stale-baseline` entry that `--fail-on-stale-baseline` did
|
|
@@ -13927,6 +14680,11 @@ gate_outcomes?: (GateOutcomes | null)
|
|
|
13927
14680
|
* never "nothing failed". See [`crate::RequestOutcomes`].
|
|
13928
14681
|
*/
|
|
13929
14682
|
request_outcomes?: (RequestOutcomes | null)
|
|
14683
|
+
/**
|
|
14684
|
+
* Applied package Git refs of the `check` and `dupes` sections. The map
|
|
14685
|
+
* does not narrow the `health` section.
|
|
14686
|
+
*/
|
|
14687
|
+
package_baselines?: PackageBaselineStatus[]
|
|
13930
14688
|
/**
|
|
13931
14689
|
* Per-section `_meta` blocks, when `--explain` was passed.
|
|
13932
14690
|
*/
|
|
@@ -14063,6 +14821,15 @@ total_flags: number
|
|
|
14063
14821
|
* change.
|
|
14064
14822
|
*/
|
|
14065
14823
|
workspace_diagnostics?: WorkspaceDiagnostic[]
|
|
14824
|
+
/**
|
|
14825
|
+
* One row per flag with the reasons the flag can be retired.
|
|
14826
|
+
*
|
|
14827
|
+
* Present only with `--retirement`. Without that option the key is
|
|
14828
|
+
* omitted, so the envelope stays byte-identical and `schema_version`
|
|
14829
|
+
* does not move. The per-site `feature_flags[]` array is the same with
|
|
14830
|
+
* and without the option.
|
|
14831
|
+
*/
|
|
14832
|
+
retirement?: (FlagRetirementReport | null)
|
|
14066
14833
|
/**
|
|
14067
14834
|
* `_meta` block; see [`FeatureFlagsMeta`].
|
|
14068
14835
|
*/
|
|
@@ -14138,6 +14905,347 @@ dead_export_count: number
|
|
|
14138
14905
|
*/
|
|
14139
14906
|
dead_exports: string[]
|
|
14140
14907
|
}
|
|
14908
|
+
/**
|
|
14909
|
+
* The `retirement` block of `fallow flags --retirement --format json`.
|
|
14910
|
+
*/
|
|
14911
|
+
export interface FlagRetirementReport {
|
|
14912
|
+
/**
|
|
14913
|
+
* The analysis clock that ages count from, as an RFC 3339 UTC
|
|
14914
|
+
* timestamp. `null` when the age mode is `off`, and also when no git
|
|
14915
|
+
* history is available: outside a repository, on a branch without
|
|
14916
|
+
* commits, or in a shallow clone. A `workspace_diagnostics` entry then
|
|
14917
|
+
* gives the reason.
|
|
14918
|
+
*/
|
|
14919
|
+
generated_at_clock?: (string | null)
|
|
14920
|
+
age_mode: FlagAgeMode
|
|
14921
|
+
/**
|
|
14922
|
+
* The vendor export that the report read. Present only with
|
|
14923
|
+
* `--flag-state`.
|
|
14924
|
+
*/
|
|
14925
|
+
vendor_state?: (RetirementVendorState | null)
|
|
14926
|
+
summary: RetirementSummary
|
|
14927
|
+
/**
|
|
14928
|
+
* Verdict of `--fail-on-regression` against a flags regression
|
|
14929
|
+
* baseline. Present only when the gate ran.
|
|
14930
|
+
*/
|
|
14931
|
+
regression?: (FlagRegressionResult | null)
|
|
14932
|
+
/**
|
|
14933
|
+
* Verdict of `--max-flag-age`. Present only with that option.
|
|
14934
|
+
*/
|
|
14935
|
+
max_flag_age?: (FlagAgeGate | null)
|
|
14936
|
+
/**
|
|
14937
|
+
* One row per flag after the `--min-age`, `--reason`, `--sort` and
|
|
14938
|
+
* `--top` options. A row with an empty `reasons` array is not a
|
|
14939
|
+
* candidate.
|
|
14940
|
+
*/
|
|
14941
|
+
flags: RetirementFlag[]
|
|
14942
|
+
}
|
|
14943
|
+
/**
|
|
14944
|
+
* The `--flag-state` vendor export that the report read.
|
|
14945
|
+
*/
|
|
14946
|
+
export interface RetirementVendorState {
|
|
14947
|
+
/**
|
|
14948
|
+
* The vendor name from the export, for example `launchdarkly`.
|
|
14949
|
+
*/
|
|
14950
|
+
source: string
|
|
14951
|
+
/**
|
|
14952
|
+
* When the export was made, as the export gives it.
|
|
14953
|
+
*/
|
|
14954
|
+
exported_at: string
|
|
14955
|
+
/**
|
|
14956
|
+
* Days between `exported_at` and the analysis clock. `null` when the
|
|
14957
|
+
* date cannot be read.
|
|
14958
|
+
*/
|
|
14959
|
+
export_age_days?: (number | null)
|
|
14960
|
+
/**
|
|
14961
|
+
* Number of flags in the export.
|
|
14962
|
+
*/
|
|
14963
|
+
flags: number
|
|
14964
|
+
}
|
|
14965
|
+
/**
|
|
14966
|
+
* Totals of the retirement report.
|
|
14967
|
+
*/
|
|
14968
|
+
export interface RetirementSummary {
|
|
14969
|
+
/**
|
|
14970
|
+
* Distinct flags in the code in scope, before `--min-age` and
|
|
14971
|
+
* `--reason`. The `vendor-only` rows of a `--flag-state` export do not
|
|
14972
|
+
* count here, so the count does not change when a key is added in the
|
|
14973
|
+
* vendor only. `by_reason` counts them.
|
|
14974
|
+
*/
|
|
14975
|
+
distinct_flags: number
|
|
14976
|
+
/**
|
|
14977
|
+
* Rows in scope with at least one reason, `vendor-only` rows included.
|
|
14978
|
+
*/
|
|
14979
|
+
candidates: number
|
|
14980
|
+
/**
|
|
14981
|
+
* Number of rows in scope per reason.
|
|
14982
|
+
*/
|
|
14983
|
+
by_reason: {
|
|
14984
|
+
[k: string]: number
|
|
14985
|
+
}
|
|
14986
|
+
}
|
|
14987
|
+
/**
|
|
14988
|
+
* Verdict of the flags regression gate.
|
|
14989
|
+
*/
|
|
14990
|
+
export interface FlagRegressionResult {
|
|
14991
|
+
status: RegressionStatus
|
|
14992
|
+
/**
|
|
14993
|
+
* The `--tolerance` value. Absent when the status is `skipped`.
|
|
14994
|
+
*/
|
|
14995
|
+
tolerance?: (number | null)
|
|
14996
|
+
/**
|
|
14997
|
+
* How to read `tolerance`. Absent when the status is `skipped`.
|
|
14998
|
+
*/
|
|
14999
|
+
tolerance_kind?: (RegressionToleranceKind | null)
|
|
15000
|
+
/**
|
|
15001
|
+
* The compared counts: `distinct_flags` first, then each `--reason`
|
|
15002
|
+
* code. Empty when the status is `skipped`.
|
|
15003
|
+
*/
|
|
15004
|
+
metrics: FlagRegressionMetric[]
|
|
15005
|
+
/**
|
|
15006
|
+
* Whether one count grew more than the tolerance.
|
|
15007
|
+
*/
|
|
15008
|
+
exceeded: boolean
|
|
15009
|
+
/**
|
|
15010
|
+
* Why the gate did not run. Present only when the status is `skipped`.
|
|
15011
|
+
*/
|
|
15012
|
+
reason?: (string | null)
|
|
15013
|
+
}
|
|
15014
|
+
/**
|
|
15015
|
+
* One count that the flags regression gate compares.
|
|
15016
|
+
*/
|
|
15017
|
+
export interface FlagRegressionMetric {
|
|
15018
|
+
/**
|
|
15019
|
+
* `distinct_flags`, or a reason code from `--reason`.
|
|
15020
|
+
*/
|
|
15021
|
+
metric: string
|
|
15022
|
+
/**
|
|
15023
|
+
* The count in the baseline.
|
|
15024
|
+
*/
|
|
15025
|
+
baseline: number
|
|
15026
|
+
/**
|
|
15027
|
+
* The count in this run.
|
|
15028
|
+
*/
|
|
15029
|
+
current: number
|
|
15030
|
+
/**
|
|
15031
|
+
* `current - baseline`.
|
|
15032
|
+
*/
|
|
15033
|
+
delta: number
|
|
15034
|
+
/**
|
|
15035
|
+
* Whether the growth is more than the tolerance.
|
|
15036
|
+
*/
|
|
15037
|
+
exceeded: boolean
|
|
15038
|
+
}
|
|
15039
|
+
/**
|
|
15040
|
+
* Verdict of `--max-flag-age`.
|
|
15041
|
+
*/
|
|
15042
|
+
export interface FlagAgeGate {
|
|
15043
|
+
status: RegressionStatus
|
|
15044
|
+
/**
|
|
15045
|
+
* The `--max-flag-age` value in days.
|
|
15046
|
+
*/
|
|
15047
|
+
max_days: number
|
|
15048
|
+
/**
|
|
15049
|
+
* Whether one flag in scope is older than `max_days`.
|
|
15050
|
+
*/
|
|
15051
|
+
exceeded: boolean
|
|
15052
|
+
/**
|
|
15053
|
+
* Flags in the code in scope without a measured age. The gate cannot
|
|
15054
|
+
* check these flags.
|
|
15055
|
+
*/
|
|
15056
|
+
unmeasured: number
|
|
15057
|
+
/**
|
|
15058
|
+
* Why the gate did not run. Present only when the status is `skipped`.
|
|
15059
|
+
*/
|
|
15060
|
+
reason?: (string | null)
|
|
15061
|
+
/**
|
|
15062
|
+
* The flags in scope that are older than `max_days`, oldest first.
|
|
15063
|
+
* The `--reason`, `--min-age` and `--top` options do not change this
|
|
15064
|
+
* list.
|
|
15065
|
+
*/
|
|
15066
|
+
flags: FlagAgeGateEntry[]
|
|
15067
|
+
}
|
|
15068
|
+
/**
|
|
15069
|
+
* A flag that is older than `--max-flag-age`.
|
|
15070
|
+
*/
|
|
15071
|
+
export interface FlagAgeGateEntry {
|
|
15072
|
+
/**
|
|
15073
|
+
* Flag identifier.
|
|
15074
|
+
*/
|
|
15075
|
+
flag_name: string
|
|
15076
|
+
kind: RetirementFlagKind
|
|
15077
|
+
/**
|
|
15078
|
+
* Flag SDK, for SDK flags with a known provider.
|
|
15079
|
+
*/
|
|
15080
|
+
sdk_name?: (string | null)
|
|
15081
|
+
/**
|
|
15082
|
+
* Workspace root of the flag, in a project with workspaces.
|
|
15083
|
+
*/
|
|
15084
|
+
workspace?: (string | null)
|
|
15085
|
+
/**
|
|
15086
|
+
* Age of the flag in days.
|
|
15087
|
+
*/
|
|
15088
|
+
age_days: number
|
|
15089
|
+
}
|
|
15090
|
+
/**
|
|
15091
|
+
* One flag in the retirement report.
|
|
15092
|
+
*/
|
|
15093
|
+
export interface RetirementFlag {
|
|
15094
|
+
/**
|
|
15095
|
+
* Flag identifier.
|
|
15096
|
+
*/
|
|
15097
|
+
flag_name: string
|
|
15098
|
+
kind: RetirementFlagKind
|
|
15099
|
+
/**
|
|
15100
|
+
* Flag SDK, for SDK flags with a known provider.
|
|
15101
|
+
*/
|
|
15102
|
+
sdk_name?: (string | null)
|
|
15103
|
+
/**
|
|
15104
|
+
* Workspace root relative to the analysed root, when the project has
|
|
15105
|
+
* workspaces and the flag is inside one. Part of the flag identity.
|
|
15106
|
+
*/
|
|
15107
|
+
workspace?: (string | null)
|
|
15108
|
+
/**
|
|
15109
|
+
* Every site of the flag, sorted by path, line and column.
|
|
15110
|
+
*/
|
|
15111
|
+
sites: RetirementSite[]
|
|
15112
|
+
/**
|
|
15113
|
+
* Number of sites in this row that read the flag.
|
|
15114
|
+
*/
|
|
15115
|
+
read_sites: number
|
|
15116
|
+
/**
|
|
15117
|
+
* Whether every read site is in a test, story or mock file. Read sites
|
|
15118
|
+
* of the same flag in other workspaces count too.
|
|
15119
|
+
*/
|
|
15120
|
+
test_only: boolean
|
|
15121
|
+
/**
|
|
15122
|
+
* First commit that added the flag name. Set in `pickaxe` mode only.
|
|
15123
|
+
*/
|
|
15124
|
+
first_seen?: (FlagCommit | null)
|
|
15125
|
+
/**
|
|
15126
|
+
* Oldest commit among the lines that still hold the flag.
|
|
15127
|
+
*/
|
|
15128
|
+
oldest_surviving_site?: (FlagCommit | null)
|
|
15129
|
+
/**
|
|
15130
|
+
* Newest commit among the lines that still hold the flag.
|
|
15131
|
+
*/
|
|
15132
|
+
last_touched?: (FlagCommit | null)
|
|
15133
|
+
/**
|
|
15134
|
+
* Days between the flag's oldest known commit and the analysis clock.
|
|
15135
|
+
* In `blame` mode this is a lower bound.
|
|
15136
|
+
*/
|
|
15137
|
+
age_days?: (number | null)
|
|
15138
|
+
/**
|
|
15139
|
+
* Retirement reasons, in report order. Empty for a flag that is not a
|
|
15140
|
+
* candidate.
|
|
15141
|
+
*/
|
|
15142
|
+
reasons: RetirementReason[]
|
|
15143
|
+
/**
|
|
15144
|
+
* Evidence for each reason.
|
|
15145
|
+
*/
|
|
15146
|
+
evidence: RetirementEvidence[]
|
|
15147
|
+
/**
|
|
15148
|
+
* Follow-up actions. Empty for a flag that is not a candidate.
|
|
15149
|
+
*/
|
|
15150
|
+
actions: RetirementAction[]
|
|
15151
|
+
/**
|
|
15152
|
+
* The vendor state of the flag. Present only with `--flag-state`, for
|
|
15153
|
+
* a flag whose key is in the export.
|
|
15154
|
+
*/
|
|
15155
|
+
vendor?: (RetirementVendor | null)
|
|
15156
|
+
}
|
|
15157
|
+
/**
|
|
15158
|
+
* One site of a flag in the retirement report.
|
|
15159
|
+
*/
|
|
15160
|
+
export interface RetirementSite {
|
|
15161
|
+
/**
|
|
15162
|
+
* File path relative to the analysed root.
|
|
15163
|
+
*/
|
|
15164
|
+
path: string
|
|
15165
|
+
/**
|
|
15166
|
+
* 1-based line.
|
|
15167
|
+
*/
|
|
15168
|
+
line: number
|
|
15169
|
+
/**
|
|
15170
|
+
* 0-based byte column.
|
|
15171
|
+
*/
|
|
15172
|
+
col: number
|
|
15173
|
+
role: FlagSiteRole
|
|
15174
|
+
/**
|
|
15175
|
+
* Whether the file is a test, story or mock file.
|
|
15176
|
+
*/
|
|
15177
|
+
in_test: boolean
|
|
15178
|
+
}
|
|
15179
|
+
/**
|
|
15180
|
+
* A commit that git history links to a flag.
|
|
15181
|
+
*/
|
|
15182
|
+
export interface FlagCommit {
|
|
15183
|
+
/**
|
|
15184
|
+
* Abbreviated commit hash.
|
|
15185
|
+
*/
|
|
15186
|
+
commit: string
|
|
15187
|
+
/**
|
|
15188
|
+
* Commit date in UTC, as `YYYY-MM-DD`.
|
|
15189
|
+
*/
|
|
15190
|
+
date: string
|
|
15191
|
+
}
|
|
15192
|
+
/**
|
|
15193
|
+
* One piece of evidence for a retirement reason.
|
|
15194
|
+
*/
|
|
15195
|
+
export interface RetirementEvidence {
|
|
15196
|
+
reason: RetirementReason
|
|
15197
|
+
/**
|
|
15198
|
+
* File path relative to the analysed root. For `vendor-only`, the path
|
|
15199
|
+
* of the `--flag-state` file: relative to the root when the file is
|
|
15200
|
+
* inside it, else as given.
|
|
15201
|
+
*/
|
|
15202
|
+
path: string
|
|
15203
|
+
/**
|
|
15204
|
+
* 1-based line.
|
|
15205
|
+
*/
|
|
15206
|
+
line: number
|
|
15207
|
+
/**
|
|
15208
|
+
* What the evidence shows.
|
|
15209
|
+
*/
|
|
15210
|
+
detail: string
|
|
15211
|
+
}
|
|
15212
|
+
/**
|
|
15213
|
+
* A follow-up action for a retirement candidate.
|
|
15214
|
+
*/
|
|
15215
|
+
export interface RetirementAction {
|
|
15216
|
+
type: RetirementActionType
|
|
15217
|
+
/**
|
|
15218
|
+
* Always `false`: Fallow never removes a flag.
|
|
15219
|
+
*/
|
|
15220
|
+
auto_fixable: boolean
|
|
15221
|
+
/**
|
|
15222
|
+
* Human-readable action description.
|
|
15223
|
+
*/
|
|
15224
|
+
description: string
|
|
15225
|
+
}
|
|
15226
|
+
/**
|
|
15227
|
+
* The vendor state of one flag in the retirement report.
|
|
15228
|
+
*/
|
|
15229
|
+
export interface RetirementVendor {
|
|
15230
|
+
/**
|
|
15231
|
+
* The key in the vendor export, before `flags.vendorKeyPrefix` is
|
|
15232
|
+
* removed.
|
|
15233
|
+
*/
|
|
15234
|
+
key: string
|
|
15235
|
+
state: VendorFlagState
|
|
15236
|
+
/**
|
|
15237
|
+
* Whether the flag serves one variation, when the export says so.
|
|
15238
|
+
*/
|
|
15239
|
+
serves_single_variation?: (boolean | null)
|
|
15240
|
+
/**
|
|
15241
|
+
* When the vendor created the flag, as the export gives it.
|
|
15242
|
+
*/
|
|
15243
|
+
created_at?: (string | null)
|
|
15244
|
+
/**
|
|
15245
|
+
* When the vendor last evaluated the flag, as the export gives it.
|
|
15246
|
+
*/
|
|
15247
|
+
last_evaluated_at?: (string | null)
|
|
15248
|
+
}
|
|
14141
15249
|
/**
|
|
14142
15250
|
* Optional `_meta` block for [`FeatureFlagsOutput`]. Both fields are optional
|
|
14143
15251
|
* because the two contributors are independent: `feature_flags` details are
|
|
@@ -16515,6 +17623,16 @@ export type EmptyCatalogGroup = EmptyCatalogGroupFinding;
|
|
|
16515
17623
|
*/
|
|
16516
17624
|
export type MisconfiguredDependencyOverride = MisconfiguredDependencyOverrideFinding;
|
|
16517
17625
|
|
|
17626
|
+
/**
|
|
17627
|
+
* Backwards-compat alias for the pre-#384 bare `PackageCycle` name.
|
|
17628
|
+
* The wire shape is byte-identical: `PackageCycleFinding` flattens the bare
|
|
17629
|
+
* finding's fields via `#[serde(flatten)]` and adds `actions[]` plus
|
|
17630
|
+
* the optional audit-mode `introduced` flag. Consumers that imported
|
|
17631
|
+
* `PackageCycle` from `fallow/types` pre-migration continue to work via
|
|
17632
|
+
* this alias; new code should prefer `PackageCycleFinding`.
|
|
17633
|
+
*/
|
|
17634
|
+
export type PackageCycle = PackageCycleFinding;
|
|
17635
|
+
|
|
16518
17636
|
/**
|
|
16519
17637
|
* Backwards-compat alias for the pre-#384 bare `PrivateTypeLeak` name.
|
|
16520
17638
|
* The wire shape is byte-identical: `PrivateTypeLeakFinding` flattens the bare
|