check-my-toolkit 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/README.md +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +116 -0
- package/dist/cli.js.map +1 -0
- package/dist/code/audit.d.ts +14 -0
- package/dist/code/audit.d.ts.map +1 -0
- package/dist/code/audit.js +130 -0
- package/dist/code/audit.js.map +1 -0
- package/dist/code/index.d.ts +13 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +49 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/linting.d.ts +10 -0
- package/dist/code/linting.d.ts.map +1 -0
- package/dist/code/linting.js +233 -0
- package/dist/code/linting.js.map +1 -0
- package/dist/code/tools/base.d.ts +52 -0
- package/dist/code/tools/base.d.ts.map +1 -0
- package/dist/code/tools/base.js +83 -0
- package/dist/code/tools/base.js.map +1 -0
- package/dist/code/tools/eslint.d.ts +15 -0
- package/dist/code/tools/eslint.d.ts.map +1 -0
- package/dist/code/tools/eslint.js +79 -0
- package/dist/code/tools/eslint.js.map +1 -0
- package/dist/code/tools/index.d.ts +5 -0
- package/dist/code/tools/index.d.ts.map +1 -0
- package/dist/code/tools/index.js +5 -0
- package/dist/code/tools/index.js.map +1 -0
- package/dist/code/tools/ruff.d.ts +26 -0
- package/dist/code/tools/ruff.d.ts.map +1 -0
- package/dist/code/tools/ruff.js +149 -0
- package/dist/code/tools/ruff.js.map +1 -0
- package/dist/code/tools/tsc.d.ts +20 -0
- package/dist/code/tools/tsc.d.ts.map +1 -0
- package/dist/code/tools/tsc.js +90 -0
- package/dist/code/tools/tsc.js.map +1 -0
- package/dist/code/types.d.ts +6 -0
- package/dist/code/types.d.ts.map +1 -0
- package/dist/code/types.js +132 -0
- package/dist/code/types.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +21 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +118 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +1217 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +190 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/output/index.d.ts +15 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +98 -0
- package/dist/output/index.js.map +1 -0
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +116 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/code/index.d.ts +13 -0
- package/dist/src/code/index.d.ts.map +1 -0
- package/dist/src/code/index.js +53 -0
- package/dist/src/code/index.js.map +1 -0
- package/dist/src/code/tools/base.d.ts +52 -0
- package/dist/src/code/tools/base.d.ts.map +1 -0
- package/dist/src/code/tools/base.js +83 -0
- package/dist/src/code/tools/base.js.map +1 -0
- package/dist/src/code/tools/eslint.d.ts +15 -0
- package/dist/src/code/tools/eslint.d.ts.map +1 -0
- package/dist/src/code/tools/eslint.js +79 -0
- package/dist/src/code/tools/eslint.js.map +1 -0
- package/dist/src/code/tools/index.d.ts +5 -0
- package/dist/src/code/tools/index.d.ts.map +1 -0
- package/dist/src/code/tools/index.js +5 -0
- package/dist/src/code/tools/index.js.map +1 -0
- package/dist/src/code/tools/ruff.d.ts +26 -0
- package/dist/src/code/tools/ruff.d.ts.map +1 -0
- package/dist/src/code/tools/ruff.js +149 -0
- package/dist/src/code/tools/ruff.js.map +1 -0
- package/dist/src/code/tools/tsc.d.ts +21 -0
- package/dist/src/code/tools/tsc.d.ts.map +1 -0
- package/dist/src/code/tools/tsc.js +94 -0
- package/dist/src/code/tools/tsc.js.map +1 -0
- package/dist/src/config/index.d.ts +3 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +3 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/loader.d.ts +22 -0
- package/dist/src/config/loader.d.ts.map +1 -0
- package/dist/src/config/loader.js +124 -0
- package/dist/src/config/loader.js.map +1 -0
- package/dist/src/config/schema.d.ts +503 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +190 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +16 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/output/index.d.ts +15 -0
- package/dist/src/output/index.d.ts.map +1 -0
- package/dist/src/output/index.js +96 -0
- package/dist/src/output/index.js.map +1 -0
- package/dist/src/types/index.d.ts +96 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +89 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/tests/e2e/e2e.test.d.ts +2 -0
- package/dist/tests/e2e/e2e.test.d.ts.map +1 -0
- package/dist/tests/e2e/e2e.test.js +398 -0
- package/dist/tests/e2e/e2e.test.js.map +1 -0
- package/dist/types/index.d.ts +96 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +89 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for check.toml configuration
|
|
4
|
+
*/
|
|
5
|
+
// =============================================================================
|
|
6
|
+
// ESLint Configuration
|
|
7
|
+
// =============================================================================
|
|
8
|
+
/** ESLint rule values: "off", "warn", "error", or array like ["error", "always"] */
|
|
9
|
+
export const eslintRuleValueSchema = z.union([
|
|
10
|
+
z.enum(["off", "warn", "error"]),
|
|
11
|
+
z.tuple([z.string()]).rest(z.unknown()),
|
|
12
|
+
]);
|
|
13
|
+
/** ESLint configuration */
|
|
14
|
+
export const eslintConfigSchema = z
|
|
15
|
+
.object({
|
|
16
|
+
enabled: z.boolean().optional().default(true),
|
|
17
|
+
rules: z.record(z.string(), eslintRuleValueSchema).optional(),
|
|
18
|
+
})
|
|
19
|
+
.optional();
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// Ruff Configuration
|
|
22
|
+
// =============================================================================
|
|
23
|
+
/** Ruff lint configuration */
|
|
24
|
+
export const ruffLintSchema = z
|
|
25
|
+
.object({
|
|
26
|
+
select: z.array(z.string()).optional(),
|
|
27
|
+
ignore: z.array(z.string()).optional(),
|
|
28
|
+
})
|
|
29
|
+
.optional();
|
|
30
|
+
/** Ruff configuration */
|
|
31
|
+
export const ruffConfigSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
enabled: z.boolean().optional().default(true),
|
|
34
|
+
"line-length": z.number().int().positive().optional(),
|
|
35
|
+
lint: ruffLintSchema,
|
|
36
|
+
})
|
|
37
|
+
.optional();
|
|
38
|
+
// =============================================================================
|
|
39
|
+
// TypeScript Configuration
|
|
40
|
+
// =============================================================================
|
|
41
|
+
/** TypeScript compiler configuration */
|
|
42
|
+
export const tscConfigSchema = z
|
|
43
|
+
.object({
|
|
44
|
+
enabled: z.boolean().optional().default(false),
|
|
45
|
+
// Strict type-checking options
|
|
46
|
+
strict: z.boolean().optional(),
|
|
47
|
+
noImplicitAny: z.boolean().optional(),
|
|
48
|
+
strictNullChecks: z.boolean().optional(),
|
|
49
|
+
strictFunctionTypes: z.boolean().optional(),
|
|
50
|
+
strictBindCallApply: z.boolean().optional(),
|
|
51
|
+
strictPropertyInitialization: z.boolean().optional(),
|
|
52
|
+
noImplicitThis: z.boolean().optional(),
|
|
53
|
+
alwaysStrict: z.boolean().optional(),
|
|
54
|
+
// Additional strictness
|
|
55
|
+
noUncheckedIndexedAccess: z.boolean().optional(),
|
|
56
|
+
noImplicitReturns: z.boolean().optional(),
|
|
57
|
+
noFallthroughCasesInSwitch: z.boolean().optional(),
|
|
58
|
+
noUnusedLocals: z.boolean().optional(),
|
|
59
|
+
noUnusedParameters: z.boolean().optional(),
|
|
60
|
+
exactOptionalPropertyTypes: z.boolean().optional(),
|
|
61
|
+
noImplicitOverride: z.boolean().optional(),
|
|
62
|
+
// Permissive options
|
|
63
|
+
allowUnusedLabels: z.boolean().optional(),
|
|
64
|
+
allowUnreachableCode: z.boolean().optional(),
|
|
65
|
+
})
|
|
66
|
+
.optional();
|
|
67
|
+
// =============================================================================
|
|
68
|
+
// Code Complexity / Limits Configuration
|
|
69
|
+
// =============================================================================
|
|
70
|
+
/** Code limits configuration */
|
|
71
|
+
export const codeLimitsSchema = z
|
|
72
|
+
.object({
|
|
73
|
+
max_file_lines: z.number().int().positive().optional(),
|
|
74
|
+
max_function_lines: z.number().int().positive().optional(),
|
|
75
|
+
max_parameters: z.number().int().positive().optional(),
|
|
76
|
+
max_nesting_depth: z.number().int().positive().optional(),
|
|
77
|
+
})
|
|
78
|
+
.optional();
|
|
79
|
+
// =============================================================================
|
|
80
|
+
// Code Domain Configuration
|
|
81
|
+
// =============================================================================
|
|
82
|
+
/** Code linting configuration */
|
|
83
|
+
export const codeLintingSchema = z
|
|
84
|
+
.object({
|
|
85
|
+
eslint: eslintConfigSchema,
|
|
86
|
+
ruff: ruffConfigSchema,
|
|
87
|
+
})
|
|
88
|
+
.optional();
|
|
89
|
+
/** Code type checking configuration */
|
|
90
|
+
export const codeTypesSchema = z
|
|
91
|
+
.object({
|
|
92
|
+
tsc: tscConfigSchema,
|
|
93
|
+
})
|
|
94
|
+
.optional();
|
|
95
|
+
/** Code files configuration */
|
|
96
|
+
export const codeFilesSchema = z
|
|
97
|
+
.object({
|
|
98
|
+
repo: z.array(z.string()).optional(),
|
|
99
|
+
tooling: z.array(z.string()).optional(),
|
|
100
|
+
docs: z.array(z.string()).optional(),
|
|
101
|
+
})
|
|
102
|
+
.optional();
|
|
103
|
+
/** Code domain configuration */
|
|
104
|
+
export const codeSchema = z
|
|
105
|
+
.object({
|
|
106
|
+
linting: codeLintingSchema,
|
|
107
|
+
types: codeTypesSchema,
|
|
108
|
+
complexity: codeLimitsSchema,
|
|
109
|
+
files: codeFilesSchema,
|
|
110
|
+
})
|
|
111
|
+
.optional();
|
|
112
|
+
// =============================================================================
|
|
113
|
+
// Process Domain Configuration
|
|
114
|
+
// =============================================================================
|
|
115
|
+
/** Process PR configuration */
|
|
116
|
+
export const processPrSchema = z
|
|
117
|
+
.object({
|
|
118
|
+
max_files: z.number().optional(),
|
|
119
|
+
max_lines: z.number().optional(),
|
|
120
|
+
min_approvals: z.number().optional(),
|
|
121
|
+
})
|
|
122
|
+
.optional();
|
|
123
|
+
/** Process branches configuration */
|
|
124
|
+
export const processBranchesSchema = z
|
|
125
|
+
.object({
|
|
126
|
+
pattern: z.string().optional(),
|
|
127
|
+
})
|
|
128
|
+
.optional();
|
|
129
|
+
/** Process tickets configuration */
|
|
130
|
+
export const processTicketsSchema = z
|
|
131
|
+
.object({
|
|
132
|
+
pattern: z.string().optional(),
|
|
133
|
+
check_in: z.array(z.string()).optional(),
|
|
134
|
+
})
|
|
135
|
+
.optional();
|
|
136
|
+
/** Process domain configuration */
|
|
137
|
+
export const processSchema = z
|
|
138
|
+
.object({
|
|
139
|
+
pr: processPrSchema,
|
|
140
|
+
branches: processBranchesSchema,
|
|
141
|
+
tickets: processTicketsSchema,
|
|
142
|
+
})
|
|
143
|
+
.optional();
|
|
144
|
+
// =============================================================================
|
|
145
|
+
// Stack Domain Configuration
|
|
146
|
+
// =============================================================================
|
|
147
|
+
/** Stack tools configuration */
|
|
148
|
+
export const stackToolsSchema = z.record(z.string()).optional();
|
|
149
|
+
/** Stack domain configuration */
|
|
150
|
+
export const stackSchema = z
|
|
151
|
+
.object({
|
|
152
|
+
tools: stackToolsSchema,
|
|
153
|
+
})
|
|
154
|
+
.optional();
|
|
155
|
+
// =============================================================================
|
|
156
|
+
// Full Configuration
|
|
157
|
+
// =============================================================================
|
|
158
|
+
/** Full check.toml schema */
|
|
159
|
+
export const configSchema = z.object({
|
|
160
|
+
code: codeSchema,
|
|
161
|
+
process: processSchema,
|
|
162
|
+
stack: stackSchema,
|
|
163
|
+
});
|
|
164
|
+
/** Default configuration */
|
|
165
|
+
export const defaultConfig = {
|
|
166
|
+
code: {
|
|
167
|
+
linting: {
|
|
168
|
+
eslint: { enabled: false },
|
|
169
|
+
ruff: { enabled: false },
|
|
170
|
+
},
|
|
171
|
+
types: {
|
|
172
|
+
tsc: { enabled: false },
|
|
173
|
+
},
|
|
174
|
+
complexity: {},
|
|
175
|
+
files: {
|
|
176
|
+
repo: [],
|
|
177
|
+
tooling: [],
|
|
178
|
+
docs: [],
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
process: {
|
|
182
|
+
pr: {},
|
|
183
|
+
branches: {},
|
|
184
|
+
tickets: {},
|
|
185
|
+
},
|
|
186
|
+
stack: {
|
|
187
|
+
tools: {},
|
|
188
|
+
},
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check-my-toolkit - Unified project health checks
|
|
3
|
+
*/
|
|
4
|
+
export { type CheckResult, CheckResult as CheckResultBuilder, type DomainResult, DomainResult as DomainResultBuilder, type DomainStatus, ExitCode, type ExitCodeType, type FullResult, type IToolRunner, type Severity, type Violation, Violation as ViolationBuilder, type ViolationOptions, } from "./types/index.js";
|
|
5
|
+
export { type Config, ConfigError, configSchema, defaultConfig, findConfigFile, getProjectRoot, loadConfig, } from "./config/index.js";
|
|
6
|
+
export { auditCodeConfig, BaseToolRunner, ESLintRunner, RuffRunner, runCodeChecks, TscRunner, } from "./code/index.js";
|
|
7
|
+
export { formatJson, formatOutput, formatText, type OutputFormat, } from "./output/index.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,KAAK,WAAW,EAChB,WAAW,IAAI,kBAAkB,EACjC,KAAK,YAAY,EACjB,YAAY,IAAI,mBAAmB,EACnC,KAAK,YAAY,EAEjB,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,UAAU,EAEf,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEb,KAAK,SAAS,EAEd,SAAS,IAAI,gBAAgB,EAC7B,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,KAAK,MAAM,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,EACV,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check-my-toolkit - Unified project health checks
|
|
3
|
+
*/
|
|
4
|
+
// Types
|
|
5
|
+
export { CheckResult as CheckResultBuilder, DomainResult as DomainResultBuilder,
|
|
6
|
+
// Exit codes
|
|
7
|
+
ExitCode,
|
|
8
|
+
// Builders (use these to create instances)
|
|
9
|
+
Violation as ViolationBuilder, } from "./types/index.js";
|
|
10
|
+
// Config
|
|
11
|
+
export { ConfigError, configSchema, defaultConfig, findConfigFile, getProjectRoot, loadConfig, } from "./config/index.js";
|
|
12
|
+
// Code domain
|
|
13
|
+
export { auditCodeConfig, BaseToolRunner, ESLintRunner, RuffRunner, runCodeChecks, TscRunner, } from "./code/index.js";
|
|
14
|
+
// Output
|
|
15
|
+
export { formatJson, formatOutput, formatText, } from "./output/index.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,QAAQ;AACR,OAAO,EAEL,WAAW,IAAI,kBAAkB,EAEjC,YAAY,IAAI,mBAAmB;AAEnC,aAAa;AACb,QAAQ;AAQR,2CAA2C;AAC3C,SAAS,IAAI,gBAAgB,GAE9B,MAAM,kBAAkB,CAAC;AAE1B,SAAS;AACT,OAAO,EAEL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,cAAc;AACd,OAAO,EACL,eAAe,EACf,cAAc,EACd,YAAY,EACZ,UAAU,EACV,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,SAAS;AACT,OAAO,EACL,UAAU,EACV,YAAY,EACZ,UAAU,GAEX,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type FullResult } from "../types/index.js";
|
|
2
|
+
export type OutputFormat = "text" | "json";
|
|
3
|
+
/**
|
|
4
|
+
* Format output as JSON
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatJson(result: FullResult): string;
|
|
7
|
+
/**
|
|
8
|
+
* Format output as human-readable text
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatText(result: FullResult): string;
|
|
11
|
+
/**
|
|
12
|
+
* Format result based on output format
|
|
13
|
+
*/
|
|
14
|
+
export declare function formatOutput(result: FullResult, format: OutputFormat): string;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/output/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAS3C;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAuBrD;AA0DD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ7E"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/** Icon mapping for domain/check status */
|
|
2
|
+
const STATUS_ICONS = {
|
|
3
|
+
pass: "✓",
|
|
4
|
+
fail: "✗",
|
|
5
|
+
skip: "○",
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Format output as JSON
|
|
9
|
+
*/
|
|
10
|
+
export function formatJson(result) {
|
|
11
|
+
return JSON.stringify(result, null, 2);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Format output as human-readable text
|
|
15
|
+
*/
|
|
16
|
+
export function formatText(result) {
|
|
17
|
+
const lines = [];
|
|
18
|
+
// Header
|
|
19
|
+
lines.push(`check-my-toolkit v${result.version}`);
|
|
20
|
+
lines.push(`Config: ${result.configPath}`);
|
|
21
|
+
lines.push("");
|
|
22
|
+
// Domain results
|
|
23
|
+
for (const [domainName, domain] of Object.entries(result.domains)) {
|
|
24
|
+
lines.push(formatDomainText(domainName, domain));
|
|
25
|
+
lines.push("");
|
|
26
|
+
}
|
|
27
|
+
// Summary
|
|
28
|
+
lines.push("─".repeat(50));
|
|
29
|
+
if (result.summary.totalViolations === 0) {
|
|
30
|
+
lines.push("✓ All checks passed");
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
lines.push(`✗ ${result.summary.totalViolations} violation(s) found`);
|
|
34
|
+
}
|
|
35
|
+
return lines.join("\n");
|
|
36
|
+
}
|
|
37
|
+
function getStatusIcon(status) {
|
|
38
|
+
return STATUS_ICONS[status];
|
|
39
|
+
}
|
|
40
|
+
function getCheckIcon(passed, skipped) {
|
|
41
|
+
if (passed)
|
|
42
|
+
return "✓";
|
|
43
|
+
if (skipped)
|
|
44
|
+
return "○";
|
|
45
|
+
return "✗";
|
|
46
|
+
}
|
|
47
|
+
function formatDomainText(name, domain) {
|
|
48
|
+
const lines = [];
|
|
49
|
+
const statusIcon = getStatusIcon(domain.status);
|
|
50
|
+
lines.push(`${statusIcon} ${name.toUpperCase()}`);
|
|
51
|
+
for (const check of domain.checks) {
|
|
52
|
+
const checkIcon = getCheckIcon(check.passed, check.skipped);
|
|
53
|
+
const duration = check.duration ? ` (${check.duration}ms)` : "";
|
|
54
|
+
if (check.skipped) {
|
|
55
|
+
lines.push(` ${checkIcon} ${check.name}: skipped - ${check.skipReason}${duration}`);
|
|
56
|
+
}
|
|
57
|
+
else if (check.passed) {
|
|
58
|
+
lines.push(` ${checkIcon} ${check.name}: passed${duration}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
lines.push(` ${checkIcon} ${check.name}: ${check.violations.length} violation(s)${duration}`);
|
|
62
|
+
// Show first 10 violations
|
|
63
|
+
const violationsToShow = check.violations.slice(0, 10);
|
|
64
|
+
for (const v of violationsToShow) {
|
|
65
|
+
lines.push(formatViolationText(v));
|
|
66
|
+
}
|
|
67
|
+
if (check.violations.length > 10) {
|
|
68
|
+
lines.push(` ... and ${check.violations.length - 10} more`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return lines.join("\n");
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Format a single violation as text
|
|
76
|
+
*/
|
|
77
|
+
function formatViolationText(v) {
|
|
78
|
+
const location = v.file ? `${v.file}:${v.line ?? 0}:${v.column ?? 0}` : "";
|
|
79
|
+
const code = v.code ? `[${v.code}]` : "";
|
|
80
|
+
const severity = v.severity === "error" ? "error" : "warn";
|
|
81
|
+
if (location) {
|
|
82
|
+
return ` ${location} ${severity} ${code} ${v.message}`;
|
|
83
|
+
}
|
|
84
|
+
return ` ${severity} ${code} ${v.message}`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Format result based on output format
|
|
88
|
+
*/
|
|
89
|
+
export function formatOutput(result, format) {
|
|
90
|
+
switch (format) {
|
|
91
|
+
case "json":
|
|
92
|
+
return formatJson(result);
|
|
93
|
+
case "text":
|
|
94
|
+
default:
|
|
95
|
+
return formatText(result);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { auditCodeConfig, runCodeChecks } from "./code/index.js";
|
|
4
|
+
import { ConfigError, getProjectRoot, loadConfig } from "./config/index.js";
|
|
5
|
+
import { formatOutput } from "./output/index.js";
|
|
6
|
+
import { ExitCode } from "./types/index.js";
|
|
7
|
+
const VERSION = "0.1.0";
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.name("cm")
|
|
11
|
+
.description("Unified project health checks - code, process, and stack")
|
|
12
|
+
.version(VERSION);
|
|
13
|
+
// Code subcommand
|
|
14
|
+
const codeCommand = new Command("code").description("Code quality checks");
|
|
15
|
+
// cm code check
|
|
16
|
+
codeCommand
|
|
17
|
+
.command("check")
|
|
18
|
+
.description("Run linting and type checking tools")
|
|
19
|
+
.option("-c, --config <path>", "Path to check.toml config file")
|
|
20
|
+
.option("-f, --format <format>", "Output format: text or json", "text")
|
|
21
|
+
.action(async (options) => {
|
|
22
|
+
try {
|
|
23
|
+
const { config, configPath } = loadConfig(options.config);
|
|
24
|
+
const projectRoot = getProjectRoot(configPath);
|
|
25
|
+
const domainResult = await runCodeChecks(projectRoot, config);
|
|
26
|
+
const result = {
|
|
27
|
+
version: VERSION,
|
|
28
|
+
configPath,
|
|
29
|
+
domains: {
|
|
30
|
+
code: domainResult,
|
|
31
|
+
},
|
|
32
|
+
summary: {
|
|
33
|
+
totalViolations: domainResult.violationCount,
|
|
34
|
+
exitCode: domainResult.violationCount > 0 ? ExitCode.VIOLATIONS_FOUND : ExitCode.SUCCESS,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
process.stdout.write(`${formatOutput(result, options.format)}\n`);
|
|
38
|
+
process.exit(result.summary.exitCode);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
if (error instanceof ConfigError) {
|
|
42
|
+
console.error(`Config error: ${error.message}`);
|
|
43
|
+
process.exit(ExitCode.CONFIG_ERROR);
|
|
44
|
+
}
|
|
45
|
+
console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
46
|
+
process.exit(ExitCode.RUNTIME_ERROR);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// cm code audit
|
|
50
|
+
codeCommand
|
|
51
|
+
.command("audit")
|
|
52
|
+
.description("Verify linting and type checking configs exist")
|
|
53
|
+
.option("-c, --config <path>", "Path to check.toml config file")
|
|
54
|
+
.option("-f, --format <format>", "Output format: text or json", "text")
|
|
55
|
+
.action(async (options) => {
|
|
56
|
+
try {
|
|
57
|
+
const { config, configPath } = loadConfig(options.config);
|
|
58
|
+
const projectRoot = getProjectRoot(configPath);
|
|
59
|
+
const domainResult = await auditCodeConfig(projectRoot, config);
|
|
60
|
+
const result = {
|
|
61
|
+
version: VERSION,
|
|
62
|
+
configPath,
|
|
63
|
+
domains: {
|
|
64
|
+
code: domainResult,
|
|
65
|
+
},
|
|
66
|
+
summary: {
|
|
67
|
+
totalViolations: domainResult.violationCount,
|
|
68
|
+
exitCode: domainResult.violationCount > 0 ? ExitCode.VIOLATIONS_FOUND : ExitCode.SUCCESS,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
process.stdout.write(`${formatOutput(result, options.format)}\n`);
|
|
72
|
+
process.exit(result.summary.exitCode);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error instanceof ConfigError) {
|
|
76
|
+
console.error(`Config error: ${error.message}`);
|
|
77
|
+
process.exit(ExitCode.CONFIG_ERROR);
|
|
78
|
+
}
|
|
79
|
+
console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
80
|
+
process.exit(ExitCode.RUNTIME_ERROR);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
program.addCommand(codeCommand);
|
|
84
|
+
// cm validate - top-level command to validate check.toml
|
|
85
|
+
program
|
|
86
|
+
.command("validate")
|
|
87
|
+
.description("Validate check.toml configuration file")
|
|
88
|
+
.option("-c, --config <path>", "Path to check.toml config file")
|
|
89
|
+
.option("-f, --format <format>", "Output format: text or json", "text")
|
|
90
|
+
.action((options) => {
|
|
91
|
+
try {
|
|
92
|
+
const { configPath } = loadConfig(options.config);
|
|
93
|
+
if (options.format === "json") {
|
|
94
|
+
process.stdout.write(`${JSON.stringify({ valid: true, configPath }, null, 2)}\n`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
process.stdout.write(`✓ Valid: ${configPath}\n`);
|
|
98
|
+
}
|
|
99
|
+
process.exit(ExitCode.SUCCESS);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (error instanceof ConfigError) {
|
|
103
|
+
if (options.format === "json") {
|
|
104
|
+
process.stdout.write(`${JSON.stringify({ valid: false, error: error.message }, null, 2)}\n`);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
console.error(`✗ Invalid: ${error.message}`);
|
|
108
|
+
}
|
|
109
|
+
process.exit(ExitCode.CONFIG_ERROR);
|
|
110
|
+
}
|
|
111
|
+
console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
112
|
+
process.exit(ExitCode.RUNTIME_ERROR);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
program.parse();
|
|
116
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Config } from "../config/index.js";
|
|
2
|
+
import { DomainResult } from "../types/index.js";
|
|
3
|
+
export { ESLintRunner, RuffRunner, TscRunner } from "./tools/index.js";
|
|
4
|
+
export { BaseToolRunner } from "./tools/index.js";
|
|
5
|
+
/**
|
|
6
|
+
* Run all code checks based on configuration
|
|
7
|
+
*/
|
|
8
|
+
export declare function runCodeChecks(projectRoot: string, config: Config): Promise<DomainResult>;
|
|
9
|
+
/**
|
|
10
|
+
* Audit code configuration (check that configs exist without running tools)
|
|
11
|
+
*/
|
|
12
|
+
export declare function auditCodeConfig(projectRoot: string, config: Config): Promise<DomainResult>;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/code/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAEL,YAAY,EAEb,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAuBlD;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAIvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,CAAC,CAIvB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { DomainResult, } from "../types/index.js";
|
|
2
|
+
import { ESLintRunner, RuffRunner, TscRunner } from "./tools/index.js";
|
|
3
|
+
// Tool runner instances
|
|
4
|
+
const eslint = new ESLintRunner();
|
|
5
|
+
const ruff = new RuffRunner();
|
|
6
|
+
const tsc = new TscRunner();
|
|
7
|
+
// Export tool runners for direct access
|
|
8
|
+
export { ESLintRunner, RuffRunner, TscRunner } from "./tools/index.js";
|
|
9
|
+
export { BaseToolRunner } from "./tools/index.js";
|
|
10
|
+
/** Check if a tool is enabled in config */
|
|
11
|
+
function isEnabled(toolConfig) {
|
|
12
|
+
return toolConfig?.enabled === true;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get enabled tools based on configuration
|
|
16
|
+
*/
|
|
17
|
+
function getEnabledTools(config) {
|
|
18
|
+
const code = config.code ?? {};
|
|
19
|
+
const linting = code.linting ?? {};
|
|
20
|
+
const types = code.types ?? {};
|
|
21
|
+
const tools = [];
|
|
22
|
+
if (isEnabled(linting.eslint))
|
|
23
|
+
tools.push(eslint);
|
|
24
|
+
if (isEnabled(linting.ruff))
|
|
25
|
+
tools.push(ruff);
|
|
26
|
+
if (isEnabled(types.tsc))
|
|
27
|
+
tools.push(tsc);
|
|
28
|
+
return tools;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run all code checks based on configuration
|
|
32
|
+
*/
|
|
33
|
+
export async function runCodeChecks(projectRoot, config) {
|
|
34
|
+
const tools = getEnabledTools(config);
|
|
35
|
+
const checks = await runTools(tools, projectRoot, "run");
|
|
36
|
+
return DomainResult.fromChecks("code", checks);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Audit code configuration (check that configs exist without running tools)
|
|
40
|
+
*/
|
|
41
|
+
export async function auditCodeConfig(projectRoot, config) {
|
|
42
|
+
const tools = getEnabledTools(config);
|
|
43
|
+
const checks = await runTools(tools, projectRoot, "audit");
|
|
44
|
+
return DomainResult.fromChecks("code", checks);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Run tools in parallel
|
|
48
|
+
*/
|
|
49
|
+
async function runTools(tools, projectRoot, mode) {
|
|
50
|
+
const promises = tools.map((tool) => mode === "run" ? tool.run(projectRoot) : tool.audit(projectRoot));
|
|
51
|
+
return Promise.all(promises);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/code/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvE,wBAAwB;AACxB,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAClC,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;AAC9B,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;AAE5B,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,2CAA2C;AAC3C,SAAS,SAAS,CAAC,UAA6C;IAC9D,OAAO,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,MAAc;IAEd,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACzD,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,MAAc;IAEd,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,QAAQ,CACrB,KAAoB,EACpB,WAAmB,EACnB,IAAqB;IAErB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CACjE,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CheckResult, type IToolRunner, type Violation } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Abstract base class for tool runners.
|
|
4
|
+
* Provides common functionality for checking configs and handling errors.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class BaseToolRunner implements IToolRunner {
|
|
7
|
+
abstract readonly name: string;
|
|
8
|
+
abstract readonly rule: string;
|
|
9
|
+
abstract readonly toolId: string;
|
|
10
|
+
abstract readonly configFiles: string[];
|
|
11
|
+
/**
|
|
12
|
+
* Check if any of the config files exist
|
|
13
|
+
*/
|
|
14
|
+
protected hasConfig(projectRoot: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Find which config file exists (if any)
|
|
17
|
+
*/
|
|
18
|
+
protected findConfig(projectRoot: string): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Check if an error indicates the tool is not installed
|
|
21
|
+
*/
|
|
22
|
+
protected isNotInstalledError(error: unknown): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Create a skip result for when config is missing
|
|
25
|
+
*/
|
|
26
|
+
protected skipNoConfig(duration: number): CheckResult;
|
|
27
|
+
/**
|
|
28
|
+
* Create a skip result for when tool is not installed
|
|
29
|
+
*/
|
|
30
|
+
protected skipNotInstalled(duration: number): CheckResult;
|
|
31
|
+
/**
|
|
32
|
+
* Create a pass result
|
|
33
|
+
*/
|
|
34
|
+
protected pass(duration: number): CheckResult;
|
|
35
|
+
/**
|
|
36
|
+
* Create a fail result from violations
|
|
37
|
+
*/
|
|
38
|
+
protected fail(violations: Violation[], duration: number): CheckResult;
|
|
39
|
+
/**
|
|
40
|
+
* Create a result from violations (pass if empty, fail otherwise)
|
|
41
|
+
*/
|
|
42
|
+
protected fromViolations(violations: Violation[], duration: number): CheckResult;
|
|
43
|
+
/**
|
|
44
|
+
* Run the tool - must be implemented by subclasses
|
|
45
|
+
*/
|
|
46
|
+
abstract run(projectRoot: string): Promise<CheckResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Default audit implementation - checks if config exists
|
|
49
|
+
*/
|
|
50
|
+
audit(projectRoot: string): Promise<CheckResult>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/code/tools/base.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,8BAAsB,cAAe,YAAW,WAAW;IACzD,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAExC;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAMjD;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASxD;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAMtD;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IASrD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IASzD;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAI7C;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAItE;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAIhF;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEvD;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAqBvD"}
|