@behavioral-contracts/verify-cli 1.0.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/LICENSE +119 -0
- package/README.md +694 -0
- package/dist/analyze-results.js +253 -0
- package/dist/analyzer.d.ts +366 -0
- package/dist/analyzer.d.ts.map +1 -0
- package/dist/analyzer.js +2592 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzers/async-error-analyzer.d.ts +72 -0
- package/dist/analyzers/async-error-analyzer.d.ts.map +1 -0
- package/dist/analyzers/async-error-analyzer.js +243 -0
- package/dist/analyzers/async-error-analyzer.js.map +1 -0
- package/dist/analyzers/event-listener-analyzer.d.ts +102 -0
- package/dist/analyzers/event-listener-analyzer.d.ts.map +1 -0
- package/dist/analyzers/event-listener-analyzer.js +253 -0
- package/dist/analyzers/event-listener-analyzer.js.map +1 -0
- package/dist/analyzers/react-query-analyzer.d.ts +66 -0
- package/dist/analyzers/react-query-analyzer.d.ts.map +1 -0
- package/dist/analyzers/react-query-analyzer.js +341 -0
- package/dist/analyzers/react-query-analyzer.js.map +1 -0
- package/dist/analyzers/return-value-analyzer.d.ts +61 -0
- package/dist/analyzers/return-value-analyzer.d.ts.map +1 -0
- package/dist/analyzers/return-value-analyzer.js +225 -0
- package/dist/analyzers/return-value-analyzer.js.map +1 -0
- package/dist/code-snippet.d.ts +48 -0
- package/dist/code-snippet.d.ts.map +1 -0
- package/dist/code-snippet.js +84 -0
- package/dist/code-snippet.js.map +1 -0
- package/dist/corpus-loader.d.ts +33 -0
- package/dist/corpus-loader.d.ts.map +1 -0
- package/dist/corpus-loader.js +155 -0
- package/dist/corpus-loader.js.map +1 -0
- package/dist/fixture-tester.d.ts +28 -0
- package/dist/fixture-tester.d.ts.map +1 -0
- package/dist/fixture-tester.js +176 -0
- package/dist/fixture-tester.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +375 -0
- package/dist/index.js.map +1 -0
- package/dist/package-discovery.d.ts +62 -0
- package/dist/package-discovery.d.ts.map +1 -0
- package/dist/package-discovery.js +299 -0
- package/dist/package-discovery.js.map +1 -0
- package/dist/reporter.d.ts +43 -0
- package/dist/reporter.d.ts.map +1 -0
- package/dist/reporter.js +347 -0
- package/dist/reporter.js.map +1 -0
- package/dist/reporters/benchmarking.d.ts +70 -0
- package/dist/reporters/benchmarking.d.ts.map +1 -0
- package/dist/reporters/benchmarking.js +191 -0
- package/dist/reporters/benchmarking.js.map +1 -0
- package/dist/reporters/d3-visualizer.d.ts +40 -0
- package/dist/reporters/d3-visualizer.d.ts.map +1 -0
- package/dist/reporters/d3-visualizer.js +803 -0
- package/dist/reporters/d3-visualizer.js.map +1 -0
- package/dist/reporters/health-score.d.ts +33 -0
- package/dist/reporters/health-score.d.ts.map +1 -0
- package/dist/reporters/health-score.js +149 -0
- package/dist/reporters/health-score.js.map +1 -0
- package/dist/reporters/index.d.ts +11 -0
- package/dist/reporters/index.d.ts.map +1 -0
- package/dist/reporters/index.js +11 -0
- package/dist/reporters/index.js.map +1 -0
- package/dist/reporters/package-breakdown.d.ts +48 -0
- package/dist/reporters/package-breakdown.d.ts.map +1 -0
- package/dist/reporters/package-breakdown.js +185 -0
- package/dist/reporters/package-breakdown.js.map +1 -0
- package/dist/reporters/positive-evidence.d.ts +42 -0
- package/dist/reporters/positive-evidence.d.ts.map +1 -0
- package/dist/reporters/positive-evidence.js +436 -0
- package/dist/reporters/positive-evidence.js.map +1 -0
- package/dist/tsconfig-generator.d.ts +17 -0
- package/dist/tsconfig-generator.d.ts.map +1 -0
- package/dist/tsconfig-generator.js +107 -0
- package/dist/tsconfig-generator.js.map +1 -0
- package/dist/types.d.ts +298 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for behavioral contract verification
|
|
3
|
+
*/
|
|
4
|
+
export type Severity = 'error' | 'warning' | 'info';
|
|
5
|
+
/**
|
|
6
|
+
* A precondition that must be true before calling a function
|
|
7
|
+
*/
|
|
8
|
+
export interface Precondition {
|
|
9
|
+
id: string;
|
|
10
|
+
description: string;
|
|
11
|
+
source: string;
|
|
12
|
+
severity: Severity;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A postcondition describing what happens after calling a function
|
|
16
|
+
*/
|
|
17
|
+
export interface Postcondition {
|
|
18
|
+
id: string;
|
|
19
|
+
condition: string;
|
|
20
|
+
returns?: string;
|
|
21
|
+
throws?: string;
|
|
22
|
+
required_handling?: string;
|
|
23
|
+
source: string;
|
|
24
|
+
severity: Severity;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* An edge case documenting surprising but not incorrect behavior
|
|
28
|
+
*/
|
|
29
|
+
export interface EdgeCase {
|
|
30
|
+
id: string;
|
|
31
|
+
description: string;
|
|
32
|
+
source: string;
|
|
33
|
+
severity: 'warning' | 'info';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A function contract specifying behavioral expectations
|
|
37
|
+
*/
|
|
38
|
+
export interface FunctionContract {
|
|
39
|
+
name: string;
|
|
40
|
+
import_path: string;
|
|
41
|
+
description: string;
|
|
42
|
+
namespace?: string;
|
|
43
|
+
preconditions?: Precondition[];
|
|
44
|
+
postconditions?: Postcondition[];
|
|
45
|
+
edge_cases?: EdgeCase[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Required event listener configuration
|
|
49
|
+
*/
|
|
50
|
+
export interface RequiredEventListener {
|
|
51
|
+
/** Event name (e.g., "error", "failed") */
|
|
52
|
+
event: string;
|
|
53
|
+
/** Whether this listener is required */
|
|
54
|
+
required: boolean;
|
|
55
|
+
/** Severity if missing (error, warning, info) */
|
|
56
|
+
severity?: 'error' | 'warning' | 'info';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Detection rules for identifying package usage in code
|
|
60
|
+
*/
|
|
61
|
+
export interface DetectionRules {
|
|
62
|
+
/** Class names used for instantiation (e.g., ["Octokit", "PrismaClient"]) */
|
|
63
|
+
class_names?: string[];
|
|
64
|
+
/** TypeScript type names used in declarations (e.g., ["Octokit", "AxiosInstance"]) */
|
|
65
|
+
type_names?: string[];
|
|
66
|
+
/** Factory method names (e.g., ["createClient", "create"]) */
|
|
67
|
+
factory_methods?: string[];
|
|
68
|
+
/** Patterns to match in await expressions (e.g., [".repos.", ".pulls."]) */
|
|
69
|
+
await_patterns?: string[];
|
|
70
|
+
/**
|
|
71
|
+
* If true, ONLY detect violations on tracked instances (no pattern fallback)
|
|
72
|
+
* Use this for packages with generic method names (mongoose, Prisma, TypeORM)
|
|
73
|
+
* to eliminate false positives from pattern matching
|
|
74
|
+
*/
|
|
75
|
+
require_instance_tracking?: boolean;
|
|
76
|
+
/** Required event listeners for event-emitting classes */
|
|
77
|
+
required_event_listeners?: RequiredEventListener[];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A complete package contract
|
|
81
|
+
*/
|
|
82
|
+
export interface PackageContract {
|
|
83
|
+
package: string;
|
|
84
|
+
semver: string;
|
|
85
|
+
contract_version: string;
|
|
86
|
+
maintainer: string;
|
|
87
|
+
last_verified: string;
|
|
88
|
+
/** Quality/validation status (production, draft, in-development, deprecated) */
|
|
89
|
+
status?: 'production' | 'draft' | 'in-development' | 'deprecated';
|
|
90
|
+
deprecated?: boolean;
|
|
91
|
+
deprecated_reason?: string;
|
|
92
|
+
deprecated_date?: string;
|
|
93
|
+
/** Detection rules for analyzer integration */
|
|
94
|
+
detection?: DetectionRules;
|
|
95
|
+
functions: FunctionContract[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* A violation found in user code
|
|
99
|
+
*/
|
|
100
|
+
export interface Violation {
|
|
101
|
+
id: string;
|
|
102
|
+
severity: Severity;
|
|
103
|
+
file: string;
|
|
104
|
+
line: number;
|
|
105
|
+
column: number;
|
|
106
|
+
package: string;
|
|
107
|
+
function: string;
|
|
108
|
+
contract_clause: string;
|
|
109
|
+
description: string;
|
|
110
|
+
source_doc: string;
|
|
111
|
+
suggested_fix?: string;
|
|
112
|
+
code_snippet?: {
|
|
113
|
+
startLine: number;
|
|
114
|
+
endLine: number;
|
|
115
|
+
lines: Array<{
|
|
116
|
+
line: number;
|
|
117
|
+
content: string;
|
|
118
|
+
highlighted: boolean;
|
|
119
|
+
}>;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Summary statistics for a verification run
|
|
124
|
+
*/
|
|
125
|
+
export interface VerificationSummary {
|
|
126
|
+
total_violations: number;
|
|
127
|
+
error_count: number;
|
|
128
|
+
warning_count: number;
|
|
129
|
+
info_count: number;
|
|
130
|
+
passed: boolean;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Complete audit record produced by a verification run
|
|
134
|
+
*/
|
|
135
|
+
export interface AuditRecord {
|
|
136
|
+
tool: string;
|
|
137
|
+
tool_version: string;
|
|
138
|
+
corpus_version: string;
|
|
139
|
+
timestamp: string;
|
|
140
|
+
git_commit?: string;
|
|
141
|
+
git_branch?: string;
|
|
142
|
+
tsconfig: string;
|
|
143
|
+
packages_analyzed: string[];
|
|
144
|
+
contracts_applied: number;
|
|
145
|
+
files_analyzed: number;
|
|
146
|
+
violations: Violation[];
|
|
147
|
+
summary: VerificationSummary;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Location of a function call in the AST
|
|
151
|
+
*/
|
|
152
|
+
export interface CallSite {
|
|
153
|
+
file: string;
|
|
154
|
+
line: number;
|
|
155
|
+
column: number;
|
|
156
|
+
functionName: string;
|
|
157
|
+
packageName: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Result of analyzing a single call site
|
|
161
|
+
*/
|
|
162
|
+
export interface CallSiteAnalysis {
|
|
163
|
+
callSite: CallSite;
|
|
164
|
+
hasTryCatch: boolean;
|
|
165
|
+
hasPromiseCatch: boolean;
|
|
166
|
+
checksResponseExists: boolean;
|
|
167
|
+
checksStatusCode: boolean;
|
|
168
|
+
handledStatusCodes: number[];
|
|
169
|
+
hasRetryLogic: boolean;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Configuration options for the analyzer
|
|
173
|
+
*/
|
|
174
|
+
export interface AnalyzerConfig {
|
|
175
|
+
tsconfigPath: string;
|
|
176
|
+
corpusPath: string;
|
|
177
|
+
includePaths?: string[];
|
|
178
|
+
excludePaths?: string[];
|
|
179
|
+
severityThreshold?: Severity;
|
|
180
|
+
/** Whether to include test files in analysis (default: false) */
|
|
181
|
+
includeTests?: boolean;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Result of loading the corpus
|
|
185
|
+
*/
|
|
186
|
+
export interface CorpusLoadResult {
|
|
187
|
+
contracts: Map<string, PackageContract>;
|
|
188
|
+
errors: string[];
|
|
189
|
+
skipped?: Array<{
|
|
190
|
+
package: string;
|
|
191
|
+
status: string;
|
|
192
|
+
reason: string;
|
|
193
|
+
}>;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* A package discovered in the project
|
|
197
|
+
*/
|
|
198
|
+
export interface DiscoveredPackage {
|
|
199
|
+
name: string;
|
|
200
|
+
version: string;
|
|
201
|
+
source: 'package.json' | 'import' | 'both';
|
|
202
|
+
hasContract: boolean;
|
|
203
|
+
contractVersion?: string;
|
|
204
|
+
usedIn: string[];
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Result of package discovery scan
|
|
208
|
+
*/
|
|
209
|
+
export interface PackageDiscoveryResult {
|
|
210
|
+
total: number;
|
|
211
|
+
withContracts: number;
|
|
212
|
+
withoutContracts: number;
|
|
213
|
+
packages: DiscoveredPackage[];
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Enhanced audit record with package discovery
|
|
217
|
+
*/
|
|
218
|
+
export interface EnhancedAuditRecord extends AuditRecord {
|
|
219
|
+
package_discovery: PackageDiscoveryResult;
|
|
220
|
+
violations_by_package: Record<string, {
|
|
221
|
+
total: number;
|
|
222
|
+
errors: number;
|
|
223
|
+
warnings: number;
|
|
224
|
+
info: number;
|
|
225
|
+
violations: Violation[];
|
|
226
|
+
}>;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* A positive pattern (best practice) detected in code
|
|
230
|
+
*/
|
|
231
|
+
export interface PositivePattern {
|
|
232
|
+
id: string;
|
|
233
|
+
name: string;
|
|
234
|
+
description: string;
|
|
235
|
+
file: string;
|
|
236
|
+
line: number;
|
|
237
|
+
column: number;
|
|
238
|
+
category: 'configuration' | 'error-handling' | 'performance' | 'consistency';
|
|
239
|
+
benefit: string;
|
|
240
|
+
code_snippet?: {
|
|
241
|
+
startLine: number;
|
|
242
|
+
endLine: number;
|
|
243
|
+
lines: Array<{
|
|
244
|
+
line: number;
|
|
245
|
+
content: string;
|
|
246
|
+
highlighted: boolean;
|
|
247
|
+
}>;
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* React Query hook call detection
|
|
252
|
+
*/
|
|
253
|
+
export interface HookCall {
|
|
254
|
+
hookName: 'useQuery' | 'useMutation' | 'useInfiniteQuery' | 'QueryClient';
|
|
255
|
+
location: {
|
|
256
|
+
file: string;
|
|
257
|
+
line: number;
|
|
258
|
+
column: number;
|
|
259
|
+
};
|
|
260
|
+
returnValues: Map<string, string>;
|
|
261
|
+
options: {
|
|
262
|
+
onError?: boolean;
|
|
263
|
+
onMutate?: boolean;
|
|
264
|
+
onSuccess?: boolean;
|
|
265
|
+
retry?: 'default' | 'number' | 'boolean' | 'function';
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Variable usage tracking for hook return values
|
|
270
|
+
*/
|
|
271
|
+
export interface VariableUsage {
|
|
272
|
+
variableName: string;
|
|
273
|
+
propertyName: string;
|
|
274
|
+
declaredAt: {
|
|
275
|
+
file: string;
|
|
276
|
+
line: number;
|
|
277
|
+
};
|
|
278
|
+
usedIn: {
|
|
279
|
+
conditionals: number;
|
|
280
|
+
jsxExpressions: number;
|
|
281
|
+
callbacks: number;
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Analysis of error handling in React Query hooks
|
|
286
|
+
*/
|
|
287
|
+
export interface HookErrorHandling {
|
|
288
|
+
hasErrorStateCheck: boolean;
|
|
289
|
+
hasOnErrorCallback: boolean;
|
|
290
|
+
hasGlobalHandler: boolean;
|
|
291
|
+
errorCheckedBeforeDataAccess: boolean;
|
|
292
|
+
hasOptimisticUpdateRollback?: boolean;
|
|
293
|
+
retryAnalysis?: {
|
|
294
|
+
type: 'default' | 'number' | 'boolean' | 'function';
|
|
295
|
+
avoidsClientErrors: boolean;
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@behavioral-contracts/verify-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "CLI tool for verifying TypeScript code against behavioral contracts",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"verify-cli": "./dist/index.js",
|
|
9
|
+
"behavioral-contracts": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/**/*",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"dev": "tsc --watch",
|
|
19
|
+
"test": "vitest",
|
|
20
|
+
"test:ci": "vitest run",
|
|
21
|
+
"test:fixtures": "vitest run fixture-regression",
|
|
22
|
+
"test:fixtures:watch": "vitest fixture-regression",
|
|
23
|
+
"test:fixtures:generate": "node scripts/generate-expected-outputs.js",
|
|
24
|
+
"lint": "eslint src --ext .ts",
|
|
25
|
+
"clean": "rm -rf dist"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"typescript",
|
|
29
|
+
"verification",
|
|
30
|
+
"behavioral-contracts",
|
|
31
|
+
"static-analysis",
|
|
32
|
+
"code-quality"
|
|
33
|
+
],
|
|
34
|
+
"author": "Behavioral Contracts",
|
|
35
|
+
"license": "AGPL-3.0",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "https://github.com/behavioral-contracts/verify-cli.git"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18.0.0"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@behavioral-contracts/corpus": "^1.0.0",
|
|
45
|
+
"ajv": "^8.12.0",
|
|
46
|
+
"chalk": "^5.3.0",
|
|
47
|
+
"commander": "^12.0.0",
|
|
48
|
+
"glob": "^10.3.10",
|
|
49
|
+
"typescript": "^5.3.3",
|
|
50
|
+
"yaml": "^2.3.4"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^20.11.0",
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
55
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
56
|
+
"eslint": "^8.56.0",
|
|
57
|
+
"vitest": "^1.2.0"
|
|
58
|
+
}
|
|
59
|
+
}
|