@dommaker/harness 0.1.4 → 0.2.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/commands/check.d.ts +5 -5
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +65 -42
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/core/constraints/checker.d.ts +84 -0
- package/dist/core/constraints/checker.d.ts.map +1 -0
- package/dist/core/constraints/checker.js +375 -0
- package/dist/core/constraints/checker.js.map +1 -0
- package/dist/core/constraints/definitions.d.ts +42 -0
- package/dist/core/constraints/definitions.d.ts.map +1 -0
- package/dist/core/constraints/definitions.js +438 -0
- package/dist/core/constraints/definitions.js.map +1 -0
- package/dist/core/constraints/index.d.ts +8 -0
- package/dist/core/constraints/index.d.ts.map +1 -0
- package/dist/core/constraints/index.js +36 -0
- package/dist/core/constraints/index.js.map +1 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -7
- package/dist/index.js.map +1 -1
- package/dist/presets/index.d.ts +3 -11
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +9 -19
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/standard.d.ts +44 -2
- package/dist/presets/standard.d.ts.map +1 -1
- package/dist/presets/standard.js +71 -41
- package/dist/presets/standard.js.map +1 -1
- package/dist/types/constraint.d.ts +184 -0
- package/dist/types/constraint.d.ts.map +1 -0
- package/dist/types/constraint.js +34 -0
- package/dist/types/constraint.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/iron-law.d.ts +15 -103
- package/dist/types/iron-law.d.ts.map +1 -1
- package/dist/types/iron-law.js +8 -13
- package/dist/types/iron-law.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/iron-laws/checker.d.ts +0 -61
- package/dist/core/iron-laws/checker.d.ts.map +0 -1
- package/dist/core/iron-laws/checker.js +0 -175
- package/dist/core/iron-laws/checker.js.map +0 -1
- package/dist/core/iron-laws/definitions.d.ts +0 -28
- package/dist/core/iron-laws/definitions.d.ts.map +0 -1
- package/dist/core/iron-laws/definitions.js +0 -189
- package/dist/core/iron-laws/definitions.js.map +0 -1
- package/dist/core/iron-laws/index.d.ts +0 -6
- package/dist/core/iron-laws/index.d.ts.map +0 -1
- package/dist/core/iron-laws/index.js +0 -22
- package/dist/core/iron-laws/index.js.map +0 -1
- package/dist/presets/relaxed.d.ts +0 -8
- package/dist/presets/relaxed.d.ts.map +0 -1
- package/dist/presets/relaxed.js +0 -24
- package/dist/presets/relaxed.js.map +0 -1
- package/dist/presets/strict.d.ts +0 -8
- package/dist/presets/strict.d.ts.map +0 -1
- package/dist/presets/strict.js +0 -51
- package/dist/presets/strict.js.map +0 -1
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 约束检查引擎
|
|
4
|
+
*
|
|
5
|
+
* 三层约束体系检查:
|
|
6
|
+
* - Iron Laws:检查失败立即抛出异常
|
|
7
|
+
* - Guidelines:检查失败记录警告
|
|
8
|
+
* - Tips:检查失败记录提示
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.ironLawChecker = exports.IronLawChecker = exports.constraintChecker = exports.ConstraintChecker = void 0;
|
|
12
|
+
exports.checkConstraint = checkConstraint;
|
|
13
|
+
exports.checkConstraints = checkConstraints;
|
|
14
|
+
exports.checkBeforeExecution = checkBeforeExecution;
|
|
15
|
+
exports.checkIronLaw = checkIronLaw;
|
|
16
|
+
exports.checkAllIronLaws = checkAllIronLaws;
|
|
17
|
+
const constraint_1 = require("../../types/constraint");
|
|
18
|
+
const definitions_1 = require("./definitions");
|
|
19
|
+
/**
|
|
20
|
+
* 约束检查器
|
|
21
|
+
*/
|
|
22
|
+
class ConstraintChecker {
|
|
23
|
+
static instance;
|
|
24
|
+
constructor() { }
|
|
25
|
+
/**
|
|
26
|
+
* 获取单例实例
|
|
27
|
+
*/
|
|
28
|
+
static getInstance() {
|
|
29
|
+
if (!ConstraintChecker.instance) {
|
|
30
|
+
ConstraintChecker.instance = new ConstraintChecker();
|
|
31
|
+
}
|
|
32
|
+
return ConstraintChecker.instance;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 检查单个约束
|
|
36
|
+
*/
|
|
37
|
+
async check(constraint, context) {
|
|
38
|
+
// 检查例外条件(仅 Guidelines 有效)
|
|
39
|
+
if (constraint.level === 'guideline' && constraint.exceptions) {
|
|
40
|
+
if (this.checkException(constraint, context)) {
|
|
41
|
+
return {
|
|
42
|
+
id: constraint.id,
|
|
43
|
+
level: constraint.level,
|
|
44
|
+
satisfied: true,
|
|
45
|
+
constraint,
|
|
46
|
+
message: `指导原则 ${constraint.id} 因例外条件被豁免`,
|
|
47
|
+
checkedAt: new Date(),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// 检查前置条件
|
|
52
|
+
const satisfied = await this.checkPrecondition(constraint, context);
|
|
53
|
+
return {
|
|
54
|
+
id: constraint.id,
|
|
55
|
+
level: constraint.level,
|
|
56
|
+
satisfied,
|
|
57
|
+
constraint,
|
|
58
|
+
message: satisfied ? undefined : constraint.message,
|
|
59
|
+
requiredAction: satisfied ? undefined : constraint.enforcement,
|
|
60
|
+
checkedAt: new Date(),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 检查例外条件
|
|
65
|
+
*/
|
|
66
|
+
checkException(constraint, context) {
|
|
67
|
+
if (!constraint.exceptions)
|
|
68
|
+
return false;
|
|
69
|
+
for (const exception of constraint.exceptions) {
|
|
70
|
+
switch (exception) {
|
|
71
|
+
// simplest_solution_first 例外
|
|
72
|
+
case 'scalability_required':
|
|
73
|
+
if (context.scalabilityRequired)
|
|
74
|
+
return true;
|
|
75
|
+
break;
|
|
76
|
+
case 'security_required':
|
|
77
|
+
if (context.securityRequired)
|
|
78
|
+
return true;
|
|
79
|
+
break;
|
|
80
|
+
case 'performance_required':
|
|
81
|
+
if (context.performanceRequired)
|
|
82
|
+
return true;
|
|
83
|
+
break;
|
|
84
|
+
case 'reliability_required':
|
|
85
|
+
if (context.reliabilityRequired)
|
|
86
|
+
return true;
|
|
87
|
+
break;
|
|
88
|
+
// no_fix_without_root_cause 例外
|
|
89
|
+
case 'simple_typo':
|
|
90
|
+
if (context.isSimpleTypo)
|
|
91
|
+
return true;
|
|
92
|
+
break;
|
|
93
|
+
case 'config_value_error':
|
|
94
|
+
if (context.isConfigValueError)
|
|
95
|
+
return true;
|
|
96
|
+
break;
|
|
97
|
+
case 'missing_config':
|
|
98
|
+
if (context.isMissingConfig)
|
|
99
|
+
return true;
|
|
100
|
+
break;
|
|
101
|
+
// no_code_without_test 例外
|
|
102
|
+
case 'config_file':
|
|
103
|
+
if (context.isConfigFile)
|
|
104
|
+
return true;
|
|
105
|
+
break;
|
|
106
|
+
case 'type_definition':
|
|
107
|
+
if (context.isTypeDefinition)
|
|
108
|
+
return true;
|
|
109
|
+
break;
|
|
110
|
+
case 'simple_accessor':
|
|
111
|
+
if (context.isSimpleAccessor)
|
|
112
|
+
return true;
|
|
113
|
+
break;
|
|
114
|
+
case 'pure_display_component':
|
|
115
|
+
if (context.isPureDisplayComponent)
|
|
116
|
+
return true;
|
|
117
|
+
break;
|
|
118
|
+
// no_any_type 例外
|
|
119
|
+
case 'json_parse_result':
|
|
120
|
+
if (context.isJsonParseResult)
|
|
121
|
+
return true;
|
|
122
|
+
break;
|
|
123
|
+
case 'third_party_no_types':
|
|
124
|
+
if (context.isThirdPartyNoTypes)
|
|
125
|
+
return true;
|
|
126
|
+
break;
|
|
127
|
+
case 'legacy_migration':
|
|
128
|
+
if (context.isLegacyMigration)
|
|
129
|
+
return true;
|
|
130
|
+
break;
|
|
131
|
+
// capability_sync 例外
|
|
132
|
+
case 'internal_refactor':
|
|
133
|
+
if (context.isInternalRefactor)
|
|
134
|
+
return true;
|
|
135
|
+
break;
|
|
136
|
+
case 'bug_fix_only':
|
|
137
|
+
if (context.isBugFixOnly)
|
|
138
|
+
return true;
|
|
139
|
+
break;
|
|
140
|
+
case 'performance_optimization':
|
|
141
|
+
if (context.isPerformanceOptimization)
|
|
142
|
+
return true;
|
|
143
|
+
break;
|
|
144
|
+
// no_simplification_without_approval 例外
|
|
145
|
+
case 'redundant_code_cleanup':
|
|
146
|
+
if (context.isRedundantCodeCleanup)
|
|
147
|
+
return true;
|
|
148
|
+
break;
|
|
149
|
+
case 'same_effect_refactor':
|
|
150
|
+
if (context.isSameEffectRefactor)
|
|
151
|
+
return true;
|
|
152
|
+
break;
|
|
153
|
+
case 'unused_code_removal':
|
|
154
|
+
if (context.isUnusedCodeRemoval)
|
|
155
|
+
return true;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 检查约束前置条件
|
|
163
|
+
*/
|
|
164
|
+
async checkPrecondition(constraint, context) {
|
|
165
|
+
switch (constraint.id) {
|
|
166
|
+
// Iron Laws
|
|
167
|
+
case 'no_bypass_checkpoint':
|
|
168
|
+
// TODO: 检查是否跳过了检查点
|
|
169
|
+
return true;
|
|
170
|
+
case 'no_self_approval':
|
|
171
|
+
// 检查是否有测试证据
|
|
172
|
+
return context.hasTest === true;
|
|
173
|
+
case 'no_completion_without_verification':
|
|
174
|
+
// 检查是否有验证证据
|
|
175
|
+
return context.hasVerificationEvidence === true;
|
|
176
|
+
case 'no_test_simplification':
|
|
177
|
+
// TODO: 检查是否简化了测试
|
|
178
|
+
return true;
|
|
179
|
+
// Guidelines
|
|
180
|
+
case 'no_fix_without_root_cause':
|
|
181
|
+
// 检查是否有根本原因调查
|
|
182
|
+
return context.hasRootCauseInvestigation === true;
|
|
183
|
+
case 'no_code_without_test':
|
|
184
|
+
// 检查是否有失败的测试
|
|
185
|
+
return context.hasFailingTest === true;
|
|
186
|
+
case 'no_any_type':
|
|
187
|
+
// TODO: 检查代码中是否有 any 类型
|
|
188
|
+
return true;
|
|
189
|
+
case 'simplest_solution_first':
|
|
190
|
+
// 检查是否已检查本地数据源
|
|
191
|
+
return context.hasReuseCheck === true;
|
|
192
|
+
case 'no_creation_without_reuse_check':
|
|
193
|
+
// 检查是否已进行复用检查
|
|
194
|
+
return context.hasReuseCheck === true;
|
|
195
|
+
case 'capability_sync':
|
|
196
|
+
// TODO: 检查 CAPABILITIES.md 是否更新
|
|
197
|
+
return true;
|
|
198
|
+
case 'no_simplification_without_approval':
|
|
199
|
+
// TODO: 检查是否简化了逻辑
|
|
200
|
+
return true;
|
|
201
|
+
case 'no_skill_without_test':
|
|
202
|
+
// 检查是否有测试
|
|
203
|
+
return context.hasTest === true;
|
|
204
|
+
case 'test_coverage_required':
|
|
205
|
+
// TODO: 检查测试覆盖率
|
|
206
|
+
return true;
|
|
207
|
+
// Tips - 总是返回 true(仅提示)
|
|
208
|
+
case 'readme_required':
|
|
209
|
+
return true;
|
|
210
|
+
case 'doc_required_for_public_api':
|
|
211
|
+
return true;
|
|
212
|
+
default:
|
|
213
|
+
// 未知约束,默认通过
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* 查找适用于当前操作的约束
|
|
219
|
+
*/
|
|
220
|
+
findApplicableConstraints(context) {
|
|
221
|
+
const trigger = context.operation;
|
|
222
|
+
const filterByTrigger = (constraints) => {
|
|
223
|
+
return Object.values(constraints).filter(constraint => {
|
|
224
|
+
const triggers = Array.isArray(constraint.trigger)
|
|
225
|
+
? constraint.trigger
|
|
226
|
+
: [constraint.trigger];
|
|
227
|
+
return triggers.includes(trigger);
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
return {
|
|
231
|
+
ironLaws: filterByTrigger(definitions_1.IRON_LAWS),
|
|
232
|
+
guidelines: filterByTrigger(definitions_1.GUIDELINES),
|
|
233
|
+
tips: filterByTrigger(definitions_1.TIPS),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* 执行三层约束检查
|
|
238
|
+
*
|
|
239
|
+
* - Iron Laws:检查失败立即抛出异常
|
|
240
|
+
* - Guidelines:检查失败记录警告
|
|
241
|
+
* - Tips:检查失败记录提示
|
|
242
|
+
*/
|
|
243
|
+
async checkConstraints(context) {
|
|
244
|
+
const result = {
|
|
245
|
+
ironLaws: [],
|
|
246
|
+
guidelines: [],
|
|
247
|
+
tips: [],
|
|
248
|
+
passed: true,
|
|
249
|
+
warningCount: 0,
|
|
250
|
+
tipCount: 0,
|
|
251
|
+
};
|
|
252
|
+
// 1. 检查 Iron Laws(必须全部通过)
|
|
253
|
+
for (const constraint of Object.values(definitions_1.IRON_LAWS)) {
|
|
254
|
+
const triggers = Array.isArray(constraint.trigger)
|
|
255
|
+
? constraint.trigger
|
|
256
|
+
: [constraint.trigger];
|
|
257
|
+
if (!triggers.includes(context.operation))
|
|
258
|
+
continue;
|
|
259
|
+
const checkResult = await this.check(constraint, context);
|
|
260
|
+
result.ironLaws.push(checkResult);
|
|
261
|
+
if (!checkResult.satisfied) {
|
|
262
|
+
result.passed = false;
|
|
263
|
+
throw new constraint_1.ConstraintViolationError(checkResult);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// 2. 检查 Guidelines(记录警告)
|
|
267
|
+
for (const constraint of Object.values(definitions_1.GUIDELINES)) {
|
|
268
|
+
const triggers = Array.isArray(constraint.trigger)
|
|
269
|
+
? constraint.trigger
|
|
270
|
+
: [constraint.trigger];
|
|
271
|
+
if (!triggers.includes(context.operation))
|
|
272
|
+
continue;
|
|
273
|
+
const checkResult = await this.check(constraint, context);
|
|
274
|
+
result.guidelines.push(checkResult);
|
|
275
|
+
if (!checkResult.satisfied) {
|
|
276
|
+
result.warningCount++;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// 3. 检查 Tips(仅记录)
|
|
280
|
+
for (const constraint of Object.values(definitions_1.TIPS)) {
|
|
281
|
+
const triggers = Array.isArray(constraint.trigger)
|
|
282
|
+
? constraint.trigger
|
|
283
|
+
: [constraint.trigger];
|
|
284
|
+
if (!triggers.includes(context.operation))
|
|
285
|
+
continue;
|
|
286
|
+
const checkResult = await this.check(constraint, context);
|
|
287
|
+
result.tips.push(checkResult);
|
|
288
|
+
if (!checkResult.satisfied) {
|
|
289
|
+
result.tipCount++;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return result;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* 执行前检查(仅检查 Iron Laws)
|
|
296
|
+
*
|
|
297
|
+
* @throws ConstraintViolationError 如果有铁律违规
|
|
298
|
+
*/
|
|
299
|
+
async beforeExecution(context) {
|
|
300
|
+
const triggers = Array.isArray(context.operation) ? context.operation : [context.operation];
|
|
301
|
+
for (const constraint of Object.values(definitions_1.IRON_LAWS)) {
|
|
302
|
+
const constraintTriggers = Array.isArray(constraint.trigger)
|
|
303
|
+
? constraint.trigger
|
|
304
|
+
: [constraint.trigger];
|
|
305
|
+
const matches = triggers.some(t => constraintTriggers.includes(t));
|
|
306
|
+
if (!matches)
|
|
307
|
+
continue;
|
|
308
|
+
const result = await this.check(constraint, context);
|
|
309
|
+
if (!result.satisfied) {
|
|
310
|
+
throw new constraint_1.ConstraintViolationError(result);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
exports.ConstraintChecker = ConstraintChecker;
|
|
316
|
+
// ========================================
|
|
317
|
+
// 快捷函数
|
|
318
|
+
// ========================================
|
|
319
|
+
/**
|
|
320
|
+
* 快捷函数:检查约束
|
|
321
|
+
*/
|
|
322
|
+
async function checkConstraint(constraintId, context) {
|
|
323
|
+
const constraint = definitions_1.IRON_LAWS[constraintId] ||
|
|
324
|
+
definitions_1.GUIDELINES[constraintId] ||
|
|
325
|
+
definitions_1.TIPS[constraintId];
|
|
326
|
+
if (!constraint) {
|
|
327
|
+
return {
|
|
328
|
+
id: constraintId,
|
|
329
|
+
level: 'tip',
|
|
330
|
+
satisfied: false,
|
|
331
|
+
message: `未知的约束: ${constraintId}`,
|
|
332
|
+
checkedAt: new Date(),
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
return ConstraintChecker.getInstance().check(constraint, context);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* 快捷函数:执行三层检查
|
|
339
|
+
*/
|
|
340
|
+
async function checkConstraints(context) {
|
|
341
|
+
return ConstraintChecker.getInstance().checkConstraints(context);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* 快捷函数:执行前检查
|
|
345
|
+
*/
|
|
346
|
+
async function checkBeforeExecution(context) {
|
|
347
|
+
return ConstraintChecker.getInstance().beforeExecution(context);
|
|
348
|
+
}
|
|
349
|
+
// 导出单例
|
|
350
|
+
exports.constraintChecker = ConstraintChecker.getInstance();
|
|
351
|
+
// ========================================
|
|
352
|
+
// 向后兼容的类和函数
|
|
353
|
+
// ========================================
|
|
354
|
+
/**
|
|
355
|
+
* @deprecated 使用 ConstraintChecker 代替
|
|
356
|
+
*/
|
|
357
|
+
exports.IronLawChecker = ConstraintChecker;
|
|
358
|
+
/**
|
|
359
|
+
* @deprecated 使用 checkConstraint 代替
|
|
360
|
+
*/
|
|
361
|
+
async function checkIronLaw(lawId, context) {
|
|
362
|
+
return checkConstraint(lawId, context);
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* @deprecated 使用 checkConstraints 代替
|
|
366
|
+
*/
|
|
367
|
+
async function checkAllIronLaws(context) {
|
|
368
|
+
const result = await checkConstraints(context);
|
|
369
|
+
return [...result.ironLaws, ...result.guidelines, ...result.tips];
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* @deprecated 使用 constraintChecker 代替
|
|
373
|
+
*/
|
|
374
|
+
exports.ironLawChecker = exports.constraintChecker;
|
|
375
|
+
//# sourceMappingURL=checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 约束定义
|
|
3
|
+
*
|
|
4
|
+
* 三层约束体系:
|
|
5
|
+
* - IRON_LAWS:绝对禁止,无例外
|
|
6
|
+
* - GUIDELINES:优先建议,有例外
|
|
7
|
+
* - TIPS:信息性提示
|
|
8
|
+
*/
|
|
9
|
+
import type { Constraint, ConstraintTrigger } from '../../types/constraint';
|
|
10
|
+
export { IronLawViolationError } from '../../types/constraint';
|
|
11
|
+
export declare const IRON_LAWS: Record<string, Constraint>;
|
|
12
|
+
export declare const GUIDELINES: Record<string, Constraint>;
|
|
13
|
+
export declare const TIPS: Record<string, Constraint>;
|
|
14
|
+
/**
|
|
15
|
+
* 获取所有约束(三层合并)
|
|
16
|
+
*/
|
|
17
|
+
export declare function getAllConstraints(): Constraint[];
|
|
18
|
+
/**
|
|
19
|
+
* 根据触发条件查找适用的约束
|
|
20
|
+
*/
|
|
21
|
+
export declare function findConstraintsByTrigger(trigger: ConstraintTrigger): Constraint[];
|
|
22
|
+
/**
|
|
23
|
+
* 根据 ID 获取约束
|
|
24
|
+
*/
|
|
25
|
+
export declare function getConstraint(id: string): Constraint | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated 使用 getAllConstraints 代替
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAllLaws(): Constraint[];
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated 使用 findConstraintsByTrigger 代替
|
|
32
|
+
*/
|
|
33
|
+
export declare function findLawsByTrigger(trigger: ConstraintTrigger): Constraint[];
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated 使用 getConstraint 代替
|
|
36
|
+
*/
|
|
37
|
+
export declare function getLaw(id: string): Constraint | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated 使用 GUIDELINES 代替
|
|
40
|
+
*/
|
|
41
|
+
export declare const filterLawsBySeverity: (severity: "error" | "warning" | "info") => Constraint[];
|
|
42
|
+
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAQ/D,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAkEhD,CAAC;AAQF,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA2OjD,CAAC;AAQF,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CA+C3C,CAAC;AAMF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAMhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAKjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAMD;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAE1E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEzD;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,OAAO,GAAG,SAAS,GAAG,MAAM,KAAG,UAAU,EAMvF,CAAC"}
|