@dommaker/harness 0.6.1 → 0.7.2
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 +122 -6
- package/bin/harness.js +30 -2
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +4 -1
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +31 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +169 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +5 -2
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/index.d.ts +2 -0
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +7 -1
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/interceptor.d.ts +37 -0
- package/dist/core/constraints/interceptor.d.ts.map +1 -0
- package/dist/core/constraints/interceptor.js +176 -0
- package/dist/core/constraints/interceptor.js.map +1 -0
- package/dist/core/spec/index.d.ts +7 -0
- package/dist/core/spec/index.d.ts.map +1 -0
- package/dist/core/spec/index.js +23 -0
- package/dist/core/spec/index.js.map +1 -0
- package/dist/core/spec/validator.d.ts +78 -0
- package/dist/core/spec/validator.d.ts.map +1 -0
- package/dist/core/spec/validator.js +372 -0
- package/dist/core/spec/validator.js.map +1 -0
- package/dist/core/validators/passes-gate.d.ts +51 -1
- package/dist/core/validators/passes-gate.d.ts.map +1 -1
- package/dist/core/validators/passes-gate.js +90 -0
- package/dist/core/validators/passes-gate.js.map +1 -1
- package/dist/extensions/long-running/constraints.d.ts +38 -0
- package/dist/extensions/long-running/constraints.d.ts.map +1 -0
- package/dist/extensions/long-running/constraints.js +153 -0
- package/dist/extensions/long-running/constraints.js.map +1 -0
- package/dist/extensions/long-running/index.d.ts +30 -0
- package/dist/extensions/long-running/index.d.ts.map +1 -0
- package/dist/extensions/long-running/index.js +50 -0
- package/dist/extensions/long-running/index.js.map +1 -0
- package/dist/extensions/long-running/types.d.ts +154 -0
- package/dist/extensions/long-running/types.d.ts.map +1 -0
- package/dist/extensions/long-running/types.js +9 -0
- package/dist/extensions/long-running/types.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/presets/index.d.ts +1 -0
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +6 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/long-running.d.ts +33 -0
- package/dist/presets/long-running.d.ts.map +1 -0
- package/dist/presets/long-running.js +52 -0
- package/dist/presets/long-running.js.map +1 -0
- package/dist/types/constraint.d.ts +1 -1
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/enforcement.d.ts +42 -0
- package/dist/types/enforcement.d.ts.map +1 -0
- package/dist/types/enforcement.js +6 -0
- package/dist/types/enforcement.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/passes-gate.d.ts +20 -0
- package/dist/types/passes-gate.d.ts.map +1 -1
- package/dist/types/project-config.d.ts +11 -0
- package/dist/types/project-config.d.ts.map +1 -1
- package/dist/types/spec.d.ts +85 -0
- package/dist/types/spec.d.ts.map +1 -0
- package/dist/types/spec.js +8 -0
- package/dist/types/spec.js.map +1 -0
- package/package.json +8 -7
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec 验证类型
|
|
3
|
+
*
|
|
4
|
+
* 框架提供验证机制,项目定义自己的 Spec Schema
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Spec 类型
|
|
8
|
+
*/
|
|
9
|
+
export type SpecType = 'architecture' | 'module' | 'api' | 'custom';
|
|
10
|
+
/**
|
|
11
|
+
* Spec 验证错误
|
|
12
|
+
*/
|
|
13
|
+
export interface SpecValidationError {
|
|
14
|
+
/** 错误路径 */
|
|
15
|
+
path: string;
|
|
16
|
+
/** 错误消息 */
|
|
17
|
+
message: string;
|
|
18
|
+
/** 严重程度 */
|
|
19
|
+
severity: 'error' | 'warning';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Spec 验证结果
|
|
23
|
+
*/
|
|
24
|
+
export interface SpecValidationResult {
|
|
25
|
+
/** 是否通过 */
|
|
26
|
+
valid: boolean;
|
|
27
|
+
/** 文件路径 */
|
|
28
|
+
file: string;
|
|
29
|
+
/** Spec 类型 */
|
|
30
|
+
type: SpecType;
|
|
31
|
+
/** 错误列表 */
|
|
32
|
+
errors: SpecValidationError[];
|
|
33
|
+
/** 警告列表 */
|
|
34
|
+
warnings: SpecValidationError[];
|
|
35
|
+
/** 指标(可选) */
|
|
36
|
+
metrics?: Record<string, number>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Spec 验证配置
|
|
40
|
+
*/
|
|
41
|
+
export interface SpecValidatorConfig {
|
|
42
|
+
/** 是否启用 */
|
|
43
|
+
enabled: boolean;
|
|
44
|
+
/** Schema 路径(项目定义) */
|
|
45
|
+
schemaPath: string;
|
|
46
|
+
/** 要验证的文件模式 */
|
|
47
|
+
files: string[];
|
|
48
|
+
/** 验证失败的级别 */
|
|
49
|
+
failureLevel: 'error' | 'warning';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Schema 加载器函数类型
|
|
53
|
+
*
|
|
54
|
+
* 项目可以自定义 Schema 加载逻辑
|
|
55
|
+
*/
|
|
56
|
+
export type SchemaLoader = (schemaPath: string) => Promise<SpecSchemaDefinition>;
|
|
57
|
+
/**
|
|
58
|
+
* Schema 定义(通用接口)
|
|
59
|
+
*
|
|
60
|
+
* 项目需要实现这个接口
|
|
61
|
+
*/
|
|
62
|
+
export interface SpecSchemaDefinition {
|
|
63
|
+
/** Schema 名称 */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Schema 版本 */
|
|
66
|
+
version?: string;
|
|
67
|
+
/** 验证函数 */
|
|
68
|
+
validate: (content: string, filePath: string) => Promise<SpecValidationResult>;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 批量验证结果
|
|
72
|
+
*/
|
|
73
|
+
export interface BatchSpecValidationResult {
|
|
74
|
+
/** 总文件数 */
|
|
75
|
+
total: number;
|
|
76
|
+
/** 通过数 */
|
|
77
|
+
passed: number;
|
|
78
|
+
/** 失败数 */
|
|
79
|
+
failed: number;
|
|
80
|
+
/** 警告数 */
|
|
81
|
+
warnings: number;
|
|
82
|
+
/** 详细结果 */
|
|
83
|
+
results: SpecValidationResult[];
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/types/spec.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,WAAW;IACX,KAAK,EAAE,OAAO,CAAC;IACf,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW;IACX,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC9B,WAAW;IACX,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc;IACd,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEjF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAChF;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU;IACV,MAAM,EAAE,MAAM,CAAC;IACf,UAAU;IACV,MAAM,EAAE,MAAM,CAAC;IACf,UAAU;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/types/spec.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dommaker/harness",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "通用工程约束框架 -
|
|
3
|
+
"version": "0.7.2",
|
|
4
|
+
"description": "通用工程约束框架 - 铁律系统、检查点验证、测试门控、拦截器",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"harness",
|
|
7
7
|
"constraint",
|
|
@@ -49,19 +49,20 @@
|
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"chalk": "^4.1.2",
|
|
51
51
|
"commander": "^12.0.0",
|
|
52
|
+
"fast-glob": "^3.3.3",
|
|
52
53
|
"js-yaml": "^4.1.1",
|
|
53
54
|
"zod": "^3.22.4"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
57
|
+
"@types/jest": "^29.5.0",
|
|
56
58
|
"@types/js-yaml": "^4.0.9",
|
|
57
59
|
"@types/node": "^20.11.0",
|
|
58
|
-
"typescript": "^
|
|
60
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
61
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
62
|
+
"eslint": "^8.56.0",
|
|
59
63
|
"jest": "^29.7.0",
|
|
60
|
-
"@types/jest": "^29.5.0",
|
|
61
64
|
"ts-jest": "^29.1.0",
|
|
62
|
-
"
|
|
63
|
-
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
64
|
-
"@typescript-eslint/parser": "^6.19.0"
|
|
65
|
+
"typescript": "^5.3.0"
|
|
65
66
|
},
|
|
66
67
|
"engines": {
|
|
67
68
|
"node": ">=18.0.0"
|