@opensip-cli/fitness 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (576) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +31 -0
  4. package/dist/__tests__/baseline-plane.test.d.ts +12 -0
  5. package/dist/__tests__/baseline-plane.test.d.ts.map +1 -0
  6. package/dist/__tests__/baseline-plane.test.js +63 -0
  7. package/dist/__tests__/baseline-plane.test.js.map +1 -0
  8. package/dist/__tests__/check-utils.test.d.ts +10 -0
  9. package/dist/__tests__/check-utils.test.d.ts.map +1 -0
  10. package/dist/__tests__/check-utils.test.js +193 -0
  11. package/dist/__tests__/check-utils.test.js.map +1 -0
  12. package/dist/__tests__/fingerprint-parity.test.d.ts +14 -0
  13. package/dist/__tests__/fingerprint-parity.test.d.ts.map +1 -0
  14. package/dist/__tests__/fingerprint-parity.test.js +59 -0
  15. package/dist/__tests__/fingerprint-parity.test.js.map +1 -0
  16. package/dist/__tests__/fit-execute-opts.test.d.ts +15 -0
  17. package/dist/__tests__/fit-execute-opts.test.d.ts.map +1 -0
  18. package/dist/__tests__/fit-execute-opts.test.js +124 -0
  19. package/dist/__tests__/fit-execute-opts.test.js.map +1 -0
  20. package/dist/__tests__/public-api.test.d.ts +19 -0
  21. package/dist/__tests__/public-api.test.d.ts.map +1 -0
  22. package/dist/__tests__/public-api.test.js +85 -0
  23. package/dist/__tests__/public-api.test.js.map +1 -0
  24. package/dist/__tests__/tool.test.d.ts +10 -0
  25. package/dist/__tests__/tool.test.d.ts.map +1 -0
  26. package/dist/__tests__/tool.test.js +57 -0
  27. package/dist/__tests__/tool.test.js.map +1 -0
  28. package/dist/baseline-strategy.d.ts +21 -0
  29. package/dist/baseline-strategy.d.ts.map +1 -0
  30. package/dist/baseline-strategy.js +21 -0
  31. package/dist/baseline-strategy.js.map +1 -0
  32. package/dist/check-utils/display.d.ts +52 -0
  33. package/dist/check-utils/display.d.ts.map +1 -0
  34. package/dist/check-utils/display.js +66 -0
  35. package/dist/check-utils/display.js.map +1 -0
  36. package/dist/check-utils/index.d.ts +17 -0
  37. package/dist/check-utils/index.d.ts.map +1 -0
  38. package/dist/check-utils/index.js +13 -0
  39. package/dist/check-utils/index.js.map +1 -0
  40. package/dist/check-utils/path-matching.d.ts +40 -0
  41. package/dist/check-utils/path-matching.d.ts.map +1 -0
  42. package/dist/check-utils/path-matching.js +38 -0
  43. package/dist/check-utils/path-matching.js.map +1 -0
  44. package/dist/check-utils/source-analysis.d.ts +36 -0
  45. package/dist/check-utils/source-analysis.d.ts.map +1 -0
  46. package/dist/check-utils/source-analysis.js +44 -0
  47. package/dist/check-utils/source-analysis.js.map +1 -0
  48. package/dist/check-utils/test-helpers.d.ts +57 -0
  49. package/dist/check-utils/test-helpers.d.ts.map +1 -0
  50. package/dist/check-utils/test-helpers.js +71 -0
  51. package/dist/check-utils/test-helpers.js.map +1 -0
  52. package/dist/cli/__tests__/fit-gate-mode.test.d.ts +14 -0
  53. package/dist/cli/__tests__/fit-gate-mode.test.d.ts.map +1 -0
  54. package/dist/cli/__tests__/fit-gate-mode.test.js +110 -0
  55. package/dist/cli/__tests__/fit-gate-mode.test.js.map +1 -0
  56. package/dist/cli/__tests__/fit-modes-live.test.d.ts +13 -0
  57. package/dist/cli/__tests__/fit-modes-live.test.d.ts.map +1 -0
  58. package/dist/cli/__tests__/fit-modes-live.test.js +182 -0
  59. package/dist/cli/__tests__/fit-modes-live.test.js.map +1 -0
  60. package/dist/cli/__tests__/report-data.test.d.ts +12 -0
  61. package/dist/cli/__tests__/report-data.test.d.ts.map +1 -0
  62. package/dist/cli/__tests__/report-data.test.js +113 -0
  63. package/dist/cli/__tests__/report-data.test.js.map +1 -0
  64. package/dist/cli/fit/__tests__/display-fold.test.d.ts +8 -0
  65. package/dist/cli/fit/__tests__/display-fold.test.d.ts.map +1 -0
  66. package/dist/cli/fit/__tests__/display-fold.test.js +87 -0
  67. package/dist/cli/fit/__tests__/display-fold.test.js.map +1 -0
  68. package/dist/cli/fit/__tests__/gate-resolved-config.test.d.ts +16 -0
  69. package/dist/cli/fit/__tests__/gate-resolved-config.test.d.ts.map +1 -0
  70. package/dist/cli/fit/__tests__/gate-resolved-config.test.js +62 -0
  71. package/dist/cli/fit/__tests__/gate-resolved-config.test.js.map +1 -0
  72. package/dist/cli/fit/check-loader.d.ts +37 -0
  73. package/dist/cli/fit/check-loader.d.ts.map +1 -0
  74. package/dist/cli/fit/check-loader.js +154 -0
  75. package/dist/cli/fit/check-loader.js.map +1 -0
  76. package/dist/cli/fit/config-loader.d.ts +55 -0
  77. package/dist/cli/fit/config-loader.d.ts.map +1 -0
  78. package/dist/cli/fit/config-loader.js +107 -0
  79. package/dist/cli/fit/config-loader.js.map +1 -0
  80. package/dist/cli/fit/display-registry.d.ts +19 -0
  81. package/dist/cli/fit/display-registry.d.ts.map +1 -0
  82. package/dist/cli/fit/display-registry.js +33 -0
  83. package/dist/cli/fit/display-registry.js.map +1 -0
  84. package/dist/cli/fit/envelope-view.d.ts +49 -0
  85. package/dist/cli/fit/envelope-view.d.ts.map +1 -0
  86. package/dist/cli/fit/envelope-view.js +85 -0
  87. package/dist/cli/fit/envelope-view.js.map +1 -0
  88. package/dist/cli/fit/fit-aux-command-specs.d.ts +35 -0
  89. package/dist/cli/fit/fit-aux-command-specs.d.ts.map +1 -0
  90. package/dist/cli/fit/fit-aux-command-specs.js +110 -0
  91. package/dist/cli/fit/fit-aux-command-specs.js.map +1 -0
  92. package/dist/cli/fit/fit-command-spec.d.ts +24 -0
  93. package/dist/cli/fit/fit-command-spec.d.ts.map +1 -0
  94. package/dist/cli/fit/fit-command-spec.js +131 -0
  95. package/dist/cli/fit/fit-command-spec.js.map +1 -0
  96. package/dist/cli/fit/gate-compare-render.d.ts +13 -0
  97. package/dist/cli/fit/gate-compare-render.d.ts.map +1 -0
  98. package/dist/cli/fit/gate-compare-render.js +87 -0
  99. package/dist/cli/fit/gate-compare-render.js.map +1 -0
  100. package/dist/cli/fit/recipe-selector.d.ts +53 -0
  101. package/dist/cli/fit/recipe-selector.d.ts.map +1 -0
  102. package/dist/cli/fit/recipe-selector.js +106 -0
  103. package/dist/cli/fit/recipe-selector.js.map +1 -0
  104. package/dist/cli/fit/recipe-selector.test.d.ts +2 -0
  105. package/dist/cli/fit/recipe-selector.test.d.ts.map +1 -0
  106. package/dist/cli/fit/recipe-selector.test.js +69 -0
  107. package/dist/cli/fit/recipe-selector.test.js.map +1 -0
  108. package/dist/cli/fit/resolved-fitness-config.d.ts +48 -0
  109. package/dist/cli/fit/resolved-fitness-config.d.ts.map +1 -0
  110. package/dist/cli/fit/resolved-fitness-config.js +46 -0
  111. package/dist/cli/fit/resolved-fitness-config.js.map +1 -0
  112. package/dist/cli/fit/result-builders.d.ts +91 -0
  113. package/dist/cli/fit/result-builders.d.ts.map +1 -0
  114. package/dist/cli/fit/result-builders.js +206 -0
  115. package/dist/cli/fit/result-builders.js.map +1 -0
  116. package/dist/cli/fit-list.d.ts +7 -0
  117. package/dist/cli/fit-list.d.ts.map +1 -0
  118. package/dist/cli/fit-list.js +24 -0
  119. package/dist/cli/fit-list.js.map +1 -0
  120. package/dist/cli/fit-modes.d.ts +42 -0
  121. package/dist/cli/fit-modes.d.ts.map +1 -0
  122. package/dist/cli/fit-modes.js +322 -0
  123. package/dist/cli/fit-modes.js.map +1 -0
  124. package/dist/cli/fit-recipes.d.ts +7 -0
  125. package/dist/cli/fit-recipes.d.ts.map +1 -0
  126. package/dist/cli/fit-recipes.js +34 -0
  127. package/dist/cli/fit-recipes.js.map +1 -0
  128. package/dist/cli/fit-runner-views.d.ts +33 -0
  129. package/dist/cli/fit-runner-views.d.ts.map +1 -0
  130. package/dist/cli/fit-runner-views.js +92 -0
  131. package/dist/cli/fit-runner-views.js.map +1 -0
  132. package/dist/cli/fit-runner.d.ts +44 -0
  133. package/dist/cli/fit-runner.d.ts.map +1 -0
  134. package/dist/cli/fit-runner.js +250 -0
  135. package/dist/cli/fit-runner.js.map +1 -0
  136. package/dist/cli/fit-worker.d.ts +26 -0
  137. package/dist/cli/fit-worker.d.ts.map +1 -0
  138. package/dist/cli/fit-worker.js +67 -0
  139. package/dist/cli/fit-worker.js.map +1 -0
  140. package/dist/cli/fit.d.ts +74 -0
  141. package/dist/cli/fit.d.ts.map +1 -0
  142. package/dist/cli/fit.js +149 -0
  143. package/dist/cli/fit.js.map +1 -0
  144. package/dist/cli/report-data.d.ts +44 -0
  145. package/dist/cli/report-data.d.ts.map +1 -0
  146. package/dist/cli/report-data.js +89 -0
  147. package/dist/cli/report-data.js.map +1 -0
  148. package/dist/config/__tests__/fitness-config-schema.test.d.ts +6 -0
  149. package/dist/config/__tests__/fitness-config-schema.test.d.ts.map +1 -0
  150. package/dist/config/__tests__/fitness-config-schema.test.js +37 -0
  151. package/dist/config/__tests__/fitness-config-schema.test.js.map +1 -0
  152. package/dist/config/fitness-config-schema.d.ts +48 -0
  153. package/dist/config/fitness-config-schema.d.ts.map +1 -0
  154. package/dist/config/fitness-config-schema.js +62 -0
  155. package/dist/config/fitness-config-schema.js.map +1 -0
  156. package/dist/framework/__tests__/abortable-exec.test.d.ts +9 -0
  157. package/dist/framework/__tests__/abortable-exec.test.d.ts.map +1 -0
  158. package/dist/framework/__tests__/abortable-exec.test.js +102 -0
  159. package/dist/framework/__tests__/abortable-exec.test.js.map +1 -0
  160. package/dist/framework/__tests__/check-config.test.d.ts +2 -0
  161. package/dist/framework/__tests__/check-config.test.d.ts.map +1 -0
  162. package/dist/framework/__tests__/check-config.test.js +56 -0
  163. package/dist/framework/__tests__/check-config.test.js.map +1 -0
  164. package/dist/framework/__tests__/check-types.test.d.ts +2 -0
  165. package/dist/framework/__tests__/check-types.test.d.ts.map +1 -0
  166. package/dist/framework/__tests__/check-types.test.js +76 -0
  167. package/dist/framework/__tests__/check-types.test.js.map +1 -0
  168. package/dist/framework/__tests__/command-executor.test.d.ts +2 -0
  169. package/dist/framework/__tests__/command-executor.test.d.ts.map +1 -0
  170. package/dist/framework/__tests__/command-executor.test.js +110 -0
  171. package/dist/framework/__tests__/command-executor.test.js.map +1 -0
  172. package/dist/framework/__tests__/content-filter-dispatch.test.d.ts +2 -0
  173. package/dist/framework/__tests__/content-filter-dispatch.test.d.ts.map +1 -0
  174. package/dist/framework/__tests__/content-filter-dispatch.test.js +122 -0
  175. package/dist/framework/__tests__/content-filter-dispatch.test.js.map +1 -0
  176. package/dist/framework/__tests__/define-check.test.d.ts +2 -0
  177. package/dist/framework/__tests__/define-check.test.d.ts.map +1 -0
  178. package/dist/framework/__tests__/define-check.test.js +402 -0
  179. package/dist/framework/__tests__/define-check.test.js.map +1 -0
  180. package/dist/framework/__tests__/define-regex-list-check.test.d.ts +15 -0
  181. package/dist/framework/__tests__/define-regex-list-check.test.d.ts.map +1 -0
  182. package/dist/framework/__tests__/define-regex-list-check.test.js +299 -0
  183. package/dist/framework/__tests__/define-regex-list-check.test.js.map +1 -0
  184. package/dist/framework/__tests__/directive-inventory.test.d.ts +2 -0
  185. package/dist/framework/__tests__/directive-inventory.test.d.ts.map +1 -0
  186. package/dist/framework/__tests__/directive-inventory.test.js +111 -0
  187. package/dist/framework/__tests__/directive-inventory.test.js.map +1 -0
  188. package/dist/framework/__tests__/directive-parsing.test.d.ts +13 -0
  189. package/dist/framework/__tests__/directive-parsing.test.d.ts.map +1 -0
  190. package/dist/framework/__tests__/directive-parsing.test.js +86 -0
  191. package/dist/framework/__tests__/directive-parsing.test.js.map +1 -0
  192. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.d.ts +2 -0
  193. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.d.ts.map +1 -0
  194. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js +56 -0
  195. package/dist/framework/__tests__/execution-context.globalexcludes-parity.test.js.map +1 -0
  196. package/dist/framework/__tests__/execution-context.test.d.ts +2 -0
  197. package/dist/framework/__tests__/execution-context.test.d.ts.map +1 -0
  198. package/dist/framework/__tests__/execution-context.test.js +140 -0
  199. package/dist/framework/__tests__/execution-context.test.js.map +1 -0
  200. package/dist/framework/__tests__/file-accessor.test.d.ts +2 -0
  201. package/dist/framework/__tests__/file-accessor.test.d.ts.map +1 -0
  202. package/dist/framework/__tests__/file-accessor.test.js +106 -0
  203. package/dist/framework/__tests__/file-accessor.test.js.map +1 -0
  204. package/dist/framework/__tests__/file-cache.test.d.ts +2 -0
  205. package/dist/framework/__tests__/file-cache.test.d.ts.map +1 -0
  206. package/dist/framework/__tests__/file-cache.test.js +122 -0
  207. package/dist/framework/__tests__/file-cache.test.js.map +1 -0
  208. package/dist/framework/__tests__/file-type-filter.test.d.ts +9 -0
  209. package/dist/framework/__tests__/file-type-filter.test.d.ts.map +1 -0
  210. package/dist/framework/__tests__/file-type-filter.test.js +39 -0
  211. package/dist/framework/__tests__/file-type-filter.test.js.map +1 -0
  212. package/dist/framework/__tests__/ignore-processing.test.d.ts +11 -0
  213. package/dist/framework/__tests__/ignore-processing.test.d.ts.map +1 -0
  214. package/dist/framework/__tests__/ignore-processing.test.js +175 -0
  215. package/dist/framework/__tests__/ignore-processing.test.js.map +1 -0
  216. package/dist/framework/__tests__/import-graph.test.d.ts +15 -0
  217. package/dist/framework/__tests__/import-graph.test.d.ts.map +1 -0
  218. package/dist/framework/__tests__/import-graph.test.js +164 -0
  219. package/dist/framework/__tests__/import-graph.test.js.map +1 -0
  220. package/dist/framework/__tests__/memory-profiler.test.d.ts +9 -0
  221. package/dist/framework/__tests__/memory-profiler.test.d.ts.map +1 -0
  222. package/dist/framework/__tests__/memory-profiler.test.js +108 -0
  223. package/dist/framework/__tests__/memory-profiler.test.js.map +1 -0
  224. package/dist/framework/__tests__/parse-cache.test.d.ts +9 -0
  225. package/dist/framework/__tests__/parse-cache.test.d.ts.map +1 -0
  226. package/dist/framework/__tests__/parse-cache.test.js +51 -0
  227. package/dist/framework/__tests__/parse-cache.test.js.map +1 -0
  228. package/dist/framework/__tests__/path-matcher.test.d.ts +2 -0
  229. package/dist/framework/__tests__/path-matcher.test.d.ts.map +1 -0
  230. package/dist/framework/__tests__/path-matcher.test.js +113 -0
  231. package/dist/framework/__tests__/path-matcher.test.js.map +1 -0
  232. package/dist/framework/__tests__/register-helpers.test.d.ts +2 -0
  233. package/dist/framework/__tests__/register-helpers.test.d.ts.map +1 -0
  234. package/dist/framework/__tests__/register-helpers.test.js +51 -0
  235. package/dist/framework/__tests__/register-helpers.test.js.map +1 -0
  236. package/dist/framework/__tests__/registry.test.d.ts +2 -0
  237. package/dist/framework/__tests__/registry.test.d.ts.map +1 -0
  238. package/dist/framework/__tests__/registry.test.js +211 -0
  239. package/dist/framework/__tests__/registry.test.js.map +1 -0
  240. package/dist/framework/__tests__/result-builder.test.d.ts +2 -0
  241. package/dist/framework/__tests__/result-builder.test.d.ts.map +1 -0
  242. package/dist/framework/__tests__/result-builder.test.js +153 -0
  243. package/dist/framework/__tests__/result-builder.test.js.map +1 -0
  244. package/dist/framework/__tests__/scope-registry.test.d.ts +8 -0
  245. package/dist/framework/__tests__/scope-registry.test.d.ts.map +1 -0
  246. package/dist/framework/__tests__/scope-registry.test.js +156 -0
  247. package/dist/framework/__tests__/scope-registry.test.js.map +1 -0
  248. package/dist/framework/__tests__/scope-resolver.golden.test.d.ts +2 -0
  249. package/dist/framework/__tests__/scope-resolver.golden.test.d.ts.map +1 -0
  250. package/dist/framework/__tests__/scope-resolver.golden.test.js +105 -0
  251. package/dist/framework/__tests__/scope-resolver.golden.test.js.map +1 -0
  252. package/dist/framework/__tests__/scope-resolver.test.d.ts +2 -0
  253. package/dist/framework/__tests__/scope-resolver.test.d.ts.map +1 -0
  254. package/dist/framework/__tests__/scope-resolver.test.js +150 -0
  255. package/dist/framework/__tests__/scope-resolver.test.js.map +1 -0
  256. package/dist/framework/__tests__/severity-mapping.test.d.ts +2 -0
  257. package/dist/framework/__tests__/severity-mapping.test.d.ts.map +1 -0
  258. package/dist/framework/__tests__/severity-mapping.test.js +74 -0
  259. package/dist/framework/__tests__/severity-mapping.test.js.map +1 -0
  260. package/dist/framework/__tests__/strip-literals.test.d.ts +2 -0
  261. package/dist/framework/__tests__/strip-literals.test.d.ts.map +1 -0
  262. package/dist/framework/__tests__/strip-literals.test.js +87 -0
  263. package/dist/framework/__tests__/strip-literals.test.js.map +1 -0
  264. package/dist/framework/abortable-exec.d.ts +34 -0
  265. package/dist/framework/abortable-exec.d.ts.map +1 -0
  266. package/dist/framework/abortable-exec.js +143 -0
  267. package/dist/framework/abortable-exec.js.map +1 -0
  268. package/dist/framework/check-config.d.ts +175 -0
  269. package/dist/framework/check-config.d.ts.map +1 -0
  270. package/dist/framework/check-config.js +115 -0
  271. package/dist/framework/check-config.js.map +1 -0
  272. package/dist/framework/check-types.d.ts +82 -0
  273. package/dist/framework/check-types.d.ts.map +1 -0
  274. package/dist/framework/check-types.js +63 -0
  275. package/dist/framework/check-types.js.map +1 -0
  276. package/dist/framework/command-executor.d.ts +25 -0
  277. package/dist/framework/command-executor.d.ts.map +1 -0
  278. package/dist/framework/command-executor.js +63 -0
  279. package/dist/framework/command-executor.js.map +1 -0
  280. package/dist/framework/comment-openers.d.ts +11 -0
  281. package/dist/framework/comment-openers.d.ts.map +1 -0
  282. package/dist/framework/comment-openers.js +11 -0
  283. package/dist/framework/comment-openers.js.map +1 -0
  284. package/dist/framework/constants.d.ts +9 -0
  285. package/dist/framework/constants.d.ts.map +1 -0
  286. package/dist/framework/constants.js +16 -0
  287. package/dist/framework/constants.js.map +1 -0
  288. package/dist/framework/define-check.d.ts +38 -0
  289. package/dist/framework/define-check.d.ts.map +1 -0
  290. package/dist/framework/define-check.js +296 -0
  291. package/dist/framework/define-check.js.map +1 -0
  292. package/dist/framework/define-regex-list-check.d.ts +160 -0
  293. package/dist/framework/define-regex-list-check.d.ts.map +1 -0
  294. package/dist/framework/define-regex-list-check.js +177 -0
  295. package/dist/framework/define-regex-list-check.js.map +1 -0
  296. package/dist/framework/directive-inventory.d.ts +37 -0
  297. package/dist/framework/directive-inventory.d.ts.map +1 -0
  298. package/dist/framework/directive-inventory.js +82 -0
  299. package/dist/framework/directive-inventory.js.map +1 -0
  300. package/dist/framework/directive-parsing.d.ts +23 -0
  301. package/dist/framework/directive-parsing.d.ts.map +1 -0
  302. package/dist/framework/directive-parsing.js +39 -0
  303. package/dist/framework/directive-parsing.js.map +1 -0
  304. package/dist/framework/execution-context.d.ts +98 -0
  305. package/dist/framework/execution-context.d.ts.map +1 -0
  306. package/dist/framework/execution-context.js +145 -0
  307. package/dist/framework/execution-context.js.map +1 -0
  308. package/dist/framework/file-accessor.d.ts +20 -0
  309. package/dist/framework/file-accessor.d.ts.map +1 -0
  310. package/dist/framework/file-accessor.js +122 -0
  311. package/dist/framework/file-accessor.js.map +1 -0
  312. package/dist/framework/file-cache.d.ts +70 -0
  313. package/dist/framework/file-cache.d.ts.map +1 -0
  314. package/dist/framework/file-cache.js +199 -0
  315. package/dist/framework/file-cache.js.map +1 -0
  316. package/dist/framework/file-type-filter.d.ts +11 -0
  317. package/dist/framework/file-type-filter.d.ts.map +1 -0
  318. package/dist/framework/file-type-filter.js +21 -0
  319. package/dist/framework/file-type-filter.js.map +1 -0
  320. package/dist/framework/ignore-processing.d.ts +36 -0
  321. package/dist/framework/ignore-processing.d.ts.map +1 -0
  322. package/dist/framework/ignore-processing.js +172 -0
  323. package/dist/framework/ignore-processing.js.map +1 -0
  324. package/dist/framework/import-graph.d.ts +51 -0
  325. package/dist/framework/import-graph.d.ts.map +1 -0
  326. package/dist/framework/import-graph.js +217 -0
  327. package/dist/framework/import-graph.js.map +1 -0
  328. package/dist/framework/memory-profiler.d.ts +53 -0
  329. package/dist/framework/memory-profiler.d.ts.map +1 -0
  330. package/dist/framework/memory-profiler.js +92 -0
  331. package/dist/framework/memory-profiler.js.map +1 -0
  332. package/dist/framework/parse-cache.d.ts +24 -0
  333. package/dist/framework/parse-cache.d.ts.map +1 -0
  334. package/dist/framework/parse-cache.js +41 -0
  335. package/dist/framework/parse-cache.js.map +1 -0
  336. package/dist/framework/path-matcher.d.ts +86 -0
  337. package/dist/framework/path-matcher.d.ts.map +1 -0
  338. package/dist/framework/path-matcher.js +138 -0
  339. package/dist/framework/path-matcher.js.map +1 -0
  340. package/dist/framework/register-helpers.d.ts +11 -0
  341. package/dist/framework/register-helpers.d.ts.map +1 -0
  342. package/dist/framework/register-helpers.js +19 -0
  343. package/dist/framework/register-helpers.js.map +1 -0
  344. package/dist/framework/registry.d.ts +51 -0
  345. package/dist/framework/registry.d.ts.map +1 -0
  346. package/dist/framework/registry.js +131 -0
  347. package/dist/framework/registry.js.map +1 -0
  348. package/dist/framework/result-builder.d.ts +74 -0
  349. package/dist/framework/result-builder.d.ts.map +1 -0
  350. package/dist/framework/result-builder.js +154 -0
  351. package/dist/framework/result-builder.js.map +1 -0
  352. package/dist/framework/scope-registry.d.ts +38 -0
  353. package/dist/framework/scope-registry.d.ts.map +1 -0
  354. package/dist/framework/scope-registry.js +77 -0
  355. package/dist/framework/scope-registry.js.map +1 -0
  356. package/dist/framework/scope-resolver.d.ts +23 -0
  357. package/dist/framework/scope-resolver.d.ts.map +1 -0
  358. package/dist/framework/scope-resolver.js +102 -0
  359. package/dist/framework/scope-resolver.js.map +1 -0
  360. package/dist/framework/severity-mapping.d.ts +17 -0
  361. package/dist/framework/severity-mapping.d.ts.map +1 -0
  362. package/dist/framework/severity-mapping.js +71 -0
  363. package/dist/framework/severity-mapping.js.map +1 -0
  364. package/dist/framework/strip-literals.d.ts +73 -0
  365. package/dist/framework/strip-literals.d.ts.map +1 -0
  366. package/dist/framework/strip-literals.js +213 -0
  367. package/dist/framework/strip-literals.js.map +1 -0
  368. package/dist/index.d.ts +47 -0
  369. package/dist/index.d.ts.map +1 -0
  370. package/dist/index.js +64 -0
  371. package/dist/index.js.map +1 -0
  372. package/dist/internal.d.ts +17 -0
  373. package/dist/internal.d.ts.map +1 -0
  374. package/dist/internal.js +17 -0
  375. package/dist/internal.js.map +1 -0
  376. package/dist/persistence/session-payload.d.ts +68 -0
  377. package/dist/persistence/session-payload.d.ts.map +1 -0
  378. package/dist/persistence/session-payload.js +78 -0
  379. package/dist/persistence/session-payload.js.map +1 -0
  380. package/dist/persistence/session-payload.test.d.ts +11 -0
  381. package/dist/persistence/session-payload.test.d.ts.map +1 -0
  382. package/dist/persistence/session-payload.test.js +80 -0
  383. package/dist/persistence/session-payload.test.js.map +1 -0
  384. package/dist/persistence/session-replay.d.ts +14 -0
  385. package/dist/persistence/session-replay.d.ts.map +1 -0
  386. package/dist/persistence/session-replay.js +85 -0
  387. package/dist/persistence/session-replay.js.map +1 -0
  388. package/dist/persistence/session-replay.test.d.ts +10 -0
  389. package/dist/persistence/session-replay.test.d.ts.map +1 -0
  390. package/dist/persistence/session-replay.test.js +171 -0
  391. package/dist/persistence/session-replay.test.js.map +1 -0
  392. package/dist/plugins/__tests__/check-package-discovery.test.d.ts +2 -0
  393. package/dist/plugins/__tests__/check-package-discovery.test.d.ts.map +1 -0
  394. package/dist/plugins/__tests__/check-package-discovery.test.js +48 -0
  395. package/dist/plugins/__tests__/check-package-discovery.test.js.map +1 -0
  396. package/dist/plugins/__tests__/lang-domain.test.d.ts +2 -0
  397. package/dist/plugins/__tests__/lang-domain.test.d.ts.map +1 -0
  398. package/dist/plugins/__tests__/lang-domain.test.js +192 -0
  399. package/dist/plugins/__tests__/lang-domain.test.js.map +1 -0
  400. package/dist/plugins/__tests__/loader.test.d.ts +2 -0
  401. package/dist/plugins/__tests__/loader.test.d.ts.map +1 -0
  402. package/dist/plugins/__tests__/loader.test.js +271 -0
  403. package/dist/plugins/__tests__/loader.test.js.map +1 -0
  404. package/dist/plugins/check-package-discovery.d.ts +19 -0
  405. package/dist/plugins/check-package-discovery.d.ts.map +1 -0
  406. package/dist/plugins/check-package-discovery.js +34 -0
  407. package/dist/plugins/check-package-discovery.js.map +1 -0
  408. package/dist/plugins/loader.d.ts +32 -0
  409. package/dist/plugins/loader.d.ts.map +1 -0
  410. package/dist/plugins/loader.js +198 -0
  411. package/dist/plugins/loader.js.map +1 -0
  412. package/dist/plugins/types.d.ts +29 -0
  413. package/dist/plugins/types.d.ts.map +1 -0
  414. package/dist/plugins/types.js +9 -0
  415. package/dist/plugins/types.js.map +1 -0
  416. package/dist/recipes/__tests__/built-in-recipes.test.d.ts +2 -0
  417. package/dist/recipes/__tests__/built-in-recipes.test.d.ts.map +1 -0
  418. package/dist/recipes/__tests__/built-in-recipes.test.js +93 -0
  419. package/dist/recipes/__tests__/built-in-recipes.test.js.map +1 -0
  420. package/dist/recipes/__tests__/check-config.test.d.ts +12 -0
  421. package/dist/recipes/__tests__/check-config.test.d.ts.map +1 -0
  422. package/dist/recipes/__tests__/check-config.test.js +90 -0
  423. package/dist/recipes/__tests__/check-config.test.js.map +1 -0
  424. package/dist/recipes/__tests__/check-resolution.test.d.ts +2 -0
  425. package/dist/recipes/__tests__/check-resolution.test.d.ts.map +1 -0
  426. package/dist/recipes/__tests__/check-resolution.test.js +160 -0
  427. package/dist/recipes/__tests__/check-resolution.test.js.map +1 -0
  428. package/dist/recipes/__tests__/execution-branches.test.d.ts +10 -0
  429. package/dist/recipes/__tests__/execution-branches.test.d.ts.map +1 -0
  430. package/dist/recipes/__tests__/execution-branches.test.js +612 -0
  431. package/dist/recipes/__tests__/execution-branches.test.js.map +1 -0
  432. package/dist/recipes/__tests__/execution-paths.test.d.ts +10 -0
  433. package/dist/recipes/__tests__/execution-paths.test.d.ts.map +1 -0
  434. package/dist/recipes/__tests__/execution-paths.test.js +280 -0
  435. package/dist/recipes/__tests__/execution-paths.test.js.map +1 -0
  436. package/dist/recipes/__tests__/registry.test.d.ts +2 -0
  437. package/dist/recipes/__tests__/registry.test.d.ts.map +1 -0
  438. package/dist/recipes/__tests__/registry.test.js +89 -0
  439. package/dist/recipes/__tests__/registry.test.js.map +1 -0
  440. package/dist/recipes/__tests__/retry.test.d.ts +2 -0
  441. package/dist/recipes/__tests__/retry.test.d.ts.map +1 -0
  442. package/dist/recipes/__tests__/retry.test.js +75 -0
  443. package/dist/recipes/__tests__/retry.test.js.map +1 -0
  444. package/dist/recipes/__tests__/run-one-check.test.d.ts +14 -0
  445. package/dist/recipes/__tests__/run-one-check.test.d.ts.map +1 -0
  446. package/dist/recipes/__tests__/run-one-check.test.js +182 -0
  447. package/dist/recipes/__tests__/run-one-check.test.js.map +1 -0
  448. package/dist/recipes/__tests__/service.test.d.ts +11 -0
  449. package/dist/recipes/__tests__/service.test.d.ts.map +1 -0
  450. package/dist/recipes/__tests__/service.test.js +572 -0
  451. package/dist/recipes/__tests__/service.test.js.map +1 -0
  452. package/dist/recipes/built-in-recipes.d.ts +14 -0
  453. package/dist/recipes/built-in-recipes.d.ts.map +1 -0
  454. package/dist/recipes/built-in-recipes.js +241 -0
  455. package/dist/recipes/built-in-recipes.js.map +1 -0
  456. package/dist/recipes/check-config.d.ts +56 -0
  457. package/dist/recipes/check-config.d.ts.map +1 -0
  458. package/dist/recipes/check-config.js +61 -0
  459. package/dist/recipes/check-config.js.map +1 -0
  460. package/dist/recipes/check-resolution.d.ts +36 -0
  461. package/dist/recipes/check-resolution.d.ts.map +1 -0
  462. package/dist/recipes/check-resolution.js +81 -0
  463. package/dist/recipes/check-resolution.js.map +1 -0
  464. package/dist/recipes/check-result-processor.d.ts +51 -0
  465. package/dist/recipes/check-result-processor.d.ts.map +1 -0
  466. package/dist/recipes/check-result-processor.js +197 -0
  467. package/dist/recipes/check-result-processor.js.map +1 -0
  468. package/dist/recipes/parallel-execution.d.ts +38 -0
  469. package/dist/recipes/parallel-execution.d.ts.map +1 -0
  470. package/dist/recipes/parallel-execution.js +61 -0
  471. package/dist/recipes/parallel-execution.js.map +1 -0
  472. package/dist/recipes/registry.d.ts +47 -0
  473. package/dist/recipes/registry.d.ts.map +1 -0
  474. package/dist/recipes/registry.js +70 -0
  475. package/dist/recipes/registry.js.map +1 -0
  476. package/dist/recipes/retry.d.ts +29 -0
  477. package/dist/recipes/retry.d.ts.map +1 -0
  478. package/dist/recipes/retry.js +23 -0
  479. package/dist/recipes/retry.js.map +1 -0
  480. package/dist/recipes/run-one-check.d.ts +59 -0
  481. package/dist/recipes/run-one-check.d.ts.map +1 -0
  482. package/dist/recipes/run-one-check.js +174 -0
  483. package/dist/recipes/run-one-check.js.map +1 -0
  484. package/dist/recipes/sequential-execution.d.ts +12 -0
  485. package/dist/recipes/sequential-execution.d.ts.map +1 -0
  486. package/dist/recipes/sequential-execution.js +48 -0
  487. package/dist/recipes/sequential-execution.js.map +1 -0
  488. package/dist/recipes/service-types.d.ts +87 -0
  489. package/dist/recipes/service-types.d.ts.map +1 -0
  490. package/dist/recipes/service-types.js +8 -0
  491. package/dist/recipes/service-types.js.map +1 -0
  492. package/dist/recipes/service.d.ts +73 -0
  493. package/dist/recipes/service.d.ts.map +1 -0
  494. package/dist/recipes/service.js +438 -0
  495. package/dist/recipes/service.js.map +1 -0
  496. package/dist/recipes/types.d.ts +155 -0
  497. package/dist/recipes/types.d.ts.map +1 -0
  498. package/dist/recipes/types.js +56 -0
  499. package/dist/recipes/types.js.map +1 -0
  500. package/dist/scaffold/config-block.d.ts +17 -0
  501. package/dist/scaffold/config-block.d.ts.map +1 -0
  502. package/dist/scaffold/config-block.js +30 -0
  503. package/dist/scaffold/config-block.js.map +1 -0
  504. package/dist/scaffold/examples.d.ts +30 -0
  505. package/dist/scaffold/examples.d.ts.map +1 -0
  506. package/dist/scaffold/examples.js +129 -0
  507. package/dist/scaffold/examples.js.map +1 -0
  508. package/dist/scope-augmentation.d.ts +77 -0
  509. package/dist/scope-augmentation.d.ts.map +1 -0
  510. package/dist/scope-augmentation.js +31 -0
  511. package/dist/scope-augmentation.js.map +1 -0
  512. package/dist/signalers/__tests__/loader.test.d.ts +2 -0
  513. package/dist/signalers/__tests__/loader.test.d.ts.map +1 -0
  514. package/dist/signalers/__tests__/loader.test.js +141 -0
  515. package/dist/signalers/__tests__/loader.test.js.map +1 -0
  516. package/dist/signalers/__tests__/violation-to-signal.test.d.ts +2 -0
  517. package/dist/signalers/__tests__/violation-to-signal.test.d.ts.map +1 -0
  518. package/dist/signalers/__tests__/violation-to-signal.test.js +59 -0
  519. package/dist/signalers/__tests__/violation-to-signal.test.js.map +1 -0
  520. package/dist/signalers/index.d.ts +8 -0
  521. package/dist/signalers/index.d.ts.map +1 -0
  522. package/dist/signalers/index.js +9 -0
  523. package/dist/signalers/index.js.map +1 -0
  524. package/dist/signalers/loader.d.ts +30 -0
  525. package/dist/signalers/loader.d.ts.map +1 -0
  526. package/dist/signalers/loader.js +120 -0
  527. package/dist/signalers/loader.js.map +1 -0
  528. package/dist/signalers/schema.d.ts +60 -0
  529. package/dist/signalers/schema.d.ts.map +1 -0
  530. package/dist/signalers/schema.js +74 -0
  531. package/dist/signalers/schema.js.map +1 -0
  532. package/dist/signalers/types.d.ts +13 -0
  533. package/dist/signalers/types.d.ts.map +1 -0
  534. package/dist/signalers/types.js +5 -0
  535. package/dist/signalers/types.js.map +1 -0
  536. package/dist/signalers/violation-to-signal.d.ts +38 -0
  537. package/dist/signalers/violation-to-signal.d.ts.map +1 -0
  538. package/dist/signalers/violation-to-signal.js +43 -0
  539. package/dist/signalers/violation-to-signal.js.map +1 -0
  540. package/dist/targets/__tests__/loader.test.d.ts +2 -0
  541. package/dist/targets/__tests__/loader.test.d.ts.map +1 -0
  542. package/dist/targets/__tests__/loader.test.js +190 -0
  543. package/dist/targets/__tests__/loader.test.js.map +1 -0
  544. package/dist/targets/__tests__/target-registry.test.d.ts +2 -0
  545. package/dist/targets/__tests__/target-registry.test.d.ts.map +1 -0
  546. package/dist/targets/__tests__/target-registry.test.js +182 -0
  547. package/dist/targets/__tests__/target-registry.test.js.map +1 -0
  548. package/dist/targets/index.d.ts +18 -0
  549. package/dist/targets/index.d.ts.map +1 -0
  550. package/dist/targets/index.js +21 -0
  551. package/dist/targets/index.js.map +1 -0
  552. package/dist/targets/loader.d.ts +27 -0
  553. package/dist/targets/loader.d.ts.map +1 -0
  554. package/dist/targets/loader.js +178 -0
  555. package/dist/targets/loader.js.map +1 -0
  556. package/dist/targets/target-registry.d.ts +41 -0
  557. package/dist/targets/target-registry.d.ts.map +1 -0
  558. package/dist/targets/target-registry.js +71 -0
  559. package/dist/targets/target-registry.js.map +1 -0
  560. package/dist/targets/types.d.ts +14 -0
  561. package/dist/targets/types.d.ts.map +1 -0
  562. package/dist/targets/types.js +14 -0
  563. package/dist/targets/types.js.map +1 -0
  564. package/dist/tool.d.ts +61 -0
  565. package/dist/tool.d.ts.map +1 -0
  566. package/dist/tool.js +260 -0
  567. package/dist/tool.js.map +1 -0
  568. package/dist/types/findings.d.ts +113 -0
  569. package/dist/types/findings.d.ts.map +1 -0
  570. package/dist/types/findings.js +89 -0
  571. package/dist/types/findings.js.map +1 -0
  572. package/dist/types/severity.d.ts +15 -0
  573. package/dist/types/severity.d.ts.map +1 -0
  574. package/dist/types/severity.js +33 -0
  575. package/dist/types/severity.js.map +1 -0
  576. package/package.json +137 -0
