@pactosigna/trace 0.1.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/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7391 -0
- package/dist/commands/check.d.ts +11 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/context.d.ts +9 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/drm-check.d.ts +9 -0
- package/dist/commands/drm-check.d.ts.map +1 -0
- package/dist/commands/impact.d.ts +17 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/report.d.ts +8 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/risk.d.ts +8 -0
- package/dist/commands/risk.d.ts.map +1 -0
- package/dist/commands/rtm.d.ts +8 -0
- package/dist/commands/rtm.d.ts.map +1 -0
- package/dist/commands/validate.d.ts +8 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/vsr.d.ts +9 -0
- package/dist/commands/vsr.d.ts.map +1 -0
- package/dist/config/load-config.d.ts +14 -0
- package/dist/config/load-config.d.ts.map +1 -0
- package/dist/config/types.d.ts +52 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/formatters/format-check.d.ts +28 -0
- package/dist/formatters/format-check.d.ts.map +1 -0
- package/dist/formatters/format-impact.d.ts +37 -0
- package/dist/formatters/format-impact.d.ts.map +1 -0
- package/dist/formatters/format-risk.d.ts +21 -0
- package/dist/formatters/format-risk.d.ts.map +1 -0
- package/dist/impact/baseline-scan.d.ts +18 -0
- package/dist/impact/baseline-scan.d.ts.map +1 -0
- package/dist/impact/diff-gaps.d.ts +20 -0
- package/dist/impact/diff-gaps.d.ts.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4794 -0
- package/dist/loaders/filesystem-document-loader.d.ts +40 -0
- package/dist/loaders/filesystem-document-loader.d.ts.map +1 -0
- package/dist/test-report/build-report.d.ts +6 -0
- package/dist/test-report/build-report.d.ts.map +1 -0
- package/dist/test-report/format-str.d.ts +6 -0
- package/dist/test-report/format-str.d.ts.map +1 -0
- package/dist/test-report/index.d.ts +24 -0
- package/dist/test-report/index.d.ts.map +1 -0
- package/dist/test-report/parse-results.d.ts +10 -0
- package/dist/test-report/parse-results.d.ts.map +1 -0
- package/dist/test-report/types.d.ts +112 -0
- package/dist/test-report/types.d.ts.map +1 -0
- package/dist/traceability/context.d.ts +24 -0
- package/dist/traceability/context.d.ts.map +1 -0
- package/dist/traceability/cross-reference.d.ts +15 -0
- package/dist/traceability/cross-reference.d.ts.map +1 -0
- package/dist/traceability/drm-check.d.ts +29 -0
- package/dist/traceability/drm-check.d.ts.map +1 -0
- package/dist/traceability/format-report.d.ts +6 -0
- package/dist/traceability/format-report.d.ts.map +1 -0
- package/dist/traceability/format-rtm.d.ts +7 -0
- package/dist/traceability/format-rtm.d.ts.map +1 -0
- package/dist/traceability/graph/build-graph.d.ts +10 -0
- package/dist/traceability/graph/build-graph.d.ts.map +1 -0
- package/dist/traceability/graph/coverage-query.d.ts +20 -0
- package/dist/traceability/graph/coverage-query.d.ts.map +1 -0
- package/dist/traceability/graph/format.d.ts +21 -0
- package/dist/traceability/graph/format.d.ts.map +1 -0
- package/dist/traceability/graph/parse-docs.d.ts +12 -0
- package/dist/traceability/graph/parse-docs.d.ts.map +1 -0
- package/dist/traceability/graph/parse-tests.d.ts +14 -0
- package/dist/traceability/graph/parse-tests.d.ts.map +1 -0
- package/dist/traceability/graph/resolve.d.ts +35 -0
- package/dist/traceability/graph/resolve.d.ts.map +1 -0
- package/dist/traceability/graph/types.d.ts +68 -0
- package/dist/traceability/graph/types.d.ts.map +1 -0
- package/dist/traceability/graph/walk.d.ts +10 -0
- package/dist/traceability/graph/walk.d.ts.map +1 -0
- package/dist/traceability/impact.d.ts +43 -0
- package/dist/traceability/impact.d.ts.map +1 -0
- package/dist/traceability/index.d.ts +10 -0
- package/dist/traceability/index.d.ts.map +1 -0
- package/dist/traceability/load-rules.d.ts +43 -0
- package/dist/traceability/load-rules.d.ts.map +1 -0
- package/dist/traceability/lookups.d.ts +25 -0
- package/dist/traceability/lookups.d.ts.map +1 -0
- package/dist/traceability/parse-compliance.d.ts +7 -0
- package/dist/traceability/parse-compliance.d.ts.map +1 -0
- package/dist/traceability/parse-frontmatter.d.ts +13 -0
- package/dist/traceability/parse-frontmatter.d.ts.map +1 -0
- package/dist/traceability/parse-requirements.d.ts +19 -0
- package/dist/traceability/parse-requirements.d.ts.map +1 -0
- package/dist/traceability/scan-e2e.d.ts +14 -0
- package/dist/traceability/scan-e2e.d.ts.map +1 -0
- package/dist/traceability/scan-unit.d.ts +7 -0
- package/dist/traceability/scan-unit.d.ts.map +1 -0
- package/dist/traceability/trace-cli.d.ts +20 -0
- package/dist/traceability/trace-cli.d.ts.map +1 -0
- package/dist/traceability/types.d.ts +50 -0
- package/dist/traceability/types.d.ts.map +1 -0
- package/dist/validation-report/index.d.ts +13 -0
- package/dist/validation-report/index.d.ts.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface LegacyTraceOptions {
|
|
2
|
+
rootDir: string;
|
|
3
|
+
mode: 'report' | 'check' | 'rtm';
|
|
4
|
+
}
|
|
5
|
+
export interface LegacyTraceResult {
|
|
6
|
+
output: string;
|
|
7
|
+
gapCount: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function runLegacyTraceability(options: LegacyTraceOptions): LegacyTraceResult;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/traceability/index.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAiFpF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ImpactRulesConfig } from '../config/types.js';
|
|
2
|
+
export interface DomainEntry {
|
|
3
|
+
code?: string[];
|
|
4
|
+
frontend?: string[];
|
|
5
|
+
requirements?: string[];
|
|
6
|
+
risks?: string[];
|
|
7
|
+
architecture?: string[];
|
|
8
|
+
domain_model?: string[];
|
|
9
|
+
user_needs?: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface RuleTrigger {
|
|
12
|
+
glob: string;
|
|
13
|
+
excludes?: string[];
|
|
14
|
+
condition?: 'new_file' | 'contains_new_pattern';
|
|
15
|
+
pattern?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface RuleExpect {
|
|
18
|
+
glob?: string;
|
|
19
|
+
lookup?: string;
|
|
20
|
+
marker?: string;
|
|
21
|
+
severity: 'error' | 'warning';
|
|
22
|
+
message: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ImpactRule {
|
|
25
|
+
id: string;
|
|
26
|
+
trigger: RuleTrigger;
|
|
27
|
+
expects: RuleExpect[];
|
|
28
|
+
}
|
|
29
|
+
export interface ImpactConfig {
|
|
30
|
+
domains: Record<string, DomainEntry>;
|
|
31
|
+
rules: ImpactRule[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Load impact rules from a YAML file path.
|
|
35
|
+
* Use parseRules() instead when you have an ImpactRulesConfig from TraceConfig.
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadRules(filePath: string): ImpactConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Parse impact rules from a pre-loaded ImpactRulesConfig (from pactosigna-trace.yaml).
|
|
40
|
+
* This avoids reading a separate YAML file -- the config is already parsed by load-config.ts.
|
|
41
|
+
*/
|
|
42
|
+
export declare function parseRules(config: ImpactRulesConfig): ImpactConfig;
|
|
43
|
+
//# sourceMappingURL=load-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-rules.d.ts","sourceRoot":"","sources":["../../src/traceability/load-rules.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,UAAU,GAAG,sBAAsB,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AA2BD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAKxD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,YAAY,CAkClE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Requirement, TestReference } from './types.js';
|
|
2
|
+
import type { DocumentFrontmatter } from './parse-frontmatter.js';
|
|
3
|
+
export interface LookupIndex {
|
|
4
|
+
requirements: Requirement[];
|
|
5
|
+
testRefs: TestReference[];
|
|
6
|
+
docs: DocumentFrontmatter[];
|
|
7
|
+
reqMap: Map<string, Requirement>;
|
|
8
|
+
coverageMap: Map<string, TestReference[]>;
|
|
9
|
+
riskMap: Map<string, string[]>;
|
|
10
|
+
}
|
|
11
|
+
export declare function buildLookupIndex(root: string): LookupIndex;
|
|
12
|
+
export declare function requirementExists(index: LookupIndex, reqId: string): boolean;
|
|
13
|
+
export declare function riskCoverageForSrs(index: LookupIndex, srsDocId: string): {
|
|
14
|
+
covered: string[];
|
|
15
|
+
uncovered: string[];
|
|
16
|
+
};
|
|
17
|
+
export declare function testCoverageForSrs(index: LookupIndex, srsDocId: string): {
|
|
18
|
+
covered: string[];
|
|
19
|
+
uncovered: string[];
|
|
20
|
+
};
|
|
21
|
+
export declare function mitigationsHaveRequirements(index: LookupIndex, riskDocId: string): {
|
|
22
|
+
linked: string[];
|
|
23
|
+
unlinked: string[];
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=lookups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookups.d.ts","sourceRoot":"","sources":["../../src/traceability/lookups.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,EAAE,mBAAmB,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAChC;AAmBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA4D1D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAS5C;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAY5C;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,GAChB;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAU1C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComplianceEntry } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse the Part 11 compliance matrix markdown to extract section status.
|
|
4
|
+
* Tables have columns: Section | Requirement | Status | Evidence | Notes
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseComplianceMatrix(content: string): ComplianceEntry[];
|
|
7
|
+
//# sourceMappingURL=parse-compliance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-compliance.d.ts","sourceRoot":"","sources":["../../src/traceability/parse-compliance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CA+CxE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DocumentFrontmatter {
|
|
2
|
+
id: string;
|
|
3
|
+
title: string;
|
|
4
|
+
type: 'UN' | 'PRS' | 'SRS' | 'HAZ' | 'RISK' | 'HLD' | 'SDD' | 'DDD';
|
|
5
|
+
derives?: string[];
|
|
6
|
+
traces_from?: string[];
|
|
7
|
+
traces_to?: string[];
|
|
8
|
+
analyzes?: string[];
|
|
9
|
+
leads_to?: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function parseFrontmatter(filePath: string): DocumentFrontmatter;
|
|
12
|
+
export declare function parseAllDocsInDir(dir: string, pattern: RegExp): DocumentFrontmatter[];
|
|
13
|
+
//# sourceMappingURL=parse-frontmatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-frontmatter.d.ts","sourceRoot":"","sources":["../../src/traceability/parse-frontmatter.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACpE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAcD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAuBtE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAkBrF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Requirement } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse a PRS or SRS markdown file content to extract requirements
|
|
4
|
+
* from the "Verification Criteria" table.
|
|
5
|
+
*
|
|
6
|
+
* Supports two table formats:
|
|
7
|
+
*
|
|
8
|
+
* Legacy 3-column:
|
|
9
|
+
* | Requirement | Verification Method | Criteria |
|
|
10
|
+
* | ------------- | ------------------- | ----------- |
|
|
11
|
+
* | PRS-SIG-001.1 | E2E Test | Description |
|
|
12
|
+
*
|
|
13
|
+
* New 4-column (with Protocol):
|
|
14
|
+
* | Requirement | Protocol | Method | Criteria |
|
|
15
|
+
* | ------------- | -------- | -------- | ----------- |
|
|
16
|
+
* | PRS-SIG-001.1 | TP-001 | E2E Test | Description |
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseRequirementsFromMarkdown(content: string, documentId: string, level: 'PRS' | 'SRS'): Requirement[];
|
|
19
|
+
//# sourceMappingURL=parse-requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-requirements.d.ts","sourceRoot":"","sources":["../../src/traceability/parse-requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,GAAG,KAAK,GACnB,WAAW,EAAE,CA6Df"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TestReference } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract @req-PRS-XXX-001.N tags from a Gherkin feature file.
|
|
4
|
+
* Returns one TestReference per tag-scenario pair.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractReqTagsFromFeature(content: string, filePath: string): TestReference[];
|
|
7
|
+
/**
|
|
8
|
+
* Find all Gherkin scenarios that have NO @req tag (orphans).
|
|
9
|
+
*/
|
|
10
|
+
export declare function findOrphanScenarios(content: string, filePath: string): {
|
|
11
|
+
file: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}[];
|
|
14
|
+
//# sourceMappingURL=scan-e2e.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-e2e.d.ts","sourceRoot":"","sources":["../../src/traceability/scan-e2e.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAKhD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAqC5F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CA8BlC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TestReference } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract @req PRS-XXX-001.N or @req SRS-XXX-001.N markers from vitest files.
|
|
4
|
+
* Scans describe(), it(), and test() block names.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractReqMarkersFromTestFile(content: string, filePath: string): TestReference[];
|
|
7
|
+
//# sourceMappingURL=scan-unit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan-unit.d.ts","sourceRoot":"","sources":["../../src/traceability/scan-unit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA2BhG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SoftwareItemConfig } from '../config/types.js';
|
|
2
|
+
export interface TraceCheckResult {
|
|
3
|
+
output: string;
|
|
4
|
+
gapCount: number;
|
|
5
|
+
passed: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* @param softwareItems Software items config from pactosigna-trace.yaml.
|
|
9
|
+
*/
|
|
10
|
+
export declare function runTraceContext(rootDir: string, domain: string, softwareItems?: Record<string, SoftwareItemConfig>): string;
|
|
11
|
+
/**
|
|
12
|
+
* @param softwareItems Software items config from pactosigna-trace.yaml.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runTraceImpact(rootDir: string, softwareItems?: Record<string, SoftwareItemConfig>): string;
|
|
15
|
+
/**
|
|
16
|
+
* @param softwareItems Software items config from pactosigna-trace.yaml.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runTraceAssess(rootDir: string, planFile: string, softwareItems?: Record<string, SoftwareItemConfig>): string;
|
|
19
|
+
export declare function runTraceCheck(rootDir: string): TraceCheckResult;
|
|
20
|
+
//# sourceMappingURL=trace-cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-cli.d.ts","sourceRoot":"","sources":["../../src/traceability/trace-cli.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAI7D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AA6FD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GACjD,MAAM,CAkBR;AAID;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GACjD,MAAM,CAuBR;AAID;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GACjD,MAAM,CAqBR;AAiFD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CA6C/D"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface Requirement {
|
|
2
|
+
id: string;
|
|
3
|
+
document: string;
|
|
4
|
+
domain: string;
|
|
5
|
+
level: 'PRS' | 'SRS';
|
|
6
|
+
verificationMethod: string;
|
|
7
|
+
criteria: string;
|
|
8
|
+
regulatoryCompliance: string[];
|
|
9
|
+
}
|
|
10
|
+
export interface TestReference {
|
|
11
|
+
requirementId: string;
|
|
12
|
+
testType: 'e2e' | 'unit';
|
|
13
|
+
file: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}
|
|
16
|
+
export interface TraceabilityMatrix {
|
|
17
|
+
requirements: Requirement[];
|
|
18
|
+
testReferences: TestReference[];
|
|
19
|
+
covered: Map<string, TestReference[]>;
|
|
20
|
+
uncovered: Requirement[];
|
|
21
|
+
orphanTests: TestReference[];
|
|
22
|
+
}
|
|
23
|
+
export interface ComplianceEntry {
|
|
24
|
+
section: string;
|
|
25
|
+
status: 'Compliant' | 'Partially Compliant' | 'Planned' | 'N/A';
|
|
26
|
+
linkedRequirements: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface TraceabilityReport {
|
|
29
|
+
matrix: TraceabilityMatrix;
|
|
30
|
+
compliance: ComplianceEntry[];
|
|
31
|
+
gaps: Gap[];
|
|
32
|
+
}
|
|
33
|
+
export type GapCategory = 'MISSING_TEST_COVERAGE' | 'MISSING_DOCUMENTATION' | 'ORPHAN_TEST' | 'COMPLIANCE_WITHOUT_EVIDENCE' | 'INVALID_REQ_REFERENCE' | 'BROKEN_TRACE' | 'ORPHAN_REQUIREMENT';
|
|
34
|
+
export interface Gap {
|
|
35
|
+
category: GapCategory;
|
|
36
|
+
message: string;
|
|
37
|
+
requirementId?: string;
|
|
38
|
+
testFile?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface DocumentLink {
|
|
41
|
+
sourceId: string;
|
|
42
|
+
targetId: string;
|
|
43
|
+
direction: 'traces_from' | 'traces_to' | 'derives' | 'analyzes' | 'leads_to';
|
|
44
|
+
}
|
|
45
|
+
export interface RiskEntry {
|
|
46
|
+
id: string;
|
|
47
|
+
analyzes: string;
|
|
48
|
+
file: string;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/traceability/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACtC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,WAAW,EAAE,aAAa,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,qBAAqB,GAAG,SAAS,GAAG,KAAK,CAAC;IAChE,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,MAAM,MAAM,WAAW,GACnB,uBAAuB,GACvB,uBAAuB,GACvB,aAAa,GACb,6BAA6B,GAC7B,uBAAuB,GACvB,cAAc,GACd,oBAAoB,CAAC;AAEzB,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;CAC9E;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface GitContext {
|
|
2
|
+
commit: string;
|
|
3
|
+
branch: string;
|
|
4
|
+
tag: string;
|
|
5
|
+
}
|
|
6
|
+
export interface VSROptions {
|
|
7
|
+
rootDir: string;
|
|
8
|
+
vitestJsonPath?: string;
|
|
9
|
+
playwrightJsonPath?: string;
|
|
10
|
+
gitContext?: GitContext;
|
|
11
|
+
}
|
|
12
|
+
export declare function generateVSR(options: VSROptions): string;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation-report/index.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAiBD,wBAAgB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CA8CvD"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@pactosigna/trace",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "QMS traceability engine — gap detection, risk analysis, impact analysis (IEC 62304, ISO 14971)",
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"bin": {
|
|
14
|
+
"pactosigna-trace": "./dist/cli.js"
|
|
15
|
+
},
|
|
16
|
+
"main": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"import": "./dist/index.js",
|
|
21
|
+
"types": "./dist/index.d.ts"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsup && tsc -p tsconfig.build.json",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"test:coverage": "vitest run --coverage",
|
|
28
|
+
"typecheck": "tsc --noEmit",
|
|
29
|
+
"clean": "rm -rf dist"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"gray-matter": "^4.0.3",
|
|
33
|
+
"js-yaml": "^4.1.1",
|
|
34
|
+
"minimatch": "^10.2.4",
|
|
35
|
+
"zod": "^3.24.1"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@pactosigna/domain": "workspace:*",
|
|
39
|
+
"@pactosigna/schemas": "workspace:*",
|
|
40
|
+
"@types/js-yaml": "^4.0.9",
|
|
41
|
+
"@types/minimatch": "^6.0.0",
|
|
42
|
+
"@vitest/coverage-v8": "^3.0.0",
|
|
43
|
+
"tsup": "^8.0.0",
|
|
44
|
+
"typescript": "^5.7.2",
|
|
45
|
+
"vitest": "^3.0.0"
|
|
46
|
+
},
|
|
47
|
+
"license": "MIT"
|
|
48
|
+
}
|