@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,247 @@
1
+ /**
2
+ * @fileoverview Built-in fitness recipe definitions
3
+ *
4
+ * Defines the standard set of recipes (default, quick-smoke, backend, etc.)
5
+ * that ship with the fitness framework.
6
+ */
7
+ import { DEFAULT_MAX_PARALLEL, defineRecipe } from './types.js';
8
+ // =============================================================================
9
+ // DEFAULT RECIPE
10
+ // =============================================================================
11
+ /** Default recipe: runs all enabled checks in parallel */
12
+ const defaultRecipe = defineRecipe({
13
+ name: 'default',
14
+ displayName: 'Default',
15
+ description: 'Run all enabled checks in parallel',
16
+ checks: { type: 'all' },
17
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
18
+ reporting: { format: 'table', verbose: false },
19
+ tags: ['comprehensive', 'default'],
20
+ });
21
+ // =============================================================================
22
+ // QUICK SMOKE RECIPE
23
+ // =============================================================================
24
+ /** Quick smoke recipe: fast critical checks for rapid validation */
25
+ const quickSmokeRecipe = defineRecipe({
26
+ name: 'quick-smoke',
27
+ displayName: 'Quick Smoke',
28
+ description: 'Fast critical checks for rapid validation',
29
+ checks: {
30
+ type: 'explicit',
31
+ checkIds: [
32
+ 'no-console-log',
33
+ 'no-any-types',
34
+ 'null-safety',
35
+ 'detached-promises',
36
+ 'catch-clause-safety',
37
+ 'error-handling-quality',
38
+ 'no-hardcoded-secrets',
39
+ 'no-eval',
40
+ 'sql-injection',
41
+ 'env-secret-exposure',
42
+ 'input-sanitization',
43
+ 'no-focused-tests',
44
+ 'no-skipped-tests',
45
+ ],
46
+ },
47
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 15_000 },
48
+ reporting: { format: 'table', verbose: false },
49
+ tags: ['fast', 'smoke', 'critical'],
50
+ });
51
+ // =============================================================================
52
+ // BACKEND RECIPE
53
+ // =============================================================================
54
+ /** Backend recipe: architecture, resilience, and quality checks for server code */
55
+ const backendRecipe = defineRecipe({
56
+ name: 'backend',
57
+ displayName: 'Backend',
58
+ description: 'Backend-focused checks (architecture, resilience, quality)',
59
+ checks: {
60
+ type: 'pattern',
61
+ include: [
62
+ 'architecture/*',
63
+ 'resilience/*',
64
+ 'quality/*-backend',
65
+ 'quality/fastify-*',
66
+ 'quality/database-*',
67
+ 'quality/pino-*',
68
+ 'quality/logging-*',
69
+ 'quality/correlation-*',
70
+ 'quality/no-console-log',
71
+ 'quality/result-pattern-*',
72
+ 'quality/api-*',
73
+ 'quality/null-safety',
74
+ 'quality/no-any-types',
75
+ 'quality/file-headers',
76
+ 'quality/concurrency-safety',
77
+ 'quality/error-swallowing-*',
78
+ 'security/*',
79
+ 'testing/*',
80
+ ],
81
+ exclude: ['quality/*-frontend', 'testing/*-frontend'],
82
+ },
83
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
84
+ reporting: { format: 'table', verbose: false },
85
+ tags: ['backend', 'server', 'api'],
86
+ });
87
+ // =============================================================================
88
+ // FRONTEND RECIPE
89
+ // =============================================================================
90
+ /** Frontend recipe: React and accessibility checks for UI code */
91
+ const frontendRecipe = defineRecipe({
92
+ name: 'frontend',
93
+ displayName: 'Frontend',
94
+ description: 'Frontend-focused checks (React, accessibility)',
95
+ checks: {
96
+ type: 'pattern',
97
+ include: [
98
+ 'quality/*-frontend',
99
+ 'quality/accessible-*',
100
+ 'quality/navigation-*',
101
+ 'quality/theme-*',
102
+ 'quality/image-*',
103
+ 'quality/lazy-*',
104
+ 'quality/no-inline-functions',
105
+ 'quality/async-state-*',
106
+ 'quality/no-any-types',
107
+ 'quality/null-safety',
108
+ 'architecture/heavy-import-detection',
109
+ 'testing/no-focused-tests',
110
+ 'testing/no-skipped-tests',
111
+ 'testing/*-frontend',
112
+ ],
113
+ exclude: ['quality/*-backend', 'testing/*-backend'],
114
+ },
115
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
116
+ reporting: { format: 'table', verbose: false },
117
+ tags: ['frontend', 'react', 'ui'],
118
+ });
119
+ // =============================================================================
120
+ // SECURITY RECIPE
121
+ // =============================================================================
122
+ /** Security recipe: comprehensive security audit checks */
123
+ const securityRecipe = defineRecipe({
124
+ name: 'security',
125
+ displayName: 'Security Audit',
126
+ description: 'Comprehensive security analysis',
127
+ checks: {
128
+ type: 'pattern',
129
+ include: [
130
+ 'security/*',
131
+ 'quality/pii-*',
132
+ 'quality/dependency-security-*',
133
+ 'quality/centralized-input-*',
134
+ 'quality/security-*',
135
+ 'quality/no-console-log',
136
+ 'resilience/no-custom-cache',
137
+ 'resilience/no-custom-rate-limiter',
138
+ 'resilience/context-leakage',
139
+ ],
140
+ },
141
+ execution: { mode: 'sequential', stopOnFirstFailure: false, timeout: 60_000 },
142
+ reporting: { format: 'table', verbose: true },
143
+ tags: ['security', 'audit', 'comprehensive'],
144
+ });
145
+ // =============================================================================
146
+ // PRE-COMMIT RECIPE
147
+ // =============================================================================
148
+ /** Pre-commit recipe: fast checks suitable for git pre-commit hooks */
149
+ const preCommitRecipe = defineRecipe({
150
+ name: 'pre-commit',
151
+ displayName: 'Pre-Commit',
152
+ description: 'Fast checks for git pre-commit hooks',
153
+ checks: {
154
+ type: 'explicit',
155
+ checkIds: [
156
+ 'no-console-log',
157
+ 'no-any-types',
158
+ 'no-hardcoded-secrets',
159
+ 'detached-promises',
160
+ 'no-focused-tests',
161
+ 'no-skipped-tests',
162
+ ],
163
+ },
164
+ execution: { mode: 'parallel', stopOnFirstFailure: true, timeout: 10_000 },
165
+ reporting: { format: 'table', verbose: false },
166
+ tags: ['fast', 'hook', 'pre-commit'],
167
+ });
168
+ // =============================================================================
169
+ // PRE-RELEASE RECIPE
170
+ // =============================================================================
171
+ /** Pre-release recipe: comprehensive checks run before a release */
172
+ const preReleaseRecipe = defineRecipe({
173
+ name: 'pre-release',
174
+ displayName: 'Pre-Release',
175
+ description: 'Comprehensive checks before release',
176
+ checks: { type: 'all' },
177
+ execution: { mode: 'sequential', stopOnFirstFailure: false, timeout: 120_000 },
178
+ reporting: { format: 'unified', verbose: true },
179
+ tags: ['comprehensive', 'release', 'thorough'],
180
+ });
181
+ // =============================================================================
182
+ // NIGHTLY FULL RECIPE
183
+ // =============================================================================
184
+ /** Nightly full recipe: complete check suite for scheduled nightly runs */
185
+ const nightlyFullRecipe = defineRecipe({
186
+ name: 'nightly-full',
187
+ displayName: 'Nightly Full',
188
+ description: 'Complete suite for nightly scheduled runs',
189
+ checks: { type: 'all' },
190
+ execution: {
191
+ mode: 'parallel',
192
+ stopOnFirstFailure: false,
193
+ timeout: 300_000,
194
+ maxParallel: DEFAULT_MAX_PARALLEL,
195
+ },
196
+ reporting: { format: 'unified', verbose: true, outputPath: 'fitness-nightly-report.json' },
197
+ tags: ['nightly', 'comprehensive', 'scheduled'],
198
+ });
199
+ // =============================================================================
200
+ // CI RECIPE
201
+ // =============================================================================
202
+ /** CI recipe: optimized for CI pipelines with JSON output */
203
+ const ciRecipe = defineRecipe({
204
+ name: 'ci',
205
+ displayName: 'CI',
206
+ description: 'Optimized for CI pipelines with JSON output',
207
+ checks: { type: 'all', exclude: ['testing/flaky-*', 'performance/*'] },
208
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 60_000 },
209
+ reporting: { format: 'json', verbose: false },
210
+ tags: ['ci', 'pipeline', 'automated'],
211
+ });
212
+ // =============================================================================
213
+ // ARCHITECTURE RECIPE
214
+ // =============================================================================
215
+ /** Architecture recipe: architecture validation and compliance checks */
216
+ const architectureRecipe = defineRecipe({
217
+ name: 'architecture',
218
+ displayName: 'Architecture Review',
219
+ description: 'Architecture validation and compliance',
220
+ checks: { type: 'tags', include: ['architecture'] },
221
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
222
+ reporting: { format: 'table', verbose: true },
223
+ tags: ['architecture', 'structure'],
224
+ });
225
+ // =============================================================================
226
+ // EXPORTS
227
+ // =============================================================================
228
+ /** All built-in fitness recipes */
229
+ export const builtInRecipes = Object.freeze([
230
+ defaultRecipe,
231
+ quickSmokeRecipe,
232
+ backendRecipe,
233
+ frontendRecipe,
234
+ securityRecipe,
235
+ preCommitRecipe,
236
+ preReleaseRecipe,
237
+ nightlyFullRecipe,
238
+ ciRecipe,
239
+ architectureRecipe,
240
+ ]);
241
+ /** Map of built-in recipe name to recipe definition */
242
+ export const builtInRecipesByName = new Map(builtInRecipes.map((recipe) => [recipe.name, recipe]));
243
+ /** Check whether a recipe name corresponds to a built-in recipe */
244
+ export function isBuiltInRecipe(name) {
245
+ return builtInRecipesByName.has(name);
246
+ }
247
+ //# sourceMappingURL=built-in-recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"built-in-recipes.js","sourceRoot":"","sources":["../../src/recipes/built-in-recipes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fileoverview Per-check recipe configuration plumbing.
3
+ *
4
+ * Recipes can carry a `checks.config` map keyed by check slug. The recipe
5
+ * service projects this map into module-level state before any check runs
6
+ * (`setCurrentRecipeCheckConfig`) and clears it once the run completes
7
+ * (`clearCurrentRecipeCheckConfig`).
8
+ *
9
+ * Individual checks read their slice via `getCheckConfig<T>(slug)` —
10
+ * typically once at module load (when imported by the registry) or at the
11
+ * top of `analyze` — and merge it with their built-in defaults.
12
+ *
13
+ * This is the seam that lets us keep `@opensip-tools/checks-builtin`'s
14
+ * defaults to *generic* conventions (Node stdlib, well-known SDKs, common
15
+ * filename patterns) while letting downstream projects (like opensip)
16
+ * extend the safe-lists with project-specific names.
17
+ */
18
+ import type { RecipeCheckConfigMap } from './types.js';
19
+ /**
20
+ * Read the per-check config slice for the given slug.
21
+ *
22
+ * Returns an empty object when no recipe-config has been set or no entry
23
+ * exists for the slug — checks that call this should treat the result as
24
+ * "augmentation only" and merge with their own defaults.
25
+ *
26
+ * @typeParam T - The shape the calling check expects. Each check declares
27
+ * its own config interface.
28
+ */
29
+ export declare function getCheckConfig<T extends Record<string, unknown>>(slug: string): T;
30
+ /**
31
+ * Replace the module-level recipe config. Called by the recipe service at
32
+ * the start of a recipe run, before any check executes.
33
+ */
34
+ export declare function setCurrentRecipeCheckConfig(config: RecipeCheckConfigMap | undefined): void;
35
+ /**
36
+ * Clear the module-level recipe config. Called by the recipe service at
37
+ * the end of a recipe run (success or failure).
38
+ */
39
+ export declare function clearCurrentRecipeCheckConfig(): void;
40
+ //# sourceMappingURL=check-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-config.d.ts","sourceRoot":"","sources":["../../src/recipes/check-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AActD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAKjF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,CAE1F;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @fileoverview Per-check recipe configuration plumbing.
3
+ *
4
+ * Recipes can carry a `checks.config` map keyed by check slug. The recipe
5
+ * service projects this map into module-level state before any check runs
6
+ * (`setCurrentRecipeCheckConfig`) and clears it once the run completes
7
+ * (`clearCurrentRecipeCheckConfig`).
8
+ *
9
+ * Individual checks read their slice via `getCheckConfig<T>(slug)` —
10
+ * typically once at module load (when imported by the registry) or at the
11
+ * top of `analyze` — and merge it with their built-in defaults.
12
+ *
13
+ * This is the seam that lets us keep `@opensip-tools/checks-builtin`'s
14
+ * defaults to *generic* conventions (Node stdlib, well-known SDKs, common
15
+ * filename patterns) while letting downstream projects (like opensip)
16
+ * extend the safe-lists with project-specific names.
17
+ */
18
+ /**
19
+ * Module-scoped current-recipe config. Populated by the recipe service at
20
+ * the start of a run and cleared at the end. Checks read from it lazily via
21
+ * {@link getCheckConfig}.
22
+ *
23
+ * Module-level singleton is acceptable here because a recipe service runs
24
+ * one session at a time (the service throws SESSION_IN_PROGRESS otherwise).
25
+ * If we ever support concurrent recipe runs in the same process, this needs
26
+ * to move into AsyncLocalStorage.
27
+ */
28
+ let currentRecipeCheckConfig;
29
+ /**
30
+ * Read the per-check config slice for the given slug.
31
+ *
32
+ * Returns an empty object when no recipe-config has been set or no entry
33
+ * exists for the slug — checks that call this should treat the result as
34
+ * "augmentation only" and merge with their own defaults.
35
+ *
36
+ * @typeParam T - The shape the calling check expects. Each check declares
37
+ * its own config interface.
38
+ */
39
+ export function getCheckConfig(slug) {
40
+ if (!currentRecipeCheckConfig)
41
+ return {};
42
+ const entry = currentRecipeCheckConfig[slug];
43
+ if (!entry)
44
+ return {};
45
+ return entry;
46
+ }
47
+ /**
48
+ * Replace the module-level recipe config. Called by the recipe service at
49
+ * the start of a recipe run, before any check executes.
50
+ */
51
+ export function setCurrentRecipeCheckConfig(config) {
52
+ currentRecipeCheckConfig = config;
53
+ }
54
+ /**
55
+ * Clear the module-level recipe config. Called by the recipe service at
56
+ * the end of a recipe run (success or failure).
57
+ */
58
+ export function clearCurrentRecipeCheckConfig() {
59
+ currentRecipeCheckConfig = undefined;
60
+ }
61
+ //# sourceMappingURL=check-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-config.js","sourceRoot":"","sources":["../../src/recipes/check-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;;;;;;;;GASG;AACH,IAAI,wBAA0D,CAAA;AAE9D;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAoC,IAAY;IAC5E,IAAI,CAAC,wBAAwB;QAAE,OAAO,EAAO,CAAA;IAC7C,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAO,CAAA;IAC1B,OAAO,KAAU,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAwC;IAClF,wBAAwB,GAAG,MAAM,CAAA;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B;IAC3C,wBAAwB,GAAG,SAAS,CAAA;AACtC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @fileoverview Check resolution for fitness recipes
3
+ *
4
+ * Resolves recipe check selectors (explicit, category, pattern, all)
5
+ * into concrete check slug lists using the check registry.
6
+ */
7
+ import type { CheckSelector } from './types.js';
8
+ import type { CheckRegistry } from '../framework/registry.js';
9
+ /**
10
+ * Resolve a CheckSelector to a list of check slugs from the registry.
11
+ */
12
+ export declare function resolveChecks(selector: CheckSelector, registry: CheckRegistry): readonly string[];
13
+ /** Result of validating check references against the registry */
14
+ interface CheckReferenceValidation {
15
+ valid: string[];
16
+ missing: string[];
17
+ }
18
+ /** Validate a list of check IDs against known IDs, returning valid and missing sets */
19
+ export declare function validateCheckReferences(checkIds: readonly string[], allCheckIds: readonly string[]): CheckReferenceValidation;
20
+ export {};
21
+ //# sourceMappingURL=check-resolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-resolution.d.ts","sourceRoot":"","sources":["../../src/recipes/check-resolution.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAG7D;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAqBjG;AAwGD,iEAAiE;AACjE,UAAU,wBAAwB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,wBAAwB,CAc1B"}
@@ -0,0 +1,121 @@
1
+ // @fitness-ignore-file batch-operation-limits -- iterates bounded collections (config entries, registry items, or small analysis results)
2
+ /**
3
+ * @fileoverview Check resolution for fitness recipes
4
+ *
5
+ * Resolves recipe check selectors (explicit, category, pattern, all)
6
+ * into concrete check slug lists using the check registry.
7
+ */
8
+ import { SystemError } from '@opensip-tools/core';
9
+ import { minimatch } from 'minimatch';
10
+ /**
11
+ * Resolve a CheckSelector to a list of check slugs from the registry.
12
+ */
13
+ export function resolveChecks(selector, registry) {
14
+ const allCheckSlugs = registry.listSlugs();
15
+ switch (selector.type) {
16
+ case 'explicit': {
17
+ return resolveExplicitSelector(selector.checkIds, allCheckSlugs, registry);
18
+ }
19
+ case 'pattern': {
20
+ return resolvePatternSelector(selector.include, selector.exclude ?? [], allCheckSlugs, registry);
21
+ }
22
+ case 'tags': {
23
+ return resolveTagsSelector(selector.include, selector.exclude ?? [], registry);
24
+ }
25
+ case 'all': {
26
+ return resolveAllSelector(selector.exclude ?? [], allCheckSlugs, registry);
27
+ }
28
+ default: {
29
+ const _exhaustive = selector;
30
+ throw new SystemError(`Unknown selector type: ${JSON.stringify(_exhaustive)}`, { code: 'SYSTEM.FITNESS.UNKNOWN_SELECTOR' });
31
+ }
32
+ }
33
+ }
34
+ function resolveExplicitSelector(checkIds, allCheckSlugs, registry) {
35
+ const existingIds = new Set(allCheckSlugs);
36
+ const result = [];
37
+ for (const id of checkIds) {
38
+ // Exact match (works for both namespaced and bare slugs already in registry)
39
+ if (existingIds.has(id)) {
40
+ result.push(id);
41
+ continue;
42
+ }
43
+ // Bare slug → try registry resolution (handles namespace lookup)
44
+ if (registry && !id.includes(':')) {
45
+ const check = registry.getBySlug(id);
46
+ if (check) {
47
+ // Find the namespaced key for this check
48
+ const key = allCheckSlugs.find(s => s.endsWith(`:${id}`)) ?? id;
49
+ result.push(key);
50
+ }
51
+ }
52
+ }
53
+ return result;
54
+ }
55
+ function buildMatchTargets(slug, registry) {
56
+ const targets = [slug];
57
+ // Extract bare slug from namespaced key (e.g., 'builtin:no-eval' → 'no-eval')
58
+ const bareSlug = slug.includes(':') ? slug.split(':').pop() : slug;
59
+ if (bareSlug !== slug)
60
+ targets.push(bareSlug);
61
+ if (registry) {
62
+ const check = registry.getBySlug(slug);
63
+ if (check?.config.tags) {
64
+ for (const tag of check.config.tags) {
65
+ targets.push(`${tag}/${bareSlug}`);
66
+ }
67
+ }
68
+ }
69
+ return targets;
70
+ }
71
+ function resolvePatternSelector(includePatterns, excludePatterns, allCheckSlugs, registry) {
72
+ return allCheckSlugs.filter((slug) => {
73
+ const matchTargets = buildMatchTargets(slug, registry);
74
+ const included = includePatterns.some((pattern) => matchTargets.some((target) => minimatch(target, pattern, { nocase: false })));
75
+ if (!included)
76
+ return false;
77
+ const excluded = excludePatterns.some((pattern) => matchTargets.some((target) => minimatch(target, pattern, { nocase: false })));
78
+ return !excluded;
79
+ });
80
+ }
81
+ function resolveTagsSelector(includeTags, excludeTags, registry) {
82
+ const includeSet = new Set(includeTags);
83
+ const excludeSet = new Set(excludeTags);
84
+ const allSlugs = registry.listSlugs();
85
+ return allSlugs.filter((key) => {
86
+ const check = registry.getBySlug(key);
87
+ if (!check)
88
+ return false;
89
+ const tags = check.config.tags ?? [];
90
+ const hasInclude = tags.some((tag) => includeSet.has(tag));
91
+ if (!hasInclude)
92
+ return false;
93
+ const hasExclude = tags.some((tag) => excludeSet.has(tag));
94
+ return !hasExclude;
95
+ });
96
+ }
97
+ function resolveAllSelector(excludePatterns, allCheckSlugs, registry) {
98
+ if (excludePatterns.length === 0)
99
+ return allCheckSlugs;
100
+ return allCheckSlugs.filter((slug) => {
101
+ const matchTargets = buildMatchTargets(slug, registry);
102
+ const excluded = excludePatterns.some((pattern) => matchTargets.some((target) => minimatch(target, pattern, { nocase: false })));
103
+ return !excluded;
104
+ });
105
+ }
106
+ /** Validate a list of check IDs against known IDs, returning valid and missing sets */
107
+ export function validateCheckReferences(checkIds, allCheckIds) {
108
+ const existingSet = new Set(allCheckIds);
109
+ const valid = [];
110
+ const missing = [];
111
+ for (const id of checkIds) {
112
+ if (existingSet.has(id)) {
113
+ valid.push(id);
114
+ }
115
+ else {
116
+ missing.push(id);
117
+ }
118
+ }
119
+ return { valid, missing };
120
+ }
121
+ //# sourceMappingURL=check-resolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-resolution.js","sourceRoot":"","sources":["../../src/recipes/check-resolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @fileoverview Check result processor for fitness recipe execution
3
+ *
4
+ * Processes individual check results (success or error), updates session state,
5
+ * builds check summaries, and determines whether execution should stop.
6
+ */
7
+ import { type CheckMemoryProfile } from '../framework/memory-profiler.js';
8
+ import type { FitnessRecipeServiceCallbacks, FitnessRecipeSession } from './service-types.js';
9
+ import type { FitnessRecipe, RecipeCheckResult } from './types.js';
10
+ import type { CheckResult } from '../types/findings.js';
11
+ /** Input data for processing a successful check result */
12
+ export interface ProcessSuccessInput {
13
+ checkId: string;
14
+ checkSlug: string;
15
+ tags: readonly string[];
16
+ checkIndex: number;
17
+ totalChecks: number;
18
+ result: CheckResult;
19
+ durationMs: number;
20
+ memoryBeforeMB: number;
21
+ }
22
+ /** Input data for processing a failed or timed-out check result */
23
+ export interface ProcessErrorInput {
24
+ checkId: string;
25
+ checkSlug: string;
26
+ checkIndex: number;
27
+ totalChecks: number;
28
+ error: unknown;
29
+ durationMs: number;
30
+ memoryBeforeMB: number;
31
+ timedOut: boolean;
32
+ timeoutMs?: number;
33
+ }
34
+ /** Context required by the result processor (session, callbacks, recipe) */
35
+ export interface ProcessorContext {
36
+ session: FitnessRecipeSession;
37
+ callbacks: FitnessRecipeServiceCallbacks;
38
+ recipe: FitnessRecipe;
39
+ includeViolations: boolean;
40
+ }
41
+ /** Output from processing a check result, including whether execution should stop */
42
+ export interface ProcessResultOutput {
43
+ checkResult: RecipeCheckResult;
44
+ memoryProfile: CheckMemoryProfile;
45
+ shouldStop: boolean;
46
+ }
47
+ /** Process a successful check result: update session, invoke callbacks, and determine stop condition */
48
+ export declare function processSuccessResult(ctx: ProcessorContext, input: ProcessSuccessInput): ProcessResultOutput;
49
+ /** Process a failed check result: update session, invoke callbacks, and determine stop condition */
50
+ export declare function processErrorResult(ctx: ProcessorContext, input: ProcessErrorInput): ProcessResultOutput;
51
+ //# sourceMappingURL=check-result-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-result-processor.d.ts","sourceRoot":"","sources":["../../src/recipes/check-result-processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAGzF,OAAO,KAAK,EAAgB,6BAA6B,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC3G,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAMvD,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,WAAW,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,oBAAoB,CAAA;IAC7B,SAAS,EAAE,6BAA6B,CAAA;IACxC,MAAM,EAAE,aAAa,CAAA;IACrB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,aAAa,EAAE,kBAAkB,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;CACpB;AA4FD,wGAAwG;AACxG,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,mBAAmB,GACzB,mBAAmB,CAgErB;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,GAAG,mBAAmB,CAoCvG"}