@opensip-cli/yagni 0.1.11 → 0.1.12
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 -2
- package/dist/__tests__/architecture-invariants.test.d.ts +6 -0
- package/dist/__tests__/architecture-invariants.test.d.ts.map +1 -0
- package/dist/__tests__/architecture-invariants.test.js +37 -0
- package/dist/__tests__/architecture-invariants.test.js.map +1 -0
- package/dist/__tests__/detector-progress.test.d.ts +2 -0
- package/dist/__tests__/detector-progress.test.d.ts.map +1 -0
- package/dist/__tests__/detector-progress.test.js +73 -0
- package/dist/__tests__/detector-progress.test.js.map +1 -0
- package/dist/__tests__/duplicate-parity.test.d.ts +15 -0
- package/dist/__tests__/duplicate-parity.test.d.ts.map +1 -0
- package/dist/__tests__/duplicate-parity.test.js +304 -0
- package/dist/__tests__/duplicate-parity.test.js.map +1 -0
- package/dist/__tests__/hardening.test.d.ts +2 -0
- package/dist/__tests__/hardening.test.d.ts.map +1 -0
- package/dist/__tests__/hardening.test.js +101 -0
- package/dist/__tests__/hardening.test.js.map +1 -0
- package/dist/__tests__/session-payload.test.d.ts +2 -0
- package/dist/__tests__/session-payload.test.d.ts.map +1 -0
- package/dist/__tests__/session-payload.test.js +57 -0
- package/dist/__tests__/session-payload.test.js.map +1 -0
- package/dist/__tests__/walk-typescript-files.test.js +15 -1
- package/dist/__tests__/walk-typescript-files.test.js.map +1 -1
- package/dist/__tests__/yagni-coverage.test.js +24 -199
- package/dist/__tests__/yagni-coverage.test.js.map +1 -1
- package/dist/__tests__/yagni-golden.test.js +7 -24
- package/dist/__tests__/yagni-golden.test.js.map +1 -1
- package/dist/__tests__/yagni-presentation.test.js +4 -5
- package/dist/__tests__/yagni-presentation.test.js.map +1 -1
- package/dist/cli/__tests__/yagni-runner.test.js +4 -6
- package/dist/cli/__tests__/yagni-runner.test.js.map +1 -1
- package/dist/cli/execute-yagni.d.ts +15 -4
- package/dist/cli/execute-yagni.d.ts.map +1 -1
- package/dist/cli/execute-yagni.js +68 -30
- package/dist/cli/execute-yagni.js.map +1 -1
- package/dist/cli/report-data.d.ts +0 -2
- package/dist/cli/report-data.d.ts.map +1 -1
- package/dist/cli/report-data.js +0 -2
- package/dist/cli/report-data.js.map +1 -1
- package/dist/cli/yagni-command-spec.d.ts.map +1 -1
- package/dist/cli/yagni-command-spec.js +4 -19
- package/dist/cli/yagni-command-spec.js.map +1 -1
- package/dist/cli/yagni-config-schema.d.ts +1 -7
- package/dist/cli/yagni-config-schema.d.ts.map +1 -1
- package/dist/cli/yagni-config-schema.js +4 -6
- package/dist/cli/yagni-config-schema.js.map +1 -1
- package/dist/cli/yagni-config.d.ts.map +1 -1
- package/dist/cli/yagni-config.js +3 -7
- package/dist/cli/yagni-config.js.map +1 -1
- package/dist/cli/yagni-presentation.d.ts +1 -2
- package/dist/cli/yagni-presentation.d.ts.map +1 -1
- package/dist/cli/yagni-presentation.js +4 -4
- package/dist/cli/yagni-presentation.js.map +1 -1
- package/dist/cli/yagni-runner.d.ts +0 -2
- package/dist/cli/yagni-runner.d.ts.map +1 -1
- package/dist/cli/yagni-runner.js +40 -8
- package/dist/cli/yagni-runner.js.map +1 -1
- package/dist/detectors/duplicate-body-candidate.d.ts +9 -2
- package/dist/detectors/duplicate-body-candidate.d.ts.map +1 -1
- package/dist/detectors/duplicate-body-candidate.js +123 -120
- package/dist/detectors/duplicate-body-candidate.js.map +1 -1
- package/dist/detectors/registry.d.ts +9 -1
- package/dist/detectors/registry.d.ts.map +1 -1
- package/dist/detectors/registry.js +9 -1
- package/dist/detectors/registry.js.map +1 -1
- package/dist/detectors/types.d.ts +1 -2
- package/dist/detectors/types.d.ts.map +1 -1
- package/dist/detectors/unused-config-surface.d.ts.map +1 -1
- package/dist/detectors/unused-config-surface.js +0 -2
- package/dist/detectors/unused-config-surface.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/build-ts-inventory.d.ts +33 -0
- package/dist/lib/build-ts-inventory.d.ts.map +1 -0
- package/dist/lib/build-ts-inventory.js +252 -0
- package/dist/lib/build-ts-inventory.js.map +1 -0
- package/dist/persistence/session-payload.d.ts +7 -10
- package/dist/persistence/session-payload.d.ts.map +1 -1
- package/dist/persistence/session-payload.js +64 -6
- package/dist/persistence/session-payload.js.map +1 -1
- package/dist/scoring/__tests__/confidence.test.js +3 -4
- package/dist/scoring/__tests__/confidence.test.js.map +1 -1
- package/dist/scoring/confidence.d.ts +1 -1
- package/dist/scoring/confidence.d.ts.map +1 -1
- package/dist/scoring/confidence.js +1 -2
- package/dist/scoring/confidence.js.map +1 -1
- package/dist/types/yagni-config.d.ts +1 -4
- package/dist/types/yagni-config.d.ts.map +1 -1
- package/dist/types/yagni-config.js +0 -1
- package/dist/types/yagni-config.js.map +1 -1
- package/dist/types/yagni-metadata.d.ts +0 -1
- package/dist/types/yagni-metadata.d.ts.map +1 -1
- package/package.json +10 -10
- package/dist/__tests__/graph-evidence.test.d.ts +0 -2
- package/dist/__tests__/graph-evidence.test.d.ts.map +0 -1
- package/dist/__tests__/graph-evidence.test.js +0 -159
- package/dist/__tests__/graph-evidence.test.js.map +0 -1
- package/dist/evidence/graph-evidence.d.ts +0 -15
- package/dist/evidence/graph-evidence.d.ts.map +0 -1
- package/dist/evidence/graph-evidence.js +0 -89
- package/dist/evidence/graph-evidence.js.map +0 -1
- package/dist/evidence/load-graph-adapters.d.ts +0 -13
- package/dist/evidence/load-graph-adapters.d.ts.map +0 -1
- package/dist/evidence/load-graph-adapters.js +0 -67
- package/dist/evidence/load-graph-adapters.js.map +0 -1
- package/dist/lib/isolate-exit-code.d.ts +0 -8
- package/dist/lib/isolate-exit-code.d.ts.map +0 -1
- package/dist/lib/isolate-exit-code.js +0 -27
- package/dist/lib/isolate-exit-code.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/detectors/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAIzE
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/detectors/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAIzE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAA6B;IACvD,2BAA2B;IAC3B,8BAA8B;CAC/B,CAAC"}
|
|
@@ -16,13 +16,12 @@ export interface YagniDetector {
|
|
|
16
16
|
readonly id: string;
|
|
17
17
|
readonly slug: string;
|
|
18
18
|
readonly description: string;
|
|
19
|
-
readonly requiresGraph: boolean;
|
|
20
19
|
run(ctx: YagniDetectorContext): Promise<YagniDetectorResult>;
|
|
21
20
|
}
|
|
22
21
|
export interface SkippedDetector {
|
|
23
22
|
readonly id: string;
|
|
24
23
|
readonly slug: string;
|
|
25
|
-
readonly reason: 'disabled'
|
|
24
|
+
readonly reason: 'disabled';
|
|
26
25
|
readonly detail?: string;
|
|
27
26
|
}
|
|
28
27
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/detectors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/detectors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unused-config-surface.d.ts","sourceRoot":"","sources":["../../src/detectors/unused-config-surface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unused-config-surface.d.ts","sourceRoot":"","sources":["../../src/detectors/unused-config-surface.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,KAAK,EAAE,aAAa,EAA6C,MAAM,YAAY,CAAC;AA2M3F,eAAO,MAAM,2BAA2B,EAAE,aAKzC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// @fitness-ignore-file batch-operation-limits -- walks a bounded, already-discovered source file list synchronously; no DB, network, async fanout, or unbounded external batch.
|
|
2
1
|
/**
|
|
3
2
|
* unused-config-surface — flags required config properties on the public API
|
|
4
3
|
* surface that are never read anywhere in the project.
|
|
@@ -193,7 +192,6 @@ export const unusedConfigSurfaceDetector = {
|
|
|
193
192
|
id: DETECTOR_ID,
|
|
194
193
|
slug: SLUG,
|
|
195
194
|
description: 'Unused required config properties on the public API surface',
|
|
196
|
-
requiresGraph: false,
|
|
197
195
|
run: runUnusedConfigSurface,
|
|
198
196
|
};
|
|
199
197
|
//# sourceMappingURL=unused-config-surface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unused-config-surface.js","sourceRoot":"","sources":["../../src/detectors/unused-config-surface.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"unused-config-surface.js","sourceRoot":"","sources":["../../src/detectors/unused-config-surface.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { yagniTool, yagniTool as tool, YAGNI_CONTRACT_VERSION, YAGNI_STABLE_ID } from './tool.js';
|
|
5
5
|
export { executeYagni } from './cli/execute-yagni.js';
|
|
6
|
-
export type { YagniConfig
|
|
6
|
+
export type { YagniConfig } from './types/yagni-config.js';
|
|
7
7
|
export type { YagniFindingMetadata } from './types/yagni-metadata.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* build-ts-inventory — yagni's OWN TypeScript function-body inventory, the input to its
|
|
3
|
+
* duplicate detector. yagni builds this in-process (no `@opensip-cli/graph` dependency,
|
|
4
|
+
* ADR-0064) by walking the TS AST exactly as graph-typescript's inventory does, so the
|
|
5
|
+
* two tools produce byte-identical `CloneCandidate`s and cannot diverge (the cross-tool
|
|
6
|
+
* parity test is the standing guard).
|
|
7
|
+
*
|
|
8
|
+
* Byte-identity contract (must match `graph-typescript/inventory-helpers/hash-body.ts`
|
|
9
|
+
* + the inventory visitors):
|
|
10
|
+
* - bodyHash/bodySize = `digestCanonicalBody(normalizeWhitespace(stripComments(
|
|
11
|
+
* sourceFile.text.slice(node.getStart(sf), node.getEnd()))))` — same span, same
|
|
12
|
+
* `stripComments` (lang-typescript), same digest (clone-detection).
|
|
13
|
+
* - line = getStart line + 1 (1-based); column = getStart character (0-based);
|
|
14
|
+
* endLine = getEnd line + 1. bodyLines fallback (`endLine − line + 1`) equals graph's
|
|
15
|
+
* feature column (features.ts:132).
|
|
16
|
+
* - inTestFile via the shared `isTestFilePath` (Phase 1 Task 1.3a) — the single predicate.
|
|
17
|
+
* - kind ∈ the eligible set only (function-declaration/method/constructor/getter/setter,
|
|
18
|
+
* with class static blocks emitted as graph's synthetic '<static-init>' function).
|
|
19
|
+
* Arrows / function-expressions / module-init are excluded by policy on both tools, so
|
|
20
|
+
* emitting only the eligible kinds yields the same post-filter groups as graph.
|
|
21
|
+
*
|
|
22
|
+
* Body source text NEVER leaves this parse — only the hash/size/location enter a
|
|
23
|
+
* `CloneCandidate` (H4).
|
|
24
|
+
*/
|
|
25
|
+
import { type CloneCandidate } from '@opensip-cli/clone-detection';
|
|
26
|
+
/**
|
|
27
|
+
* Build the function-body inventory for `cwd` (optionally scoped to `pathRoots`).
|
|
28
|
+
* Walks ALL TS files (including test files) so `inTestFile` stamping is complete and
|
|
29
|
+
* cross-file duplicates are seen; the policy (`findDuplicateBodies`) excludes test-file
|
|
30
|
+
* candidates, exactly as graph does.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildTsInventory(cwd: string, pathRoots?: readonly string[]): CloneCandidate[];
|
|
33
|
+
//# sourceMappingURL=build-ts-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-ts-inventory.d.ts","sourceRoot":"","sources":["../../src/lib/build-ts-inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,EAIL,KAAK,cAAc,EAEpB,MAAM,8BAA8B,CAAC;AAYtC;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,EAAE,CAyB7F"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* build-ts-inventory — yagni's OWN TypeScript function-body inventory, the input to its
|
|
3
|
+
* duplicate detector. yagni builds this in-process (no `@opensip-cli/graph` dependency,
|
|
4
|
+
* ADR-0064) by walking the TS AST exactly as graph-typescript's inventory does, so the
|
|
5
|
+
* two tools produce byte-identical `CloneCandidate`s and cannot diverge (the cross-tool
|
|
6
|
+
* parity test is the standing guard).
|
|
7
|
+
*
|
|
8
|
+
* Byte-identity contract (must match `graph-typescript/inventory-helpers/hash-body.ts`
|
|
9
|
+
* + the inventory visitors):
|
|
10
|
+
* - bodyHash/bodySize = `digestCanonicalBody(normalizeWhitespace(stripComments(
|
|
11
|
+
* sourceFile.text.slice(node.getStart(sf), node.getEnd()))))` — same span, same
|
|
12
|
+
* `stripComments` (lang-typescript), same digest (clone-detection).
|
|
13
|
+
* - line = getStart line + 1 (1-based); column = getStart character (0-based);
|
|
14
|
+
* endLine = getEnd line + 1. bodyLines fallback (`endLine − line + 1`) equals graph's
|
|
15
|
+
* feature column (features.ts:132).
|
|
16
|
+
* - inTestFile via the shared `isTestFilePath` (Phase 1 Task 1.3a) — the single predicate.
|
|
17
|
+
* - kind ∈ the eligible set only (function-declaration/method/constructor/getter/setter,
|
|
18
|
+
* with class static blocks emitted as graph's synthetic '<static-init>' function).
|
|
19
|
+
* Arrows / function-expressions / module-init are excluded by policy on both tools, so
|
|
20
|
+
* emitting only the eligible kinds yields the same post-filter groups as graph.
|
|
21
|
+
*
|
|
22
|
+
* Body source text NEVER leaves this parse — only the hash/size/location enter a
|
|
23
|
+
* `CloneCandidate` (H4).
|
|
24
|
+
*/
|
|
25
|
+
import { readFileSync, statSync } from 'node:fs';
|
|
26
|
+
import { dirname, join, relative } from 'node:path';
|
|
27
|
+
import { digestCanonicalBody, isTestFilePath, normalizeWhitespace, } from '@opensip-cli/clone-detection';
|
|
28
|
+
import { getMeter, logger, withSpan } from '@opensip-cli/core';
|
|
29
|
+
import { getSharedSourceFile, stripComments } from '@opensip-cli/lang-typescript';
|
|
30
|
+
import ts from 'typescript';
|
|
31
|
+
import { walkTypeScriptFiles } from './walk-typescript-files.js';
|
|
32
|
+
const UNKNOWN_PACKAGE = '<unknown>';
|
|
33
|
+
/** A source file larger than this is skipped (resource bound, H3). Mirrors graph/fitness. */
|
|
34
|
+
const MAX_SOURCE_FILE_BYTES = 10_000_000;
|
|
35
|
+
/**
|
|
36
|
+
* Build the function-body inventory for `cwd` (optionally scoped to `pathRoots`).
|
|
37
|
+
* Walks ALL TS files (including test files) so `inTestFile` stamping is complete and
|
|
38
|
+
* cross-file duplicates are seen; the policy (`findDuplicateBodies`) excludes test-file
|
|
39
|
+
* candidates, exactly as graph does.
|
|
40
|
+
*/
|
|
41
|
+
export function buildTsInventory(cwd, pathRoots) {
|
|
42
|
+
return withSpan('opensip-cli-yagni', 'yagni.build_ts_inventory', () => {
|
|
43
|
+
const start = Date.now();
|
|
44
|
+
const filePaths = walkTypeScriptFiles(cwd, true, pathRoots).filter(isGraphTsSourceFile);
|
|
45
|
+
const candidates = [];
|
|
46
|
+
const packageByDir = new Map();
|
|
47
|
+
for (const filePath of filePaths) {
|
|
48
|
+
const content = readBoundedSource(filePath);
|
|
49
|
+
if (content === undefined)
|
|
50
|
+
continue;
|
|
51
|
+
const sourceFile = getSharedSourceFile(filePath, content);
|
|
52
|
+
if (!sourceFile)
|
|
53
|
+
continue;
|
|
54
|
+
const projectRel = relative(cwd, filePath).split('\\').join('/');
|
|
55
|
+
const packageName = resolvePackage(dirname(filePath), cwd, packageByDir) ?? packageFallback(projectRel);
|
|
56
|
+
const ctx = {
|
|
57
|
+
sourceFile,
|
|
58
|
+
projectRel,
|
|
59
|
+
inTestFile: isTestFilePath(projectRel),
|
|
60
|
+
pkg: packageName,
|
|
61
|
+
};
|
|
62
|
+
collectFunctions(sourceFile, ctx, undefined, candidates);
|
|
63
|
+
}
|
|
64
|
+
recordParseDuration(Date.now() - start, candidates.length);
|
|
65
|
+
return candidates;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Recursively collect eligible function-like declarations, tracking the enclosing class
|
|
70
|
+
* name for the qualified name (mirrors graph-typescript's visitors).
|
|
71
|
+
*/
|
|
72
|
+
function collectFunctions(node, ctx, enclosingClass, out) {
|
|
73
|
+
const candidate = candidateFor(node, ctx, enclosingClass);
|
|
74
|
+
if (candidate)
|
|
75
|
+
out.push(candidate);
|
|
76
|
+
const nextClass = ts.isClassDeclaration(node) || ts.isClassExpression(node)
|
|
77
|
+
? (node.name?.text ?? '<anon-class>')
|
|
78
|
+
: enclosingClass;
|
|
79
|
+
ts.forEachChild(node, (child) => collectFunctions(child, ctx, nextClass, out));
|
|
80
|
+
}
|
|
81
|
+
function candidateFor(node, ctx, enclosingClass) {
|
|
82
|
+
const shape = classify(node, enclosingClass, ctx.projectRel);
|
|
83
|
+
if (shape === undefined)
|
|
84
|
+
return undefined;
|
|
85
|
+
const sf = ctx.sourceFile;
|
|
86
|
+
const startLC = sf.getLineAndCharacterOfPosition(node.getStart(sf));
|
|
87
|
+
const endLC = sf.getLineAndCharacterOfPosition(node.getEnd());
|
|
88
|
+
const canonical = normalizeWhitespace(stripComments(sf.text.slice(node.getStart(sf), node.getEnd())));
|
|
89
|
+
const digest = digestCanonicalBody(canonical);
|
|
90
|
+
return {
|
|
91
|
+
bodyHash: digest.hash,
|
|
92
|
+
bodySize: digest.size,
|
|
93
|
+
kind: shape.kind,
|
|
94
|
+
inTestFile: ctx.inTestFile,
|
|
95
|
+
filePath: ctx.projectRel,
|
|
96
|
+
line: startLC.line + 1,
|
|
97
|
+
column: startLC.character,
|
|
98
|
+
endLine: endLC.line + 1,
|
|
99
|
+
simpleName: shape.simpleName,
|
|
100
|
+
qualifiedName: shape.qualifiedName,
|
|
101
|
+
...(digest.signature === undefined ? {} : { bodySignature: digest.signature }),
|
|
102
|
+
...(ctx.pkg === undefined ? {} : { package: ctx.pkg }),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Classify a node as one of the ELIGIBLE function kinds (the kinds duplicate detection
|
|
107
|
+
* considers — arrows / function-expressions / module-init are excluded by policy, so they
|
|
108
|
+
* are not emitted). Returns undefined for everything else and for body-less declarations
|
|
109
|
+
* (overload signatures / ambient `declare`) for the declarations graph drops too.
|
|
110
|
+
*/
|
|
111
|
+
function classify(node, enclosingClass, projectRel) {
|
|
112
|
+
const base = projectRel.replace(/\.tsx?$/, '');
|
|
113
|
+
const inClass = (name) => enclosingClass ? `${base}.${enclosingClass}.${name}` : `${base}.${name}`;
|
|
114
|
+
if (ts.isFunctionDeclaration(node)) {
|
|
115
|
+
const name = functionDeclName(node);
|
|
116
|
+
return name === undefined
|
|
117
|
+
? undefined
|
|
118
|
+
: { kind: 'function-declaration', simpleName: name, qualifiedName: `${base}.${name}` };
|
|
119
|
+
}
|
|
120
|
+
if (ts.isConstructorDeclaration(node)) {
|
|
121
|
+
const className = enclosingClass ?? '<anon-class>';
|
|
122
|
+
return {
|
|
123
|
+
kind: 'constructor',
|
|
124
|
+
simpleName: className,
|
|
125
|
+
qualifiedName: `${base}.${className}.constructor`,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (ts.isMethodDeclaration(node) && node.body) {
|
|
129
|
+
const name = methodName(node, ctxSourceFile(node));
|
|
130
|
+
if (name === undefined)
|
|
131
|
+
return undefined;
|
|
132
|
+
return { kind: 'method', simpleName: name, qualifiedName: inClass(name) };
|
|
133
|
+
}
|
|
134
|
+
if (ts.isGetAccessor(node))
|
|
135
|
+
return accessorShape(node, 'getter', inClass);
|
|
136
|
+
if (ts.isSetAccessor(node))
|
|
137
|
+
return accessorShape(node, 'setter', inClass);
|
|
138
|
+
if (ts.isClassStaticBlockDeclaration(node)) {
|
|
139
|
+
return {
|
|
140
|
+
kind: 'function-declaration',
|
|
141
|
+
simpleName: '<static-init>',
|
|
142
|
+
qualifiedName: inClass('<static-init>'),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
/** Function-declaration name, or undefined for body-less (overload/ambient) and unnamed non-default. */
|
|
148
|
+
function functionDeclName(node) {
|
|
149
|
+
if (!node.body)
|
|
150
|
+
return undefined;
|
|
151
|
+
if (node.name)
|
|
152
|
+
return node.name.text;
|
|
153
|
+
const isDefault = node.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) === true;
|
|
154
|
+
return isDefault ? '<default>' : undefined;
|
|
155
|
+
}
|
|
156
|
+
/** Method name exactly as graph-typescript records it. */
|
|
157
|
+
function methodName(node, sf) {
|
|
158
|
+
const name = node.name;
|
|
159
|
+
if (ts.isIdentifier(name) || ts.isStringLiteral(name))
|
|
160
|
+
return name.text;
|
|
161
|
+
if (ts.isComputedPropertyName(name))
|
|
162
|
+
return name.expression.getText(sf);
|
|
163
|
+
if (ts.isPrivateIdentifier(name))
|
|
164
|
+
return name.text;
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
/** Accessor name exactly as graph-typescript records it; computed/private accessors are skipped. */
|
|
168
|
+
function accessorName(node) {
|
|
169
|
+
const name = node.name;
|
|
170
|
+
return ts.isIdentifier(name) || ts.isStringLiteral(name) ? name.text : undefined;
|
|
171
|
+
}
|
|
172
|
+
function accessorShape(node, kind, inClass) {
|
|
173
|
+
const name = accessorName(node);
|
|
174
|
+
if (name === undefined)
|
|
175
|
+
return undefined;
|
|
176
|
+
return { kind, simpleName: name, qualifiedName: inClass(name) };
|
|
177
|
+
}
|
|
178
|
+
function ctxSourceFile(node) {
|
|
179
|
+
return node.getSourceFile();
|
|
180
|
+
}
|
|
181
|
+
function isGraphTsSourceFile(filePath) {
|
|
182
|
+
return (filePath.endsWith('.ts') || filePath.endsWith('.tsx')) && !filePath.endsWith('.d.ts');
|
|
183
|
+
}
|
|
184
|
+
/** Read a source file, skipping anything over the byte bound (H3). */
|
|
185
|
+
function readBoundedSource(filePath) {
|
|
186
|
+
try {
|
|
187
|
+
if (statSync(filePath).size > MAX_SOURCE_FILE_BYTES)
|
|
188
|
+
return undefined;
|
|
189
|
+
return readFileSync(filePath, 'utf8');
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
logger.debug({
|
|
193
|
+
evt: 'yagni.inventory.source_unreadable',
|
|
194
|
+
module: 'yagni:build-ts-inventory',
|
|
195
|
+
path: filePath,
|
|
196
|
+
err: error instanceof Error ? error.message : String(error),
|
|
197
|
+
});
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Nearest-`package.json` name for a directory, walking UP to (and not past) the project
|
|
203
|
+
* root — mirrors graph's `pkgOf`/`assignPackages` so cross-package aggregation matches.
|
|
204
|
+
* Memoized per directory.
|
|
205
|
+
*/
|
|
206
|
+
function resolvePackage(dir, cwd, cache) {
|
|
207
|
+
const cached = cache.get(dir);
|
|
208
|
+
if (cached !== undefined || cache.has(dir))
|
|
209
|
+
return cached;
|
|
210
|
+
let resolved;
|
|
211
|
+
try {
|
|
212
|
+
const pkg = readFileSync(join(dir, 'package.json'), 'utf8');
|
|
213
|
+
const name = JSON.parse(pkg).name;
|
|
214
|
+
resolved =
|
|
215
|
+
typeof name === 'string' && name.length > 0 ? name : resolveParentPackage(dir, cwd, cache);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
resolved = resolveParentPackage(dir, cwd, cache);
|
|
219
|
+
}
|
|
220
|
+
cache.set(dir, resolved);
|
|
221
|
+
return resolved;
|
|
222
|
+
}
|
|
223
|
+
function resolveParentPackage(dir, cwd, cache) {
|
|
224
|
+
const parent = dirname(dir);
|
|
225
|
+
return dir !== cwd && parent !== dir && dir.startsWith(cwd)
|
|
226
|
+
? resolvePackage(parent, cwd, cache)
|
|
227
|
+
: undefined;
|
|
228
|
+
}
|
|
229
|
+
function packageFallback(projectRel) {
|
|
230
|
+
const segment = projectRel.split('/')[0];
|
|
231
|
+
return segment && segment !== projectRel ? segment : UNKNOWN_PACKAGE;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* O1 — record the inventory parse duration on the opt-in OTel histogram. Fire-and-forget;
|
|
235
|
+
* a no-op when no telemetry backend is configured (ADR-0004). Bounded-cardinality labels
|
|
236
|
+
* only — never paths/symbols/counts as label values. Body text never reaches a label.
|
|
237
|
+
*/
|
|
238
|
+
function recordParseDuration(durationMs, candidateCount) {
|
|
239
|
+
try {
|
|
240
|
+
getMeter('opensip-cli')
|
|
241
|
+
.createHistogram('opensip_cli.yagni.inventory.parse_duration_ms')
|
|
242
|
+
.record(durationMs, { tool: 'yagni', outcome: candidateCount > 0 ? 'ok' : 'empty' });
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
logger.debug({
|
|
246
|
+
evt: 'yagni.inventory.telemetry_record_failed',
|
|
247
|
+
module: 'yagni:build-ts-inventory',
|
|
248
|
+
err: error instanceof Error ? error.message : String(error),
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=build-ts-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-ts-inventory.js","sourceRoot":"","sources":["../../src/lib/build-ts-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { SkippedDetector } from '../detectors/types.js';
|
|
2
|
-
import type { YagniGraphMode } from '../types/yagni-config.js';
|
|
3
2
|
import type { YagniRunSummary } from '../types/yagni-metadata.js';
|
|
4
3
|
import type { SignalEnvelope } from '@opensip-cli/contracts';
|
|
5
4
|
export interface YagniSessionFinding {
|
|
@@ -38,17 +37,15 @@ export interface YagniSessionPayload {
|
|
|
38
37
|
readonly errors: number;
|
|
39
38
|
readonly warnings: number;
|
|
40
39
|
readonly skippedDetectors: readonly SkippedDetector[];
|
|
41
|
-
readonly graphMode?: YagniGraphMode;
|
|
42
|
-
readonly graphBuilt?: boolean;
|
|
43
|
-
readonly graphDetail?: string;
|
|
44
40
|
readonly yagni: YagniRunSummary;
|
|
45
41
|
};
|
|
46
42
|
readonly checks: readonly YagniSessionCheck[];
|
|
47
43
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Forward-compatible loader for persisted yagni session payloads.
|
|
46
|
+
* Pre-feature rows may still carry removed `graphMode`/`graphBuilt`/`graphDetail`
|
|
47
|
+
* fields — they are ignored rather than rejected.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readYagniSessionPayload(raw: unknown): YagniSessionPayload | undefined;
|
|
50
|
+
export declare function buildYagniSessionPayload(envelope: SignalEnvelope, skippedDetectors: readonly SkippedDetector[], yagniSummary: YagniRunSummary): YagniSessionPayload;
|
|
54
51
|
//# sourceMappingURL=session-payload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-payload.d.ts","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"session-payload.d.ts","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,eAAe,EAAE,CAAC;QACtD,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;KACjC,CAAC;IAGF,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC/C;AAqCD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAqBrF;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAAE,SAAS,eAAe,EAAE,EAC5C,YAAY,EAAE,eAAe,GAC5B,mBAAmB,CA0CrB"}
|
|
@@ -1,5 +1,66 @@
|
|
|
1
|
-
import { isErrorSignal } from '@opensip-cli/core';
|
|
2
|
-
|
|
1
|
+
import { isErrorSignal, isPlainRecord } from '@opensip-cli/core';
|
|
2
|
+
function readNumber(raw, key) {
|
|
3
|
+
const value = raw[key];
|
|
4
|
+
return typeof value === 'number' ? value : 0;
|
|
5
|
+
}
|
|
6
|
+
function parseYagniRunSummary(yagniRaw) {
|
|
7
|
+
const byConfidence = isPlainRecord(yagniRaw.byConfidence) ? yagniRaw.byConfidence : {};
|
|
8
|
+
return {
|
|
9
|
+
totalCandidates: readNumber(yagniRaw, 'totalCandidates'),
|
|
10
|
+
byConfidence: {
|
|
11
|
+
high: readNumber(byConfidence, 'high'),
|
|
12
|
+
medium: readNumber(byConfidence, 'medium'),
|
|
13
|
+
low: readNumber(byConfidence, 'low'),
|
|
14
|
+
},
|
|
15
|
+
estimatedTotalLocReduction: readNumber(yagniRaw, 'estimatedTotalLocReduction'),
|
|
16
|
+
skippedDetectors: Array.isArray(yagniRaw.skippedDetectors)
|
|
17
|
+
? yagniRaw.skippedDetectors.filter(isPlainRecord).map((s) => ({
|
|
18
|
+
slug: typeof s.slug === 'string' ? s.slug : '',
|
|
19
|
+
reason: typeof s.reason === 'string' ? s.reason : 'disabled',
|
|
20
|
+
...(typeof s.detail === 'string' ? { detail: s.detail } : {}),
|
|
21
|
+
}))
|
|
22
|
+
: [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function parseSkippedDetectors(summaryRaw) {
|
|
26
|
+
if (!Array.isArray(summaryRaw.skippedDetectors))
|
|
27
|
+
return [];
|
|
28
|
+
return summaryRaw.skippedDetectors.filter(isPlainRecord).map((s) => ({
|
|
29
|
+
id: typeof s.id === 'string' ? s.id : '',
|
|
30
|
+
slug: typeof s.slug === 'string' ? s.slug : '',
|
|
31
|
+
reason: 'disabled',
|
|
32
|
+
...(typeof s.detail === 'string' ? { detail: s.detail } : {}),
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Forward-compatible loader for persisted yagni session payloads.
|
|
37
|
+
* Pre-feature rows may still carry removed `graphMode`/`graphBuilt`/`graphDetail`
|
|
38
|
+
* fields — they are ignored rather than rejected.
|
|
39
|
+
*/
|
|
40
|
+
export function readYagniSessionPayload(raw) {
|
|
41
|
+
if (!isPlainRecord(raw) || raw.__version !== 1)
|
|
42
|
+
return undefined;
|
|
43
|
+
if (!isPlainRecord(raw.summary) || !Array.isArray(raw.checks))
|
|
44
|
+
return undefined;
|
|
45
|
+
const summaryRaw = raw.summary;
|
|
46
|
+
const yagniRaw = summaryRaw.yagni;
|
|
47
|
+
if (!isPlainRecord(yagniRaw))
|
|
48
|
+
return undefined;
|
|
49
|
+
return {
|
|
50
|
+
__version: 1,
|
|
51
|
+
summary: {
|
|
52
|
+
total: readNumber(summaryRaw, 'total'),
|
|
53
|
+
passed: readNumber(summaryRaw, 'passed'),
|
|
54
|
+
failed: readNumber(summaryRaw, 'failed'),
|
|
55
|
+
errors: readNumber(summaryRaw, 'errors'),
|
|
56
|
+
warnings: readNumber(summaryRaw, 'warnings'),
|
|
57
|
+
skippedDetectors: parseSkippedDetectors(summaryRaw),
|
|
58
|
+
yagni: parseYagniRunSummary(yagniRaw),
|
|
59
|
+
},
|
|
60
|
+
checks: raw.checks,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function buildYagniSessionPayload(envelope, skippedDetectors, yagniSummary) {
|
|
3
64
|
const bySource = new Map();
|
|
4
65
|
for (const signal of envelope.signals) {
|
|
5
66
|
const bucket = bySource.get(signal.source);
|
|
@@ -37,10 +98,7 @@ export function buildYagniSessionPayload(envelope, skippedDetectors, graph) {
|
|
|
37
98
|
errors: summary.errors,
|
|
38
99
|
warnings: summary.warnings,
|
|
39
100
|
skippedDetectors,
|
|
40
|
-
|
|
41
|
-
graphBuilt: graph.graphBuilt,
|
|
42
|
-
...(graph.graphDetail === undefined ? {} : { graphDetail: graph.graphDetail }),
|
|
43
|
-
yagni: graph.yagniSummary,
|
|
101
|
+
yagni: yagniSummary,
|
|
44
102
|
},
|
|
45
103
|
checks,
|
|
46
104
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-payload.js","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-payload.js","sourceRoot":"","sources":["../../src/persistence/session-payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,16 +99,15 @@ describe('buildYagniRunSummary', () => {
|
|
|
99
99
|
mk({ id: 'm', confidence: 'medium', net: 5 }),
|
|
100
100
|
mk({ id: 'l', confidence: 'low', withLocDelta: false }),
|
|
101
101
|
noMeta('/n.ts'),
|
|
102
|
-
],
|
|
103
|
-
{ id: 'wd', slug: 'with-detail', reason: '
|
|
102
|
+
], [
|
|
103
|
+
{ id: 'wd', slug: 'with-detail', reason: 'disabled', detail: 'configured' },
|
|
104
104
|
{ id: 'nd', slug: 'no-detail', reason: 'disabled' },
|
|
105
105
|
]);
|
|
106
106
|
expect(summary.byConfidence).toEqual({ high: 1, medium: 1, low: 1 });
|
|
107
107
|
expect(summary.estimatedTotalLocReduction).toBe(15);
|
|
108
108
|
expect(summary.totalCandidates).toBe(4);
|
|
109
|
-
expect(summary.graphMode).toBe('build');
|
|
110
109
|
expect(summary.skippedDetectors).toEqual([
|
|
111
|
-
{ slug: 'with-detail', reason: '
|
|
110
|
+
{ slug: 'with-detail', reason: 'disabled', detail: 'configured' },
|
|
112
111
|
{ slug: 'no-detail', reason: 'disabled' },
|
|
113
112
|
]);
|
|
114
113
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confidence.test.js","sourceRoot":"","sources":["../../../src/scoring/__tests__/confidence.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"confidence.test.js","sourceRoot":"","sources":["../../../src/scoring/__tests__/confidence.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,6 @@ export declare function filterByMinConfidence(signals: readonly Signal[], minCon
|
|
|
7
7
|
export declare function filterByReductionCategories(signals: readonly Signal[], categories: readonly string[]): Signal[];
|
|
8
8
|
/** Stable sort: confidence DESC → estimateKind → netEstimate DESC → detector → location. */
|
|
9
9
|
export declare function sortYagniSignals(signals: readonly Signal[]): Signal[];
|
|
10
|
-
export declare function buildYagniRunSummary(signals: readonly Signal[],
|
|
10
|
+
export declare function buildYagniRunSummary(signals: readonly Signal[], skippedDetectors: readonly SkippedDetector[]): YagniRunSummary;
|
|
11
11
|
export declare function severityForConfidence(confidence: YagniConfidence): 'low' | 'medium';
|
|
12
12
|
//# sourceMappingURL=confidence.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../../src/scoring/confidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAoBhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAIlF;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,aAAa,EAAE,eAAe,GAC7B,MAAM,EAAE,CAOV;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,MAAM,EAAE,CAQV;AAQD,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBrE;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,
|
|
1
|
+
{"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../../src/scoring/confidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAoBhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAIlF;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,aAAa,EAAE,eAAe,GAC7B,MAAM,EAAE,CAOV;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,MAAM,EAAE,CAQV;AAQD,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAsBrE;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,gBAAgB,EAAE,SAAS,eAAe,EAAE,GAC3C,eAAe,CA2BjB;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,eAAe,GAAG,KAAK,GAAG,QAAQ,CAEnF"}
|
|
@@ -69,7 +69,7 @@ export function sortYagniSignals(signals) {
|
|
|
69
69
|
return locationKey(a).localeCompare(locationKey(b));
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
|
-
export function buildYagniRunSummary(signals,
|
|
72
|
+
export function buildYagniRunSummary(signals, skippedDetectors) {
|
|
73
73
|
let high = 0;
|
|
74
74
|
let medium = 0;
|
|
75
75
|
let low = 0;
|
|
@@ -92,7 +92,6 @@ export function buildYagniRunSummary(signals, graphMode, skippedDetectors) {
|
|
|
92
92
|
totalCandidates: signals.length,
|
|
93
93
|
byConfidence: { high, medium, low },
|
|
94
94
|
estimatedTotalLocReduction,
|
|
95
|
-
graphMode,
|
|
96
95
|
skippedDetectors: skippedDetectors.map((s) => ({
|
|
97
96
|
slug: s.slug,
|
|
98
97
|
reason: s.reason,
|