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.
Files changed (88) hide show
  1. package/README.md +157 -1
  2. package/dist/code/index.d.ts.map +1 -1
  3. package/dist/code/index.js +10 -6
  4. package/dist/code/index.js.map +1 -1
  5. package/dist/code/tools/tsc.d.ts +1 -0
  6. package/dist/code/tools/tsc.d.ts.map +1 -1
  7. package/dist/code/tools/tsc.js +18 -14
  8. package/dist/code/tools/tsc.js.map +1 -1
  9. package/dist/config/loader.d.ts +2 -1
  10. package/dist/config/loader.d.ts.map +1 -1
  11. package/dist/config/loader.js +68 -62
  12. package/dist/config/loader.js.map +1 -1
  13. package/dist/config/schema.d.ts +0 -714
  14. package/dist/config/schema.d.ts.map +1 -1
  15. package/dist/config/schema.js +16 -16
  16. package/dist/config/schema.js.map +1 -1
  17. package/dist/output/index.d.ts.map +1 -1
  18. package/dist/output/index.js +19 -21
  19. package/dist/output/index.js.map +1 -1
  20. package/package.json +10 -2
  21. package/dist/code/audit.d.ts +0 -14
  22. package/dist/code/audit.d.ts.map +0 -1
  23. package/dist/code/audit.js +0 -130
  24. package/dist/code/audit.js.map +0 -1
  25. package/dist/code/linting.d.ts +0 -10
  26. package/dist/code/linting.d.ts.map +0 -1
  27. package/dist/code/linting.js +0 -233
  28. package/dist/code/linting.js.map +0 -1
  29. package/dist/code/types.d.ts +0 -6
  30. package/dist/code/types.d.ts.map +0 -1
  31. package/dist/code/types.js +0 -132
  32. package/dist/code/types.js.map +0 -1
  33. package/dist/src/cli.d.ts +0 -3
  34. package/dist/src/cli.d.ts.map +0 -1
  35. package/dist/src/cli.js +0 -116
  36. package/dist/src/cli.js.map +0 -1
  37. package/dist/src/code/index.d.ts +0 -13
  38. package/dist/src/code/index.d.ts.map +0 -1
  39. package/dist/src/code/index.js +0 -53
  40. package/dist/src/code/index.js.map +0 -1
  41. package/dist/src/code/tools/base.d.ts +0 -52
  42. package/dist/src/code/tools/base.d.ts.map +0 -1
  43. package/dist/src/code/tools/base.js +0 -83
  44. package/dist/src/code/tools/base.js.map +0 -1
  45. package/dist/src/code/tools/eslint.d.ts +0 -15
  46. package/dist/src/code/tools/eslint.d.ts.map +0 -1
  47. package/dist/src/code/tools/eslint.js +0 -79
  48. package/dist/src/code/tools/eslint.js.map +0 -1
  49. package/dist/src/code/tools/index.d.ts +0 -5
  50. package/dist/src/code/tools/index.d.ts.map +0 -1
  51. package/dist/src/code/tools/index.js +0 -5
  52. package/dist/src/code/tools/index.js.map +0 -1
  53. package/dist/src/code/tools/ruff.d.ts +0 -26
  54. package/dist/src/code/tools/ruff.d.ts.map +0 -1
  55. package/dist/src/code/tools/ruff.js +0 -149
  56. package/dist/src/code/tools/ruff.js.map +0 -1
  57. package/dist/src/code/tools/tsc.d.ts +0 -21
  58. package/dist/src/code/tools/tsc.d.ts.map +0 -1
  59. package/dist/src/code/tools/tsc.js +0 -94
  60. package/dist/src/code/tools/tsc.js.map +0 -1
  61. package/dist/src/config/index.d.ts +0 -3
  62. package/dist/src/config/index.d.ts.map +0 -1
  63. package/dist/src/config/index.js +0 -3
  64. package/dist/src/config/index.js.map +0 -1
  65. package/dist/src/config/loader.d.ts +0 -22
  66. package/dist/src/config/loader.d.ts.map +0 -1
  67. package/dist/src/config/loader.js +0 -124
  68. package/dist/src/config/loader.js.map +0 -1
  69. package/dist/src/config/schema.d.ts +0 -503
  70. package/dist/src/config/schema.d.ts.map +0 -1
  71. package/dist/src/config/schema.js +0 -190
  72. package/dist/src/config/schema.js.map +0 -1
  73. package/dist/src/index.d.ts +0 -8
  74. package/dist/src/index.d.ts.map +0 -1
  75. package/dist/src/index.js +0 -16
  76. package/dist/src/index.js.map +0 -1
  77. package/dist/src/output/index.d.ts +0 -15
  78. package/dist/src/output/index.d.ts.map +0 -1
  79. package/dist/src/output/index.js +0 -96
  80. package/dist/src/output/index.js.map +0 -1
  81. package/dist/src/types/index.d.ts +0 -96
  82. package/dist/src/types/index.d.ts.map +0 -1
  83. package/dist/src/types/index.js +0 -89
  84. package/dist/src/types/index.js.map +0 -1
  85. package/dist/tests/e2e/e2e.test.d.ts +0 -2
  86. package/dist/tests/e2e/e2e.test.d.ts.map +0 -1
  87. package/dist/tests/e2e/e2e.test.js +0 -398
  88. package/dist/tests/e2e/e2e.test.js.map +0 -1
