api-tests-coverage 1.0.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 (288) hide show
  1. package/README.md +703 -0
  2. package/config.yaml.example +227 -0
  3. package/dist/action/src/index.d.ts +2 -0
  4. package/dist/action/src/index.d.ts.map +1 -0
  5. package/dist/action/src/index.js +349 -0
  6. package/dist/action/src/prComment.d.ts +34 -0
  7. package/dist/action/src/prComment.d.ts.map +1 -0
  8. package/dist/action/src/prComment.js +146 -0
  9. package/dist/src/ast/astAnalysisOrchestrator.d.ts +36 -0
  10. package/dist/src/ast/astAnalysisOrchestrator.d.ts.map +1 -0
  11. package/dist/src/ast/astAnalysisOrchestrator.js +123 -0
  12. package/dist/src/ast/astTypes.d.ts +105 -0
  13. package/dist/src/ast/astTypes.d.ts.map +1 -0
  14. package/dist/src/ast/astTypes.js +9 -0
  15. package/dist/src/ast/languageAnalyzer.d.ts +46 -0
  16. package/dist/src/ast/languageAnalyzer.d.ts.map +1 -0
  17. package/dist/src/ast/languageAnalyzer.js +9 -0
  18. package/dist/src/ast/languageCapabilities.d.ts +24 -0
  19. package/dist/src/ast/languageCapabilities.d.ts.map +1 -0
  20. package/dist/src/ast/languageCapabilities.js +92 -0
  21. package/dist/src/ast/parseFile.d.ts +16 -0
  22. package/dist/src/ast/parseFile.d.ts.map +1 -0
  23. package/dist/src/ast/parseFile.js +65 -0
  24. package/dist/src/ast/parserRegistry.d.ts +39 -0
  25. package/dist/src/ast/parserRegistry.d.ts.map +1 -0
  26. package/dist/src/ast/parserRegistry.js +66 -0
  27. package/dist/src/buildSummary.d.ts +26 -0
  28. package/dist/src/buildSummary.d.ts.map +1 -0
  29. package/dist/src/buildSummary.js +193 -0
  30. package/dist/src/businessCoverage.d.ts +68 -0
  31. package/dist/src/businessCoverage.d.ts.map +1 -0
  32. package/dist/src/businessCoverage.js +290 -0
  33. package/dist/src/compatibilityCoverage.d.ts +83 -0
  34. package/dist/src/compatibilityCoverage.d.ts.map +1 -0
  35. package/dist/src/compatibilityCoverage.js +501 -0
  36. package/dist/src/config/defaultConfig.d.ts +9 -0
  37. package/dist/src/config/defaultConfig.d.ts.map +1 -0
  38. package/dist/src/config/defaultConfig.js +97 -0
  39. package/dist/src/config/index.d.ts +12 -0
  40. package/dist/src/config/index.d.ts.map +1 -0
  41. package/dist/src/config/index.js +37 -0
  42. package/dist/src/config/loadConfig.d.ts +29 -0
  43. package/dist/src/config/loadConfig.d.ts.map +1 -0
  44. package/dist/src/config/loadConfig.js +135 -0
  45. package/dist/src/config/mergeConfig.d.ts +15 -0
  46. package/dist/src/config/mergeConfig.d.ts.map +1 -0
  47. package/dist/src/config/mergeConfig.js +57 -0
  48. package/dist/src/config/schema.d.ts +15 -0
  49. package/dist/src/config/schema.d.ts.map +1 -0
  50. package/dist/src/config/schema.js +30 -0
  51. package/dist/src/config/types.d.ts +175 -0
  52. package/dist/src/config/types.d.ts.map +1 -0
  53. package/dist/src/config/types.js +9 -0
  54. package/dist/src/config/validateConfig.d.ts +22 -0
  55. package/dist/src/config/validateConfig.d.ts.map +1 -0
  56. package/dist/src/config/validateConfig.js +171 -0
  57. package/dist/src/config.d.ts +168 -0
  58. package/dist/src/config.d.ts.map +1 -0
  59. package/dist/src/config.js +204 -0
  60. package/dist/src/coverage/deep-analysis/callGraph.d.ts +67 -0
  61. package/dist/src/coverage/deep-analysis/callGraph.d.ts.map +1 -0
  62. package/dist/src/coverage/deep-analysis/callGraph.js +275 -0
  63. package/dist/src/coverage/deep-analysis/deepEndpointResolver.d.ts +23 -0
  64. package/dist/src/coverage/deep-analysis/deepEndpointResolver.d.ts.map +1 -0
  65. package/dist/src/coverage/deep-analysis/deepEndpointResolver.js +394 -0
  66. package/dist/src/coverage/deep-analysis/index.d.ts +17 -0
  67. package/dist/src/coverage/deep-analysis/index.d.ts.map +1 -0
  68. package/dist/src/coverage/deep-analysis/index.js +63 -0
  69. package/dist/src/coverage/deep-analysis/resolveAssertions.d.ts +60 -0
  70. package/dist/src/coverage/deep-analysis/resolveAssertions.d.ts.map +1 -0
  71. package/dist/src/coverage/deep-analysis/resolveAssertions.js +121 -0
  72. package/dist/src/coverage/deep-analysis/resolveConstants.d.ts +36 -0
  73. package/dist/src/coverage/deep-analysis/resolveConstants.d.ts.map +1 -0
  74. package/dist/src/coverage/deep-analysis/resolveConstants.js +92 -0
  75. package/dist/src/coverage/deep-analysis/resolveEnums.d.ts +55 -0
  76. package/dist/src/coverage/deep-analysis/resolveEnums.d.ts.map +1 -0
  77. package/dist/src/coverage/deep-analysis/resolveEnums.js +152 -0
  78. package/dist/src/coverage/deep-analysis/resolveMethodChains.d.ts +70 -0
  79. package/dist/src/coverage/deep-analysis/resolveMethodChains.d.ts.map +1 -0
  80. package/dist/src/coverage/deep-analysis/resolveMethodChains.js +152 -0
  81. package/dist/src/coverage/deep-analysis/resolvePaths.d.ts +80 -0
  82. package/dist/src/coverage/deep-analysis/resolvePaths.d.ts.map +1 -0
  83. package/dist/src/coverage/deep-analysis/resolvePaths.js +216 -0
  84. package/dist/src/coverage/deep-analysis/resolveRequestWrappers.d.ts +71 -0
  85. package/dist/src/coverage/deep-analysis/resolveRequestWrappers.d.ts.map +1 -0
  86. package/dist/src/coverage/deep-analysis/resolveRequestWrappers.js +226 -0
  87. package/dist/src/coverage/deep-analysis/symbolTable.d.ts +58 -0
  88. package/dist/src/coverage/deep-analysis/symbolTable.d.ts.map +1 -0
  89. package/dist/src/coverage/deep-analysis/symbolTable.js +230 -0
  90. package/dist/src/coverage/deep-analysis/types.d.ts +122 -0
  91. package/dist/src/coverage/deep-analysis/types.d.ts.map +1 -0
  92. package/dist/src/coverage/deep-analysis/types.js +21 -0
  93. package/dist/src/discovery/fileClassifier.d.ts +50 -0
  94. package/dist/src/discovery/fileClassifier.d.ts.map +1 -0
  95. package/dist/src/discovery/fileClassifier.js +238 -0
  96. package/dist/src/discovery/projectDiscovery.d.ts +66 -0
  97. package/dist/src/discovery/projectDiscovery.d.ts.map +1 -0
  98. package/dist/src/discovery/projectDiscovery.js +287 -0
  99. package/dist/src/endpointCoverage.d.ts +70 -0
  100. package/dist/src/endpointCoverage.d.ts.map +1 -0
  101. package/dist/src/endpointCoverage.js +381 -0
  102. package/dist/src/errorCoverage.d.ts +93 -0
  103. package/dist/src/errorCoverage.d.ts.map +1 -0
  104. package/dist/src/errorCoverage.js +698 -0
  105. package/dist/src/index.d.ts +3 -0
  106. package/dist/src/index.d.ts.map +1 -0
  107. package/dist/src/index.js +1441 -0
  108. package/dist/src/inference/businessRuleInference.d.ts +63 -0
  109. package/dist/src/inference/businessRuleInference.d.ts.map +1 -0
  110. package/dist/src/inference/businessRuleInference.js +268 -0
  111. package/dist/src/inference/integrationFlowInference.d.ts +56 -0
  112. package/dist/src/inference/integrationFlowInference.d.ts.map +1 -0
  113. package/dist/src/inference/integrationFlowInference.js +266 -0
  114. package/dist/src/integrationCoverage.d.ts +72 -0
  115. package/dist/src/integrationCoverage.d.ts.map +1 -0
  116. package/dist/src/integrationCoverage.js +317 -0
  117. package/dist/src/intelligence/index.d.ts +20 -0
  118. package/dist/src/intelligence/index.d.ts.map +1 -0
  119. package/dist/src/intelligence/index.js +105 -0
  120. package/dist/src/intelligence/linkageEngine.d.ts +20 -0
  121. package/dist/src/intelligence/linkageEngine.d.ts.map +1 -0
  122. package/dist/src/intelligence/linkageEngine.js +522 -0
  123. package/dist/src/intelligence/markdownReporter.d.ts +12 -0
  124. package/dist/src/intelligence/markdownReporter.d.ts.map +1 -0
  125. package/dist/src/intelligence/markdownReporter.js +265 -0
  126. package/dist/src/intelligence/riskScoring.d.ts +53 -0
  127. package/dist/src/intelligence/riskScoring.d.ts.map +1 -0
  128. package/dist/src/intelligence/riskScoring.js +181 -0
  129. package/dist/src/intelligence/types.d.ts +121 -0
  130. package/dist/src/intelligence/types.d.ts.map +1 -0
  131. package/dist/src/intelligence/types.js +8 -0
  132. package/dist/src/languageDetection.d.ts +100 -0
  133. package/dist/src/languageDetection.d.ts.map +1 -0
  134. package/dist/src/languageDetection.js +349 -0
  135. package/dist/src/languages/java/index.d.ts +16 -0
  136. package/dist/src/languages/java/index.d.ts.map +1 -0
  137. package/dist/src/languages/java/index.js +103 -0
  138. package/dist/src/languages/java/parser.d.ts +7 -0
  139. package/dist/src/languages/java/parser.d.ts.map +1 -0
  140. package/dist/src/languages/java/parser.js +50 -0
  141. package/dist/src/languages/java/semanticBuilder.d.ts +21 -0
  142. package/dist/src/languages/java/semanticBuilder.d.ts.map +1 -0
  143. package/dist/src/languages/java/semanticBuilder.js +358 -0
  144. package/dist/src/languages/javascript/annotationExtractor.d.ts +20 -0
  145. package/dist/src/languages/javascript/annotationExtractor.d.ts.map +1 -0
  146. package/dist/src/languages/javascript/annotationExtractor.js +94 -0
  147. package/dist/src/languages/javascript/assertionResolver.d.ts +18 -0
  148. package/dist/src/languages/javascript/assertionResolver.d.ts.map +1 -0
  149. package/dist/src/languages/javascript/assertionResolver.js +150 -0
  150. package/dist/src/languages/javascript/callResolver.d.ts +23 -0
  151. package/dist/src/languages/javascript/callResolver.d.ts.map +1 -0
  152. package/dist/src/languages/javascript/callResolver.js +236 -0
  153. package/dist/src/languages/javascript/httpInteractionExtractor.d.ts +23 -0
  154. package/dist/src/languages/javascript/httpInteractionExtractor.d.ts.map +1 -0
  155. package/dist/src/languages/javascript/httpInteractionExtractor.js +205 -0
  156. package/dist/src/languages/javascript/index.d.ts +20 -0
  157. package/dist/src/languages/javascript/index.d.ts.map +1 -0
  158. package/dist/src/languages/javascript/index.js +136 -0
  159. package/dist/src/languages/javascript/parser.d.ts +14 -0
  160. package/dist/src/languages/javascript/parser.d.ts.map +1 -0
  161. package/dist/src/languages/javascript/parser.js +38 -0
  162. package/dist/src/languages/javascript/symbolResolver.d.ts +31 -0
  163. package/dist/src/languages/javascript/symbolResolver.d.ts.map +1 -0
  164. package/dist/src/languages/javascript/symbolResolver.js +183 -0
  165. package/dist/src/languages/kotlin/index.d.ts +16 -0
  166. package/dist/src/languages/kotlin/index.d.ts.map +1 -0
  167. package/dist/src/languages/kotlin/index.js +151 -0
  168. package/dist/src/languages/kotlin/parser.d.ts +11 -0
  169. package/dist/src/languages/kotlin/parser.d.ts.map +1 -0
  170. package/dist/src/languages/kotlin/parser.js +74 -0
  171. package/dist/src/languages/python/index.d.ts +15 -0
  172. package/dist/src/languages/python/index.d.ts.map +1 -0
  173. package/dist/src/languages/python/index.js +293 -0
  174. package/dist/src/languages/ruby/index.d.ts +15 -0
  175. package/dist/src/languages/ruby/index.d.ts.map +1 -0
  176. package/dist/src/languages/ruby/index.js +274 -0
  177. package/dist/src/languages/shared/treeSitterUtils.d.ts +43 -0
  178. package/dist/src/languages/shared/treeSitterUtils.d.ts.map +1 -0
  179. package/dist/src/languages/shared/treeSitterUtils.js +100 -0
  180. package/dist/src/languages/typescript/index.d.ts +14 -0
  181. package/dist/src/languages/typescript/index.d.ts.map +1 -0
  182. package/dist/src/languages/typescript/index.js +25 -0
  183. package/dist/src/lib/index.d.ts +228 -0
  184. package/dist/src/lib/index.d.ts.map +1 -0
  185. package/dist/src/lib/index.js +486 -0
  186. package/dist/src/mcp/client/index.d.ts +37 -0
  187. package/dist/src/mcp/client/index.d.ts.map +1 -0
  188. package/dist/src/mcp/client/index.js +235 -0
  189. package/dist/src/mcp/config.d.ts +50 -0
  190. package/dist/src/mcp/config.d.ts.map +1 -0
  191. package/dist/src/mcp/config.js +125 -0
  192. package/dist/src/mcp/events.d.ts +24 -0
  193. package/dist/src/mcp/events.d.ts.map +1 -0
  194. package/dist/src/mcp/events.js +48 -0
  195. package/dist/src/mcp/fallback/index.d.ts +50 -0
  196. package/dist/src/mcp/fallback/index.d.ts.map +1 -0
  197. package/dist/src/mcp/fallback/index.js +216 -0
  198. package/dist/src/mcp/index.d.ts +67 -0
  199. package/dist/src/mcp/index.d.ts.map +1 -0
  200. package/dist/src/mcp/index.js +212 -0
  201. package/dist/src/mcp/normalizer.d.ts +21 -0
  202. package/dist/src/mcp/normalizer.d.ts.map +1 -0
  203. package/dist/src/mcp/normalizer.js +99 -0
  204. package/dist/src/mcp/prompts/index.d.ts +86 -0
  205. package/dist/src/mcp/prompts/index.d.ts.map +1 -0
  206. package/dist/src/mcp/prompts/index.js +304 -0
  207. package/dist/src/mcp/templates/index.d.ts +35 -0
  208. package/dist/src/mcp/templates/index.d.ts.map +1 -0
  209. package/dist/src/mcp/templates/index.js +143 -0
  210. package/dist/src/mcp/testing/mock-server/index.d.ts +47 -0
  211. package/dist/src/mcp/testing/mock-server/index.d.ts.map +1 -0
  212. package/dist/src/mcp/testing/mock-server/index.js +157 -0
  213. package/dist/src/mcp/types.d.ts +127 -0
  214. package/dist/src/mcp/types.d.ts.map +1 -0
  215. package/dist/src/mcp/types.js +8 -0
  216. package/dist/src/observability.d.ts +138 -0
  217. package/dist/src/observability.d.ts.map +1 -0
  218. package/dist/src/observability.js +519 -0
  219. package/dist/src/parameterCoverage.d.ts +75 -0
  220. package/dist/src/parameterCoverage.d.ts.map +1 -0
  221. package/dist/src/parameterCoverage.js +629 -0
  222. package/dist/src/perfResilienceCoverage.d.ts +155 -0
  223. package/dist/src/perfResilienceCoverage.d.ts.map +1 -0
  224. package/dist/src/perfResilienceCoverage.js +670 -0
  225. package/dist/src/pluginLoader.d.ts +51 -0
  226. package/dist/src/pluginLoader.d.ts.map +1 -0
  227. package/dist/src/pluginLoader.js +72 -0
  228. package/dist/src/publishing.d.ts +63 -0
  229. package/dist/src/publishing.d.ts.map +1 -0
  230. package/dist/src/publishing.js +379 -0
  231. package/dist/src/qualityGate.d.ts +58 -0
  232. package/dist/src/qualityGate.d.ts.map +1 -0
  233. package/dist/src/qualityGate.js +118 -0
  234. package/dist/src/reporting.d.ts +41 -0
  235. package/dist/src/reporting.d.ts.map +1 -0
  236. package/dist/src/reporting.js +278 -0
  237. package/dist/src/screenshots.d.ts +71 -0
  238. package/dist/src/screenshots.d.ts.map +1 -0
  239. package/dist/src/screenshots.js +141 -0
  240. package/dist/src/security/gate/index.d.ts +11 -0
  241. package/dist/src/security/gate/index.d.ts.map +1 -0
  242. package/dist/src/security/gate/index.js +65 -0
  243. package/dist/src/security/index.d.ts +30 -0
  244. package/dist/src/security/index.d.ts.map +1 -0
  245. package/dist/src/security/index.js +342 -0
  246. package/dist/src/security/normalizers/semgrep.d.ts +10 -0
  247. package/dist/src/security/normalizers/semgrep.d.ts.map +1 -0
  248. package/dist/src/security/normalizers/semgrep.js +104 -0
  249. package/dist/src/security/normalizers/trivy.d.ts +10 -0
  250. package/dist/src/security/normalizers/trivy.d.ts.map +1 -0
  251. package/dist/src/security/normalizers/trivy.js +78 -0
  252. package/dist/src/security/normalizers/zap.d.ts +10 -0
  253. package/dist/src/security/normalizers/zap.d.ts.map +1 -0
  254. package/dist/src/security/normalizers/zap.js +104 -0
  255. package/dist/src/security/scanners/semgrep.d.ts +6 -0
  256. package/dist/src/security/scanners/semgrep.d.ts.map +1 -0
  257. package/dist/src/security/scanners/semgrep.js +125 -0
  258. package/dist/src/security/scanners/trivy.d.ts +6 -0
  259. package/dist/src/security/scanners/trivy.d.ts.map +1 -0
  260. package/dist/src/security/scanners/trivy.js +115 -0
  261. package/dist/src/security/scanners/zap.d.ts +6 -0
  262. package/dist/src/security/scanners/zap.d.ts.map +1 -0
  263. package/dist/src/security/scanners/zap.js +135 -0
  264. package/dist/src/security/types.d.ts +146 -0
  265. package/dist/src/security/types.d.ts.map +1 -0
  266. package/dist/src/security/types.js +6 -0
  267. package/dist/src/securityCoverage.d.ts +116 -0
  268. package/dist/src/securityCoverage.d.ts.map +1 -0
  269. package/dist/src/securityCoverage.js +725 -0
  270. package/dist/src/summary/buildSummary.d.ts +28 -0
  271. package/dist/src/summary/buildSummary.d.ts.map +1 -0
  272. package/dist/src/summary/buildSummary.js +257 -0
  273. package/dist/src/summary/evaluateMetrics.d.ts +31 -0
  274. package/dist/src/summary/evaluateMetrics.d.ts.map +1 -0
  275. package/dist/src/summary/evaluateMetrics.js +118 -0
  276. package/dist/src/summary/index.d.ts +10 -0
  277. package/dist/src/summary/index.d.ts.map +1 -0
  278. package/dist/src/summary/index.js +22 -0
  279. package/dist/src/summary/markdownRenderer.d.ts +139 -0
  280. package/dist/src/summary/markdownRenderer.d.ts.map +1 -0
  281. package/dist/src/summary/markdownRenderer.js +459 -0
  282. package/dist/src/summary/prSummary.d.ts +24 -0
  283. package/dist/src/summary/prSummary.d.ts.map +1 -0
  284. package/dist/src/summary/prSummary.js +233 -0
  285. package/dist/src/summary/summaryTypes.d.ts +35 -0
  286. package/dist/src/summary/summaryTypes.d.ts.map +1 -0
  287. package/dist/src/summary/summaryTypes.js +27 -0
  288. package/package.json +84 -0
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Central config — entry-point loader.
3
+ *
4
+ * This is the single public entry point for loading configuration.
5
+ * All scanning modules, CLI commands, and test helpers must call
6
+ * `loadConfig()` rather than reading YAML or JSON config directly.
7
+ *
8
+ * Resolution order:
9
+ * 1. If configPath argument is provided, load that file (error if missing).
10
+ * 2. Otherwise, look for config.yaml at the current working directory root.
11
+ * 3. If neither is found, emit a warning and return the default config.
12
+ */
13
+ import type { AnalyzerConfig } from './types';
14
+ /** Single canonical default config file name. */
15
+ export declare const DEFAULT_CONFIG_FILENAME = "config.yaml";
16
+ /** Path searched when no --config flag is provided. Computed dynamically at call time. */
17
+ export declare const DEFAULT_CONFIG_PATH: string;
18
+ /** Legacy config file name — triggers a deprecation warning when found. */
19
+ export declare const LEGACY_CONFIG_FILENAME = "coverage.config.json";
20
+ export declare const MISSING_CONFIG_WARNING = "[WARNING] No config.yaml found at project root.\nRunning full default analysis profile.\nTo customize scanning, thresholds, MCP integration, and reporting,\ncreate a config.yaml file. See docs/guides/configuration.md for reference.";
21
+ export declare const LEGACY_CONFIG_WARNING = "[DEPRECATED] coverage.config.json is no longer supported.\nPlease migrate your configuration to config.yaml.\nSee docs/guides/migration-to-config-yaml.md for instructions.";
22
+ /**
23
+ * Load, validate, merge, and return the normalized `AnalyzerConfig`.
24
+ *
25
+ * @param configPath Explicit path to a config file (from --config flag).
26
+ * When omitted, the loader searches for config.yaml at CWD.
27
+ */
28
+ export declare function loadConfig(configPath?: string): AnalyzerConfig;
29
+ //# sourceMappingURL=loadConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../../src/config/loadConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAO9C,iDAAiD;AACjD,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AAErD,0FAA0F;AAC1F,eAAO,MAAM,mBAAmB,QAAoD,CAAC;AAErF,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAI7D,eAAO,MAAM,sBAAsB,4OAGwC,CAAC;AAE5E,eAAO,MAAM,qBAAqB,gLAE4B,CAAC;AAI/D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAuC9D"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Central config — entry-point loader.
4
+ *
5
+ * This is the single public entry point for loading configuration.
6
+ * All scanning modules, CLI commands, and test helpers must call
7
+ * `loadConfig()` rather than reading YAML or JSON config directly.
8
+ *
9
+ * Resolution order:
10
+ * 1. If configPath argument is provided, load that file (error if missing).
11
+ * 2. Otherwise, look for config.yaml at the current working directory root.
12
+ * 3. If neither is found, emit a warning and return the default config.
13
+ */
14
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ var desc = Object.getOwnPropertyDescriptor(m, k);
17
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
+ desc = { enumerable: true, get: function() { return m[k]; } };
19
+ }
20
+ Object.defineProperty(o, k2, desc);
21
+ }) : (function(o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ }));
25
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
27
+ }) : function(o, v) {
28
+ o["default"] = v;
29
+ });
30
+ var __importStar = (this && this.__importStar) || (function () {
31
+ var ownKeys = function(o) {
32
+ ownKeys = Object.getOwnPropertyNames || function (o) {
33
+ var ar = [];
34
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
+ return ar;
36
+ };
37
+ return ownKeys(o);
38
+ };
39
+ return function (mod) {
40
+ if (mod && mod.__esModule) return mod;
41
+ var result = {};
42
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
+ __setModuleDefault(result, mod);
44
+ return result;
45
+ };
46
+ })();
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.LEGACY_CONFIG_WARNING = exports.MISSING_CONFIG_WARNING = exports.LEGACY_CONFIG_FILENAME = exports.DEFAULT_CONFIG_PATH = exports.DEFAULT_CONFIG_FILENAME = void 0;
49
+ exports.loadConfig = loadConfig;
50
+ const fs = __importStar(require("fs"));
51
+ const path = __importStar(require("path"));
52
+ const yaml = __importStar(require("js-yaml"));
53
+ const defaultConfig_1 = require("./defaultConfig");
54
+ const validateConfig_1 = require("./validateConfig");
55
+ const mergeConfig_1 = require("./mergeConfig");
56
+ // ─── Constants ────────────────────────────────────────────────────────────────
57
+ /** Single canonical default config file name. */
58
+ exports.DEFAULT_CONFIG_FILENAME = 'config.yaml';
59
+ /** Path searched when no --config flag is provided. Computed dynamically at call time. */
60
+ exports.DEFAULT_CONFIG_PATH = path.join(process.cwd(), exports.DEFAULT_CONFIG_FILENAME);
61
+ /** Legacy config file name — triggers a deprecation warning when found. */
62
+ exports.LEGACY_CONFIG_FILENAME = 'coverage.config.json';
63
+ // ─── Warning / deprecation message constants ──────────────────────────────────
64
+ exports.MISSING_CONFIG_WARNING = `[WARNING] No config.yaml found at project root.
65
+ Running full default analysis profile.
66
+ To customize scanning, thresholds, MCP integration, and reporting,
67
+ create a config.yaml file. See docs/guides/configuration.md for reference.`;
68
+ exports.LEGACY_CONFIG_WARNING = `[DEPRECATED] coverage.config.json is no longer supported.
69
+ Please migrate your configuration to config.yaml.
70
+ See docs/guides/migration-to-config-yaml.md for instructions.`;
71
+ // ─── Loader ───────────────────────────────────────────────────────────────────
72
+ /**
73
+ * Load, validate, merge, and return the normalized `AnalyzerConfig`.
74
+ *
75
+ * @param configPath Explicit path to a config file (from --config flag).
76
+ * When omitted, the loader searches for config.yaml at CWD.
77
+ */
78
+ function loadConfig(configPath) {
79
+ const resolvedPath = resolveConfigPath(configPath);
80
+ // ── Explicit path provided but file does not exist ────────────────────────
81
+ if (configPath) {
82
+ const absPath = path.resolve(configPath);
83
+ if (!fs.existsSync(absPath)) {
84
+ throw new Error(`Config error: configuration file not found: ${absPath}\n` +
85
+ ` Check the path passed to --config and try again.`);
86
+ }
87
+ return loadAndMerge(absPath);
88
+ }
89
+ // ── Auto-discovery ────────────────────────────────────────────────────────
90
+ if (resolvedPath && fs.existsSync(resolvedPath)) {
91
+ return loadAndMerge(resolvedPath);
92
+ }
93
+ // ── Legacy config detection ───────────────────────────────────────────────
94
+ const legacyPath = path.join(process.cwd(), exports.LEGACY_CONFIG_FILENAME);
95
+ if (fs.existsSync(legacyPath)) {
96
+ process.stderr.write(exports.LEGACY_CONFIG_WARNING + '\n');
97
+ }
98
+ // ── No config found — warn and use defaults ───────────────────────────────
99
+ // Check failOnConfigMissing from the defaults (always false unless overridden
100
+ // by an already-loaded config — handled upstream).
101
+ if (defaultConfig_1.DEFAULT_CONFIG.analysis.failOnConfigMissing) {
102
+ process.stderr.write(exports.MISSING_CONFIG_WARNING + '\n');
103
+ process.exit(1);
104
+ }
105
+ if (defaultConfig_1.DEFAULT_CONFIG.analysis.warnOnConfigMissing !== false) {
106
+ process.stderr.write(exports.MISSING_CONFIG_WARNING + '\n');
107
+ }
108
+ return { ...defaultConfig_1.DEFAULT_CONFIG };
109
+ }
110
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
111
+ function resolveConfigPath(configPath) {
112
+ if (configPath)
113
+ return path.resolve(configPath);
114
+ // Compute dynamically so tests can change process.cwd() via chdir.
115
+ return path.join(process.cwd(), exports.DEFAULT_CONFIG_FILENAME);
116
+ }
117
+ function loadAndMerge(absPath) {
118
+ const raw = fs.readFileSync(absPath, 'utf-8');
119
+ let parsed;
120
+ try {
121
+ parsed = yaml.load(raw);
122
+ }
123
+ catch (err) {
124
+ const msg = err instanceof Error ? err.message : String(err);
125
+ throw new Error(`Config error: failed to parse ${absPath} as YAML.\n ${msg}`);
126
+ }
127
+ // Determine if strict mode is requested (before full validation).
128
+ const isStrict = typeof parsed === 'object' &&
129
+ parsed !== null &&
130
+ !Array.isArray(parsed) &&
131
+ parsed['qualityGate'] !== undefined &&
132
+ parsed['qualityGate']['mode'] === 'strict';
133
+ const partial = (0, validateConfig_1.validateConfig)(parsed, isStrict);
134
+ return (0, mergeConfig_1.mergeConfig)(defaultConfig_1.DEFAULT_CONFIG, partial);
135
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Central config — deep-merge utility.
3
+ *
4
+ * Merges a user-supplied partial config over the built-in defaults.
5
+ * - Plain objects are recursively merged (user values win on conflict).
6
+ * - Array fields are replaced, not concatenated (user array replaces default).
7
+ * - Undefined user values are ignored (defaults are preserved).
8
+ */
9
+ import type { AnalyzerConfig } from './types';
10
+ /**
11
+ * Deep-merge `user` over `defaults`.
12
+ * Returns a new object; neither input is mutated.
13
+ */
14
+ export declare function mergeConfig(defaults: AnalyzerConfig, user: Partial<AnalyzerConfig>): AnalyzerConfig;
15
+ //# sourceMappingURL=mergeConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeConfig.d.ts","sourceRoot":"","sources":["../../../src/config/mergeConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,GAC5B,cAAc,CAEhB"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Central config — deep-merge utility.
4
+ *
5
+ * Merges a user-supplied partial config over the built-in defaults.
6
+ * - Plain objects are recursively merged (user values win on conflict).
7
+ * - Array fields are replaced, not concatenated (user array replaces default).
8
+ * - Undefined user values are ignored (defaults are preserved).
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.mergeConfig = mergeConfig;
12
+ /**
13
+ * Deep-merge `user` over `defaults`.
14
+ * Returns a new object; neither input is mutated.
15
+ */
16
+ function mergeConfig(defaults, user) {
17
+ return deepMerge(defaults, user);
18
+ }
19
+ function deepMerge(target, source) {
20
+ // For non-objects or arrays, the source value wins outright.
21
+ if (source === undefined ||
22
+ source === null ||
23
+ typeof source !== 'object' ||
24
+ Array.isArray(source)) {
25
+ return (source !== undefined ? source : target);
26
+ }
27
+ if (target === undefined ||
28
+ target === null ||
29
+ typeof target !== 'object' ||
30
+ Array.isArray(target)) {
31
+ return source;
32
+ }
33
+ const result = { ...target };
34
+ for (const key of Object.keys(source)) {
35
+ const srcVal = source[key];
36
+ const tgtVal = target[key];
37
+ if (srcVal === undefined) {
38
+ // Preserve the default.
39
+ continue;
40
+ }
41
+ if (Array.isArray(srcVal)) {
42
+ // Arrays are replaced, not merged.
43
+ result[key] = srcVal;
44
+ }
45
+ else if (typeof srcVal === 'object' &&
46
+ srcVal !== null &&
47
+ typeof tgtVal === 'object' &&
48
+ tgtVal !== null &&
49
+ !Array.isArray(tgtVal)) {
50
+ result[key] = deepMerge(tgtVal, srcVal);
51
+ }
52
+ else {
53
+ result[key] = srcVal;
54
+ }
55
+ }
56
+ return result;
57
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Central config — valid enum value constants.
3
+ *
4
+ * Used by the validator to verify config field values and by the default
5
+ * config to populate the full-profile defaults.
6
+ */
7
+ import type { CoverageType, SecurityScannerType, IntelligenceType, ReportFormat, QualityGateMode } from './types';
8
+ export declare const VALID_COVERAGE_TYPES: CoverageType[];
9
+ export declare const VALID_SECURITY_SCANNERS: SecurityScannerType[];
10
+ export declare const VALID_INTELLIGENCE_TYPES: IntelligenceType[];
11
+ export declare const VALID_REPORT_FORMATS: ReportFormat[];
12
+ export declare const VALID_QUALITY_GATE_MODES: QualityGateMode[];
13
+ export declare const VALID_ANALYSIS_MODES: readonly ["full", "custom"];
14
+ export declare const SUPPORTED_VERSIONS: readonly [1];
15
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAS9C,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAAgC,CAAC;AAE1F,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,EAKtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,YAAY,EAAiD,CAAC;AAEjG,eAAO,MAAM,wBAAwB,EAAE,eAAe,EAAuB,CAAC;AAE9E,eAAO,MAAM,oBAAoB,6BAA8B,CAAC;AAEhE,eAAO,MAAM,kBAAkB,cAAe,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Central config — valid enum value constants.
4
+ *
5
+ * Used by the validator to verify config field values and by the default
6
+ * config to populate the full-profile defaults.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SUPPORTED_VERSIONS = exports.VALID_ANALYSIS_MODES = exports.VALID_QUALITY_GATE_MODES = exports.VALID_REPORT_FORMATS = exports.VALID_INTELLIGENCE_TYPES = exports.VALID_SECURITY_SCANNERS = exports.VALID_COVERAGE_TYPES = void 0;
10
+ exports.VALID_COVERAGE_TYPES = [
11
+ 'endpoint',
12
+ 'parameter',
13
+ 'business',
14
+ 'integration',
15
+ 'error',
16
+ 'security',
17
+ 'performance',
18
+ 'compatibility',
19
+ ];
20
+ exports.VALID_SECURITY_SCANNERS = ['semgrep', 'trivy', 'zap'];
21
+ exports.VALID_INTELLIGENCE_TYPES = [
22
+ 'ai-summary',
23
+ 'risk-prioritization',
24
+ 'recommendations',
25
+ 'scanner-interpretation',
26
+ ];
27
+ exports.VALID_REPORT_FORMATS = ['json', 'html', 'csv', 'junit', 'markdown'];
28
+ exports.VALID_QUALITY_GATE_MODES = ['strict', 'warn'];
29
+ exports.VALID_ANALYSIS_MODES = ['full', 'custom'];
30
+ exports.SUPPORTED_VERSIONS = [1];
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Central config — TypeScript type definitions.
3
+ *
4
+ * `AnalyzerConfig` is the single normalized config object consumed by every
5
+ * scanning module, CLI command, MCP client, report generator, and quality gate.
6
+ * All external consumers must import from this module, never from raw YAML.
7
+ */
8
+ import type { McpConfig } from '../mcp/types';
9
+ export type { McpConfig } from '../mcp/types';
10
+ export interface ProjectConfig {
11
+ /** Display name used in summaries and reports */
12
+ name?: string;
13
+ }
14
+ export interface AstLanguageConfig {
15
+ /** When false, skip AST analysis for this language and use regex fallback */
16
+ enabled?: boolean;
17
+ }
18
+ export interface AstAnalysisConfig {
19
+ /** Master switch. When false, skip AST entirely and use regex fallback. Default: true. */
20
+ enabled?: boolean;
21
+ /**
22
+ * When true (default), if AST parsing succeeds but returns 0 HTTP interactions the
23
+ * engine runs the regex fallback and tags its results with resolutionType:'heuristic'
24
+ * and confidence:'low'. When false, 0 AST results are returned verbatim.
25
+ */
26
+ fallbackHeuristics?: boolean;
27
+ /** Maximum call-chain depth for wrapper/helper tracing. Default: 4. */
28
+ maxCallDepth?: number;
29
+ /** Include assertion type metadata in output. Default: true. */
30
+ assertionAware?: boolean;
31
+ /** Per-language enable/disable toggles */
32
+ languages?: {
33
+ java?: AstLanguageConfig;
34
+ kotlin?: AstLanguageConfig;
35
+ python?: AstLanguageConfig;
36
+ ruby?: AstLanguageConfig;
37
+ javascript?: AstLanguageConfig;
38
+ typescript?: AstLanguageConfig;
39
+ cucumber?: AstLanguageConfig;
40
+ };
41
+ }
42
+ export interface AnalysisConfig {
43
+ /** 'full' runs all scans; 'custom' runs only explicitly-enabled scans */
44
+ defaultMode?: 'full' | 'custom';
45
+ /** If true, missing config.yaml halts execution with non-zero exit */
46
+ failOnConfigMissing?: boolean;
47
+ /** If true, emits a warning when config.yaml is absent */
48
+ warnOnConfigMissing?: boolean;
49
+ /** AST-based analysis configuration */
50
+ ast?: AstAnalysisConfig;
51
+ /**
52
+ * When true, the analyzer will automatically discover API specs, tests,
53
+ * contracts, performance results, and security reports without explicit config.
54
+ * Default: true.
55
+ */
56
+ agnosticDiscovery?: boolean;
57
+ /**
58
+ * When true, if business rule files are absent the analyzer infers rules
59
+ * from service-code validation / conditional logic. Default: true.
60
+ */
61
+ inferBusinessRules?: boolean;
62
+ /**
63
+ * When true, if integration flow files are absent the analyzer constructs
64
+ * flows from test call sequences and Cucumber scenarios. Default: true.
65
+ */
66
+ inferIntegrationFlows?: boolean;
67
+ }
68
+ export type CoverageType = 'endpoint' | 'parameter' | 'business' | 'integration' | 'error' | 'security' | 'performance' | 'compatibility';
69
+ export type SecurityScannerType = 'semgrep' | 'trivy' | 'zap';
70
+ export type IntelligenceType = 'ai-summary' | 'risk-prioritization' | 'recommendations' | 'scanner-interpretation';
71
+ export type ReportFormat = 'json' | 'html' | 'csv' | 'junit' | 'markdown';
72
+ /**
73
+ * Configuration for the deep endpoint analysis feature.
74
+ * Nested under scans.coverage.deepAnalysis in config.yaml.
75
+ */
76
+ export interface DeepAnalysisCoverageConfig {
77
+ /** Master switch. When false the engine falls back to direct regex only. */
78
+ enabled?: boolean;
79
+ /** Maximum call-chain depth to follow when tracing wrapper methods. Default: 4. */
80
+ maxCallDepth?: number;
81
+ /** Resolve named constant/variable references to their literal values. */
82
+ resolveConstants?: boolean;
83
+ /** Resolve enum member references to their literal path values. */
84
+ resolveEnums?: boolean;
85
+ /** Resolve template literals and string concatenation. */
86
+ resolveStringTemplates?: boolean;
87
+ /** Trace helper/wrapper methods to find HTTP calls. */
88
+ resolveWrappers?: boolean;
89
+ /** Detect request-builder / request-object patterns. */
90
+ resolveRequestBuilders?: boolean;
91
+ /** Apply explicit or inferred client-to-HTTP-method mapping. */
92
+ resolveClientMappings?: boolean;
93
+ /** Associate HTTP calls with downstream response assertions. */
94
+ assertionAware?: boolean;
95
+ /**
96
+ * Explicit client-method → HTTP mappings.
97
+ * Example: { classOrObject: 'userClient', method: 'getById', httpMethod: 'GET', pathTemplate: '/users/{id}' }
98
+ */
99
+ clientMappings?: Array<{
100
+ classOrObject: string;
101
+ method: string;
102
+ httpMethod: string;
103
+ pathTemplate: string;
104
+ }>;
105
+ }
106
+ export interface CoverageScansConfig {
107
+ enabled?: boolean;
108
+ types?: CoverageType[];
109
+ /** Deep endpoint analysis configuration. */
110
+ deepAnalysis?: DeepAnalysisCoverageConfig;
111
+ }
112
+ export interface SecurityScansConfig {
113
+ enabled?: boolean;
114
+ scanners?: SecurityScannerType[];
115
+ }
116
+ export interface IntelligenceScansConfig {
117
+ enabled?: boolean;
118
+ types?: IntelligenceType[];
119
+ }
120
+ export interface ScansConfig {
121
+ coverage?: CoverageScansConfig;
122
+ security?: SecurityScansConfig;
123
+ intelligence?: IntelligenceScansConfig;
124
+ }
125
+ export interface ThresholdsConfig {
126
+ global?: number;
127
+ endpoint?: number;
128
+ parameter?: number;
129
+ business?: number;
130
+ integration?: number;
131
+ error?: number;
132
+ security?: number;
133
+ performance?: number;
134
+ resilience?: number;
135
+ compatibility?: number;
136
+ [key: string]: number | undefined;
137
+ }
138
+ export type QualityGateMode = 'strict' | 'warn';
139
+ export interface QualityGateConfig {
140
+ enabled?: boolean;
141
+ failBuildOnThresholdMiss?: boolean;
142
+ mode?: QualityGateMode;
143
+ }
144
+ export interface ReportsConfig {
145
+ outputDir?: string;
146
+ formats?: ReportFormat[];
147
+ }
148
+ export interface GitHubPagesPublishingConfig {
149
+ enabled?: boolean;
150
+ }
151
+ export interface PublishingConfig {
152
+ enabled?: boolean;
153
+ githubPages?: GitHubPagesPublishingConfig;
154
+ }
155
+ export interface AiSummaryConfig {
156
+ enabled?: boolean;
157
+ collapsedByDefault?: boolean;
158
+ }
159
+ export interface DashboardConfig {
160
+ aiSummary?: AiSummaryConfig;
161
+ }
162
+ export interface AnalyzerConfig {
163
+ /** Config schema version; must be 1 for this release */
164
+ version: number;
165
+ project: ProjectConfig;
166
+ analysis: AnalysisConfig;
167
+ scans: ScansConfig;
168
+ mcp: McpConfig;
169
+ thresholds: ThresholdsConfig;
170
+ qualityGate: QualityGateConfig;
171
+ reports: ReportsConfig;
172
+ publishing: PublishingConfig;
173
+ dashboard: DashboardConfig;
174
+ }
175
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Central config — TypeScript type definitions.
4
+ *
5
+ * `AnalyzerConfig` is the single normalized config object consumed by every
6
+ * scanning module, CLI command, MCP client, report generator, and quality gate.
7
+ * All external consumers must import from this module, never from raw YAML.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Central config — schema validation.
3
+ *
4
+ * Validates a parsed YAML object against the AnalyzerConfig schema.
5
+ * On failure, throws with a field-level error message that includes
6
+ * the received value and an example of a valid value.
7
+ *
8
+ * Unknown top-level keys produce a warning in default mode and a hard
9
+ * error in strict mode (qualityGate.mode === 'strict').
10
+ */
11
+ import type { AnalyzerConfig } from './types';
12
+ /**
13
+ * Validate a raw parsed-YAML object.
14
+ *
15
+ * Returns the cast `AnalyzerConfig` on success.
16
+ * Throws with a field-level error message on validation failure.
17
+ *
18
+ * @param raw Parsed YAML value (must be a plain object)
19
+ * @param strictMode When true, unknown top-level keys are errors not warnings
20
+ */
21
+ export declare function validateConfig(raw: unknown, strictMode?: boolean): Partial<AnalyzerConfig>;
22
+ //# sourceMappingURL=validateConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateConfig.d.ts","sourceRoot":"","sources":["../../../src/config/validateConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAyC9C;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAmLxF"}