@@ -0,0 +1,241 @@
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-skipped-tests',
44
+ ],
45
+ },
46
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 15_000 },
47
+ reporting: { format: 'table', verbose: false },
48
+ tags: ['fast', 'smoke', 'critical'],
49
+ });
50
+ // =============================================================================
51
+ // BACKEND RECIPE
52
+ // =============================================================================
53
+ /** Backend recipe: architecture, resilience, and quality checks for server code */
54
+ const backendRecipe = defineRecipe({
55
+ name: 'backend',
56
+ displayName: 'Backend',
57
+ description: 'Backend-focused checks (architecture, resilience, quality)',
58
+ checks: {
59
+ type: 'pattern',
60
+ include: [
61
+ 'architecture/*',
62
+ 'resilience/*',
63
+ 'quality/*-backend',
64
+ 'quality/fastify-*',
65
+ 'quality/database-*',
66
+ 'quality/pino-*',
67
+ 'quality/logging-*',
68
+ 'quality/correlation-*',
69
+ 'quality/no-console-log',
70
+ 'quality/result-pattern-*',
71
+ 'quality/api-*',
72
+ 'quality/null-safety',
73
+ 'quality/no-any-types',
74
+ 'quality/file-headers',
75
+ 'quality/concurrency-safety',
76
+ 'quality/error-swallowing-*',
77
+ 'security/*',
78
+ 'testing/*',
79
+ ],
80
+ exclude: ['quality/*-frontend', 'testing/*-frontend'],
81
+ },
82
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
83
+ reporting: { format: 'table', verbose: false },
84
+ tags: ['backend', 'server', 'api'],
85
+ });
86
+ // =============================================================================
87
+ // FRONTEND RECIPE
88
+ // =============================================================================
89
+ /** Frontend recipe: React and accessibility checks for UI code */
90
+ const frontendRecipe = defineRecipe({
91
+ name: 'frontend',
92
+ displayName: 'Frontend',
93
+ description: 'Frontend-focused checks (React, accessibility)',
94
+ checks: {
95
+ type: 'pattern',
96
+ include: [
97
+ 'quality/*-frontend',
98
+ 'quality/navigation-*',
99
+ 'quality/theme-*',
100
+ 'quality/image-*',
101
+ 'quality/async-state-*',
102
+ 'quality/no-any-types',
103
+ 'quality/null-safety',
104
+ 'architecture/heavy-import-detection',
105
+ 'testing/no-skipped-tests',
106
+ 'testing/*-frontend',
107
+ ],
108
+ exclude: ['quality/*-backend', 'testing/*-backend'],
109
+ },
110
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
111
+ reporting: { format: 'table', verbose: false },
112
+ tags: ['frontend', 'react', 'ui'],
113
+ });
114
+ // =============================================================================
115
+ // SECURITY RECIPE
116
+ // =============================================================================
117
+ /** Security recipe: comprehensive security audit checks */
118
+ const securityRecipe = defineRecipe({
119
+ name: 'security',
120
+ displayName: 'Security Audit',
121
+ description: 'Comprehensive security analysis',
122
+ checks: {
123
+ type: 'pattern',
124
+ include: [
125
+ 'security/*',
126
+ 'quality/pii-*',
127
+ 'quality/dependency-security-*',
128
+ 'quality/centralized-input-*',
129
+ 'quality/security-*',
130
+ 'quality/no-console-log',
131
+ 'resilience/no-custom-cache',
132
+ 'resilience/no-custom-rate-limiter',
133
+ 'resilience/context-leakage',
134
+ ],
135
+ },
136
+ execution: { mode: 'sequential', stopOnFirstFailure: false, timeout: 60_000 },
137
+ reporting: { format: 'table', verbose: true },
138
+ tags: ['security', 'audit', 'comprehensive'],
139
+ });
140
+ // =============================================================================
141
+ // PRE-COMMIT RECIPE
142
+ // =============================================================================
143
+ /** Pre-commit recipe: fast checks suitable for git pre-commit hooks */
144
+ const preCommitRecipe = defineRecipe({
145
+ name: 'pre-commit',
146
+ displayName: 'Pre-Commit',
147
+ description: 'Fast checks for git pre-commit hooks',
148
+ checks: {
149
+ type: 'explicit',
150
+ checkIds: [
151
+ 'no-console-log',
152
+ 'no-any-types',
153
+ 'no-hardcoded-secrets',
154
+ 'detached-promises',
155
+ 'no-skipped-tests',
156
+ ],
157
+ },
158
+ execution: { mode: 'parallel', stopOnFirstFailure: true, timeout: 10_000 },
159
+ reporting: { format: 'table', verbose: false },
160
+ tags: ['fast', 'hook', 'pre-commit'],
161
+ });
162
+ // =============================================================================
163
+ // PRE-RELEASE RECIPE
164
+ // =============================================================================
165
+ /** Pre-release recipe: comprehensive checks run before a release */
166
+ const preReleaseRecipe = defineRecipe({
167
+ name: 'pre-release',
168
+ displayName: 'Pre-Release',
169
+ description: 'Comprehensive checks before release',
170
+ checks: { type: 'all' },
171
+ execution: { mode: 'sequential', stopOnFirstFailure: false, timeout: 120_000 },
172
+ reporting: { format: 'unified', verbose: true },
173
+ tags: ['comprehensive', 'release', 'thorough'],
174
+ });
175
+ // =============================================================================
176
+ // NIGHTLY FULL RECIPE
177
+ // =============================================================================
178
+ /** Nightly full recipe: complete check suite for scheduled nightly runs */
179
+ const nightlyFullRecipe = defineRecipe({
180
+ name: 'nightly-full',
181
+ displayName: 'Nightly Full',
182
+ description: 'Complete suite for nightly scheduled runs',
183
+ checks: { type: 'all' },
184
+ execution: {
185
+ mode: 'parallel',
186
+ stopOnFirstFailure: false,
187
+ timeout: 300_000,
188
+ maxParallel: DEFAULT_MAX_PARALLEL,
189
+ },
190
+ reporting: { format: 'unified', verbose: true, outputPath: 'fitness-nightly-report.json' },
191
+ tags: ['nightly', 'comprehensive', 'scheduled'],
192
+ });
193
+ // =============================================================================
194
+ // CI RECIPE
195
+ // =============================================================================
196
+ /** CI recipe: optimized for CI pipelines with JSON output */
197
+ const ciRecipe = defineRecipe({
198
+ name: 'ci',
199
+ displayName: 'CI',
200
+ description: 'Optimized for CI pipelines with JSON output',
201
+ checks: { type: 'all', exclude: ['testing/flaky-*', 'performance/*'] },
202
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 60_000 },
203
+ reporting: { format: 'json', verbose: false },
204
+ tags: ['ci', 'pipeline', 'automated'],
205
+ });
206
+ // =============================================================================
207
+ // ARCHITECTURE RECIPE
208
+ // =============================================================================
209
+ /** Architecture recipe: architecture validation and compliance checks */
210
+ const architectureRecipe = defineRecipe({
211
+ name: 'architecture',
212
+ displayName: 'Architecture Review',
213
+ description: 'Architecture validation and compliance',
214
+ checks: { type: 'tags', include: ['architecture'] },
215
+ execution: { mode: 'parallel', stopOnFirstFailure: false, timeout: 30_000 },
216
+ reporting: { format: 'table', verbose: true },
217
+ tags: ['architecture', 'structure'],
218
+ });
219
+ // =============================================================================
220
+ // EXPORTS
221
+ // =============================================================================
222
+ /** All built-in fitness recipes */
223
+ export const builtInRecipes = Object.freeze([
224
+ defaultRecipe,
225
+ quickSmokeRecipe,
226
+ backendRecipe,
227
+ frontendRecipe,
228
+ securityRecipe,
229
+ preCommitRecipe,
230
+ preReleaseRecipe,
231
+ nightlyFullRecipe,
232
+ ciRecipe,
233
+ architectureRecipe,
234
+ ]);
235
+ /** Map of built-in recipe name to recipe definition */
236
+ export const builtInRecipesByName = new Map(builtInRecipes.map((recipe) => [recipe.name, recipe]));
237
+ /** Check whether a recipe name corresponds to a built-in recipe */
238
+ export function isBuiltInRecipe(name) {
239
+ return builtInRecipesByName.has(name);
240
+ }
241
+ //# 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,56 @@
1
+ /**
2
+ * @fileoverview Per-check recipe configuration plumbing.
3
+ *
4
+ * These accessors are now thin aliases of the generic core accessors
5
+ * (`getUnitConfig` / `setCurrentRecipeUnitConfig` /
6
+ * `clearCurrentRecipeUnitConfig` in `@opensip-cli/core`); the fitness
7
+ * names are preserved because checks import `getCheckConfig` from the
8
+ * `@opensip-cli/fitness` barrel and the recipe service calls
9
+ * `setCurrentRecipeCheckConfig` / `clearCurrentRecipeCheckConfig`.
10
+ *
11
+ * Recipes can carry a `checks.config` map keyed by check slug. The recipe
12
+ * service projects this map into the current `RunScope`'s
13
+ * `recipeUnitConfig` slot before any check runs and clears it once the
14
+ * run completes. Individual checks read their slice via
15
+ * `getCheckConfig<T>(slug)` and merge it with their built-in defaults.
16
+ *
17
+ * Scope-bound (not module-bound) lookup is load-bearing — the runtime
18
+ * frequently has TWO copies of `@opensip-cli/fitness` loaded:
19
+ *
20
+ * 1. The CLI's bundled copy (running the recipe service).
21
+ * 2. The plugin pack's resolved copy (running the check, calling
22
+ * `getCheckConfig(slug)`).
23
+ *
24
+ * Each copy has its own module-scope state. The lookup routes through
25
+ * `currentScope()` from `@opensip-cli/core` (inside `getUnitConfig`) so
26
+ * the slot identity is bound to core — a single resolved copy in every
27
+ * npm graph — rather than to whichever fitness copy loaded first.
28
+ *
29
+ * Calling `getCheckConfig(...)` outside any `runWithScope` (e.g. unit
30
+ * tests that don't set up a scope) returns an empty object — the check's
31
+ * own defaults handle the empty case.
32
+ */
33
+ import type { RecipeCheckConfigMap } from './types.js';
34
+ import type { RunScope } from '@opensip-cli/core';
35
+ /**
36
+ * Read the per-check config slice for the given slug. Alias of core
37
+ * `getUnitConfig`. Returns an empty object when no recipe-config has been
38
+ * set or no entry exists — treat as "augmentation only" and merge with
39
+ * the check's own defaults.
40
+ *
41
+ * @typeParam T - The shape the calling check expects.
42
+ */
43
+ export declare function getCheckConfig<T extends Record<string, unknown>>(slug: string): T;
44
+ /**
45
+ * Replace the current scope's recipe config. Called by the recipe service
46
+ * at the start of a recipe run, before any check executes. Alias of core
47
+ * `setCurrentRecipeUnitConfig`.
48
+ */
49
+ export declare function setCurrentRecipeCheckConfig(scope: RunScope, config: RecipeCheckConfigMap | undefined): void;
50
+ /**
51
+ * Clear the current scope's recipe config. Called by the recipe service
52
+ * at the end of a recipe run (success or failure). Alias of core
53
+ * `clearCurrentRecipeUnitConfig`.
54
+ */
55
+ export declare function clearCurrentRecipeCheckConfig(scope: RunScope): void;
56
+ //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAQH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAEjF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,QAAQ,EACf,MAAM,EAAE,oBAAoB,GAAG,SAAS,GACvC,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEnE"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @fileoverview Per-check recipe configuration plumbing.
3
+ *
4
+ * These accessors are now thin aliases of the generic core accessors
5
+ * (`getUnitConfig` / `setCurrentRecipeUnitConfig` /
6
+ * `clearCurrentRecipeUnitConfig` in `@opensip-cli/core`); the fitness
7
+ * names are preserved because checks import `getCheckConfig` from the
8
+ * `@opensip-cli/fitness` barrel and the recipe service calls
9
+ * `setCurrentRecipeCheckConfig` / `clearCurrentRecipeCheckConfig`.
10
+ *
11
+ * Recipes can carry a `checks.config` map keyed by check slug. The recipe
12
+ * service projects this map into the current `RunScope`'s
13
+ * `recipeUnitConfig` slot before any check runs and clears it once the
14
+ * run completes. Individual checks read their slice via
15
+ * `getCheckConfig<T>(slug)` and merge it with their built-in defaults.
16
+ *
17
+ * Scope-bound (not module-bound) lookup is load-bearing — the runtime
18
+ * frequently has TWO copies of `@opensip-cli/fitness` loaded:
19
+ *
20
+ * 1. The CLI's bundled copy (running the recipe service).
21
+ * 2. The plugin pack's resolved copy (running the check, calling
22
+ * `getCheckConfig(slug)`).
23
+ *
24
+ * Each copy has its own module-scope state. The lookup routes through
25
+ * `currentScope()` from `@opensip-cli/core` (inside `getUnitConfig`) so
26
+ * the slot identity is bound to core — a single resolved copy in every
27
+ * npm graph — rather than to whichever fitness copy loaded first.
28
+ *
29
+ * Calling `getCheckConfig(...)` outside any `runWithScope` (e.g. unit
30
+ * tests that don't set up a scope) returns an empty object — the check's
31
+ * own defaults handle the empty case.
32
+ */
33
+ import { getUnitConfig, setCurrentRecipeUnitConfig, clearCurrentRecipeUnitConfig, } from '@opensip-cli/core';
34
+ /**
35
+ * Read the per-check config slice for the given slug. Alias of core
36
+ * `getUnitConfig`. Returns an empty object when no recipe-config has been
37
+ * set or no entry exists — treat as "augmentation only" and merge with
38
+ * the check's own defaults.
39
+ *
40
+ * @typeParam T - The shape the calling check expects.
41
+ */
42
+ export function getCheckConfig(slug) {
43
+ return getUnitConfig(slug);
44
+ }
45
+ /**
46
+ * Replace the current scope's recipe config. Called by the recipe service
47
+ * at the start of a recipe run, before any check executes. Alias of core
48
+ * `setCurrentRecipeUnitConfig`.
49
+ */
50
+ export function setCurrentRecipeCheckConfig(scope, config) {
51
+ setCurrentRecipeUnitConfig(scope, config);
52
+ }
53
+ /**
54
+ * Clear the current scope's recipe config. Called by the recipe service
55
+ * at the end of a recipe run (success or failure). Alias of core
56
+ * `clearCurrentRecipeUnitConfig`.
57
+ */
58
+ export function clearCurrentRecipeCheckConfig(scope) {
59
+ clearCurrentRecipeUnitConfig(scope);
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAK3B;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAoC,IAAY;IAC5E,OAAO,aAAa,CAAI,IAAI,CAAC,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAe,EACf,MAAwC;IAExC,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAe;IAC3D,4BAA4B,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @fileoverview Check resolution for fitness recipes.
3
+ *
4
+ * Resolves recipe check selectors (explicit / pattern / tags / all) into
5
+ * concrete check-key lists. The selection algorithm itself lives once in
6
+ * `@opensip-cli/core` (`resolveSelector`); this module wires fitness's
7
+ * registry, `minimatch`, and namespaced-slug reverse-lookup into it. The
8
+ * per-arm semantics are unchanged from the previous hand-rolled switch.
9
+ */
10
+ import type { CheckSelector } from './types.js';
11
+ import type { CheckRegistry } from '../framework/registry.js';
12
+ /**
13
+ * Resolve a CheckSelector to a list of check keys from the registry.
14
+ *
15
+ * Delegates to core's generic `resolveSelector`, supplying fitness's
16
+ * registry-backed hooks:
17
+ * - the universe is `registry.listSlugs()` (each key becomes a Registerable item);
18
+ * - `keysOf` is `buildMatchTargets` (key + bare slug + tag/slug targets);
19
+ * - the `pattern` / `all` matcher is `minimatch` (kept a fitness dependency);
20
+ * - `resolveExplicit` is the bare-slug → namespaced-key reverse lookup
21
+ * (mirrors the previous `resolveExplicitSelector`: exact key first, then
22
+ * `getBySlug` + `endsWith(':'+id)`);
23
+ * - the `tags` arm routes through core's built-in tag-set intersection over
24
+ * `check.config.tags` (`tagsOf` reads the registry), matching the previous
25
+ * `resolveTagsSelector` exactly.
26
+ */
27
+ export declare function resolveChecks(selector: CheckSelector, registry: CheckRegistry): readonly string[];
28
+ /** Result of validating check references against the registry */
29
+ interface CheckReferenceValidation {
30
+ valid: string[];
31
+ missing: string[];
32
+ }
33
+ /** Validate a list of check IDs against known IDs, returning valid and missing sets */
34
+ export declare function validateCheckReferences(checkIds: readonly string[], allCheckIds: readonly string[]): CheckReferenceValidation;
35
+ export {};
36
+ //# 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;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAwB9D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAqBjG;AAED,iEAAiE;AACjE,UAAU,wBAAwB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,wBAAwB,CAc1B"}
@@ -0,0 +1,81 @@
1
+ // @fitness-ignore-file batch-operation-limits -- iterates bounded collections (registry items / small analysis results)
2
+ /**
3
+ * @fileoverview Check resolution for fitness recipes.
4
+ *
5
+ * Resolves recipe check selectors (explicit / pattern / tags / all) into
6
+ * concrete check-key lists. The selection algorithm itself lives once in
7
+ * `@opensip-cli/core` (`resolveSelector`); this module wires fitness's
8
+ * registry, `minimatch`, and namespaced-slug reverse-lookup into it. The
9
+ * per-arm semantics are unchanged from the previous hand-rolled switch.
10
+ */
11
+ import { resolveSelector } from '@opensip-cli/core';
12
+ import { minimatch } from 'minimatch';
13
+ /**
14
+ * Build the glob match targets for a check key: the key itself, its bare
15
+ * slug (namespace stripped), and `tag/bareSlug` targets for each of the
16
+ * check's tags. This is fitness's `keysOf` accessor for the core resolver.
17
+ */
18
+ function buildMatchTargets(slug, registry) {
19
+ const targets = [slug];
20
+ // Extract bare slug from namespaced key (e.g., 'builtin:no-eval' → 'no-eval')
21
+ const bareSlug = slug.includes(':') ? slug.split(':').pop() : slug;
22
+ if (bareSlug !== slug)
23
+ targets.push(bareSlug);
24
+ if (registry) {
25
+ const check = registry.getBySlug(slug);
26
+ if (check?.config.tags) {
27
+ for (const tag of check.config.tags) {
28
+ targets.push(`${tag}/${bareSlug}`);
29
+ }
30
+ }
31
+ }
32
+ return targets;
33
+ }
34
+ /**
35
+ * Resolve a CheckSelector to a list of check keys from the registry.
36
+ *
37
+ * Delegates to core's generic `resolveSelector`, supplying fitness's
38
+ * registry-backed hooks:
39
+ * - the universe is `registry.listSlugs()` (each key becomes a Registerable item);
40
+ * - `keysOf` is `buildMatchTargets` (key + bare slug + tag/slug targets);
41
+ * - the `pattern` / `all` matcher is `minimatch` (kept a fitness dependency);
42
+ * - `resolveExplicit` is the bare-slug → namespaced-key reverse lookup
43
+ * (mirrors the previous `resolveExplicitSelector`: exact key first, then
44
+ * `getBySlug` + `endsWith(':'+id)`);
45
+ * - the `tags` arm routes through core's built-in tag-set intersection over
46
+ * `check.config.tags` (`tagsOf` reads the registry), matching the previous
47
+ * `resolveTagsSelector` exactly.
48
+ */
49
+ export function resolveChecks(selector, registry) {
50
+ const items = registry.listSlugs().map((key) => ({ id: key, name: key }));
51
+ const opts = {
52
+ keysOf: (item) => buildMatchTargets(item.id, registry),
53
+ tagsOf: (item) => registry.getBySlug(item.id)?.config.tags ?? [],
54
+ match: (target, pattern) => minimatch(target, pattern, { nocase: false }),
55
+ // Bare slug → namespaced-key reverse lookup; otherwise no resolution.
56
+ resolveExplicit: (id) => !id.includes(':') && registry.getBySlug(id)
57
+ ? (registry.listSlugs().find((s) => s.endsWith(`:${id}`)) ?? id)
58
+ : undefined,
59
+ };
60
+ // The core resolver reads the `explicit` arm's request list from `ids`;
61
+ // fitness's historical field is `checkIds`. Normalize at the boundary so
62
+ // recipe literals (`{ type: 'explicit', checkIds: [...] }`) stay valid.
63
+ const normalized = selector.type === 'explicit' ? { ...selector, ids: selector.checkIds } : selector;
64
+ return resolveSelector(normalized, items, opts).map((item) => item.id);
65
+ }
66
+ /** Validate a list of check IDs against known IDs, returning valid and missing sets */
67
+ export function validateCheckReferences(checkIds, allCheckIds) {
68
+ const existingSet = new Set(allCheckIds);
69
+ const valid = [];
70
+ const missing = [];
71
+ for (const id of checkIds) {
72
+ if (existingSet.has(id)) {
73
+ valid.push(id);
74
+ }
75
+ else {
76
+ missing.push(id);
77
+ }
78
+ }
79
+ return { valid, missing };
80
+ }
81
+ //# 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":"AACA;;;;;GAKG;AAIH,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG1F,OAAO,KAAK,EAEV,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMxD,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,6BAA6B,CAAC;IACzC,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,aAAa,EAAE,kBAAkB,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;CACrB;AAoGD,wGAAwG;AACxG,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,mBAAmB,GACzB,mBAAmB,CAiGrB;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,iBAAiB,GACvB,mBAAmB,CA2DrB"}