check-my-toolkit 0.1.0 → 0.1.1
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 +157 -1
- package/dist/code/index.d.ts.map +1 -1
- package/dist/code/index.js +10 -6
- package/dist/code/index.js.map +1 -1
- package/dist/code/tools/tsc.d.ts +1 -0
- package/dist/code/tools/tsc.d.ts.map +1 -1
- package/dist/code/tools/tsc.js +18 -14
- package/dist/code/tools/tsc.js.map +1 -1
- package/dist/config/loader.d.ts +2 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +68 -62
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +0 -714
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +16 -16
- package/dist/config/schema.js.map +1 -1
- package/dist/output/index.d.ts.map +1 -1
- package/dist/output/index.js +19 -21
- package/dist/output/index.js.map +1 -1
- package/package.json +10 -2
- package/dist/code/audit.d.ts +0 -14
- package/dist/code/audit.d.ts.map +0 -1
- package/dist/code/audit.js +0 -130
- package/dist/code/audit.js.map +0 -1
- package/dist/code/linting.d.ts +0 -10
- package/dist/code/linting.d.ts.map +0 -1
- package/dist/code/linting.js +0 -233
- package/dist/code/linting.js.map +0 -1
- package/dist/code/types.d.ts +0 -6
- package/dist/code/types.d.ts.map +0 -1
- package/dist/code/types.js +0 -132
- package/dist/code/types.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -116
- package/dist/src/cli.js.map +0 -1
- package/dist/src/code/index.d.ts +0 -13
- package/dist/src/code/index.d.ts.map +0 -1
- package/dist/src/code/index.js +0 -53
- package/dist/src/code/index.js.map +0 -1
- package/dist/src/code/tools/base.d.ts +0 -52
- package/dist/src/code/tools/base.d.ts.map +0 -1
- package/dist/src/code/tools/base.js +0 -83
- package/dist/src/code/tools/base.js.map +0 -1
- package/dist/src/code/tools/eslint.d.ts +0 -15
- package/dist/src/code/tools/eslint.d.ts.map +0 -1
- package/dist/src/code/tools/eslint.js +0 -79
- package/dist/src/code/tools/eslint.js.map +0 -1
- package/dist/src/code/tools/index.d.ts +0 -5
- package/dist/src/code/tools/index.d.ts.map +0 -1
- package/dist/src/code/tools/index.js +0 -5
- package/dist/src/code/tools/index.js.map +0 -1
- package/dist/src/code/tools/ruff.d.ts +0 -26
- package/dist/src/code/tools/ruff.d.ts.map +0 -1
- package/dist/src/code/tools/ruff.js +0 -149
- package/dist/src/code/tools/ruff.js.map +0 -1
- package/dist/src/code/tools/tsc.d.ts +0 -21
- package/dist/src/code/tools/tsc.d.ts.map +0 -1
- package/dist/src/code/tools/tsc.js +0 -94
- package/dist/src/code/tools/tsc.js.map +0 -1
- package/dist/src/config/index.d.ts +0 -3
- package/dist/src/config/index.d.ts.map +0 -1
- package/dist/src/config/index.js +0 -3
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/config/loader.d.ts +0 -22
- package/dist/src/config/loader.d.ts.map +0 -1
- package/dist/src/config/loader.js +0 -124
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/schema.d.ts +0 -503
- package/dist/src/config/schema.d.ts.map +0 -1
- package/dist/src/config/schema.js +0 -190
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/index.d.ts +0 -8
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -16
- package/dist/src/index.js.map +0 -1
- package/dist/src/output/index.d.ts +0 -15
- package/dist/src/output/index.d.ts.map +0 -1
- package/dist/src/output/index.js +0 -96
- package/dist/src/output/index.js.map +0 -1
- package/dist/src/types/index.d.ts +0 -96
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -89
- package/dist/src/types/index.js.map +0 -1
- package/dist/tests/e2e/e2e.test.d.ts +0 -2
- package/dist/tests/e2e/e2e.test.d.ts.map +0 -1
- package/dist/tests/e2e/e2e.test.js +0 -398
- package/dist/tests/e2e/e2e.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,2 +1,158 @@
|
|
|
1
1
|
# check-my-toolkit
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
Unified project health checks for code quality, process compliance, and stack validation.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g check-my-toolkit
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Or use directly with npx:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx check-my-toolkit code check
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
1. Create a `check.toml` configuration file in your project root:
|
|
20
|
+
|
|
21
|
+
```toml
|
|
22
|
+
[code.linting]
|
|
23
|
+
eslint = true
|
|
24
|
+
ruff = true
|
|
25
|
+
|
|
26
|
+
[code.types]
|
|
27
|
+
tsc = true
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
2. Run checks:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cm code check
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Commands
|
|
37
|
+
|
|
38
|
+
| Command | Description |
|
|
39
|
+
|---------|-------------|
|
|
40
|
+
| `cm code check` | Run linting (ESLint, Ruff) and type checking (tsc) |
|
|
41
|
+
| `cm code audit` | Verify linting and type checking configs exist |
|
|
42
|
+
| `cm validate` | Validate check.toml configuration file |
|
|
43
|
+
|
|
44
|
+
## Configuration
|
|
45
|
+
|
|
46
|
+
Configuration is stored in `check.toml` at your project root.
|
|
47
|
+
|
|
48
|
+
### Code Domain
|
|
49
|
+
|
|
50
|
+
```toml
|
|
51
|
+
[code.linting]
|
|
52
|
+
eslint = true # Run ESLint
|
|
53
|
+
ruff = true # Run Ruff (Python)
|
|
54
|
+
|
|
55
|
+
[code.types]
|
|
56
|
+
tsc = true # Run TypeScript type checking
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Config Discovery
|
|
60
|
+
|
|
61
|
+
The CLI automatically discovers `check.toml` by walking up the directory tree from the current working directory.
|
|
62
|
+
|
|
63
|
+
## Output Formats
|
|
64
|
+
|
|
65
|
+
### Text (default)
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
[code.linting] ESLint
|
|
69
|
+
✗ src/index.ts:10:5 - 'foo' is assigned but never used
|
|
70
|
+
|
|
71
|
+
[code.types] tsc
|
|
72
|
+
✓ No type errors
|
|
73
|
+
|
|
74
|
+
code: 1 violation found
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### JSON
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
cm code check --format json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"version": "0.1.0",
|
|
86
|
+
"configPath": "/path/to/check.toml",
|
|
87
|
+
"domains": {
|
|
88
|
+
"code": {
|
|
89
|
+
"status": "fail",
|
|
90
|
+
"violationCount": 1,
|
|
91
|
+
"violations": [...]
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"summary": {
|
|
95
|
+
"totalViolations": 1,
|
|
96
|
+
"exitCode": 1
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Exit Codes
|
|
102
|
+
|
|
103
|
+
| Code | Meaning |
|
|
104
|
+
|------|---------|
|
|
105
|
+
| 0 | All checks passed |
|
|
106
|
+
| 1 | Violations found |
|
|
107
|
+
| 2 | Configuration error |
|
|
108
|
+
| 3 | Runtime error |
|
|
109
|
+
|
|
110
|
+
## Supported Tools
|
|
111
|
+
|
|
112
|
+
| Tool | Language | Command |
|
|
113
|
+
|------|----------|---------|
|
|
114
|
+
| ESLint | TypeScript/JavaScript | `eslint .` |
|
|
115
|
+
| Ruff | Python | `ruff check .` |
|
|
116
|
+
| tsc | TypeScript | `tsc --noEmit` |
|
|
117
|
+
|
|
118
|
+
Tools must be installed in your project. If a tool is not found, it will be skipped with a warning.
|
|
119
|
+
|
|
120
|
+
## CI Integration
|
|
121
|
+
|
|
122
|
+
Add to your GitHub Actions workflow:
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
- name: Run code checks
|
|
126
|
+
run: npx check-my-toolkit code check
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Roadmap
|
|
130
|
+
|
|
131
|
+
This toolkit is designed to grow into three domains:
|
|
132
|
+
|
|
133
|
+
- **code** - Linting, type checking, code quality (current focus)
|
|
134
|
+
- **process** - PR checks, branch naming, commit conventions
|
|
135
|
+
- **stack** - Tool versions, environment variables, service dependencies
|
|
136
|
+
|
|
137
|
+
## Development
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# Install dependencies
|
|
141
|
+
npm install
|
|
142
|
+
|
|
143
|
+
# Build
|
|
144
|
+
npm run build
|
|
145
|
+
|
|
146
|
+
# Run tests
|
|
147
|
+
npm test
|
|
148
|
+
|
|
149
|
+
# Type check
|
|
150
|
+
npm run typecheck
|
|
151
|
+
|
|
152
|
+
# Lint
|
|
153
|
+
npm run lint
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## License
|
|
157
|
+
|
|
158
|
+
MIT
|
package/dist/code/index.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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"}
|
package/dist/code/index.js
CHANGED
|
@@ -7,20 +7,24 @@ const tsc = new TscRunner();
|
|
|
7
7
|
// Export tool runners for direct access
|
|
8
8
|
export { ESLintRunner, RuffRunner, TscRunner } from "./tools/index.js";
|
|
9
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
|
+
}
|
|
10
14
|
/**
|
|
11
15
|
* Get enabled tools based on configuration
|
|
12
16
|
*/
|
|
13
17
|
function getEnabledTools(config) {
|
|
18
|
+
const code = config.code ?? {};
|
|
19
|
+
const linting = code.linting ?? {};
|
|
20
|
+
const types = code.types ?? {};
|
|
14
21
|
const tools = [];
|
|
15
|
-
if (
|
|
22
|
+
if (isEnabled(linting.eslint))
|
|
16
23
|
tools.push(eslint);
|
|
17
|
-
|
|
18
|
-
if (config.code?.linting?.ruff?.enabled) {
|
|
24
|
+
if (isEnabled(linting.ruff))
|
|
19
25
|
tools.push(ruff);
|
|
20
|
-
|
|
21
|
-
if (config.code?.types?.tsc?.enabled) {
|
|
26
|
+
if (isEnabled(types.tsc))
|
|
22
27
|
tools.push(tsc);
|
|
23
|
-
}
|
|
24
28
|
return tools;
|
|
25
29
|
}
|
|
26
30
|
/**
|
package/dist/code/index.js.map
CHANGED
|
@@ -1 +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;;GAEG;AACH,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,
|
|
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"}
|
package/dist/code/tools/tsc.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare class TscRunner extends BaseToolRunner {
|
|
|
8
8
|
readonly rule = "code.types";
|
|
9
9
|
readonly toolId = "tsc";
|
|
10
10
|
readonly configFiles: string[];
|
|
11
|
+
private handleTscFailure;
|
|
11
12
|
run(projectRoot: string): Promise<CheckResult>;
|
|
12
13
|
/**
|
|
13
14
|
* Parse tsc output into diagnostics
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsc.d.ts","sourceRoot":"","sources":["../../../src/code/tools/tsc.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAW3C;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAAc;IAC3C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,SAAS;IACxB,QAAQ,CAAC,WAAW,WAAqB;
|
|
1
|
+
{"version":3,"file":"tsc.d.ts","sourceRoot":"","sources":["../../../src/code/tools/tsc.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAW3C;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAAc;IAC3C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,SAAS;IACxB,QAAQ,CAAC,WAAW,WAAqB;IAEzC,OAAO,CAAC,gBAAgB;IAYlB,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA8BpD;;;OAGG;IACH,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,oBAAoB;CAQ7B"}
|
package/dist/code/tools/tsc.js
CHANGED
|
@@ -9,10 +9,22 @@ export class TscRunner extends BaseToolRunner {
|
|
|
9
9
|
rule = "code.types";
|
|
10
10
|
toolId = "tsc";
|
|
11
11
|
configFiles = ["tsconfig.json"];
|
|
12
|
+
handleTscFailure(result, projectRoot) {
|
|
13
|
+
const stdout = String(result.stdout ?? "");
|
|
14
|
+
const violations = this.parseOutput(stdout, projectRoot);
|
|
15
|
+
if (violations.length === 0) {
|
|
16
|
+
const errorOutput = stdout || String(result.stderr ?? "");
|
|
17
|
+
if (errorOutput) {
|
|
18
|
+
return [this.createErrorViolation(`TypeScript error: ${errorOutput.slice(0, 500)}`)];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return violations;
|
|
22
|
+
}
|
|
12
23
|
async run(projectRoot) {
|
|
13
24
|
const startTime = Date.now();
|
|
25
|
+
const elapsed = () => Date.now() - startTime;
|
|
14
26
|
if (!this.hasConfig(projectRoot)) {
|
|
15
|
-
return this.skipNoConfig(
|
|
27
|
+
return this.skipNoConfig(elapsed());
|
|
16
28
|
}
|
|
17
29
|
try {
|
|
18
30
|
const result = await execa("npx", ["tsc", "--noEmit"], {
|
|
@@ -20,26 +32,18 @@ export class TscRunner extends BaseToolRunner {
|
|
|
20
32
|
reject: false,
|
|
21
33
|
timeout: 5 * 60 * 1000,
|
|
22
34
|
});
|
|
23
|
-
// tsc exits with 0 if no errors
|
|
24
35
|
if (result.exitCode === 0) {
|
|
25
|
-
return this.pass(
|
|
26
|
-
}
|
|
27
|
-
const violations = this.parseOutput(result.stdout, projectRoot);
|
|
28
|
-
// If we couldn't parse any diagnostics but tsc failed, report raw output
|
|
29
|
-
if (violations.length === 0) {
|
|
30
|
-
const errorOutput = result.stdout || result.stderr;
|
|
31
|
-
if (errorOutput) {
|
|
32
|
-
return this.fail([this.createErrorViolation(`TypeScript error: ${errorOutput.slice(0, 500)}`)], Date.now() - startTime);
|
|
33
|
-
}
|
|
36
|
+
return this.pass(elapsed());
|
|
34
37
|
}
|
|
35
|
-
|
|
38
|
+
const violations = this.handleTscFailure(result, projectRoot);
|
|
39
|
+
return this.fromViolations(violations, elapsed());
|
|
36
40
|
}
|
|
37
41
|
catch (error) {
|
|
38
42
|
if (this.isNotInstalledError(error)) {
|
|
39
|
-
return this.skipNotInstalled(
|
|
43
|
+
return this.skipNotInstalled(elapsed());
|
|
40
44
|
}
|
|
41
45
|
const message = error instanceof Error ? error.message : "Unknown error";
|
|
42
|
-
return this.fail([this.createErrorViolation(`TypeScript error: ${message}`)],
|
|
46
|
+
return this.fail([this.createErrorViolation(`TypeScript error: ${message}`)], elapsed());
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../../src/code/tools/tsc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAW3C;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,cAAc;IAClC,IAAI,GAAG,YAAY,CAAC;IACpB,IAAI,GAAG,YAAY,CAAC;IACpB,MAAM,GAAG,KAAK,CAAC;IACf,WAAW,GAAG,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../../src/code/tools/tsc.ts"],"names":[],"mappings":"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"}
|
package/dist/config/loader.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Config } from "./schema.js";
|
|
2
|
-
|
|
2
|
+
interface LoadConfigResult {
|
|
3
3
|
config: Config;
|
|
4
4
|
configPath: string;
|
|
5
5
|
}
|
|
@@ -18,4 +18,5 @@ export declare function loadConfig(configPath?: string): LoadConfigResult;
|
|
|
18
18
|
* Get the project root directory (where check.toml is located)
|
|
19
19
|
*/
|
|
20
20
|
export declare function getProjectRoot(configPath: string): string;
|
|
21
|
+
export {};
|
|
21
22
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAA+B,MAAM,aAAa,CAAC;AAEvE,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAA+B,MAAM,aAAa,CAAC;AAEvE,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAe9E;AAyCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAMhE;AAsDD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
package/dist/config/loader.js
CHANGED
|
@@ -23,48 +23,86 @@ export function findConfigFile(startDir = process.cwd()) {
|
|
|
23
23
|
}
|
|
24
24
|
// Check root directory too
|
|
25
25
|
const rootConfig = path.join(root, "check.toml");
|
|
26
|
-
|
|
27
|
-
return rootConfig;
|
|
28
|
-
}
|
|
29
|
-
return null;
|
|
26
|
+
return fs.existsSync(rootConfig) ? rootConfig : null;
|
|
30
27
|
}
|
|
31
28
|
/**
|
|
32
|
-
*
|
|
29
|
+
* Resolve and validate config file path
|
|
33
30
|
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (!resolvedPath) {
|
|
31
|
+
function resolveConfigPath(configPath) {
|
|
32
|
+
const resolved = configPath ?? findConfigFile();
|
|
33
|
+
if (!resolved) {
|
|
38
34
|
throw new ConfigError("No check.toml found. Run 'cm init' to create one or specify --config path.");
|
|
39
35
|
}
|
|
40
|
-
if (!fs.existsSync(
|
|
41
|
-
throw new ConfigError(`Config file not found: ${
|
|
36
|
+
if (!fs.existsSync(resolved)) {
|
|
37
|
+
throw new ConfigError(`Config file not found: ${resolved}`);
|
|
42
38
|
}
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
return resolved;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse TOML file content
|
|
43
|
+
*/
|
|
44
|
+
function parseTomlFile(filePath) {
|
|
45
45
|
try {
|
|
46
|
-
const content = fs.readFileSync(
|
|
47
|
-
|
|
46
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
47
|
+
return TOML.parse(content);
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
throw new ConfigError("Failed to parse check.toml");
|
|
50
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
51
|
+
throw new ConfigError(`Failed to parse check.toml: ${message}`);
|
|
54
52
|
}
|
|
55
|
-
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Validate config against schema
|
|
56
|
+
*/
|
|
57
|
+
function validateConfig(rawConfig) {
|
|
56
58
|
const result = configSchema.safeParse(rawConfig);
|
|
57
59
|
if (!result.success) {
|
|
58
|
-
const errors = result.error.errors
|
|
59
|
-
.map((e) => ` - ${e.path.join(".")}: ${e.message}`)
|
|
60
|
-
.join("\n");
|
|
60
|
+
const errors = result.error.errors.map((e) => ` - ${e.path.join(".")}: ${e.message}`).join("\n");
|
|
61
61
|
throw new ConfigError(`Invalid check.toml configuration:\n${errors}`);
|
|
62
62
|
}
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
return result.data;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Load and parse check.toml configuration
|
|
67
|
+
*/
|
|
68
|
+
export function loadConfig(configPath) {
|
|
69
|
+
const resolvedPath = resolveConfigPath(configPath);
|
|
70
|
+
const rawConfig = parseTomlFile(resolvedPath);
|
|
71
|
+
const validatedConfig = validateConfig(rawConfig);
|
|
72
|
+
const config = mergeWithDefaults(validatedConfig);
|
|
73
|
+
return { config, configPath: resolvedPath };
|
|
74
|
+
}
|
|
75
|
+
/** Merge two optional objects, with right side taking precedence */
|
|
76
|
+
function merge(a, b) {
|
|
77
|
+
return { ...a, ...b };
|
|
78
|
+
}
|
|
79
|
+
/** Get array value with fallback */
|
|
80
|
+
function arr(a, b) {
|
|
81
|
+
return a ?? b ?? [];
|
|
82
|
+
}
|
|
83
|
+
function mergeLinting(c, dc) {
|
|
84
|
+
const cl = c.code?.linting;
|
|
85
|
+
const dl = dc.code?.linting;
|
|
86
|
+
return { eslint: merge(dl?.eslint, cl?.eslint), ruff: merge(dl?.ruff, cl?.ruff) };
|
|
87
|
+
}
|
|
88
|
+
function mergeFiles(c, dc) {
|
|
89
|
+
const cf = c.code?.files;
|
|
90
|
+
const df = dc.code?.files;
|
|
91
|
+
return { repo: arr(cf?.repo, df?.repo), tooling: arr(cf?.tooling, df?.tooling), docs: arr(cf?.docs, df?.docs) };
|
|
92
|
+
}
|
|
93
|
+
function mergeCode(c, dc) {
|
|
94
|
+
return {
|
|
95
|
+
linting: mergeLinting(c, dc),
|
|
96
|
+
types: { tsc: merge(dc.code?.types?.tsc, c.code?.types?.tsc) },
|
|
97
|
+
complexity: merge(dc.code?.complexity, c.code?.complexity),
|
|
98
|
+
files: mergeFiles(c, dc),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function mergeProcess(c, dc) {
|
|
65
102
|
return {
|
|
66
|
-
|
|
67
|
-
|
|
103
|
+
pr: merge(dc.process?.pr, c.process?.pr),
|
|
104
|
+
branches: merge(dc.process?.branches, c.process?.branches),
|
|
105
|
+
tickets: merge(dc.process?.tickets, c.process?.tickets),
|
|
68
106
|
};
|
|
69
107
|
}
|
|
70
108
|
/**
|
|
@@ -72,41 +110,9 @@ export function loadConfig(configPath) {
|
|
|
72
110
|
*/
|
|
73
111
|
function mergeWithDefaults(config) {
|
|
74
112
|
return {
|
|
75
|
-
code:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
enabled: config.code?.linting?.eslint?.enabled ?? defaultConfig.code?.linting?.eslint?.enabled ?? false,
|
|
79
|
-
rules: config.code?.linting?.eslint?.rules,
|
|
80
|
-
},
|
|
81
|
-
ruff: {
|
|
82
|
-
enabled: config.code?.linting?.ruff?.enabled ?? defaultConfig.code?.linting?.ruff?.enabled ?? false,
|
|
83
|
-
"line-length": config.code?.linting?.ruff?.["line-length"],
|
|
84
|
-
lint: config.code?.linting?.ruff?.lint,
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
types: {
|
|
88
|
-
tsc: {
|
|
89
|
-
enabled: config.code?.types?.tsc?.enabled ?? defaultConfig.code?.types?.tsc?.enabled ?? false,
|
|
90
|
-
strict: config.code?.types?.tsc?.strict,
|
|
91
|
-
noImplicitAny: config.code?.types?.tsc?.noImplicitAny,
|
|
92
|
-
strictNullChecks: config.code?.types?.tsc?.strictNullChecks,
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
complexity: config.code?.complexity ?? defaultConfig.code?.complexity ?? {},
|
|
96
|
-
files: {
|
|
97
|
-
repo: config.code?.files?.repo ?? defaultConfig.code?.files?.repo ?? [],
|
|
98
|
-
tooling: config.code?.files?.tooling ?? defaultConfig.code?.files?.tooling ?? [],
|
|
99
|
-
docs: config.code?.files?.docs ?? defaultConfig.code?.files?.docs ?? [],
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
process: {
|
|
103
|
-
pr: config.process?.pr ?? defaultConfig.process?.pr ?? {},
|
|
104
|
-
branches: config.process?.branches ?? defaultConfig.process?.branches ?? {},
|
|
105
|
-
tickets: config.process?.tickets ?? defaultConfig.process?.tickets ?? {},
|
|
106
|
-
},
|
|
107
|
-
stack: {
|
|
108
|
-
tools: config.stack?.tools ?? defaultConfig.stack?.tools ?? {},
|
|
109
|
-
},
|
|
113
|
+
code: mergeCode(config, defaultConfig),
|
|
114
|
+
process: mergeProcess(config, defaultConfig),
|
|
115
|
+
stack: { tools: merge(defaultConfig.stack?.tools, config.stack?.tools) },
|
|
110
116
|
};
|
|
111
117
|
}
|
|
112
118
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,IAAI,MAAM,aAAa,CAAC;AAE/B,OAAO,EAAe,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOvE,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC7D,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;IAEzC,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,2BAA2B;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACjD,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|