package/README.md CHANGED
@@ -1,2 +1,158 @@
1
1
  # check-my-toolkit
2
- Monorepo, home of check-my-code, check-my-process and check-my-stack.
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
@@ -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;AAqBlD;;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"}
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"}
@@ -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 (config.code?.linting?.eslint?.enabled) {
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
  /**
@@ -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,KAAK,GAAkB,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,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"}
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"}
@@ -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;IAEnC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA8CpD;;;OAGG;IACH,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,gBAAgB;IAsBxB,OAAO,CAAC,oBAAoB;CAQ7B"}
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"}
@@ -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(Date.now() - startTime);
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(Date.now() - startTime);
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
- return this.fromViolations(violations, Date.now() - startTime);
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(Date.now() - startTime);
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}`)], Date.now() - startTime);
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":"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"}
1
+ {"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../../src/code/tools/tsc.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Config } from "./schema.js";
2
- export interface LoadConfigResult {
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,MAAM,WAAW,gBAAgB;IAC/B,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,CAmB9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,gBAAgB,CA2ChE;AA6CD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzD"}
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"}
@@ -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
- if (fs.existsSync(rootConfig)) {
27
- return rootConfig;
28
- }
29
- return null;
26
+ return fs.existsSync(rootConfig) ? rootConfig : null;
30
27
  }
31
28
  /**
32
- * Load and parse check.toml configuration
29
+ * Resolve and validate config file path
33
30
  */
34
- export function loadConfig(configPath) {
35
- // Find config file if not specified
36
- const resolvedPath = configPath ?? findConfigFile();
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(resolvedPath)) {
41
- throw new ConfigError(`Config file not found: ${resolvedPath}`);
36
+ if (!fs.existsSync(resolved)) {
37
+ throw new ConfigError(`Config file not found: ${resolved}`);
42
38
  }
43
- // Read and parse TOML
44
- let rawConfig;
39
+ return resolved;
40
+ }
41
+ /**
42
+ * Parse TOML file content
43
+ */
44
+ function parseTomlFile(filePath) {
45
45
  try {
46
- const content = fs.readFileSync(resolvedPath, "utf-8");
47
- rawConfig = TOML.parse(content);
46
+ const content = fs.readFileSync(filePath, "utf-8");
47
+ return TOML.parse(content);
48
48
  }
49
49
  catch (error) {
50
- if (error instanceof Error) {
51
- throw new ConfigError(`Failed to parse check.toml: ${error.message}`);
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
- // Validate with Zod
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
- // Merge with defaults
64
- const config = mergeWithDefaults(result.data);
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
- config,
67
- configPath: resolvedPath,
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
- linting: {
77
- eslint: {
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":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}