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.
Files changed (122) hide show
  1. package/README.md +2 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +116 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/code/audit.d.ts +14 -0
  7. package/dist/code/audit.d.ts.map +1 -0
  8. package/dist/code/audit.js +130 -0
  9. package/dist/code/audit.js.map +1 -0
  10. package/dist/code/index.d.ts +13 -0
  11. package/dist/code/index.d.ts.map +1 -0
  12. package/dist/code/index.js +49 -0
  13. package/dist/code/index.js.map +1 -0
  14. package/dist/code/linting.d.ts +10 -0
  15. package/dist/code/linting.d.ts.map +1 -0
  16. package/dist/code/linting.js +233 -0
  17. package/dist/code/linting.js.map +1 -0
  18. package/dist/code/tools/base.d.ts +52 -0
  19. package/dist/code/tools/base.d.ts.map +1 -0
  20. package/dist/code/tools/base.js +83 -0
  21. package/dist/code/tools/base.js.map +1 -0
  22. package/dist/code/tools/eslint.d.ts +15 -0
  23. package/dist/code/tools/eslint.d.ts.map +1 -0
  24. package/dist/code/tools/eslint.js +79 -0
  25. package/dist/code/tools/eslint.js.map +1 -0
  26. package/dist/code/tools/index.d.ts +5 -0
  27. package/dist/code/tools/index.d.ts.map +1 -0
  28. package/dist/code/tools/index.js +5 -0
  29. package/dist/code/tools/index.js.map +1 -0
  30. package/dist/code/tools/ruff.d.ts +26 -0
  31. package/dist/code/tools/ruff.d.ts.map +1 -0
  32. package/dist/code/tools/ruff.js +149 -0
  33. package/dist/code/tools/ruff.js.map +1 -0
  34. package/dist/code/tools/tsc.d.ts +20 -0
  35. package/dist/code/tools/tsc.d.ts.map +1 -0
  36. package/dist/code/tools/tsc.js +90 -0
  37. package/dist/code/tools/tsc.js.map +1 -0
  38. package/dist/code/types.d.ts +6 -0
  39. package/dist/code/types.d.ts.map +1 -0
  40. package/dist/code/types.js +132 -0
  41. package/dist/code/types.js.map +1 -0
  42. package/dist/config/index.d.ts +3 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/config/index.js +3 -0
  45. package/dist/config/index.js.map +1 -0
  46. package/dist/config/loader.d.ts +21 -0
  47. package/dist/config/loader.d.ts.map +1 -0
  48. package/dist/config/loader.js +118 -0
  49. package/dist/config/loader.js.map +1 -0
  50. package/dist/config/schema.d.ts +1217 -0
  51. package/dist/config/schema.d.ts.map +1 -0
  52. package/dist/config/schema.js +190 -0
  53. package/dist/config/schema.js.map +1 -0
  54. package/dist/index.d.ts +8 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +16 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/output/index.d.ts +15 -0
  59. package/dist/output/index.d.ts.map +1 -0
  60. package/dist/output/index.js +98 -0
  61. package/dist/output/index.js.map +1 -0
  62. package/dist/src/cli.d.ts +3 -0
  63. package/dist/src/cli.d.ts.map +1 -0
  64. package/dist/src/cli.js +116 -0
  65. package/dist/src/cli.js.map +1 -0
  66. package/dist/src/code/index.d.ts +13 -0
  67. package/dist/src/code/index.d.ts.map +1 -0
  68. package/dist/src/code/index.js +53 -0
  69. package/dist/src/code/index.js.map +1 -0
  70. package/dist/src/code/tools/base.d.ts +52 -0
  71. package/dist/src/code/tools/base.d.ts.map +1 -0
  72. package/dist/src/code/tools/base.js +83 -0
  73. package/dist/src/code/tools/base.js.map +1 -0
  74. package/dist/src/code/tools/eslint.d.ts +15 -0
  75. package/dist/src/code/tools/eslint.d.ts.map +1 -0
  76. package/dist/src/code/tools/eslint.js +79 -0
  77. package/dist/src/code/tools/eslint.js.map +1 -0
  78. package/dist/src/code/tools/index.d.ts +5 -0
  79. package/dist/src/code/tools/index.d.ts.map +1 -0
  80. package/dist/src/code/tools/index.js +5 -0
  81. package/dist/src/code/tools/index.js.map +1 -0
  82. package/dist/src/code/tools/ruff.d.ts +26 -0
  83. package/dist/src/code/tools/ruff.d.ts.map +1 -0
  84. package/dist/src/code/tools/ruff.js +149 -0
  85. package/dist/src/code/tools/ruff.js.map +1 -0
  86. package/dist/src/code/tools/tsc.d.ts +21 -0
  87. package/dist/src/code/tools/tsc.d.ts.map +1 -0
  88. package/dist/src/code/tools/tsc.js +94 -0
  89. package/dist/src/code/tools/tsc.js.map +1 -0
  90. package/dist/src/config/index.d.ts +3 -0
  91. package/dist/src/config/index.d.ts.map +1 -0
  92. package/dist/src/config/index.js +3 -0
  93. package/dist/src/config/index.js.map +1 -0
  94. package/dist/src/config/loader.d.ts +22 -0
  95. package/dist/src/config/loader.d.ts.map +1 -0
  96. package/dist/src/config/loader.js +124 -0
  97. package/dist/src/config/loader.js.map +1 -0
  98. package/dist/src/config/schema.d.ts +503 -0
  99. package/dist/src/config/schema.d.ts.map +1 -0
  100. package/dist/src/config/schema.js +190 -0
  101. package/dist/src/config/schema.js.map +1 -0
  102. package/dist/src/index.d.ts +8 -0
  103. package/dist/src/index.d.ts.map +1 -0
  104. package/dist/src/index.js +16 -0
  105. package/dist/src/index.js.map +1 -0
  106. package/dist/src/output/index.d.ts +15 -0
  107. package/dist/src/output/index.d.ts.map +1 -0
  108. package/dist/src/output/index.js +96 -0
  109. package/dist/src/output/index.js.map +1 -0
  110. package/dist/src/types/index.d.ts +96 -0
  111. package/dist/src/types/index.d.ts.map +1 -0
  112. package/dist/src/types/index.js +89 -0
  113. package/dist/src/types/index.js.map +1 -0
  114. package/dist/tests/e2e/e2e.test.d.ts +2 -0
  115. package/dist/tests/e2e/e2e.test.d.ts.map +1 -0
  116. package/dist/tests/e2e/e2e.test.js +398 -0
  117. package/dist/tests/e2e/e2e.test.js.map +1 -0
  118. package/dist/types/index.d.ts +96 -0
  119. package/dist/types/index.d.ts.map +1 -0
  120. package/dist/types/index.js +89 -0
  121. package/dist/types/index.js.map +1 -0
  122. package/package.json +57 -0
