@opensip-tools/fitness 1.0.4

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 (461) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/.turbo/turbo-typecheck.log +4 -0
  3. package/LICENSE +21 -0
  4. package/dist/__tests__/gate.test.d.ts +13 -0
  5. package/dist/__tests__/gate.test.d.ts.map +1 -0
  6. package/dist/__tests__/gate.test.js +422 -0
  7. package/dist/__tests__/gate.test.js.map +1 -0
  8. package/dist/__tests__/sarif.test.d.ts +2 -0
  9. package/dist/__tests__/sarif.test.d.ts.map +1 -0
  10. package/dist/__tests__/sarif.test.js +169 -0
  11. package/dist/__tests__/sarif.test.js.map +1 -0
  12. package/dist/cli/dashboard.d.ts +6 -0
  13. package/dist/cli/dashboard.d.ts.map +1 -0
  14. package/dist/cli/dashboard.js +77 -0
  15. package/dist/cli/dashboard.js.map +1 -0
  16. package/dist/cli/fit.d.ts +37 -0
  17. package/dist/cli/fit.d.ts.map +1 -0
  18. package/dist/cli/fit.js +539 -0
  19. package/dist/cli/fit.js.map +1 -0
  20. package/dist/cli/list-checks.d.ts +6 -0
  21. package/dist/cli/list-checks.d.ts.map +1 -0
  22. package/dist/cli/list-checks.js +23 -0
  23. package/dist/cli/list-checks.js.map +1 -0
  24. package/dist/cli/list-recipes.d.ts +6 -0
  25. package/dist/cli/list-recipes.d.ts.map +1 -0
  26. package/dist/cli/list-recipes.js +31 -0
  27. package/dist/cli/list-recipes.js.map +1 -0
  28. package/dist/framework/__tests__/ast-utilities.test.d.ts +2 -0
  29. package/dist/framework/__tests__/ast-utilities.test.d.ts.map +1 -0
  30. package/dist/framework/__tests__/ast-utilities.test.js +153 -0
  31. package/dist/framework/__tests__/ast-utilities.test.js.map +1 -0
  32. package/dist/framework/__tests__/check-config.test.d.ts +2 -0
  33. package/dist/framework/__tests__/check-config.test.d.ts.map +1 -0
  34. package/dist/framework/__tests__/check-config.test.js +56 -0
  35. package/dist/framework/__tests__/check-config.test.js.map +1 -0
  36. package/dist/framework/__tests__/command-executor.test.d.ts +2 -0
  37. package/dist/framework/__tests__/command-executor.test.d.ts.map +1 -0
  38. package/dist/framework/__tests__/command-executor.test.js +71 -0
  39. package/dist/framework/__tests__/command-executor.test.js.map +1 -0
  40. package/dist/framework/__tests__/content-filter-dispatch.test.d.ts +2 -0
  41. package/dist/framework/__tests__/content-filter-dispatch.test.d.ts.map +1 -0
  42. package/dist/framework/__tests__/content-filter-dispatch.test.js +104 -0
  43. package/dist/framework/__tests__/content-filter-dispatch.test.js.map +1 -0
  44. package/dist/framework/__tests__/content-filter.test.d.ts +2 -0
  45. package/dist/framework/__tests__/content-filter.test.d.ts.map +1 -0
  46. package/dist/framework/__tests__/content-filter.test.js +126 -0
  47. package/dist/framework/__tests__/content-filter.test.js.map +1 -0
  48. package/dist/framework/__tests__/define-check.test.d.ts +2 -0
  49. package/dist/framework/__tests__/define-check.test.d.ts.map +1 -0
  50. package/dist/framework/__tests__/define-check.test.js +155 -0
  51. package/dist/framework/__tests__/define-check.test.js.map +1 -0
  52. package/dist/framework/__tests__/directive-inventory.test.d.ts +2 -0
  53. package/dist/framework/__tests__/directive-inventory.test.d.ts.map +1 -0
  54. package/dist/framework/__tests__/directive-inventory.test.js +44 -0
  55. package/dist/framework/__tests__/directive-inventory.test.js.map +1 -0
  56. package/dist/framework/__tests__/execution-context.test.d.ts +2 -0
  57. package/dist/framework/__tests__/execution-context.test.d.ts.map +1 -0
  58. package/dist/framework/__tests__/execution-context.test.js +62 -0
  59. package/dist/framework/__tests__/execution-context.test.js.map +1 -0
  60. package/dist/framework/__tests__/file-accessor.test.d.ts +2 -0
  61. package/dist/framework/__tests__/file-accessor.test.d.ts.map +1 -0
  62. package/dist/framework/__tests__/file-accessor.test.js +106 -0
  63. package/dist/framework/__tests__/file-accessor.test.js.map +1 -0
  64. package/dist/framework/__tests__/file-cache.test.d.ts +2 -0
  65. package/dist/framework/__tests__/file-cache.test.d.ts.map +1 -0
  66. package/dist/framework/__tests__/file-cache.test.js +122 -0
  67. package/dist/framework/__tests__/file-cache.test.js.map +1 -0
  68. package/dist/framework/__tests__/import-graph.test.d.ts +15 -0
  69. package/dist/framework/__tests__/import-graph.test.d.ts.map +1 -0
  70. package/dist/framework/__tests__/import-graph.test.js +164 -0
  71. package/dist/framework/__tests__/import-graph.test.js.map +1 -0
  72. package/dist/framework/__tests__/path-matcher.test.d.ts +2 -0
  73. package/dist/framework/__tests__/path-matcher.test.d.ts.map +1 -0
  74. package/dist/framework/__tests__/path-matcher.test.js +113 -0
  75. package/dist/framework/__tests__/path-matcher.test.js.map +1 -0
  76. package/dist/framework/__tests__/register-helpers.test.d.ts +2 -0
  77. package/dist/framework/__tests__/register-helpers.test.d.ts.map +1 -0
  78. package/dist/framework/__tests__/register-helpers.test.js +42 -0
  79. package/dist/framework/__tests__/register-helpers.test.js.map +1 -0
  80. package/dist/framework/__tests__/registry.test.d.ts +2 -0
  81. package/dist/framework/__tests__/registry.test.d.ts.map +1 -0
  82. package/dist/framework/__tests__/registry.test.js +208 -0
  83. package/dist/framework/__tests__/registry.test.js.map +1 -0
  84. package/dist/framework/__tests__/result-builder.test.d.ts +2 -0
  85. package/dist/framework/__tests__/result-builder.test.d.ts.map +1 -0
  86. package/dist/framework/__tests__/result-builder.test.js +153 -0
  87. package/dist/framework/__tests__/result-builder.test.js.map +1 -0
  88. package/dist/framework/__tests__/scope-resolver.test.d.ts +2 -0
  89. package/dist/framework/__tests__/scope-resolver.test.d.ts.map +1 -0
  90. package/dist/framework/__tests__/scope-resolver.test.js +140 -0
  91. package/dist/framework/__tests__/scope-resolver.test.js.map +1 -0
  92. package/dist/framework/__tests__/severity-mapping.test.d.ts +2 -0
  93. package/dist/framework/__tests__/severity-mapping.test.d.ts.map +1 -0
  94. package/dist/framework/__tests__/severity-mapping.test.js +42 -0
  95. package/dist/framework/__tests__/severity-mapping.test.js.map +1 -0
  96. package/dist/framework/__tests__/strip-literals.test.d.ts +2 -0
  97. package/dist/framework/__tests__/strip-literals.test.d.ts.map +1 -0
  98. package/dist/framework/__tests__/strip-literals.test.js +87 -0
  99. package/dist/framework/__tests__/strip-literals.test.js.map +1 -0
  100. package/dist/framework/abortable-exec.d.ts +34 -0
  101. package/dist/framework/abortable-exec.d.ts.map +1 -0
  102. package/dist/framework/abortable-exec.js +136 -0
  103. package/dist/framework/abortable-exec.js.map +1 -0
  104. package/dist/framework/ast-utilities.d.ts +41 -0
  105. package/dist/framework/ast-utilities.d.ts.map +1 -0
  106. package/dist/framework/ast-utilities.js +106 -0
  107. package/dist/framework/ast-utilities.js.map +1 -0
  108. package/dist/framework/check-config.d.ts +171 -0
  109. package/dist/framework/check-config.d.ts.map +1 -0
  110. package/dist/framework/check-config.js +114 -0
  111. package/dist/framework/check-config.js.map +1 -0
  112. package/dist/framework/check-types.d.ts +57 -0
  113. package/dist/framework/check-types.d.ts.map +1 -0
  114. package/dist/framework/check-types.js +35 -0
  115. package/dist/framework/check-types.js.map +1 -0
  116. package/dist/framework/command-executor.d.ts +25 -0
  117. package/dist/framework/command-executor.d.ts.map +1 -0
  118. package/dist/framework/command-executor.js +63 -0
  119. package/dist/framework/command-executor.js.map +1 -0
  120. package/dist/framework/constants.d.ts +9 -0
  121. package/dist/framework/constants.d.ts.map +1 -0
  122. package/dist/framework/constants.js +16 -0
  123. package/dist/framework/constants.js.map +1 -0
  124. package/dist/framework/content-filter.d.ts +33 -0
  125. package/dist/framework/content-filter.d.ts.map +1 -0
  126. package/dist/framework/content-filter.js +236 -0
  127. package/dist/framework/content-filter.js.map +1 -0
  128. package/dist/framework/define-check.d.ts +38 -0
  129. package/dist/framework/define-check.d.ts.map +1 -0
  130. package/dist/framework/define-check.js +252 -0
  131. package/dist/framework/define-check.js.map +1 -0
  132. package/dist/framework/directive-inventory.d.ts +34 -0
  133. package/dist/framework/directive-inventory.d.ts.map +1 -0
  134. package/dist/framework/directive-inventory.js +77 -0
  135. package/dist/framework/directive-inventory.js.map +1 -0
  136. package/dist/framework/directive-parsing.d.ts +20 -0
  137. package/dist/framework/directive-parsing.d.ts.map +1 -0
  138. package/dist/framework/directive-parsing.js +121 -0
  139. package/dist/framework/directive-parsing.js.map +1 -0
  140. package/dist/framework/execution-context.d.ts +95 -0
  141. package/dist/framework/execution-context.d.ts.map +1 -0
  142. package/dist/framework/execution-context.js +122 -0
  143. package/dist/framework/execution-context.js.map +1 -0
  144. package/dist/framework/file-accessor.d.ts +20 -0
  145. package/dist/framework/file-accessor.d.ts.map +1 -0
  146. package/dist/framework/file-accessor.js +122 -0
  147. package/dist/framework/file-accessor.js.map +1 -0
  148. package/dist/framework/file-cache.d.ts +70 -0
  149. package/dist/framework/file-cache.d.ts.map +1 -0
  150. package/dist/framework/file-cache.js +178 -0
  151. package/dist/framework/file-cache.js.map +1 -0
  152. package/dist/framework/file-type-filter.d.ts +11 -0
  153. package/dist/framework/file-type-filter.d.ts.map +1 -0
  154. package/dist/framework/file-type-filter.js +21 -0
  155. package/dist/framework/file-type-filter.js.map +1 -0
  156. package/dist/framework/ignore-processing.d.ts +22 -0
  157. package/dist/framework/ignore-processing.d.ts.map +1 -0
  158. package/dist/framework/ignore-processing.js +241 -0
  159. package/dist/framework/ignore-processing.js.map +1 -0
  160. package/dist/framework/import-graph.d.ts +51 -0
  161. package/dist/framework/import-graph.d.ts.map +1 -0
  162. package/dist/framework/import-graph.js +216 -0
  163. package/dist/framework/import-graph.js.map +1 -0
  164. package/dist/framework/memory-profiler.d.ts +53 -0
  165. package/dist/framework/memory-profiler.d.ts.map +1 -0
  166. package/dist/framework/memory-profiler.js +92 -0
  167. package/dist/framework/memory-profiler.js.map +1 -0
  168. package/dist/framework/parse-cache.d.ts +23 -0
  169. package/dist/framework/parse-cache.d.ts.map +1 -0
  170. package/dist/framework/parse-cache.js +37 -0
  171. package/dist/framework/parse-cache.js.map +1 -0
  172. package/dist/framework/path-matcher.d.ts +86 -0
  173. package/dist/framework/path-matcher.d.ts.map +1 -0
  174. package/dist/framework/path-matcher.js +138 -0
  175. package/dist/framework/path-matcher.js.map +1 -0
  176. package/dist/framework/register-helpers.d.ts +10 -0
  177. package/dist/framework/register-helpers.d.ts.map +1 -0
  178. package/dist/framework/register-helpers.js +17 -0
  179. package/dist/framework/register-helpers.js.map +1 -0
  180. package/dist/framework/registry.d.ts +41 -0
  181. package/dist/framework/registry.d.ts.map +1 -0
  182. package/dist/framework/registry.js +103 -0
  183. package/dist/framework/registry.js.map +1 -0
  184. package/dist/framework/result-builder.d.ts +74 -0
  185. package/dist/framework/result-builder.d.ts.map +1 -0
  186. package/dist/framework/result-builder.js +154 -0
  187. package/dist/framework/result-builder.js.map +1 -0
  188. package/dist/framework/scope-resolver.d.ts +23 -0
  189. package/dist/framework/scope-resolver.d.ts.map +1 -0
  190. package/dist/framework/scope-resolver.js +201 -0
  191. package/dist/framework/scope-resolver.js.map +1 -0
  192. package/dist/framework/severity-mapping.d.ts +13 -0
  193. package/dist/framework/severity-mapping.d.ts.map +1 -0
  194. package/dist/framework/severity-mapping.js +51 -0
  195. package/dist/framework/severity-mapping.js.map +1 -0
  196. package/dist/framework/strip-literals.d.ts +48 -0
  197. package/dist/framework/strip-literals.d.ts.map +1 -0
  198. package/dist/framework/strip-literals.js +188 -0
  199. package/dist/framework/strip-literals.js.map +1 -0
  200. package/dist/gate.d.ts +74 -0
  201. package/dist/gate.d.ts.map +1 -0
  202. package/dist/gate.js +257 -0
  203. package/dist/gate.js.map +1 -0
  204. package/dist/index.d.ts +47 -0
  205. package/dist/index.d.ts.map +1 -0
  206. package/dist/index.js +51 -0
  207. package/dist/index.js.map +1 -0
  208. package/dist/plugins/__tests__/check-package-discovery.test.d.ts +2 -0
  209. package/dist/plugins/__tests__/check-package-discovery.test.d.ts.map +1 -0
  210. package/dist/plugins/__tests__/check-package-discovery.test.js +170 -0
  211. package/dist/plugins/__tests__/check-package-discovery.test.js.map +1 -0
  212. package/dist/plugins/__tests__/lang-domain.test.d.ts +2 -0
  213. package/dist/plugins/__tests__/lang-domain.test.d.ts.map +1 -0
  214. package/dist/plugins/__tests__/lang-domain.test.js +171 -0
  215. package/dist/plugins/__tests__/lang-domain.test.js.map +1 -0
  216. package/dist/plugins/__tests__/loader.test.d.ts +2 -0
  217. package/dist/plugins/__tests__/loader.test.d.ts.map +1 -0
  218. package/dist/plugins/__tests__/loader.test.js +194 -0
  219. package/dist/plugins/__tests__/loader.test.js.map +1 -0
  220. package/dist/plugins/check-package-discovery.d.ts +73 -0
  221. package/dist/plugins/check-package-discovery.d.ts.map +1 -0
  222. package/dist/plugins/check-package-discovery.js +212 -0
  223. package/dist/plugins/check-package-discovery.js.map +1 -0
  224. package/dist/plugins/loader.d.ts +31 -0
  225. package/dist/plugins/loader.d.ts.map +1 -0
  226. package/dist/plugins/loader.js +290 -0
  227. package/dist/plugins/loader.js.map +1 -0
  228. package/dist/plugins/types.d.ts +23 -0
  229. package/dist/plugins/types.d.ts.map +1 -0
  230. package/dist/plugins/types.js +9 -0
  231. package/dist/plugins/types.js.map +1 -0
  232. package/dist/recipes/__tests__/built-in-recipes.test.d.ts +2 -0
  233. package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
  234. package/dist/recipes/__tests__/built-in-recipes.test.js +93 -0
  235. package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
  236. package/dist/recipes/__tests__/check-config.test.d.ts +5 -0
  237. package/dist/recipes/__tests__/check-config.test.d.ts.map +1 -0
  238. package/dist/recipes/__tests__/check-config.test.js +37 -0
  239. package/dist/recipes/__tests__/check-config.test.js.map +1 -0
  240. package/dist/recipes/__tests__/check-resolution.test.d.ts +2 -0
  241. package/dist/recipes/__tests__/check-resolution.test.d.ts.map +1 -0
  242. package/dist/recipes/__tests__/check-resolution.test.js +135 -0
  243. package/dist/recipes/__tests__/check-resolution.test.js.map +1 -0
  244. package/dist/recipes/__tests__/registry.test.d.ts +2 -0
  245. package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
  246. package/dist/recipes/__tests__/registry.test.js +97 -0
  247. package/dist/recipes/__tests__/registry.test.js.map +1 -0
  248. package/dist/recipes/__tests__/retry.test.d.ts +2 -0
  249. package/dist/recipes/__tests__/retry.test.d.ts.map +1 -0
  250. package/dist/recipes/__tests__/retry.test.js +75 -0
  251. package/dist/recipes/__tests__/retry.test.js.map +1 -0
  252. package/dist/recipes/__tests__/service.test.d.ts +11 -0
  253. package/dist/recipes/__tests__/service.test.d.ts.map +1 -0
  254. package/dist/recipes/__tests__/service.test.js +482 -0
  255. package/dist/recipes/__tests__/service.test.js.map +1 -0
  256. package/dist/recipes/built-in-recipes.d.ts +14 -0
  257. package/dist/recipes/built-in-recipes.d.ts.map +1 -0
  258. package/dist/recipes/built-in-recipes.js +247 -0
  259. package/dist/recipes/built-in-recipes.js.map +1 -0
  260. package/dist/recipes/check-config.d.ts +40 -0
  261. package/dist/recipes/check-config.d.ts.map +1 -0
  262. package/dist/recipes/check-config.js +61 -0
  263. package/dist/recipes/check-config.js.map +1 -0
  264. package/dist/recipes/check-resolution.d.ts +21 -0
  265. package/dist/recipes/check-resolution.d.ts.map +1 -0
  266. package/dist/recipes/check-resolution.js +121 -0
  267. package/dist/recipes/check-resolution.js.map +1 -0
  268. package/dist/recipes/check-result-processor.d.ts +51 -0
  269. package/dist/recipes/check-result-processor.d.ts.map +1 -0
  270. package/dist/recipes/check-result-processor.js +158 -0
  271. package/dist/recipes/check-result-processor.js.map +1 -0
  272. package/dist/recipes/parallel-execution.d.ts +33 -0
  273. package/dist/recipes/parallel-execution.d.ts.map +1 -0
  274. package/dist/recipes/parallel-execution.js +142 -0
  275. package/dist/recipes/parallel-execution.js.map +1 -0
  276. package/dist/recipes/registry.d.ts +81 -0
  277. package/dist/recipes/registry.d.ts.map +1 -0
  278. package/dist/recipes/registry.js +131 -0
  279. package/dist/recipes/registry.js.map +1 -0
  280. package/dist/recipes/retry.d.ts +25 -0
  281. package/dist/recipes/retry.d.ts.map +1 -0
  282. package/dist/recipes/retry.js +44 -0
  283. package/dist/recipes/retry.js.map +1 -0
  284. package/dist/recipes/sequential-execution.d.ts +10 -0
  285. package/dist/recipes/sequential-execution.d.ts.map +1 -0
  286. package/dist/recipes/sequential-execution.js +122 -0
  287. package/dist/recipes/sequential-execution.js.map +1 -0
  288. package/dist/recipes/service-types.d.ts +84 -0
  289. package/dist/recipes/service-types.d.ts.map +1 -0
  290. package/dist/recipes/service-types.js +8 -0
  291. package/dist/recipes/service-types.js.map +1 -0
  292. package/dist/recipes/service.d.ts +71 -0
  293. package/dist/recipes/service.d.ts.map +1 -0
  294. package/dist/recipes/service.js +331 -0
  295. package/dist/recipes/service.js.map +1 -0
  296. package/dist/recipes/types.d.ts +154 -0
  297. package/dist/recipes/types.d.ts.map +1 -0
  298. package/dist/recipes/types.js +54 -0
  299. package/dist/recipes/types.js.map +1 -0
  300. package/dist/sarif.d.ts +34 -0
  301. package/dist/sarif.d.ts.map +1 -0
  302. package/dist/sarif.js +192 -0
  303. package/dist/sarif.js.map +1 -0
  304. package/dist/signalers/__tests__/loader.test.d.ts +2 -0
  305. package/dist/signalers/__tests__/loader.test.d.ts.map +1 -0
  306. package/dist/signalers/__tests__/loader.test.js +74 -0
  307. package/dist/signalers/__tests__/loader.test.js.map +1 -0
  308. package/dist/signalers/index.d.ts +8 -0
  309. package/dist/signalers/index.d.ts.map +1 -0
  310. package/dist/signalers/index.js +9 -0
  311. package/dist/signalers/index.js.map +1 -0
  312. package/dist/signalers/loader.d.ts +24 -0
  313. package/dist/signalers/loader.d.ts.map +1 -0
  314. package/dist/signalers/loader.js +108 -0
  315. package/dist/signalers/loader.js.map +1 -0
  316. package/dist/signalers/schema.d.ts +288 -0
  317. package/dist/signalers/schema.d.ts.map +1 -0
  318. package/dist/signalers/schema.js +99 -0
  319. package/dist/signalers/schema.js.map +1 -0
  320. package/dist/signalers/types.d.ts +13 -0
  321. package/dist/signalers/types.d.ts.map +1 -0
  322. package/dist/signalers/types.js +5 -0
  323. package/dist/signalers/types.js.map +1 -0
  324. package/dist/targets/__tests__/loader.test.d.ts +2 -0
  325. package/dist/targets/__tests__/loader.test.d.ts.map +1 -0
  326. package/dist/targets/__tests__/loader.test.js +127 -0
  327. package/dist/targets/__tests__/loader.test.js.map +1 -0
  328. package/dist/targets/__tests__/resolver.test.d.ts +2 -0
  329. package/dist/targets/__tests__/resolver.test.d.ts.map +1 -0
  330. package/dist/targets/__tests__/resolver.test.js +54 -0
  331. package/dist/targets/__tests__/resolver.test.js.map +1 -0
  332. package/dist/targets/__tests__/target-registry.test.d.ts +2 -0
  333. package/dist/targets/__tests__/target-registry.test.d.ts.map +1 -0
  334. package/dist/targets/__tests__/target-registry.test.js +89 -0
  335. package/dist/targets/__tests__/target-registry.test.js.map +1 -0
  336. package/dist/targets/index.d.ts +10 -0
  337. package/dist/targets/index.d.ts.map +1 -0
  338. package/dist/targets/index.js +12 -0
  339. package/dist/targets/index.js.map +1 -0
  340. package/dist/targets/loader.d.ts +19 -0
  341. package/dist/targets/loader.d.ts.map +1 -0
  342. package/dist/targets/loader.js +159 -0
  343. package/dist/targets/loader.js.map +1 -0
  344. package/dist/targets/resolver.d.ts +19 -0
  345. package/dist/targets/resolver.d.ts.map +1 -0
  346. package/dist/targets/resolver.js +37 -0
  347. package/dist/targets/resolver.js.map +1 -0
  348. package/dist/targets/target-registry.d.ts +61 -0
  349. package/dist/targets/target-registry.d.ts.map +1 -0
  350. package/dist/targets/target-registry.js +93 -0
  351. package/dist/targets/target-registry.js.map +1 -0
  352. package/dist/targets/types.d.ts +85 -0
  353. package/dist/targets/types.d.ts.map +1 -0
  354. package/dist/targets/types.js +5 -0
  355. package/dist/targets/types.js.map +1 -0
  356. package/dist/tool.d.ts +17 -0
  357. package/dist/tool.d.ts.map +1 -0
  358. package/dist/tool.js +282 -0
  359. package/dist/tool.js.map +1 -0
  360. package/dist/types/findings.d.ts +117 -0
  361. package/dist/types/findings.d.ts.map +1 -0
  362. package/dist/types/findings.js +93 -0
  363. package/dist/types/findings.js.map +1 -0
  364. package/dist/types/severity.d.ts +15 -0
  365. package/dist/types/severity.d.ts.map +1 -0
  366. package/dist/types/severity.js +36 -0
  367. package/dist/types/severity.js.map +1 -0
  368. package/package.json +45 -0
  369. package/src/__tests__/gate.test.ts +537 -0
  370. package/src/__tests__/sarif.test.ts +201 -0
  371. package/src/cli/dashboard.ts +93 -0
  372. package/src/cli/fit.ts +612 -0
  373. package/src/cli/list-checks.ts +32 -0
  374. package/src/cli/list-recipes.ts +38 -0
  375. package/src/framework/__tests__/ast-utilities.test.ts +157 -0
  376. package/src/framework/__tests__/check-config.test.ts +65 -0
  377. package/src/framework/__tests__/command-executor.test.ts +79 -0
  378. package/src/framework/__tests__/content-filter-dispatch.test.ts +132 -0
  379. package/src/framework/__tests__/content-filter.test.ts +136 -0
  380. package/src/framework/__tests__/define-check.test.ts +180 -0
  381. package/src/framework/__tests__/directive-inventory.test.ts +53 -0
  382. package/src/framework/__tests__/execution-context.test.ts +80 -0
  383. package/src/framework/__tests__/file-accessor.test.ts +121 -0
  384. package/src/framework/__tests__/file-cache.test.ts +142 -0
  385. package/src/framework/__tests__/import-graph.test.ts +282 -0
  386. package/src/framework/__tests__/path-matcher.test.ts +130 -0
  387. package/src/framework/__tests__/register-helpers.test.ts +51 -0
  388. package/src/framework/__tests__/registry.test.ts +243 -0
  389. package/src/framework/__tests__/result-builder.test.ts +178 -0
  390. package/src/framework/__tests__/scope-resolver.test.ts +208 -0
  391. package/src/framework/__tests__/severity-mapping.test.ts +50 -0
  392. package/src/framework/__tests__/strip-literals.test.ts +109 -0
  393. package/src/framework/abortable-exec.ts +177 -0
  394. package/src/framework/ast-utilities.ts +112 -0
  395. package/src/framework/check-config.ts +339 -0
  396. package/src/framework/check-types.ts +77 -0
  397. package/src/framework/command-executor.ts +100 -0
  398. package/src/framework/constants.ts +16 -0
  399. package/src/framework/content-filter.ts +288 -0
  400. package/src/framework/define-check.ts +336 -0
  401. package/src/framework/directive-inventory.ts +110 -0
  402. package/src/framework/directive-parsing.ts +152 -0
  403. package/src/framework/execution-context.ts +247 -0
  404. package/src/framework/file-accessor.ts +171 -0
  405. package/src/framework/file-cache.ts +220 -0
  406. package/src/framework/file-type-filter.ts +25 -0
  407. package/src/framework/ignore-processing.ts +350 -0
  408. package/src/framework/import-graph.ts +280 -0
  409. package/src/framework/memory-profiler.ts +145 -0
  410. package/src/framework/parse-cache.ts +38 -0
  411. package/src/framework/path-matcher.ts +191 -0
  412. package/src/framework/register-helpers.ts +20 -0
  413. package/src/framework/registry.ts +125 -0
  414. package/src/framework/result-builder.ts +225 -0
  415. package/src/framework/scope-resolver.ts +262 -0
  416. package/src/framework/severity-mapping.ts +56 -0
  417. package/src/framework/strip-literals.ts +200 -0
  418. package/src/gate.ts +337 -0
  419. package/src/index.ts +110 -0
  420. package/src/plugins/__tests__/check-package-discovery.test.ts +204 -0
  421. package/src/plugins/__tests__/lang-domain.test.ts +198 -0
  422. package/src/plugins/__tests__/loader.test.ts +226 -0
  423. package/src/plugins/check-package-discovery.ts +242 -0
  424. package/src/plugins/loader.ts +327 -0
  425. package/src/plugins/types.ts +25 -0
  426. package/src/recipes/__tests__/built-in-recipes.test.ts +107 -0
  427. package/src/recipes/__tests__/check-config.test.ts +51 -0
  428. package/src/recipes/__tests__/check-resolution.test.ts +185 -0
  429. package/src/recipes/__tests__/registry.test.ts +115 -0
  430. package/src/recipes/__tests__/retry.test.ts +83 -0
  431. package/src/recipes/__tests__/service.test.ts +572 -0
  432. package/src/recipes/built-in-recipes.ts +273 -0
  433. package/src/recipes/check-config.ts +64 -0
  434. package/src/recipes/check-resolution.ts +169 -0
  435. package/src/recipes/check-result-processor.ts +258 -0
  436. package/src/recipes/parallel-execution.ts +220 -0
  437. package/src/recipes/registry.ts +192 -0
  438. package/src/recipes/retry.ts +69 -0
  439. package/src/recipes/sequential-execution.ts +139 -0
  440. package/src/recipes/service-types.ts +105 -0
  441. package/src/recipes/service.ts +400 -0
  442. package/src/recipes/types.ts +247 -0
  443. package/src/sarif.ts +232 -0
  444. package/src/signalers/__tests__/loader.test.ts +99 -0
  445. package/src/signalers/index.ts +9 -0
  446. package/src/signalers/loader.ts +141 -0
  447. package/src/signalers/schema.ts +117 -0
  448. package/src/signalers/types.ts +15 -0
  449. package/src/targets/__tests__/loader.test.ts +170 -0
  450. package/src/targets/__tests__/resolver.test.ts +74 -0
  451. package/src/targets/__tests__/target-registry.test.ts +103 -0
  452. package/src/targets/index.ts +13 -0
  453. package/src/targets/loader.ts +214 -0
  454. package/src/targets/resolver.ts +44 -0
  455. package/src/targets/target-registry.ts +111 -0
  456. package/src/targets/types.ts +89 -0
  457. package/src/tool.ts +302 -0
  458. package/src/types/findings.ts +239 -0
  459. package/src/types/severity.ts +39 -0
  460. package/tsconfig.json +8 -0
  461. package/vitest.config.ts +33 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/targets/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,+BAA+B;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,wCAAwC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC;AAED,oDAAoD;AACpD,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC9B;AAED;;;GAGG;AACH,KAAK,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;AAE1E;;;;;;;;;;GAUG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;;;;;;;OASG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1C,qEAAqE;IACrE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAA;CACjC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @fileoverview Target type definitions for shared targeting
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/targets/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/dist/tool.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * fitnessTool — fitness as a Tool plugin.
3
+ *
4
+ * Owns its full Commander wiring for the `fit`, `dashboard`, `fit-list`,
5
+ * and `fit-recipes` subcommands. The CLI calls register() once at
6
+ * startup and the rest is local: every option-parsing rule, gate-mode
7
+ * dispatch, JSON-vs-Ink rendering decision, and dashboard auto-open
8
+ * lives here, in the package that owns the fitness command surface.
9
+ *
10
+ * The CLI no longer imports `executeFit`, `openDashboard`, etc.
11
+ * directly — it just calls `fitnessTool.register(cli)`. Adding a new
12
+ * subcommand to fitness is a local change; no CLI edit required.
13
+ */
14
+ import type { Tool } from '@opensip-tools/core';
15
+ export declare const fitnessTool: Tool;
16
+ export { setPreLoadHook } from './cli/fit.js';
17
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoBH,OAAO,KAAK,EAAE,IAAI,EAAyC,MAAM,qBAAqB,CAAC;AAyPvF,eAAO,MAAM,WAAW,EAAE,IAezB,CAAC;AAKF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
package/dist/tool.js ADDED
@@ -0,0 +1,282 @@
1
+ /**
2
+ * fitnessTool — fitness as a Tool plugin.
3
+ *
4
+ * Owns its full Commander wiring for the `fit`, `dashboard`, `fit-list`,
5
+ * and `fit-recipes` subcommands. The CLI calls register() once at
6
+ * startup and the rest is local: every option-parsing rule, gate-mode
7
+ * dispatch, JSON-vs-Ink rendering decision, and dashboard auto-open
8
+ * lives here, in the package that owns the fitness command surface.
9
+ *
10
+ * The CLI no longer imports `executeFit`, `openDashboard`, etc.
11
+ * directly — it just calls `fitnessTool.register(cli)`. Adding a new
12
+ * subcommand to fitness is a local change; no CLI edit required.
13
+ */
14
+ import { EXIT_CODES } from '@opensip-tools/contracts';
15
+ import { openDashboard } from './cli/dashboard.js';
16
+ import { executeFit } from './cli/fit.js';
17
+ import { listChecks } from './cli/list-checks.js';
18
+ import { listRecipes } from './cli/list-recipes.js';
19
+ import { saveBaseline, compareToBaseline, renderGateCompareOutput, GateBaselineMissingError, GateBaselineInvalidError, DEFAULT_BASELINE_PATH, } from './gate.js';
20
+ // =============================================================================
21
+ // COMMAND DESCRIPTORS — used by --help listings and conflict detection.
22
+ // =============================================================================
23
+ const FIT = {
24
+ name: 'fit',
25
+ description: 'Run fitness checks',
26
+ };
27
+ const DASHBOARD = {
28
+ name: 'dashboard',
29
+ description: 'Generate the HTML dashboard and open it in your browser',
30
+ };
31
+ const FIT_LIST = {
32
+ name: 'fit-list',
33
+ description: 'List available fitness checks',
34
+ aliases: ['list-checks'],
35
+ };
36
+ const FIT_RECIPES = {
37
+ name: 'fit-recipes',
38
+ description: 'List available fitness recipes',
39
+ aliases: ['list-recipes'],
40
+ };
41
+ // =============================================================================
42
+ // REGISTER — wires Commander subcommands onto the CLI's program.
43
+ // =============================================================================
44
+ function fitOptsToCliArgs(opts) {
45
+ return {
46
+ command: 'fit',
47
+ json: opts.json,
48
+ check: opts.check,
49
+ recipe: opts.recipe,
50
+ cwd: opts.cwd,
51
+ help: false,
52
+ list: opts.list,
53
+ listRecipes: opts.recipes,
54
+ verbose: opts.verbose,
55
+ reportTo: opts.reportTo,
56
+ apiKey: opts.apiKey,
57
+ exclude: opts.exclude,
58
+ findings: opts.findings,
59
+ tags: opts.tags,
60
+ quiet: opts.quiet === true,
61
+ open: opts.open === true,
62
+ config: opts.config,
63
+ gateSave: opts.gateSave === true,
64
+ gateCompare: opts.gateCompare === true,
65
+ baseline: opts.baseline,
66
+ };
67
+ }
68
+ function register(cli) {
69
+ // Cast once — the contract intentionally types `program` loosely so
70
+ // tools aren't pinned to a specific Commander major.
71
+ const program = cli.program;
72
+ // -- fit ------------------------------------------------------------------
73
+ program
74
+ .command(FIT.name)
75
+ .description(FIT.description)
76
+ .option('--recipe <name>', 'Use a named recipe (default, quick-smoke, backend, etc.)')
77
+ .option('--check <slug>', 'Run a single check by slug')
78
+ .option('--tags <tags>', 'Filter checks by tags (comma-separated)')
79
+ .option('--list', 'List available checks', false)
80
+ .option('--recipes', 'List available recipes', false)
81
+ .option('--json', 'Output structured JSON', false)
82
+ .option('-v, --verbose', 'Show finding details inline + findings summary', false)
83
+ .option('--findings', 'Show all findings grouped by check after the run', false)
84
+ .option('--report-to <url>', 'POST findings to a URL (OpenSIP Cloud or compatible)')
85
+ .option('--api-key <key>', 'API key for --report-to authentication')
86
+ .option('--exclude <slug>', 'Exclude check (repeatable)', (val, prev) => [...prev, val], [])
87
+ .option('--cwd <path>', 'Target directory', process.cwd())
88
+ .option('--config <path>', 'Path to opensip-tools.config.yml (overrides package.json pointer and default)')
89
+ .option('-q, --quiet', 'Suppress banner / boxes; print only the pass-fail summary', false)
90
+ .option('--open', 'Launch the HTML dashboard in your browser after the run completes', false)
91
+ .option('--debug', 'Enable debug mode for structured log output', false)
92
+ .option('--gate-save', 'Architecture-gate: save current findings as baseline (mutually exclusive with --gate-compare)', false)
93
+ .option('--gate-compare', 'Architecture-gate: compare current findings against baseline; exit 1 on regression', false)
94
+ .option('--baseline <path>', 'Path to baseline file for --gate-save / --gate-compare (default: opensip-tools/.runtime/baseline.sarif)')
95
+ .action(async (opts) => {
96
+ const args = fitOptsToCliArgs(opts);
97
+ // Architecture gate: --gate-save / --gate-compare. Headless,
98
+ // stdout-only, exit code is the gate decision.
99
+ if (args.gateSave === true || args.gateCompare === true) {
100
+ await runGateMode(args, cli);
101
+ return;
102
+ }
103
+ // --list
104
+ if (args.list) {
105
+ const result = await listChecks(args.cwd);
106
+ if (args.json) {
107
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
108
+ return;
109
+ }
110
+ await cli.render(result);
111
+ return;
112
+ }
113
+ // --recipes
114
+ if (args.listRecipes) {
115
+ const result = await listRecipes(args.cwd);
116
+ if (args.json) {
117
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
118
+ return;
119
+ }
120
+ await cli.render(result);
121
+ return;
122
+ }
123
+ // Main fit execution.
124
+ if (args.json) {
125
+ const fitResult = await executeFit(args);
126
+ if (fitResult.result.type === 'error') {
127
+ cli.setExitCode(fitResult.result.exitCode);
128
+ process.stdout.write(JSON.stringify({ error: fitResult.result.message }, null, 2) + '\n');
129
+ }
130
+ else {
131
+ if (fitResult.result.type === 'fit-done' && fitResult.result.shouldFail) {
132
+ cli.setExitCode(EXIT_CODES.RUNTIME_ERROR);
133
+ }
134
+ process.stdout.write(JSON.stringify(fitResult.output, null, 2) + '\n');
135
+ }
136
+ return;
137
+ }
138
+ // Visual mode — Ink-rendered live results. The CLI supplies the
139
+ // renderer via cli.renderLive() so this file doesn't depend on
140
+ // the CLI package directly.
141
+ await cli.renderLive('fit', args);
142
+ // --open: launch dashboard after the run when conditions allow.
143
+ await cli.maybeOpenDashboard({
144
+ openRequested: Boolean(opts.open),
145
+ jsonOutput: Boolean(args.json),
146
+ cwd: args.cwd,
147
+ });
148
+ });
149
+ // -- dashboard ------------------------------------------------------------
150
+ program
151
+ .command(DASHBOARD.name)
152
+ .description(DASHBOARD.description)
153
+ .option('--cwd <path>', 'Target directory', process.cwd())
154
+ .option('--json', 'Output structured JSON', false)
155
+ .option('--debug', 'Enable debug mode for structured log output', false)
156
+ .action(async (opts) => {
157
+ const result = await openDashboard(opts.cwd);
158
+ if (opts.json) {
159
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
160
+ return;
161
+ }
162
+ await cli.render(result);
163
+ });
164
+ // -- fit-list (alias: list-checks) ----------------------------------------
165
+ const fitListCmd = program
166
+ .command(FIT_LIST.name)
167
+ .description(FIT_LIST.description);
168
+ for (const alias of FIT_LIST.aliases ?? [])
169
+ fitListCmd.alias(alias);
170
+ fitListCmd
171
+ .option('--cwd <path>', 'Target directory', process.cwd())
172
+ .option('--json', 'Output structured JSON', false)
173
+ .action(async (opts) => {
174
+ const result = await listChecks(opts.cwd);
175
+ if (opts.json) {
176
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
177
+ return;
178
+ }
179
+ await cli.render(result);
180
+ });
181
+ // -- fit-recipes (alias: list-recipes) ------------------------------------
182
+ const fitRecipesCmd = program
183
+ .command(FIT_RECIPES.name)
184
+ .description(FIT_RECIPES.description);
185
+ for (const alias of FIT_RECIPES.aliases ?? [])
186
+ fitRecipesCmd.alias(alias);
187
+ fitRecipesCmd
188
+ .option('--cwd <path>', 'Target directory', process.cwd())
189
+ .option('--json', 'Output structured JSON', false)
190
+ .action(async (opts) => {
191
+ const result = await listRecipes(opts.cwd);
192
+ if (opts.json) {
193
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
194
+ return;
195
+ }
196
+ await cli.render(result);
197
+ });
198
+ }
199
+ // =============================================================================
200
+ // GATE MODE — extracted helper used by `fit --gate-save` / `--gate-compare`.
201
+ // =============================================================================
202
+ async function runGateMode(args, cli) {
203
+ if (args.gateSave === true && args.gateCompare === true) {
204
+ cli.logger.warn({
205
+ evt: 'cli.gate.config_error',
206
+ module: 'cli:gate',
207
+ reason: 'mutually-exclusive flags',
208
+ msg: '--gate-save and --gate-compare specified together',
209
+ });
210
+ cli.setExitCode(EXIT_CODES.CONFIGURATION_ERROR);
211
+ process.stderr.write('Error: --gate-save and --gate-compare are mutually exclusive.\n');
212
+ return;
213
+ }
214
+ const baselinePath = args.baseline ?? DEFAULT_BASELINE_PATH;
215
+ const fitResult = await executeFit(args);
216
+ if (fitResult.result.type !== 'fit-done') {
217
+ cli.logger.warn({
218
+ evt: 'cli.gate.fit_failed',
219
+ module: 'cli:gate',
220
+ mode: args.gateSave === true ? 'save' : 'compare',
221
+ baselinePath,
222
+ reason: fitResult.result.message,
223
+ });
224
+ cli.setExitCode(fitResult.result.exitCode);
225
+ process.stderr.write(`Error: ${fitResult.result.message}\n`);
226
+ return;
227
+ }
228
+ const output = fitResult.output;
229
+ try {
230
+ if (args.gateSave === true) {
231
+ saveBaseline(output, baselinePath);
232
+ const findingCount = output.checks.reduce((n, c) => n + c.findings.length, 0);
233
+ process.stdout.write(`Baseline saved to ${baselinePath}\n`);
234
+ process.stdout.write(` ${output.checks.length} check(s), ${findingCount} finding(s)\n`);
235
+ return;
236
+ }
237
+ const result = compareToBaseline(output, baselinePath);
238
+ process.stdout.write(renderGateCompareOutput(result) + '\n');
239
+ cli.setExitCode(result.degraded ? 1 : 0);
240
+ return;
241
+ }
242
+ catch (error) {
243
+ if (error instanceof GateBaselineMissingError || error instanceof GateBaselineInvalidError) {
244
+ cli.logger.warn({
245
+ evt: 'cli.gate.baseline_error',
246
+ module: 'cli:gate',
247
+ mode: args.gateSave === true ? 'save' : 'compare',
248
+ baselinePath,
249
+ errorType: error.name,
250
+ reason: error.message,
251
+ });
252
+ cli.setExitCode(EXIT_CODES.CONFIGURATION_ERROR);
253
+ process.stderr.write(`Error: ${error.message}\n`);
254
+ return;
255
+ }
256
+ throw error;
257
+ }
258
+ }
259
+ // =============================================================================
260
+ // EXPORT
261
+ // =============================================================================
262
+ export const fitnessTool = {
263
+ metadata: {
264
+ id: 'fitness',
265
+ version: '1.0.0',
266
+ description: 'Run fitness checks against a codebase',
267
+ },
268
+ commands: [FIT, DASHBOARD, FIT_LIST, FIT_RECIPES],
269
+ register,
270
+ initialize: async () => {
271
+ // ensureChecksLoaded() is called inside the executeFit / listChecks
272
+ // / listRecipes paths, so a separate initialize() pass is not
273
+ // strictly needed today. Left as a no-op so fitness has somewhere
274
+ // to hang future tool-startup work (eager check-pack discovery,
275
+ // catalog warming, etc.) without requiring a contract change.
276
+ },
277
+ };
278
+ // Pre-load hook setter — used by the CLI to wire project-plugin
279
+ // auto-sync into ensureChecksLoaded's startup path. Re-exported here
280
+ // so the CLI's bootstrap doesn't need to deep-import.
281
+ export { setPreLoadHook } from './cli/fit.js';
282
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * @fileoverview Core finding and result types for fitness checks
3
+ *
4
+ * CheckResult carries Signal[]. Factory functions
5
+ * (createResultWithSignals, createErrorResult, createPassingResult) provide
6
+ * the standard way to construct check results.
7
+ */
8
+ import type { DirectiveEntry } from '../framework/directive-inventory.js';
9
+ import type { Signal } from '@opensip-tools/core';
10
+ /**
11
+ * Severity level for findings and violations.
12
+ */
13
+ export type FindingSeverity = 'error' | 'warning';
14
+ /**
15
+ * Alias for FindingSeverity — used by simplified check.ts types.
16
+ */
17
+ export type Severity = FindingSeverity;
18
+ /**
19
+ * A single finding from a fitness check (output format).
20
+ */
21
+ export interface Finding {
22
+ readonly message: string;
23
+ readonly severity: Severity;
24
+ readonly filePath?: string;
25
+ readonly line?: number;
26
+ readonly column?: number;
27
+ readonly suggestion?: string;
28
+ readonly metadata?: Record<string, unknown>;
29
+ }
30
+ /**
31
+ * Output from a tool-based check.
32
+ */
33
+ export interface ToolOutput {
34
+ readonly stdout: string;
35
+ readonly stderr: string;
36
+ readonly exitCode: number;
37
+ }
38
+ /**
39
+ * Check info for display.
40
+ */
41
+ export interface CheckInfo {
42
+ /** Summary label (e.g., "142/150 files compliant") */
43
+ readonly label: string;
44
+ }
45
+ /**
46
+ * Metadata about a check run.
47
+ */
48
+ export interface CheckResultMetadata {
49
+ /** Total items scanned */
50
+ readonly totalItems: number;
51
+ /** Signals (same reference as top-level) */
52
+ readonly signals: readonly Signal[];
53
+ /** Duration in milliseconds */
54
+ readonly durationMs?: number;
55
+ /** Number of files scanned from filesystem */
56
+ readonly filesScanned?: number;
57
+ /** Item type (e.g., 'files', 'modules') */
58
+ readonly itemType?: string;
59
+ /** Extra metadata */
60
+ readonly extra?: Record<string, unknown>;
61
+ }
62
+ /**
63
+ * Result of running a fitness check.
64
+ * Now carries universal Signal[] instead of domain-specific violations.
65
+ */
66
+ export interface CheckResult {
67
+ /** Whether the check passed (no errors) */
68
+ readonly passed: boolean;
69
+ /** Number of error-level signals */
70
+ readonly errors: number;
71
+ /** Number of warning-level signals */
72
+ readonly warnings: number;
73
+ /** All signals */
74
+ readonly signals: readonly Signal[];
75
+ /** Display info */
76
+ readonly info: CheckInfo;
77
+ /** Run metadata */
78
+ readonly metadata: CheckResultMetadata;
79
+ /** Count of violations ignored via directives */
80
+ readonly ignoredCount?: number;
81
+ /** Directives that actually suppressed signals during this check's execution */
82
+ readonly appliedDirectives?: readonly DirectiveEntry[];
83
+ }
84
+ /**
85
+ * Item types for check info display.
86
+ */
87
+ export type ItemType = 'files' | 'modules' | 'packages' | 'functions' | 'classes' | 'components' | 'tests' | 'endpoints' | 'dependencies' | 'issues' | 'violations' | 'rules' | 'recipes' | 'checks';
88
+ /**
89
+ * Get a human-readable label for an item type.
90
+ */
91
+ export declare function getItemTypeLabel(type: ItemType, count: number): string;
92
+ /**
93
+ * Factory for creating CheckInfo objects.
94
+ */
95
+ export declare const CheckInfoFactory: Readonly<{
96
+ compliance(compliantItems: number, totalItems: number, unit: string): CheckInfo;
97
+ violations(count: number, unit: string): CheckInfo;
98
+ }>;
99
+ /**
100
+ * Create a result with signals.
101
+ */
102
+ export declare function createResultWithSignals(info: CheckInfo, signals: readonly Signal[], totalItems: number, options?: {
103
+ ignoredCount?: number;
104
+ durationMs?: number;
105
+ filesScanned?: number;
106
+ itemType?: string;
107
+ extra?: Record<string, unknown>;
108
+ }): CheckResult;
109
+ /**
110
+ * Create an error result (for check failures).
111
+ */
112
+ export declare function createErrorResult(message: string, error?: Error): CheckResult;
113
+ /**
114
+ * Create a passing result with no signals.
115
+ */
116
+ export declare function createPassingResult(totalItems: number, unit: string): CheckResult;
117
+ //# sourceMappingURL=findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../src/types/findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * @fileoverview Core finding and result types for fitness checks
3
+ *
4
+ * CheckResult carries Signal[]. Factory functions
5
+ * (createResultWithSignals, createErrorResult, createPassingResult) provide
6
+ * the standard way to construct check results.
7
+ */
8
+ import { countErrors, countWarnings } from './severity.js';
9
+ const ITEM_TYPE_SINGULAR = {
10
+ files: 'file',
11
+ modules: 'module',
12
+ packages: 'package',
13
+ functions: 'function',
14
+ classes: 'class',
15
+ components: 'component',
16
+ tests: 'test',
17
+ endpoints: 'endpoint',
18
+ dependencies: 'dependency',
19
+ issues: 'issue',
20
+ violations: 'violation',
21
+ rules: 'rule',
22
+ recipes: 'recipe',
23
+ checks: 'check',
24
+ };
25
+ /**
26
+ * Get a human-readable label for an item type.
27
+ */
28
+ export function getItemTypeLabel(type, count) {
29
+ return count === 1 ? ITEM_TYPE_SINGULAR[type] : type;
30
+ }
31
+ // =============================================================================
32
+ // FACTORY FUNCTIONS
33
+ // =============================================================================
34
+ /**
35
+ * Factory for creating CheckInfo objects.
36
+ */
37
+ export const CheckInfoFactory = Object.freeze({
38
+ compliance(compliantItems, totalItems, unit) {
39
+ return { label: `${compliantItems}/${totalItems} ${unit} compliant` };
40
+ },
41
+ violations(count, unit) {
42
+ return { label: count === 0 ? `No ${unit}` : `${count} ${unit}` };
43
+ },
44
+ });
45
+ /**
46
+ * Create a result with signals.
47
+ */
48
+ export function createResultWithSignals(info, signals, totalItems, options) {
49
+ const errors = countErrors(signals);
50
+ const warnings = countWarnings(signals);
51
+ return {
52
+ passed: errors === 0,
53
+ errors,
54
+ warnings,
55
+ signals,
56
+ info,
57
+ metadata: {
58
+ totalItems,
59
+ signals,
60
+ durationMs: options?.durationMs,
61
+ filesScanned: options?.filesScanned,
62
+ itemType: options?.itemType,
63
+ extra: options?.extra,
64
+ },
65
+ ...(options?.ignoredCount !== undefined && options.ignoredCount > 0
66
+ ? { ignoredCount: options.ignoredCount }
67
+ : {}),
68
+ };
69
+ }
70
+ /**
71
+ * Create an error result (for check failures).
72
+ */
73
+ export function createErrorResult(message, error) {
74
+ return {
75
+ passed: false,
76
+ errors: 1,
77
+ warnings: 0,
78
+ signals: [],
79
+ info: { label: `Error: ${message}` },
80
+ metadata: {
81
+ totalItems: 0,
82
+ signals: [],
83
+ extra: error ? { originalError: error.message, ...(error.stack ? { stack: error.stack } : {}) } : undefined,
84
+ },
85
+ };
86
+ }
87
+ /**
88
+ * Create a passing result with no signals.
89
+ */
90
+ export function createPassingResult(totalItems, unit) {
91
+ return createResultWithSignals(CheckInfoFactory.compliance(totalItems, totalItems, unit), [], totalItems);
92
+ }
93
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../../src/types/findings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Shared severity classification helpers
3
+ *
4
+ * Centralizes severity-based signal filtering and counting logic
5
+ * used across types, framework, and recipes modules.
6
+ */
7
+ /** Count error-level signals in an array */
8
+ export declare function countErrors(signals: readonly {
9
+ severity: string;
10
+ }[]): number;
11
+ /** Count warning-level signals in an array */
12
+ export declare function countWarnings(signals: readonly {
13
+ severity: string;
14
+ }[]): number;
15
+ //# sourceMappingURL=severity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../src/types/severity.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAcH,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAM5E;AAED,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAM9E"}
@@ -0,0 +1,36 @@
1
+ // @fitness-ignore-file batch-operation-limits -- iterates bounded collections (config entries, registry items, or small analysis results)
2
+ // @fitness-ignore-file clean-code-naming-quality -- short names used in severity mapping utilities
3
+ // @fitness-ignore-file project-readme-existence -- internal module, not a package root
4
+ /**
5
+ * @fileoverview Shared severity classification helpers
6
+ *
7
+ * Centralizes severity-based signal filtering and counting logic
8
+ * used across types, framework, and recipes modules.
9
+ */
10
+ /** Returns true for 'high' or 'critical' severity signals (error-level) */
11
+ function isErrorSeverity(severity) {
12
+ return severity === 'high' || severity === 'critical';
13
+ }
14
+ /** Returns true for 'medium' severity signals (warning-level) */
15
+ function isWarningSeverity(severity) {
16
+ return severity === 'medium';
17
+ }
18
+ /** Count error-level signals in an array */
19
+ export function countErrors(signals) {
20
+ let count = 0;
21
+ for (const s of signals) {
22
+ if (isErrorSeverity(s.severity))
23
+ count++;
24
+ }
25
+ return count;
26
+ }
27
+ /** Count warning-level signals in an array */
28
+ export function countWarnings(signals) {
29
+ let count = 0;
30
+ for (const s of signals) {
31
+ if (isWarningSeverity(s.severity))
32
+ count++;
33
+ }
34
+ return count;
35
+ }
36
+ //# sourceMappingURL=severity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.js","sourceRoot":"","sources":["../../src/types/severity.ts"],"names":[],"mappings":"AAAA,0IAA0I;AAC1I,mGAAmG;AACnG,uFAAuF;AACvF;;;;;GAKG;AAIH,2EAA2E;AAC3E,SAAS,eAAe,CAAC,QAAwB;IAC/C,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU,CAAA;AACvD,CAAC;AAED,iEAAiE;AACjE,SAAS,iBAAiB,CAAC,QAAwB;IACjD,OAAO,QAAQ,KAAK,QAAQ,CAAA;AAC9B,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,WAAW,CAAC,OAAwC;IAClE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,eAAe,CAAC,CAAC,CAAC,QAA0B,CAAC;YAAE,KAAK,EAAE,CAAA;IAC5D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,aAAa,CAAC,OAAwC;IACpE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,iBAAiB,CAAC,CAAC,CAAC,QAA0B,CAAC;YAAE,KAAK,EAAE,CAAA;IAC9D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}