qfai 0.4.2 → 0.4.4
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 +14 -0
- package/assets/init/.qfai/README.md +1 -0
- package/assets/init/.qfai/contracts/README.md +17 -8
- package/assets/init/.qfai/contracts/api/api-0001-sample.yaml +3 -2
- package/assets/init/.qfai/contracts/db/db-0001-sample.sql +2 -1
- package/assets/init/.qfai/contracts/ui/ui-0001-sample.yaml +3 -1
- package/assets/init/.qfai/promptpack/modes/change.md +3 -2
- package/assets/init/.qfai/promptpack/modes/compatibility.md +2 -0
- package/assets/init/.qfai/prompts/require-to-spec.md +4 -2
- package/assets/init/.qfai/specs/README.md +9 -2
- package/assets/init/.qfai/specs/spec-0001/spec.md +2 -0
- package/assets/init/root/qfai.config.yaml +0 -1
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +30 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/report.d.ts +7 -0
- package/dist/cli/commands/report.d.ts.map +1 -0
- package/dist/cli/commands/report.js +80 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +9 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +57 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/index.cjs +504 -328
- package/dist/cli/index.cjs.map +1 -1
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.mjs +504 -328
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib/args.d.ts +18 -0
- package/dist/cli/lib/args.d.ts.map +1 -0
- package/dist/cli/lib/args.js +98 -0
- package/dist/cli/lib/args.js.map +1 -0
- package/dist/cli/lib/assets.d.ts +2 -0
- package/dist/cli/lib/assets.d.ts.map +1 -0
- package/dist/cli/lib/assets.js +24 -0
- package/dist/cli/lib/assets.js.map +1 -0
- package/dist/cli/lib/failOn.d.ts +5 -0
- package/dist/cli/lib/failOn.d.ts.map +1 -0
- package/dist/cli/lib/failOn.js +10 -0
- package/dist/cli/lib/failOn.js.map +1 -0
- package/dist/cli/lib/fs.d.ts +11 -0
- package/dist/cli/lib/fs.d.ts.map +1 -0
- package/dist/cli/lib/fs.js +91 -0
- package/dist/cli/lib/fs.js.map +1 -0
- package/dist/cli/lib/logger.d.ts +4 -0
- package/dist/cli/lib/logger.d.ts.map +1 -0
- package/dist/cli/lib/logger.js +10 -0
- package/dist/cli/lib/logger.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +66 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/core/config.d.ts +47 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +224 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/contractIndex.d.ts +12 -0
- package/dist/core/contractIndex.d.ts.map +1 -0
- package/dist/core/contractIndex.js +38 -0
- package/dist/core/contractIndex.js.map +1 -0
- package/dist/core/contracts.d.ts +5 -0
- package/dist/core/contracts.d.ts.map +1 -0
- package/dist/core/contracts.js +42 -0
- package/dist/core/contracts.js.map +1 -0
- package/dist/core/contractsDecl.d.ts +3 -0
- package/dist/core/contractsDecl.d.ts.map +1 -0
- package/dist/core/contractsDecl.js +19 -0
- package/dist/core/contractsDecl.js.map +1 -0
- package/dist/core/discovery.d.ts +14 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +55 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/fs.d.ts +11 -0
- package/dist/core/fs.d.ts.map +1 -0
- package/dist/core/fs.js +68 -0
- package/dist/core/fs.js.map +1 -0
- package/dist/core/gherkin/parse.d.ts +7 -0
- package/dist/core/gherkin/parse.d.ts.map +1 -0
- package/dist/core/gherkin/parse.js +25 -0
- package/dist/core/gherkin/parse.js.map +1 -0
- package/dist/core/ids.d.ts +6 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +52 -0
- package/dist/core/ids.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/parse/adr.d.ts +13 -0
- package/dist/core/parse/adr.d.ts.map +1 -0
- package/dist/core/parse/adr.js +33 -0
- package/dist/core/parse/adr.js.map +1 -0
- package/dist/core/parse/gherkin.d.ts +12 -0
- package/dist/core/parse/gherkin.d.ts.map +1 -0
- package/dist/core/parse/gherkin.js +22 -0
- package/dist/core/parse/gherkin.js.map +1 -0
- package/dist/core/parse/markdown.d.ts +14 -0
- package/dist/core/parse/markdown.d.ts.map +1 -0
- package/dist/core/parse/markdown.js +45 -0
- package/dist/core/parse/markdown.js.map +1 -0
- package/dist/core/parse/spec.d.ts +36 -0
- package/dist/core/parse/spec.d.ts.map +1 -0
- package/dist/core/parse/spec.js +123 -0
- package/dist/core/parse/spec.js.map +1 -0
- package/dist/core/report.d.ts +55 -0
- package/dist/core/report.d.ts.map +1 -0
- package/dist/core/report.js +393 -0
- package/dist/core/report.js.map +1 -0
- package/dist/core/scenarioModel.d.ts +33 -0
- package/dist/core/scenarioModel.d.ts.map +1 -0
- package/dist/core/scenarioModel.js +128 -0
- package/dist/core/scenarioModel.js.map +1 -0
- package/dist/core/specLayout.d.ts +8 -0
- package/dist/core/specLayout.d.ts.map +1 -0
- package/dist/core/specLayout.js +36 -0
- package/dist/core/specLayout.js.map +1 -0
- package/dist/core/traceability.d.ts +26 -0
- package/dist/core/traceability.d.ts.map +1 -0
- package/dist/core/traceability.js +157 -0
- package/dist/core/traceability.js.map +1 -0
- package/dist/core/types.d.ts +31 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/validate.d.ts +4 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +45 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/core/validators/contracts.d.ts +5 -0
- package/dist/core/validators/contracts.d.ts.map +1 -0
- package/dist/core/validators/contracts.js +189 -0
- package/dist/core/validators/contracts.js.map +1 -0
- package/dist/core/validators/delta.d.ts +4 -0
- package/dist/core/validators/delta.d.ts.map +1 -0
- package/dist/core/validators/delta.js +68 -0
- package/dist/core/validators/delta.js.map +1 -0
- package/dist/core/validators/ids.d.ts +4 -0
- package/dist/core/validators/ids.d.ts.map +1 -0
- package/dist/core/validators/ids.js +88 -0
- package/dist/core/validators/ids.js.map +1 -0
- package/dist/core/validators/scenario.d.ts +5 -0
- package/dist/core/validators/scenario.d.ts.map +1 -0
- package/dist/core/validators/scenario.js +127 -0
- package/dist/core/validators/scenario.js.map +1 -0
- package/dist/core/validators/spec.d.ts +5 -0
- package/dist/core/validators/spec.d.ts.map +1 -0
- package/dist/core/validators/spec.js +94 -0
- package/dist/core/validators/spec.js.map +1 -0
- package/dist/core/validators/traceability.d.ts +4 -0
- package/dist/core/validators/traceability.d.ts.map +1 -0
- package/dist/core/validators/traceability.js +222 -0
- package/dist/core/validators/traceability.js.map +1 -0
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +25 -0
- package/dist/core/version.js.map +1 -0
- package/dist/index.cjs +504 -328
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -4
- package/dist/index.d.ts +2 -156
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +504 -328
- package/dist/index.mjs.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -60,7 +60,6 @@ type QfaiValidationConfig = {
|
|
|
60
60
|
};
|
|
61
61
|
traceability: {
|
|
62
62
|
brMustHaveSc: boolean;
|
|
63
|
-
scMustTouchContracts: boolean;
|
|
64
63
|
scMustHaveTest: boolean;
|
|
65
64
|
testFileGlobs: string[];
|
|
66
65
|
testFileExcludeGlobs: string[];
|
|
@@ -88,7 +87,7 @@ declare function getConfigPath(root: string): string;
|
|
|
88
87
|
declare function loadConfig(root: string): Promise<ConfigLoadResult>;
|
|
89
88
|
declare function resolvePath(root: string, config: QfaiConfig, key: ConfigPathKey): string;
|
|
90
89
|
|
|
91
|
-
type IdPrefix = "SPEC" | "BR" | "SC" | "UI" | "API" | "
|
|
90
|
+
type IdPrefix = "SPEC" | "BR" | "SC" | "UI" | "API" | "DB";
|
|
92
91
|
type IdFormatPrefix = IdPrefix | "ADR";
|
|
93
92
|
declare function extractIds(text: string, prefix: IdPrefix): string[];
|
|
94
93
|
declare function extractAllIds(text: string): string[];
|
|
@@ -110,7 +109,17 @@ type ReportIds = {
|
|
|
110
109
|
sc: string[];
|
|
111
110
|
ui: string[];
|
|
112
111
|
api: string[];
|
|
113
|
-
|
|
112
|
+
db: string[];
|
|
113
|
+
};
|
|
114
|
+
type ReportContractCoverage = {
|
|
115
|
+
total: number;
|
|
116
|
+
referenced: number;
|
|
117
|
+
orphan: number;
|
|
118
|
+
idToSpecs: Record<string, string[]>;
|
|
119
|
+
};
|
|
120
|
+
type ReportSpecCoverage = {
|
|
121
|
+
contractRefMissing: number;
|
|
122
|
+
specToContractIds: Record<string, string[]>;
|
|
114
123
|
};
|
|
115
124
|
type ReportTraceability = {
|
|
116
125
|
upstreamIdsFound: number;
|
|
@@ -118,6 +127,8 @@ type ReportTraceability = {
|
|
|
118
127
|
sc: ScCoverage;
|
|
119
128
|
scSources: Record<string, string[]>;
|
|
120
129
|
testFiles: TestFileScan;
|
|
130
|
+
contracts: ReportContractCoverage;
|
|
131
|
+
specs: ReportSpecCoverage;
|
|
121
132
|
};
|
|
122
133
|
type ReportData = {
|
|
123
134
|
tool: "qfai";
|
|
@@ -153,4 +164,4 @@ declare function validateSpecContent(text: string, file: string, requiredSection
|
|
|
153
164
|
|
|
154
165
|
declare function validateTraceability(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
155
166
|
|
|
156
|
-
export { type ConfigLoadResult, type ConfigPathKey, type FailOn, type IdFormatPrefix, type IdPrefix, type Issue, type IssueLocation, type IssueSeverity, type OutputFormat, type QfaiConfig, type QfaiOutputConfig, type QfaiPaths, type QfaiValidationConfig, type ReportData, type ReportIds, type ReportSummary, type ReportTraceability, type TraceabilitySeverity, type ValidationCounts, type ValidationResult, type ValidationTraceability, createReportData, defaultConfig, extractAllIds, extractIds, extractInvalidIds, formatReportJson, formatReportMarkdown, getConfigPath, lintSql, loadConfig, resolvePath, resolveToolVersion, validateContracts, validateDefinedIds, validateDeltas, validateProject, validateScenarioContent, validateScenarios, validateSpecContent, validateSpecs, validateTraceability };
|
|
167
|
+
export { type ConfigLoadResult, type ConfigPathKey, type FailOn, type IdFormatPrefix, type IdPrefix, type Issue, type IssueLocation, type IssueSeverity, type OutputFormat, type QfaiConfig, type QfaiOutputConfig, type QfaiPaths, type QfaiValidationConfig, type ReportContractCoverage, type ReportData, type ReportIds, type ReportSpecCoverage, type ReportSummary, type ReportTraceability, type TraceabilitySeverity, type ValidationCounts, type ValidationResult, type ValidationTraceability, createReportData, defaultConfig, extractAllIds, extractIds, extractInvalidIds, formatReportJson, formatReportMarkdown, getConfigPath, lintSql, loadConfig, resolvePath, resolveToolVersion, validateContracts, validateDefinedIds, validateDeltas, validateProject, validateScenarioContent, validateScenarios, validateSpecContent, validateSpecs, validateTraceability };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,156 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
covered: number;
|
|
4
|
-
missing: number;
|
|
5
|
-
missingIds: string[];
|
|
6
|
-
refs: Record<string, string[]>;
|
|
7
|
-
};
|
|
8
|
-
type TestFileScan = {
|
|
9
|
-
globs: string[];
|
|
10
|
-
excludeGlobs: string[];
|
|
11
|
-
matchedFileCount: number;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
type IssueSeverity = "info" | "warning" | "error";
|
|
15
|
-
type IssueLocation = {
|
|
16
|
-
line: number;
|
|
17
|
-
column?: number;
|
|
18
|
-
};
|
|
19
|
-
type Issue = {
|
|
20
|
-
code: string;
|
|
21
|
-
severity: IssueSeverity;
|
|
22
|
-
message: string;
|
|
23
|
-
file?: string;
|
|
24
|
-
refs?: string[];
|
|
25
|
-
rule?: string;
|
|
26
|
-
loc?: IssueLocation;
|
|
27
|
-
};
|
|
28
|
-
type ValidationCounts = {
|
|
29
|
-
info: number;
|
|
30
|
-
warning: number;
|
|
31
|
-
error: number;
|
|
32
|
-
};
|
|
33
|
-
type ValidationTraceability = {
|
|
34
|
-
sc: ScCoverage;
|
|
35
|
-
testFiles: TestFileScan;
|
|
36
|
-
};
|
|
37
|
-
type ValidationResult = {
|
|
38
|
-
toolVersion: string;
|
|
39
|
-
issues: Issue[];
|
|
40
|
-
counts: ValidationCounts;
|
|
41
|
-
traceability?: ValidationTraceability;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
type FailOn = "never" | "warning" | "error";
|
|
45
|
-
type OutputFormat = "text" | "github";
|
|
46
|
-
type TraceabilitySeverity = "warning" | "error";
|
|
47
|
-
type QfaiPaths = {
|
|
48
|
-
contractsDir: string;
|
|
49
|
-
specsDir: string;
|
|
50
|
-
rulesDir: string;
|
|
51
|
-
outDir: string;
|
|
52
|
-
promptsDir: string;
|
|
53
|
-
srcDir: string;
|
|
54
|
-
testsDir: string;
|
|
55
|
-
};
|
|
56
|
-
type QfaiValidationConfig = {
|
|
57
|
-
failOn: FailOn;
|
|
58
|
-
require: {
|
|
59
|
-
specSections: string[];
|
|
60
|
-
};
|
|
61
|
-
traceability: {
|
|
62
|
-
brMustHaveSc: boolean;
|
|
63
|
-
scMustTouchContracts: boolean;
|
|
64
|
-
scMustHaveTest: boolean;
|
|
65
|
-
testFileGlobs: string[];
|
|
66
|
-
testFileExcludeGlobs: string[];
|
|
67
|
-
scNoTestSeverity: TraceabilitySeverity;
|
|
68
|
-
allowOrphanContracts: boolean;
|
|
69
|
-
unknownContractIdSeverity: TraceabilitySeverity;
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
type QfaiOutputConfig = {
|
|
73
|
-
validateJsonPath: string;
|
|
74
|
-
};
|
|
75
|
-
type QfaiConfig = {
|
|
76
|
-
paths: QfaiPaths;
|
|
77
|
-
validation: QfaiValidationConfig;
|
|
78
|
-
output: QfaiOutputConfig;
|
|
79
|
-
};
|
|
80
|
-
type ConfigPathKey = keyof QfaiPaths;
|
|
81
|
-
type ConfigLoadResult = {
|
|
82
|
-
config: QfaiConfig;
|
|
83
|
-
issues: Issue[];
|
|
84
|
-
configPath: string;
|
|
85
|
-
};
|
|
86
|
-
declare const defaultConfig: QfaiConfig;
|
|
87
|
-
declare function getConfigPath(root: string): string;
|
|
88
|
-
declare function loadConfig(root: string): Promise<ConfigLoadResult>;
|
|
89
|
-
declare function resolvePath(root: string, config: QfaiConfig, key: ConfigPathKey): string;
|
|
90
|
-
|
|
91
|
-
type IdPrefix = "SPEC" | "BR" | "SC" | "UI" | "API" | "DATA";
|
|
92
|
-
type IdFormatPrefix = IdPrefix | "ADR";
|
|
93
|
-
declare function extractIds(text: string, prefix: IdPrefix): string[];
|
|
94
|
-
declare function extractAllIds(text: string): string[];
|
|
95
|
-
declare function extractInvalidIds(text: string, prefixes: IdFormatPrefix[]): string[];
|
|
96
|
-
|
|
97
|
-
type ReportSummary = {
|
|
98
|
-
specs: number;
|
|
99
|
-
scenarios: number;
|
|
100
|
-
contracts: {
|
|
101
|
-
api: number;
|
|
102
|
-
ui: number;
|
|
103
|
-
db: number;
|
|
104
|
-
};
|
|
105
|
-
counts: ValidationCounts;
|
|
106
|
-
};
|
|
107
|
-
type ReportIds = {
|
|
108
|
-
spec: string[];
|
|
109
|
-
br: string[];
|
|
110
|
-
sc: string[];
|
|
111
|
-
ui: string[];
|
|
112
|
-
api: string[];
|
|
113
|
-
data: string[];
|
|
114
|
-
};
|
|
115
|
-
type ReportTraceability = {
|
|
116
|
-
upstreamIdsFound: number;
|
|
117
|
-
referencedInCodeOrTests: boolean;
|
|
118
|
-
sc: ScCoverage;
|
|
119
|
-
scSources: Record<string, string[]>;
|
|
120
|
-
testFiles: TestFileScan;
|
|
121
|
-
};
|
|
122
|
-
type ReportData = {
|
|
123
|
-
tool: "qfai";
|
|
124
|
-
version: string;
|
|
125
|
-
generatedAt: string;
|
|
126
|
-
root: string;
|
|
127
|
-
configPath: string;
|
|
128
|
-
summary: ReportSummary;
|
|
129
|
-
ids: ReportIds;
|
|
130
|
-
traceability: ReportTraceability;
|
|
131
|
-
issues: Issue[];
|
|
132
|
-
};
|
|
133
|
-
declare function createReportData(root: string, validation?: ValidationResult, configResult?: ConfigLoadResult): Promise<ReportData>;
|
|
134
|
-
declare function formatReportMarkdown(data: ReportData): string;
|
|
135
|
-
declare function formatReportJson(data: ReportData): string;
|
|
136
|
-
|
|
137
|
-
declare function validateProject(root: string, configResult?: ConfigLoadResult): Promise<ValidationResult>;
|
|
138
|
-
|
|
139
|
-
declare function resolveToolVersion(): Promise<string>;
|
|
140
|
-
|
|
141
|
-
declare function validateContracts(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
142
|
-
declare function lintSql(text: string, file: string): Issue[];
|
|
143
|
-
|
|
144
|
-
declare function validateDeltas(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
145
|
-
|
|
146
|
-
declare function validateDefinedIds(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
147
|
-
|
|
148
|
-
declare function validateScenarios(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
149
|
-
declare function validateScenarioContent(text: string, file: string): Issue[];
|
|
150
|
-
|
|
151
|
-
declare function validateSpecs(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
152
|
-
declare function validateSpecContent(text: string, file: string, requiredSections: string[]): Issue[];
|
|
153
|
-
|
|
154
|
-
declare function validateTraceability(root: string, config: QfaiConfig): Promise<Issue[]>;
|
|
155
|
-
|
|
156
|
-
export { type ConfigLoadResult, type ConfigPathKey, type FailOn, type IdFormatPrefix, type IdPrefix, type Issue, type IssueLocation, type IssueSeverity, type OutputFormat, type QfaiConfig, type QfaiOutputConfig, type QfaiPaths, type QfaiValidationConfig, type ReportData, type ReportIds, type ReportSummary, type ReportTraceability, type TraceabilitySeverity, type ValidationCounts, type ValidationResult, type ValidationTraceability, createReportData, defaultConfig, extractAllIds, extractIds, extractInvalidIds, formatReportJson, formatReportMarkdown, getConfigPath, lintSql, loadConfig, resolvePath, resolveToolVersion, validateContracts, validateDefinedIds, validateDeltas, validateProject, validateScenarioContent, validateScenarios, validateSpecContent, validateSpecs, validateTraceability };
|
|
1
|
+
export * from "./core/index.js";
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|