@@ -0,0 +1,398 @@
1
+ import { execSync } from "node:child_process";
2
+ import { describe, expect, it } from "vitest";
3
+ const testCases = [
4
+ // ============================================================
5
+ // Linting: Violations expected
6
+ // ============================================================
7
+ {
8
+ name: "default project with ESLint and Ruff violations",
9
+ config: "tests/e2e/projects/default/check.toml",
10
+ command: "check",
11
+ expectedExitCode: 1,
12
+ expectedPatterns: ["✗ ESLint:", "✗ Ruff:", "violation(s) found"],
13
+ },
14
+ {
15
+ name: "typescript/default with ESLint violation",
16
+ config: "tests/e2e/projects/typescript/default/check.toml",
17
+ command: "check",
18
+ expectedExitCode: 1,
19
+ expectedPatterns: ["✗ ESLint:", "no-var"],
20
+ },
21
+ {
22
+ name: "typescript/multi-violations with multiple ESLint errors",
23
+ config: "tests/e2e/projects/typescript/multi-violations/check.toml",
24
+ command: "check",
25
+ expectedExitCode: 1,
26
+ expectedPatterns: ["✗ ESLint: 9 violation(s)", "no-var", "prefer-const", "eqeqeq"],
27
+ },
28
+ {
29
+ name: "typescript/nested-dirs finds violations in subdirectories",
30
+ config: "tests/e2e/projects/typescript/nested-dirs/check.toml",
31
+ command: "check",
32
+ expectedExitCode: 1,
33
+ expectedPatterns: ["✗ ESLint: 2 violation(s)", "lib/legacy.ts", "src/utils/helpers.ts"],
34
+ },
35
+ {
36
+ name: "typescript/special-chars handles special filenames",
37
+ config: "tests/e2e/projects/typescript/special-chars/check.toml",
38
+ command: "check",
39
+ expectedExitCode: 1,
40
+ expectedPatterns: ["file-with-dashes.ts", "file.multiple.dots.ts", "file_with_underscores.ts"],
41
+ },
42
+ {
43
+ name: "python/default with Ruff violations",
44
+ config: "tests/e2e/projects/python/default/check.toml",
45
+ command: "check",
46
+ expectedExitCode: 1,
47
+ expectedPatterns: ["✗ Ruff:", "F401", "imported but unused"],
48
+ },
49
+ // ============================================================
50
+ // Linting: Should pass
51
+ // ============================================================
52
+ {
53
+ name: "typescript/clean-project passes all checks",
54
+ config: "tests/e2e/projects/typescript/clean-project/check.toml",
55
+ command: "check",
56
+ expectedExitCode: 0,
57
+ expectedPatterns: ["✓ ESLint: passed", "✓ All checks passed"],
58
+ },
59
+ {
60
+ name: "typescript/without-tsc passes when tsc disabled",
61
+ config: "tests/e2e/projects/typescript/without-tsc/check.toml",
62
+ command: "check",
63
+ expectedExitCode: 0,
64
+ expectedPatterns: ["✓ ESLint: passed"],
65
+ notExpectedPatterns: ["TypeScript"],
66
+ },
67
+ // ============================================================
68
+ // Tools disabled
69
+ // ============================================================
70
+ {
71
+ name: "typescript/with-tools-disabled skips ESLint when disabled",
72
+ config: "tests/e2e/projects/typescript/with-tools-disabled/check.toml",
73
+ command: "check",
74
+ expectedExitCode: 0,
75
+ expectedPatterns: ["○ CODE", "✓ All checks passed"],
76
+ notExpectedPatterns: ["ESLint"],
77
+ },
78
+ {
79
+ name: "python/with-tools-disabled skips Ruff when disabled",
80
+ config: "tests/e2e/projects/python/with-tools-disabled/check.toml",
81
+ command: "check",
82
+ expectedExitCode: 0,
83
+ expectedPatterns: ["○ CODE", "✓ All checks passed"],
84
+ notExpectedPatterns: ["Ruff"],
85
+ },
86
+ {
87
+ name: "mixed-extensions with both linters disabled",
88
+ config: "tests/e2e/projects/mixed-extensions/check.toml",
89
+ command: "check",
90
+ expectedExitCode: 0,
91
+ expectedPatterns: ["○ CODE"],
92
+ },
93
+ // ============================================================
94
+ // TypeScript type checking
95
+ // ============================================================
96
+ {
97
+ name: "typescript/with-tsc-enabled catches type errors",
98
+ config: "tests/e2e/projects/typescript/with-tsc-enabled/check.toml",
99
+ command: "check",
100
+ expectedExitCode: 1,
101
+ expectedPatterns: ["✗ TypeScript:", "TS2345"],
102
+ },
103
+ // ============================================================
104
+ // Empty/missing configs
105
+ // ============================================================
106
+ {
107
+ name: "typescript/empty-project skips when no ESLint config",
108
+ config: "tests/e2e/projects/typescript/empty-project/check.toml",
109
+ command: "check",
110
+ expectedExitCode: 0,
111
+ expectedPatterns: ["skipped - No ESLint config found"],
112
+ },
113
+ {
114
+ name: "config-errors/missing-name handles missing project name",
115
+ config: "tests/e2e/projects/config-errors/missing-name/check.toml",
116
+ command: "check",
117
+ expectedExitCode: 0,
118
+ expectedPatterns: ["✓ All checks passed"],
119
+ },
120
+ // ============================================================
121
+ // Config errors
122
+ // ============================================================
123
+ {
124
+ name: "config-errors/invalid-toml rejects invalid TOML",
125
+ config: "tests/e2e/projects/config-errors/invalid-toml/check.toml",
126
+ command: "validate",
127
+ expectedExitCode: 2,
128
+ expectedPatterns: ["✗ Invalid:", "Failed to parse"],
129
+ },
130
+ {
131
+ name: "config-errors/broken-eslint reports ESLint config error",
132
+ config: "tests/e2e/projects/config-errors/broken-eslint/check.toml",
133
+ command: "check",
134
+ expectedExitCode: 1,
135
+ expectedPatterns: ["ESLint error"],
136
+ },
137
+ // ============================================================
138
+ // Audit command
139
+ // ============================================================
140
+ {
141
+ name: "audit finds missing Ruff config",
142
+ config: "tests/e2e/projects/typescript/default/check.toml",
143
+ command: "audit",
144
+ expectedExitCode: 1,
145
+ expectedPatterns: ["✗ Ruff Config:", "Ruff config not found"],
146
+ },
147
+ {
148
+ name: "audit passes when ESLint config exists",
149
+ config: "tests/e2e/projects/audit-warnings/eslint-mismatch/check.toml",
150
+ command: "audit",
151
+ expectedExitCode: 0,
152
+ expectedPatterns: ["✓ ESLint Config: passed"],
153
+ },
154
+ // ============================================================
155
+ // Validate command
156
+ // ============================================================
157
+ {
158
+ name: "validate accepts valid config",
159
+ config: "tests/e2e/projects/typescript/clean-project/check.toml",
160
+ command: "validate",
161
+ expectedExitCode: 0,
162
+ expectedPatterns: ["✓ Valid:"],
163
+ },
164
+ // ============================================================
165
+ // Complexity limits (not implemented yet - should skip)
166
+ // ============================================================
167
+ {
168
+ name: "limits-file-lines skips (not implemented)",
169
+ config: "tests/e2e/projects/limits-file-lines/check.toml",
170
+ command: "check",
171
+ expectedExitCode: 0,
172
+ expectedPatterns: ["○ CODE"],
173
+ },
174
+ {
175
+ name: "limits-function-lines skips (not implemented)",
176
+ config: "tests/e2e/projects/limits-function-lines/check.toml",
177
+ command: "check",
178
+ expectedExitCode: 0,
179
+ expectedPatterns: ["○ CODE"],
180
+ },
181
+ {
182
+ name: "limits-nesting skips (not implemented)",
183
+ config: "tests/e2e/projects/limits-nesting/check.toml",
184
+ command: "check",
185
+ expectedExitCode: 0,
186
+ expectedPatterns: ["○ CODE"],
187
+ },
188
+ {
189
+ name: "limits-parameters skips (not implemented)",
190
+ config: "tests/e2e/projects/limits-parameters/check.toml",
191
+ command: "check",
192
+ expectedExitCode: 0,
193
+ expectedPatterns: ["○ CODE"],
194
+ },
195
+ {
196
+ name: "limits-pass skips (not implemented)",
197
+ config: "tests/e2e/projects/limits-pass/check.toml",
198
+ command: "check",
199
+ expectedExitCode: 0,
200
+ expectedPatterns: ["○ CODE"],
201
+ },
202
+ {
203
+ name: "limits-skip skips (not implemented)",
204
+ config: "tests/e2e/projects/limits-skip/check.toml",
205
+ command: "check",
206
+ expectedExitCode: 0,
207
+ expectedPatterns: ["○ CODE"],
208
+ },
209
+ // ============================================================
210
+ // Requirements (files check not implemented yet)
211
+ // ============================================================
212
+ {
213
+ name: "requirements-skip with no linters",
214
+ config: "tests/e2e/projects/requirements-skip/check.toml",
215
+ command: "check",
216
+ expectedExitCode: 0,
217
+ expectedPatterns: ["○ CODE"],
218
+ },
219
+ {
220
+ name: "requirements-missing-files with no linters",
221
+ config: "tests/e2e/projects/requirements-missing-files/check.toml",
222
+ command: "check",
223
+ expectedExitCode: 0,
224
+ expectedPatterns: ["○ CODE"],
225
+ },
226
+ {
227
+ name: "requirements-pass with no linters",
228
+ config: "tests/e2e/projects/requirements-pass/check.toml",
229
+ command: "check",
230
+ expectedExitCode: 0,
231
+ expectedPatterns: ["○ CODE"],
232
+ },
233
+ {
234
+ name: "requirements-missing-tools with no linters",
235
+ config: "tests/e2e/projects/requirements-missing-tools/check.toml",
236
+ command: "check",
237
+ expectedExitCode: 0,
238
+ expectedPatterns: ["○ CODE"],
239
+ },
240
+ // ============================================================
241
+ // Additional edge cases
242
+ // ============================================================
243
+ {
244
+ name: "typescript/symlinks handles symlinks",
245
+ config: "tests/e2e/projects/typescript/symlinks/check.toml",
246
+ command: "check",
247
+ expectedExitCode: 1,
248
+ expectedPatterns: ["✗ ESLint:", "actual.ts"],
249
+ },
250
+ {
251
+ name: "typescript/with-ignored-dirs finds violations",
252
+ config: "tests/e2e/projects/typescript/with-ignored-dirs/check.toml",
253
+ command: "check",
254
+ expectedExitCode: 1,
255
+ expectedPatterns: ["✗ ESLint:"],
256
+ },
257
+ {
258
+ name: "typescript/with-files-config runs ESLint",
259
+ config: "tests/e2e/projects/typescript/with-files-config/check.toml",
260
+ command: "check",
261
+ expectedExitCode: 1,
262
+ expectedPatterns: ["✗ ESLint:"],
263
+ },
264
+ // ============================================================
265
+ // JSON output format
266
+ // ============================================================
267
+ {
268
+ name: "check with JSON output format",
269
+ config: "tests/e2e/projects/typescript/default/check.toml",
270
+ command: "check",
271
+ format: "json",
272
+ expectedExitCode: 1,
273
+ expectedPatterns: ['"version":', '"domains":', '"code":', '"violations":'],
274
+ },
275
+ {
276
+ name: "validate with JSON output format - valid",
277
+ config: "tests/e2e/projects/typescript/clean-project/check.toml",
278
+ command: "validate",
279
+ format: "json",
280
+ expectedExitCode: 0,
281
+ expectedPatterns: ['"valid": true', '"configPath":'],
282
+ },
283
+ {
284
+ name: "validate with JSON output format - invalid",
285
+ config: "tests/e2e/projects/config-errors/invalid-toml/check.toml",
286
+ command: "validate",
287
+ format: "json",
288
+ expectedExitCode: 2,
289
+ expectedPatterns: ['"valid": false', '"error":'],
290
+ },
291
+ {
292
+ name: "audit with JSON output format",
293
+ config: "tests/e2e/projects/typescript/clean-project/check.toml",
294
+ command: "audit",
295
+ format: "json",
296
+ expectedExitCode: 0,
297
+ expectedPatterns: ['"version":', '"domains":', '"summary":'],
298
+ },
299
+ // ============================================================
300
+ // Python clean project
301
+ // ============================================================
302
+ {
303
+ name: "python/clean-project passes Ruff checks",
304
+ config: "tests/e2e/projects/python/clean-project/check.toml",
305
+ command: "check",
306
+ expectedExitCode: 0,
307
+ expectedPatterns: ["✓ Ruff: passed", "✓ All checks passed"],
308
+ },
309
+ // ============================================================
310
+ // Mixed TypeScript + Python project
311
+ // ============================================================
312
+ {
313
+ name: "mixed-ts-python catches violations in both languages",
314
+ config: "tests/e2e/projects/mixed-ts-python/check.toml",
315
+ command: "check",
316
+ expectedExitCode: 1,
317
+ expectedPatterns: ["✗ ESLint:", "✗ Ruff:", "no-var", "F401"],
318
+ },
319
+ // ============================================================
320
+ // TypeScript type checking - clean
321
+ // ============================================================
322
+ {
323
+ name: "typescript/tsc-clean passes type checking",
324
+ config: "tests/e2e/projects/typescript/tsc-clean/check.toml",
325
+ command: "check",
326
+ expectedExitCode: 0,
327
+ expectedPatterns: ["✓ TypeScript: passed"],
328
+ },
329
+ // ============================================================
330
+ // Custom ESLint rules
331
+ // ============================================================
332
+ {
333
+ name: "typescript/with-custom-rules catches custom rule violations",
334
+ config: "tests/e2e/projects/typescript/with-custom-rules/check.toml",
335
+ command: "check",
336
+ expectedExitCode: 1,
337
+ expectedPatterns: ["✗ ESLint:", "no-console", "eqeqeq"],
338
+ },
339
+ // ============================================================
340
+ // Ruff with select/ignore
341
+ // ============================================================
342
+ {
343
+ name: "python/with-select-ignore uses select and ignore",
344
+ config: "tests/e2e/projects/python/with-select-ignore/check.toml",
345
+ command: "check",
346
+ expectedExitCode: 1,
347
+ expectedPatterns: ["✗ Ruff:", "F401"],
348
+ notExpectedPatterns: ["E501"],
349
+ },
350
+ // ============================================================
351
+ // Missing config file
352
+ // ============================================================
353
+ {
354
+ name: "config-errors/no-config returns error for missing config",
355
+ config: "tests/e2e/projects/config-errors/no-config/nonexistent.toml",
356
+ command: "check",
357
+ expectedExitCode: 2,
358
+ expectedPatterns: ["Config error:", "not found"],
359
+ },
360
+ ];
361
+ function runCli(command, config, format = "text") {
362
+ const formatArg = format !== "text" ? ` -f ${format}` : "";
363
+ const cmd = command === "validate"
364
+ ? `node dist/cli.js validate -c "${config}"${formatArg}`
365
+ : `node dist/cli.js code ${command} -c "${config}"${formatArg}`;
366
+ try {
367
+ const stdout = execSync(cmd, {
368
+ encoding: "utf-8",
369
+ stdio: ["pipe", "pipe", "pipe"],
370
+ });
371
+ return { stdout, exitCode: 0 };
372
+ }
373
+ catch (error) {
374
+ const execError = error;
375
+ const stdout = (execError.stdout || "") + (execError.stderr || "");
376
+ return { stdout, exitCode: execError.status ?? 1 };
377
+ }
378
+ }
379
+ describe("E2E Tests", () => {
380
+ for (const tc of testCases) {
381
+ it.concurrent(tc.name, async () => {
382
+ const { stdout, exitCode } = runCli(tc.command, tc.config, tc.format);
383
+ // Check exit code
384
+ expect(exitCode, `Expected exit code ${tc.expectedExitCode}, got ${exitCode}\nOutput:\n${stdout}`).toBe(tc.expectedExitCode);
385
+ // Check expected patterns
386
+ for (const pattern of tc.expectedPatterns) {
387
+ expect(stdout, `Expected output to contain "${pattern}"\nOutput:\n${stdout}`).toContain(pattern);
388
+ }
389
+ // Check patterns that should NOT be present
390
+ if (tc.notExpectedPatterns) {
391
+ for (const pattern of tc.notExpectedPatterns) {
392
+ expect(stdout, `Expected output to NOT contain "${pattern}"\nOutput:\n${stdout}`).not.toContain(pattern);
393
+ }
394
+ }
395
+ });
396
+ }
397
+ });
398
+ //# sourceMappingURL=e2e.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.test.js","sourceRoot":"","sources":["../../../tests/e2e/e2e.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Shared types for check-my-toolkit
3
+ */
4
+ /** Severity levels for violations */
5
+ export type Severity = "error" | "warning";
6
+ /** Status for domain results */
7
+ export type DomainStatus = "pass" | "fail" | "skip";
8
+ /** A single violation found by a check */
9
+ export interface Violation {
10
+ rule: string;
11
+ tool: string;
12
+ file?: string;
13
+ line?: number;
14
+ column?: number;
15
+ message: string;
16
+ code?: string;
17
+ severity: Severity;
18
+ }
19
+ /** Result of running a single check */
20
+ export interface CheckResult {
21
+ name: string;
22
+ rule: string;
23
+ passed: boolean;
24
+ violations: Violation[];
25
+ skipped: boolean;
26
+ skipReason?: string;
27
+ duration?: number;
28
+ }
29
+ /** Result of running all checks in a domain */
30
+ export interface DomainResult {
31
+ domain: string;
32
+ status: DomainStatus;
33
+ checks: CheckResult[];
34
+ violationCount: number;
35
+ }
36
+ /** Full result of cm check or cm audit */
37
+ export interface FullResult {
38
+ version: string;
39
+ configPath: string;
40
+ domains: Record<string, DomainResult>;
41
+ summary: {
42
+ totalViolations: number;
43
+ exitCode: number;
44
+ };
45
+ }
46
+ /** Interface for tool runners (ESLint, Ruff, tsc, etc.) */
47
+ export interface IToolRunner {
48
+ /** Display name of the tool */
49
+ readonly name: string;
50
+ /** Rule category (e.g., "code.linting") */
51
+ readonly rule: string;
52
+ /** Tool identifier for violations */
53
+ readonly toolId: string;
54
+ /** Config file patterns to look for */
55
+ readonly configFiles: string[];
56
+ /** Run the tool and return check results */
57
+ run(projectRoot: string): Promise<CheckResult>;
58
+ /** Audit that config exists without running the tool */
59
+ audit(projectRoot: string): Promise<CheckResult>;
60
+ }
61
+ /** Options for creating a violation */
62
+ export interface ViolationOptions {
63
+ rule: string;
64
+ tool: string;
65
+ message: string;
66
+ severity: Severity;
67
+ file?: string;
68
+ line?: number;
69
+ column?: number;
70
+ code?: string;
71
+ }
72
+ /** Builder for creating Violation objects */
73
+ export declare const Violation: {
74
+ create(options: ViolationOptions): Violation;
75
+ error(rule: string, tool: string, message: string, code?: string): Violation;
76
+ warning(rule: string, tool: string, message: string, code?: string): Violation;
77
+ };
78
+ /** Builder for creating CheckResult objects */
79
+ export declare const CheckResult: {
80
+ pass(name: string, rule: string, duration?: number): CheckResult;
81
+ fail(name: string, rule: string, violations: Violation[], duration?: number): CheckResult;
82
+ skip(name: string, rule: string, reason: string, duration?: number): CheckResult;
83
+ fromViolations(name: string, rule: string, violations: Violation[], duration?: number): CheckResult;
84
+ };
85
+ /** Builder for creating DomainResult objects */
86
+ export declare const DomainResult: {
87
+ fromChecks(domain: string, checks: CheckResult[]): DomainResult;
88
+ };
89
+ export declare const ExitCode: {
90
+ readonly SUCCESS: 0;
91
+ readonly VIOLATIONS_FOUND: 1;
92
+ readonly CONFIG_ERROR: 2;
93
+ readonly RUNTIME_ERROR: 3;
94
+ };
95
+ export type ExitCodeType = (typeof ExitCode)[keyof typeof ExitCode];
96
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Shared types for check-my-toolkit
3
+ */
4
+ /** Builder for creating Violation objects */
5
+ export const Violation = {
6
+ create(options) {
7
+ return {
8
+ rule: options.rule,
9
+ tool: options.tool,
10
+ message: options.message,
11
+ severity: options.severity,
12
+ ...(options.file && { file: options.file }),
13
+ ...(options.line && { line: options.line }),
14
+ ...(options.column && { column: options.column }),
15
+ ...(options.code && { code: options.code }),
16
+ };
17
+ },
18
+ error(rule, tool, message, code) {
19
+ return { rule, tool, message, severity: "error", code };
20
+ },
21
+ warning(rule, tool, message, code) {
22
+ return { rule, tool, message, severity: "warning", code };
23
+ },
24
+ };
25
+ /** Builder for creating CheckResult objects */
26
+ export const CheckResult = {
27
+ pass(name, rule, duration) {
28
+ return {
29
+ name,
30
+ rule,
31
+ passed: true,
32
+ violations: [],
33
+ skipped: false,
34
+ duration,
35
+ };
36
+ },
37
+ fail(name, rule, violations, duration) {
38
+ return {
39
+ name,
40
+ rule,
41
+ passed: false,
42
+ violations,
43
+ skipped: false,
44
+ duration,
45
+ };
46
+ },
47
+ skip(name, rule, reason, duration) {
48
+ return {
49
+ name,
50
+ rule,
51
+ passed: true,
52
+ violations: [],
53
+ skipped: true,
54
+ skipReason: reason,
55
+ duration,
56
+ };
57
+ },
58
+ fromViolations(name, rule, violations, duration) {
59
+ return violations.length === 0
60
+ ? CheckResult.pass(name, rule, duration)
61
+ : CheckResult.fail(name, rule, violations, duration);
62
+ },
63
+ };
64
+ /** Builder for creating DomainResult objects */
65
+ export const DomainResult = {
66
+ fromChecks(domain, checks) {
67
+ const violationCount = checks.reduce((sum, check) => sum + check.violations.length, 0);
68
+ const allPassed = checks.every((check) => check.passed || check.skipped);
69
+ const allSkipped = checks.length === 0 || checks.every((check) => check.skipped);
70
+ let status = "fail";
71
+ if (allSkipped) {
72
+ status = "skip";
73
+ }
74
+ else if (allPassed) {
75
+ status = "pass";
76
+ }
77
+ return { domain, status, checks, violationCount };
78
+ },
79
+ };
80
+ // =============================================================================
81
+ // Exit Codes
82
+ // =============================================================================
83
+ export const ExitCode = {
84
+ SUCCESS: 0,
85
+ VIOLATIONS_FOUND: 1,
86
+ CONFIG_ERROR: 2,
87
+ RUNTIME_ERROR: 3,
88
+ };
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "check-my-toolkit",
3
+ "version": "0.1.0",
4
+ "description": "Unified project health checks - code, process, and stack",
5
+ "type": "module",
6
+ "bin": {
7
+ "cm": "./dist/cli.js"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "dev": "tsc --watch",
23
+ "start": "node dist/cli.js",
24
+ "test": "vitest",
25
+ "test:coverage": "vitest run --coverage",
26
+ "lint": "eslint .",
27
+ "lint:fix": "eslint . --fix",
28
+ "knip": "knip"
29
+ },
30
+ "keywords": [
31
+ "linting",
32
+ "code-quality",
33
+ "process",
34
+ "ci",
35
+ "cli"
36
+ ],
37
+ "author": "",
38
+ "license": "MIT",
39
+ "devDependencies": {
40
+ "@eslint/js": "^9.39.2",
41
+ "@types/node": "^22.10.2",
42
+ "@vitest/coverage-v8": "^2.1.9",
43
+ "eslint": "^9.39.2",
44
+ "eslint-plugin-simple-import-sort": "^12.1.1",
45
+ "globals": "^16.5.0",
46
+ "knip": "^5.76.3",
47
+ "typescript": "^5.7.2",
48
+ "typescript-eslint": "^8.50.0",
49
+ "vitest": "^2.1.8"
50
+ },
51
+ "dependencies": {
52
+ "@iarna/toml": "^2.2.5",
53
+ "commander": "^13.0.0",
54
+ "execa": "^9.6.1",
55
+ "zod": "^3.24.1"
56
+ }
57
+ }