@machina.ai/openapi-contract-tester 2.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 (431) hide show
  1. package/.env.example +91 -0
  2. package/README.md +472 -0
  3. package/dist/ai-engine/assertion-generator.d.ts +48 -0
  4. package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
  5. package/dist/ai-engine/assertion-generator.js +166 -0
  6. package/dist/ai-engine/assertion-generator.js.map +1 -0
  7. package/dist/ai-engine/context-data-generator.d.ts +38 -0
  8. package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
  9. package/dist/ai-engine/context-data-generator.js +146 -0
  10. package/dist/ai-engine/context-data-generator.js.map +1 -0
  11. package/dist/ai-engine/dataflow-detector.d.ts +53 -0
  12. package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
  13. package/dist/ai-engine/dataflow-detector.js +217 -0
  14. package/dist/ai-engine/dataflow-detector.js.map +1 -0
  15. package/dist/ai-engine/dependency-detector.d.ts +52 -0
  16. package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
  17. package/dist/ai-engine/dependency-detector.js +241 -0
  18. package/dist/ai-engine/dependency-detector.js.map +1 -0
  19. package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
  20. package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
  21. package/dist/ai-engine/edge-case-suggester.js +177 -0
  22. package/dist/ai-engine/edge-case-suggester.js.map +1 -0
  23. package/dist/ai-engine/index.d.ts +13 -0
  24. package/dist/ai-engine/index.d.ts.map +1 -0
  25. package/dist/ai-engine/index.js +13 -0
  26. package/dist/ai-engine/index.js.map +1 -0
  27. package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
  28. package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
  29. package/dist/analyzers/ai-failure-analyzer.js +220 -0
  30. package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
  31. package/dist/analyzers/comparison-utils.d.ts +31 -0
  32. package/dist/analyzers/comparison-utils.d.ts.map +1 -0
  33. package/dist/analyzers/comparison-utils.js +85 -0
  34. package/dist/analyzers/comparison-utils.js.map +1 -0
  35. package/dist/analyzers/context-analyzer.d.ts +49 -0
  36. package/dist/analyzers/context-analyzer.d.ts.map +1 -0
  37. package/dist/analyzers/context-analyzer.js +292 -0
  38. package/dist/analyzers/context-analyzer.js.map +1 -0
  39. package/dist/analyzers/dependency-analyzer.d.ts +44 -0
  40. package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
  41. package/dist/analyzers/dependency-analyzer.js +313 -0
  42. package/dist/analyzers/dependency-analyzer.js.map +1 -0
  43. package/dist/analyzers/failure-analyzer.d.ts +122 -0
  44. package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
  45. package/dist/analyzers/failure-analyzer.js +140 -0
  46. package/dist/analyzers/failure-analyzer.js.map +1 -0
  47. package/dist/analyzers/failure-detectors/index.d.ts +33 -0
  48. package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
  49. package/dist/analyzers/failure-detectors/index.js +164 -0
  50. package/dist/analyzers/failure-detectors/index.js.map +1 -0
  51. package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
  52. package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
  53. package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
  54. package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
  55. package/dist/analyzers/index.d.ts +10 -0
  56. package/dist/analyzers/index.d.ts.map +1 -0
  57. package/dist/analyzers/index.js +10 -0
  58. package/dist/analyzers/index.js.map +1 -0
  59. package/dist/analyzers/semantic-matcher.d.ts +123 -0
  60. package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
  61. package/dist/analyzers/semantic-matcher.js +297 -0
  62. package/dist/analyzers/semantic-matcher.js.map +1 -0
  63. package/dist/analyzers/source-comparator.d.ts +177 -0
  64. package/dist/analyzers/source-comparator.d.ts.map +1 -0
  65. package/dist/analyzers/source-comparator.js +225 -0
  66. package/dist/analyzers/source-comparator.js.map +1 -0
  67. package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
  68. package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
  69. package/dist/business-rules/business-rules-analyzer.js +363 -0
  70. package/dist/business-rules/business-rules-analyzer.js.map +1 -0
  71. package/dist/business-rules/business-rules-generator.d.ts +78 -0
  72. package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
  73. package/dist/business-rules/business-rules-generator.js +357 -0
  74. package/dist/business-rules/business-rules-generator.js.map +1 -0
  75. package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
  76. package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
  77. package/dist/business-rules/extractors/rule-extractors.js +189 -0
  78. package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
  79. package/dist/business-rules/value-generators.d.ts +70 -0
  80. package/dist/business-rules/value-generators.d.ts.map +1 -0
  81. package/dist/business-rules/value-generators.js +142 -0
  82. package/dist/business-rules/value-generators.js.map +1 -0
  83. package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
  84. package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
  85. package/dist/executor/auth-providers/auth-header-builder.js +47 -0
  86. package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
  87. package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
  88. package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
  89. package/dist/executor/auth-providers/oauth2-provider.js +114 -0
  90. package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
  91. package/dist/executor/http-client.d.ts +133 -0
  92. package/dist/executor/http-client.d.ts.map +1 -0
  93. package/dist/executor/http-client.js +172 -0
  94. package/dist/executor/http-client.js.map +1 -0
  95. package/dist/executor/http-request-builder.d.ts +69 -0
  96. package/dist/executor/http-request-builder.d.ts.map +1 -0
  97. package/dist/executor/http-request-builder.js +140 -0
  98. package/dist/executor/http-request-builder.js.map +1 -0
  99. package/dist/executor/http-response-parser.d.ts +28 -0
  100. package/dist/executor/http-response-parser.d.ts.map +1 -0
  101. package/dist/executor/http-response-parser.js +74 -0
  102. package/dist/executor/http-response-parser.js.map +1 -0
  103. package/dist/executor/response-handler.d.ts +66 -0
  104. package/dist/executor/response-handler.d.ts.map +1 -0
  105. package/dist/executor/response-handler.js +135 -0
  106. package/dist/executor/response-handler.js.map +1 -0
  107. package/dist/executor/result-processor.d.ts +27 -0
  108. package/dist/executor/result-processor.d.ts.map +1 -0
  109. package/dist/executor/result-processor.js +140 -0
  110. package/dist/executor/result-processor.js.map +1 -0
  111. package/dist/executor/result-utils.d.ts +21 -0
  112. package/dist/executor/result-utils.d.ts.map +1 -0
  113. package/dist/executor/result-utils.js +29 -0
  114. package/dist/executor/result-utils.js.map +1 -0
  115. package/dist/executor/test-executor.d.ts +49 -0
  116. package/dist/executor/test-executor.d.ts.map +1 -0
  117. package/dist/executor/test-executor.js +226 -0
  118. package/dist/executor/test-executor.js.map +1 -0
  119. package/dist/executor/test-runner.d.ts +85 -0
  120. package/dist/executor/test-runner.d.ts.map +1 -0
  121. package/dist/executor/test-runner.js +177 -0
  122. package/dist/executor/test-runner.js.map +1 -0
  123. package/dist/executor/token-detector/index.d.ts +7 -0
  124. package/dist/executor/token-detector/index.d.ts.map +1 -0
  125. package/dist/executor/token-detector/index.js +7 -0
  126. package/dist/executor/token-detector/index.js.map +1 -0
  127. package/dist/executor/token-detector/token-detector.d.ts +64 -0
  128. package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
  129. package/dist/executor/token-detector/token-detector.js +140 -0
  130. package/dist/executor/token-detector/token-detector.js.map +1 -0
  131. package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
  132. package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
  133. package/dist/generators/business-rule-from-stories-generator.js +227 -0
  134. package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
  135. package/dist/generators/data/ai-data-generator.d.ts +23 -0
  136. package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
  137. package/dist/generators/data/ai-data-generator.js +41 -0
  138. package/dist/generators/data/ai-data-generator.js.map +1 -0
  139. package/dist/generators/data/base-generator.d.ts +121 -0
  140. package/dist/generators/data/base-generator.d.ts.map +1 -0
  141. package/dist/generators/data/base-generator.js +200 -0
  142. package/dist/generators/data/base-generator.js.map +1 -0
  143. package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
  144. package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
  145. package/dist/generators/data/heuristic-data-generator.js +49 -0
  146. package/dist/generators/data/heuristic-data-generator.js.map +1 -0
  147. package/dist/generators/data/index.d.ts +48 -0
  148. package/dist/generators/data/index.d.ts.map +1 -0
  149. package/dist/generators/data/index.js +201 -0
  150. package/dist/generators/data/index.js.map +1 -0
  151. package/dist/generators/data/schema-walker.d.ts +45 -0
  152. package/dist/generators/data/schema-walker.d.ts.map +1 -0
  153. package/dist/generators/data/schema-walker.js +103 -0
  154. package/dist/generators/data/schema-walker.js.map +1 -0
  155. package/dist/generators/data/type-strategies.d.ts +79 -0
  156. package/dist/generators/data/type-strategies.d.ts.map +1 -0
  157. package/dist/generators/data/type-strategies.js +394 -0
  158. package/dist/generators/data/type-strategies.js.map +1 -0
  159. package/dist/generators/data-generator.d.ts +11 -0
  160. package/dist/generators/data-generator.d.ts.map +1 -0
  161. package/dist/generators/data-generator.js +11 -0
  162. package/dist/generators/data-generator.js.map +1 -0
  163. package/dist/generators/edge-case-generator.d.ts +55 -0
  164. package/dist/generators/edge-case-generator.d.ts.map +1 -0
  165. package/dist/generators/edge-case-generator.js +327 -0
  166. package/dist/generators/edge-case-generator.js.map +1 -0
  167. package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
  168. package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
  169. package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
  170. package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
  171. package/dist/generators/error-case-generator.d.ts +11 -0
  172. package/dist/generators/error-case-generator.d.ts.map +1 -0
  173. package/dist/generators/error-case-generator.js +11 -0
  174. package/dist/generators/error-case-generator.js.map +1 -0
  175. package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
  176. package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
  177. package/dist/generators/errors/auth-error-strategy.js +118 -0
  178. package/dist/generators/errors/auth-error-strategy.js.map +1 -0
  179. package/dist/generators/errors/business-error-strategy.d.ts +44 -0
  180. package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
  181. package/dist/generators/errors/business-error-strategy.js +152 -0
  182. package/dist/generators/errors/business-error-strategy.js.map +1 -0
  183. package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
  184. package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
  185. package/dist/generators/errors/error-strategy-factory.js +47 -0
  186. package/dist/generators/errors/error-strategy-factory.js.map +1 -0
  187. package/dist/generators/errors/error-strategy.d.ts +62 -0
  188. package/dist/generators/errors/error-strategy.d.ts.map +1 -0
  189. package/dist/generators/errors/error-strategy.js +69 -0
  190. package/dist/generators/errors/error-strategy.js.map +1 -0
  191. package/dist/generators/errors/index.d.ts +23 -0
  192. package/dist/generators/errors/index.d.ts.map +1 -0
  193. package/dist/generators/errors/index.js +73 -0
  194. package/dist/generators/errors/index.js.map +1 -0
  195. package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
  196. package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
  197. package/dist/generators/errors/validation-error-strategy.js +214 -0
  198. package/dist/generators/errors/validation-error-strategy.js.map +1 -0
  199. package/dist/generators/happy-path-generator.d.ts +93 -0
  200. package/dist/generators/happy-path-generator.d.ts.map +1 -0
  201. package/dist/generators/happy-path-generator.js +275 -0
  202. package/dist/generators/happy-path-generator.js.map +1 -0
  203. package/dist/generators/test-enricher.d.ts +44 -0
  204. package/dist/generators/test-enricher.d.ts.map +1 -0
  205. package/dist/generators/test-enricher.js +109 -0
  206. package/dist/generators/test-enricher.js.map +1 -0
  207. package/dist/index.d.ts +9 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +14 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/llm/ai-cache.d.ts +123 -0
  212. package/dist/llm/ai-cache.d.ts.map +1 -0
  213. package/dist/llm/ai-cache.js +220 -0
  214. package/dist/llm/ai-cache.js.map +1 -0
  215. package/dist/llm/ai-client.d.ts +92 -0
  216. package/dist/llm/ai-client.d.ts.map +1 -0
  217. package/dist/llm/ai-client.js +386 -0
  218. package/dist/llm/ai-client.js.map +1 -0
  219. package/dist/llm/data-generator-ai.d.ts +84 -0
  220. package/dist/llm/data-generator-ai.d.ts.map +1 -0
  221. package/dist/llm/data-generator-ai.js +284 -0
  222. package/dist/llm/data-generator-ai.js.map +1 -0
  223. package/dist/llm/index.d.ts +7 -0
  224. package/dist/llm/index.d.ts.map +1 -0
  225. package/dist/llm/index.js +7 -0
  226. package/dist/llm/index.js.map +1 -0
  227. package/dist/mcp/handlers/base-handler.d.ts +72 -0
  228. package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
  229. package/dist/mcp/handlers/base-handler.js +86 -0
  230. package/dist/mcp/handlers/base-handler.js.map +1 -0
  231. package/dist/mcp/handlers/compare-sources.d.ts +91 -0
  232. package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
  233. package/dist/mcp/handlers/compare-sources.js +182 -0
  234. package/dist/mcp/handlers/compare-sources.js.map +1 -0
  235. package/dist/mcp/handlers/export-results.d.ts +53 -0
  236. package/dist/mcp/handlers/export-results.d.ts.map +1 -0
  237. package/dist/mcp/handlers/export-results.js +132 -0
  238. package/dist/mcp/handlers/export-results.js.map +1 -0
  239. package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
  240. package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
  241. package/dist/mcp/handlers/export-to-postman.js +128 -0
  242. package/dist/mcp/handlers/export-to-postman.js.map +1 -0
  243. package/dist/mcp/handlers/generate-tests.d.ts +74 -0
  244. package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
  245. package/dist/mcp/handlers/generate-tests.js +519 -0
  246. package/dist/mcp/handlers/generate-tests.js.map +1 -0
  247. package/dist/mcp/handlers/index.d.ts +13 -0
  248. package/dist/mcp/handlers/index.d.ts.map +1 -0
  249. package/dist/mcp/handlers/index.js +12 -0
  250. package/dist/mcp/handlers/index.js.map +1 -0
  251. package/dist/mcp/handlers/run-tests.d.ts +89 -0
  252. package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
  253. package/dist/mcp/handlers/run-tests.js +233 -0
  254. package/dist/mcp/handlers/run-tests.js.map +1 -0
  255. package/dist/mcp/handlers/types.d.ts +61 -0
  256. package/dist/mcp/handlers/types.d.ts.map +1 -0
  257. package/dist/mcp/handlers/types.js +9 -0
  258. package/dist/mcp/handlers/types.js.map +1 -0
  259. package/dist/mcp/server.d.ts +64 -0
  260. package/dist/mcp/server.d.ts.map +1 -0
  261. package/dist/mcp/server.js +200 -0
  262. package/dist/mcp/server.js.map +1 -0
  263. package/dist/mcp/services/file-service.d.ts +66 -0
  264. package/dist/mcp/services/file-service.d.ts.map +1 -0
  265. package/dist/mcp/services/file-service.js +143 -0
  266. package/dist/mcp/services/file-service.js.map +1 -0
  267. package/dist/mcp/services/llm-service.d.ts +70 -0
  268. package/dist/mcp/services/llm-service.d.ts.map +1 -0
  269. package/dist/mcp/services/llm-service.js +189 -0
  270. package/dist/mcp/services/llm-service.js.map +1 -0
  271. package/dist/mcp/services/postman-service.d.ts +128 -0
  272. package/dist/mcp/services/postman-service.d.ts.map +1 -0
  273. package/dist/mcp/services/postman-service.js +266 -0
  274. package/dist/mcp/services/postman-service.js.map +1 -0
  275. package/dist/mcp/services/report-service.d.ts +81 -0
  276. package/dist/mcp/services/report-service.d.ts.map +1 -0
  277. package/dist/mcp/services/report-service.js +210 -0
  278. package/dist/mcp/services/report-service.js.map +1 -0
  279. package/dist/mcp/services/spec-service.d.ts +58 -0
  280. package/dist/mcp/services/spec-service.d.ts.map +1 -0
  281. package/dist/mcp/services/spec-service.js +140 -0
  282. package/dist/mcp/services/spec-service.js.map +1 -0
  283. package/dist/parsers/endpoint-extractor.d.ts +32 -0
  284. package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
  285. package/dist/parsers/endpoint-extractor.js +160 -0
  286. package/dist/parsers/endpoint-extractor.js.map +1 -0
  287. package/dist/parsers/openapi-parser.d.ts +120 -0
  288. package/dist/parsers/openapi-parser.d.ts.map +1 -0
  289. package/dist/parsers/openapi-parser.js +257 -0
  290. package/dist/parsers/openapi-parser.js.map +1 -0
  291. package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
  292. package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
  293. package/dist/parsers/visitors/auth-visitor.js +116 -0
  294. package/dist/parsers/visitors/auth-visitor.js.map +1 -0
  295. package/dist/prd/index.d.ts +10 -0
  296. package/dist/prd/index.d.ts.map +1 -0
  297. package/dist/prd/index.js +10 -0
  298. package/dist/prd/index.js.map +1 -0
  299. package/dist/prd/prd-reader.d.ts +124 -0
  300. package/dist/prd/prd-reader.d.ts.map +1 -0
  301. package/dist/prd/prd-reader.js +308 -0
  302. package/dist/prd/prd-reader.js.map +1 -0
  303. package/dist/prd/prd-storage.d.ts +232 -0
  304. package/dist/prd/prd-storage.d.ts.map +1 -0
  305. package/dist/prd/prd-storage.js +129 -0
  306. package/dist/prd/prd-storage.js.map +1 -0
  307. package/dist/repairers/test-auto-repairer.d.ts +61 -0
  308. package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
  309. package/dist/repairers/test-auto-repairer.js +213 -0
  310. package/dist/repairers/test-auto-repairer.js.map +1 -0
  311. package/dist/reporters/comparison-report-generator.d.ts +58 -0
  312. package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
  313. package/dist/reporters/comparison-report-generator.js +369 -0
  314. package/dist/reporters/comparison-report-generator.js.map +1 -0
  315. package/dist/reporters/gherkin-formatter.d.ts +34 -0
  316. package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
  317. package/dist/reporters/gherkin-formatter.js +231 -0
  318. package/dist/reporters/gherkin-formatter.js.map +1 -0
  319. package/dist/reporters/html-report-generator.d.ts +174 -0
  320. package/dist/reporters/html-report-generator.d.ts.map +1 -0
  321. package/dist/reporters/html-report-generator.js +194 -0
  322. package/dist/reporters/html-report-generator.js.map +1 -0
  323. package/dist/reporters/report-charts.d.ts +23 -0
  324. package/dist/reporters/report-charts.d.ts.map +1 -0
  325. package/dist/reporters/report-charts.js +182 -0
  326. package/dist/reporters/report-charts.js.map +1 -0
  327. package/dist/reporters/report-sections.d.ts +34 -0
  328. package/dist/reporters/report-sections.d.ts.map +1 -0
  329. package/dist/reporters/report-sections.js +481 -0
  330. package/dist/reporters/report-sections.js.map +1 -0
  331. package/dist/reporters/report-styles.d.ts +12 -0
  332. package/dist/reporters/report-styles.d.ts.map +1 -0
  333. package/dist/reporters/report-styles.js +412 -0
  334. package/dist/reporters/report-styles.js.map +1 -0
  335. package/dist/reporters/report-test-details.d.ts +56 -0
  336. package/dist/reporters/report-test-details.d.ts.map +1 -0
  337. package/dist/reporters/report-test-details.js +328 -0
  338. package/dist/reporters/report-test-details.js.map +1 -0
  339. package/dist/reporters/report-utils.d.ts +40 -0
  340. package/dist/reporters/report-utils.d.ts.map +1 -0
  341. package/dist/reporters/report-utils.js +163 -0
  342. package/dist/reporters/report-utils.js.map +1 -0
  343. package/dist/types/ai-config.d.ts +63 -0
  344. package/dist/types/ai-config.d.ts.map +1 -0
  345. package/dist/types/ai-config.js +79 -0
  346. package/dist/types/ai-config.js.map +1 -0
  347. package/dist/types/business-rules.d.ts +235 -0
  348. package/dist/types/business-rules.d.ts.map +1 -0
  349. package/dist/types/business-rules.js +6 -0
  350. package/dist/types/business-rules.js.map +1 -0
  351. package/dist/types/config.d.ts +106 -0
  352. package/dist/types/config.d.ts.map +1 -0
  353. package/dist/types/config.js +6 -0
  354. package/dist/types/config.js.map +1 -0
  355. package/dist/types/core.d.ts +72 -0
  356. package/dist/types/core.d.ts.map +1 -0
  357. package/dist/types/core.js +6 -0
  358. package/dist/types/core.js.map +1 -0
  359. package/dist/types/index.d.ts +17 -0
  360. package/dist/types/index.d.ts.map +1 -0
  361. package/dist/types/index.js +10 -0
  362. package/dist/types/index.js.map +1 -0
  363. package/dist/types/openapi.d.ts +139 -0
  364. package/dist/types/openapi.d.ts.map +1 -0
  365. package/dist/types/openapi.js +6 -0
  366. package/dist/types/openapi.js.map +1 -0
  367. package/dist/types/pact.d.ts +101 -0
  368. package/dist/types/pact.d.ts.map +1 -0
  369. package/dist/types/pact.js +6 -0
  370. package/dist/types/pact.js.map +1 -0
  371. package/dist/types/reporting.d.ts +93 -0
  372. package/dist/types/reporting.d.ts.map +1 -0
  373. package/dist/types/reporting.js +6 -0
  374. package/dist/types/reporting.js.map +1 -0
  375. package/dist/types/test-case.d.ts +233 -0
  376. package/dist/types/test-case.d.ts.map +1 -0
  377. package/dist/types/test-case.js +6 -0
  378. package/dist/types/test-case.js.map +1 -0
  379. package/dist/types/test-execution.d.ts +80 -0
  380. package/dist/types/test-execution.d.ts.map +1 -0
  381. package/dist/types/test-execution.js +6 -0
  382. package/dist/types/test-execution.js.map +1 -0
  383. package/dist/utils/auth-generator.d.ts +30 -0
  384. package/dist/utils/auth-generator.d.ts.map +1 -0
  385. package/dist/utils/auth-generator.js +68 -0
  386. package/dist/utils/auth-generator.js.map +1 -0
  387. package/dist/utils/config.d.ts +181 -0
  388. package/dist/utils/config.d.ts.map +1 -0
  389. package/dist/utils/config.js +141 -0
  390. package/dist/utils/config.js.map +1 -0
  391. package/dist/utils/coverage-calculator.d.ts +81 -0
  392. package/dist/utils/coverage-calculator.d.ts.map +1 -0
  393. package/dist/utils/coverage-calculator.js +134 -0
  394. package/dist/utils/coverage-calculator.js.map +1 -0
  395. package/dist/utils/data-loader.d.ts +52 -0
  396. package/dist/utils/data-loader.d.ts.map +1 -0
  397. package/dist/utils/data-loader.js +192 -0
  398. package/dist/utils/data-loader.js.map +1 -0
  399. package/dist/utils/errors.d.ts +167 -0
  400. package/dist/utils/errors.d.ts.map +1 -0
  401. package/dist/utils/errors.js +257 -0
  402. package/dist/utils/errors.js.map +1 -0
  403. package/dist/utils/logger.d.ts +220 -0
  404. package/dist/utils/logger.d.ts.map +1 -0
  405. package/dist/utils/logger.js +325 -0
  406. package/dist/utils/logger.js.map +1 -0
  407. package/dist/utils/openapi-discovery.d.ts +31 -0
  408. package/dist/utils/openapi-discovery.d.ts.map +1 -0
  409. package/dist/utils/openapi-discovery.js +322 -0
  410. package/dist/utils/openapi-discovery.js.map +1 -0
  411. package/dist/utils/path-resolver.d.ts +101 -0
  412. package/dist/utils/path-resolver.d.ts.map +1 -0
  413. package/dist/utils/path-resolver.js +167 -0
  414. package/dist/utils/path-resolver.js.map +1 -0
  415. package/dist/utils/resilience.d.ts +181 -0
  416. package/dist/utils/resilience.d.ts.map +1 -0
  417. package/dist/utils/resilience.js +269 -0
  418. package/dist/utils/resilience.js.map +1 -0
  419. package/dist/validators/openapi-validator.d.ts +198 -0
  420. package/dist/validators/openapi-validator.d.ts.map +1 -0
  421. package/dist/validators/openapi-validator.js +349 -0
  422. package/dist/validators/openapi-validator.js.map +1 -0
  423. package/dist/validators/response-matcher.d.ts +84 -0
  424. package/dist/validators/response-matcher.d.ts.map +1 -0
  425. package/dist/validators/response-matcher.js +234 -0
  426. package/dist/validators/response-matcher.js.map +1 -0
  427. package/dist/validators/schema-validator.d.ts +174 -0
  428. package/dist/validators/schema-validator.d.ts.map +1 -0
  429. package/dist/validators/schema-validator.js +340 -0
  430. package/dist/validators/schema-validator.js.map +1 -0
  431. package/package.json +76 -0
@@ -0,0 +1,328 @@
1
+ /**
2
+ * Test Detail Renderers for HTML Report
3
+ *
4
+ * Renders per-test cards, category groupings, and expandable detail panels.
5
+ *
6
+ * @module reporters/report-test-details
7
+ */
8
+ import { escapeHtml, formatErrorMessage } from './report-utils.js';
9
+ import { toGherkinScenario, renderGherkinScenarioHTML } from './gherkin-formatter.js';
10
+ const CATEGORY_NAMES = {
11
+ 'happy-path': '✅ Happy Path',
12
+ 'edge-case': '⚡ Edge Cases',
13
+ 'error-case': '❌ Error Cases',
14
+ 'business-rule': '📋 Reglas de Negocio',
15
+ 'other': '📌 Otros',
16
+ };
17
+ const CATEGORY_ORDER = ['happy-path', 'edge-case', 'error-case', 'business-rule', 'other'];
18
+ const METHOD_COLORS = {
19
+ GET: 'bg-blue-500 text-white',
20
+ POST: 'bg-green-500 text-white',
21
+ PUT: 'bg-yellow-500 text-white',
22
+ PATCH: 'bg-orange-500 text-white',
23
+ DELETE: 'bg-red-500 text-white',
24
+ };
25
+ /**
26
+ * Syntax highlights JSON with color-coded tokens
27
+ * @param obj - Object to highlight
28
+ * @returns HTML string with syntax-highlighted JSON
29
+ */
30
+ function syntaxHighlightJson(obj) {
31
+ const json = JSON.stringify(obj, null, 2);
32
+ return `<pre class="json-highlight">${json
33
+ .replace(/&/g, '&amp;')
34
+ .replace(/</g, '&lt;')
35
+ .replace(/>/g, '&gt;')
36
+ .replace(/"([^"]+)":/g, '<span class="json-key">"$1"</span>:')
37
+ .replace(/: "([^"]*)"/g, ': <span class="json-string">"$1"</span>')
38
+ .replace(/: (\d+)/g, ': <span class="json-number">$1</span>')
39
+ .replace(/: (true|false)/g, ': <span class="json-boolean">$1</span>')
40
+ .replace(/: null/g, ': <span class="json-null">null</span>')}</pre>`;
41
+ }
42
+ /**
43
+ * Renders JSON with auto-collapse for large bodies
44
+ * @param obj - Object to render
45
+ * @param id - Unique ID for collapse control
46
+ * @returns HTML string with collapsible JSON
47
+ */
48
+ function renderCollapsibleJson(obj, id) {
49
+ const json = JSON.stringify(obj, null, 2);
50
+ const lines = json.split('\n');
51
+ const isLarge = lines.length > 15;
52
+ const uniqueId = `${id}-${Math.random().toString(36).substring(7)}`;
53
+ if (!isLarge) {
54
+ return `
55
+ <div class="code-block">
56
+ <div class="code-actions">
57
+ <button class="tab-btn active" onclick="switchTab(this, 'formatted')">Formateado</button>
58
+ <button class="tab-btn" onclick="switchTab(this, 'raw')">Raw</button>
59
+ <button class="copy-btn" onclick="copyToClipboard(this)">📋 Copiar</button>
60
+ </div>
61
+ <div class="tab-content formatted active">${syntaxHighlightJson(obj)}</div>
62
+ <div class="tab-content raw">${escapeHtml(json)}</div>
63
+ </div>
64
+ `;
65
+ }
66
+ const previewLines = lines.slice(0, 10);
67
+ const previewJson = previewLines.join('\n');
68
+ return `
69
+ <div class="code-block">
70
+ <div class="code-actions">
71
+ <button class="tab-btn active" onclick="switchTab(this, 'formatted')">Formateado</button>
72
+ <button class="tab-btn" onclick="switchTab(this, 'raw')">Raw</button>
73
+ <button class="toggle-collapse-btn" onclick="toggleCollapse('${uniqueId}')">
74
+ <span class="collapse-show">▼ Ver completo (${lines.length} líneas)</span>
75
+ <span class="collapse-hide" style="display:none;">▲ Ocultar</span>
76
+ </button>
77
+ <button class="copy-btn" onclick="copyToClipboard(this)">📋 Copiar</button>
78
+ </div>
79
+ <div id="${uniqueId}-preview" class="tab-content formatted active">
80
+ <pre class="json-highlight">${escapeHtml(previewJson)}</pre>
81
+ <div class="text-gray-500 italic mt-2 px-4">... ${lines.length - 10} líneas más (click "Ver completo" para expandir)</div>
82
+ </div>
83
+ <div id="${uniqueId}-full" class="tab-content formatted" style="display:none;">
84
+ ${syntaxHighlightJson(obj)}
85
+ </div>
86
+ <div class="tab-content raw">${escapeHtml(json)}</div>
87
+ </div>
88
+ `;
89
+ }
90
+ /**
91
+ * Groups tests by category and renders each group with its items.
92
+ *
93
+ * @param tests - All test result items
94
+ * @param aiAnalysis - Optional AI analysis for error explanations
95
+ * @returns HTML string of all test categories
96
+ */
97
+ export function generateDetailsByCategory(tests, aiAnalysis) {
98
+ const byCategory = {};
99
+ for (const test of tests) {
100
+ const category = test.category || 'other';
101
+ if (!byCategory[category]) {
102
+ byCategory[category] = [];
103
+ }
104
+ byCategory[category].push(test);
105
+ }
106
+ return Object.entries(byCategory)
107
+ .sort(([a], [b]) => CATEGORY_ORDER.indexOf(a) - CATEGORY_ORDER.indexOf(b))
108
+ .map(([category, categoryTests]) => `
109
+ <div class="category-section">
110
+ <h3 class="category-header">${CATEGORY_NAMES[category] || category}</h3>
111
+ <div class="space-y-4">
112
+ ${categoryTests.map(test => generateTestItem(test, aiAnalysis?.errorExplanations)).join('')}
113
+ </div>
114
+ </div>
115
+ `).join('');
116
+ }
117
+ /**
118
+ * Renders a collapsible test item card.
119
+ *
120
+ * @param test - The test result to render
121
+ * @param errorExplanations - Optional AI-generated error explanations keyed by error prefix
122
+ * @returns HTML string for a single test item
123
+ */
124
+ export function generateTestItem(test, errorExplanations) {
125
+ const statusClass = test.status;
126
+ const statusIcon = test.status === 'passed' ? '✅' : test.status === 'failed' ? '❌' : '⚠️';
127
+ const method = (test.method || 'GET').toUpperCase();
128
+ const borderColor = test.status === 'passed' ? 'border-green-500' : test.status === 'failed' ? 'border-red-500' : 'border-yellow-500';
129
+ const bgColor = test.status === 'passed' ? 'bg-green-50' : test.status === 'failed' ? 'bg-red-50' : 'bg-yellow-50';
130
+ const methodColor = METHOD_COLORS[method] || 'bg-gray-500 text-white';
131
+ return `
132
+ <div class="border-2 ${borderColor} rounded-xl overflow-hidden transition-shadow duration-200 hover:shadow-lg test-item" data-status="${statusClass}">
133
+ <div class="p-5 ${bgColor} cursor-pointer flex flex-wrap items-center gap-3 test-header hover:bg-opacity-75 transition-colors" onclick="toggleTest(this)">
134
+ <span class="text-2xl">${statusIcon}</span>
135
+ <span class="px-3 py-1 ${methodColor} rounded-md font-bold text-sm">${method}</span>
136
+ <span class="flex-1 min-w-0">
137
+ <span class="font-semibold text-gray-800 text-base">${test.name}</span>
138
+ ${test.id ? `<span class="text-sm text-gray-500 ml-2">(${test.id})</span>` : ''}
139
+ </span>
140
+ ${test.duration ? `<span class="px-3 py-1 bg-yellow-100 text-yellow-800 rounded-md font-semibold text-sm whitespace-nowrap">⏱️ ${test.duration}ms</span>` : ''}
141
+ <span class="text-xl transform transition-transform duration-200 expand-icon">▼</span>
142
+ </div>
143
+
144
+ <div class="test-details hidden p-6 bg-white border-t-2 ${borderColor}">
145
+ ${generateTestDetails(test, errorExplanations)}
146
+ </div>
147
+ </div>
148
+ `;
149
+ }
150
+ /**
151
+ * Renders the expanded detail panel for a test item.
152
+ *
153
+ * @param test - The test result to render details for
154
+ * @param errorExplanations - Optional AI-generated error explanations
155
+ * @returns HTML string for the detail panel
156
+ */
157
+ export function generateTestDetails(test, errorExplanations) {
158
+ const uniqueId = `test-${test.id || Math.random().toString(36).substring(7)}`;
159
+ // Generate Gherkin scenario
160
+ const gherkinScenario = toGherkinScenario(test);
161
+ const gherkinHTML = renderGherkinScenarioHTML(gherkinScenario);
162
+ let html = '';
163
+ // View Toggle
164
+ html += `
165
+ <div class="view-toggle-container">
166
+ <div class="view-toggle-buttons">
167
+ <button class="view-toggle-btn active" onclick="switchView('${uniqueId}', 'gherkin')">
168
+ 📋 Gherkin View
169
+ </button>
170
+ <button class="view-toggle-btn" onclick="switchView('${uniqueId}', 'technical')">
171
+ 🔧 Technical View
172
+ </button>
173
+ </div>
174
+ </div>
175
+ `;
176
+ // Gherkin View (default visible)
177
+ html += `
178
+ <div id="${uniqueId}-gherkin" class="view-content view-gherkin">
179
+ ${gherkinHTML}
180
+ </div>
181
+ `;
182
+ // Technical View (hidden by default)
183
+ html += `
184
+ <div id="${uniqueId}-technical" class="view-content view-technical" style="display:none;">
185
+ ${generateTechnicalView(test, errorExplanations)}
186
+ </div>
187
+ `;
188
+ return html;
189
+ }
190
+ /**
191
+ * Generates the technical view (original detailed view)
192
+ */
193
+ function generateTechnicalView(test, errorExplanations) {
194
+ let html = '';
195
+ // Basic Info
196
+ html += `
197
+ <div class="detail-section">
198
+ <h4>📋 Información del Test</h4>
199
+ <ul class="assertions-list">
200
+ ${test.id ? `<li class="passed">🆔 ID: <code>${test.id}</code></li>` : ''}
201
+ <li class="passed">📍 Endpoint: <code>${test.endpoint}</code></li>
202
+ <li class="passed">🏷️ Categoría: <strong>${test.category}</strong></li>
203
+ ${test.duration ? `<li class="passed">⏱️ Duración: <strong>${test.duration}ms</strong></li>` : ''}
204
+ </ul>
205
+ </div>
206
+ `;
207
+ // Request Details
208
+ if (test.request) {
209
+ html += `
210
+ <div class="detail-section">
211
+ <h4>📤 Petición</h4>
212
+ ${test.request.headers ? `
213
+ <p><strong>Headers:</strong></p>
214
+ <div class="code-block">
215
+ <div class="code-actions">
216
+ <button class="tab-btn active" onclick="switchTab(this, 'formatted')">Formateado</button>
217
+ <button class="tab-btn" onclick="switchTab(this, 'raw')">Raw</button>
218
+ <button class="copy-btn" onclick="copyToClipboard(this)">📋 Copiar</button>
219
+ </div>
220
+ <div class="tab-content formatted active">${syntaxHighlightJson(test.request.headers)}</div>
221
+ <div class="tab-content raw">${escapeHtml(JSON.stringify(test.request.headers))}</div>
222
+ </div>
223
+ ` : ''}
224
+ ${test.request.body ? `
225
+ <p><strong>Body:</strong></p>
226
+ ${renderCollapsibleJson(test.request.body, 'request-body')}
227
+ ` : ''}
228
+ </div>
229
+ `;
230
+ }
231
+ // Response Details
232
+ if (test.response || test.actualStatus) {
233
+ const statusMatch = test.actualStatus === test.expectedStatus;
234
+ html += `
235
+ <div class="detail-section">
236
+ <h4>📥 Respuesta</h4>
237
+ ${test.actualStatus ? `
238
+ <p><strong>Código de Estado:</strong>
239
+ <span class="status-badge ${statusMatch ? 'status-success' : 'status-error'}">
240
+ ${test.actualStatus}
241
+ ${!statusMatch && test.expectedStatus ? ` ≠ ${test.expectedStatus} (esperado)` : ''}
242
+ </span>
243
+ </p>
244
+ ` : ''}
245
+ ${test.response?.headers ? `
246
+ <p><strong>Headers:</strong></p>
247
+ <div class="code-block">
248
+ <div class="code-actions">
249
+ <button class="tab-btn active" onclick="switchTab(this, 'formatted')">Formateado</button>
250
+ <button class="tab-btn" onclick="switchTab(this, 'raw')">Raw</button>
251
+ <button class="copy-btn" onclick="copyToClipboard(this)">📋 Copiar</button>
252
+ </div>
253
+ <div class="tab-content formatted active">${syntaxHighlightJson(test.response.headers)}</div>
254
+ <div class="tab-content raw">${escapeHtml(JSON.stringify(test.response.headers))}</div>
255
+ </div>
256
+ ` : ''}
257
+ ${test.response?.body ? `
258
+ <p><strong>Body:</strong></p>
259
+ ${renderCollapsibleJson(test.response.body, 'response-body')}
260
+ ` : ''}
261
+ </div>
262
+ `;
263
+ }
264
+ // Validations
265
+ html += `
266
+ <div class="detail-section">
267
+ <h4>✓ Validaciones</h4>
268
+ <ul class="assertions-list">
269
+ ${test.expectedStatus ? `
270
+ <li class="${test.actualStatus === test.expectedStatus ? 'passed' : 'failed'}">
271
+ ${test.actualStatus === test.expectedStatus ? '✅' : '❌'}
272
+ Código de estado: Esperado ${test.expectedStatus}, Obtenido ${test.actualStatus}
273
+ </li>
274
+ ` : ''}
275
+ ${test.duration ? `
276
+ <li class="${test.duration < 1000 ? 'passed' : 'failed'}">
277
+ ${test.duration < 1000 ? '✅' : '⚠️'}
278
+ Tiempo de respuesta: ${test.duration}ms ${test.duration < 1000 ? '(Bajo 1s)' : '(Sobre 1s)'}
279
+ </li>
280
+ ` : ''}
281
+ ${!test.error && !test.schemaErrors ? '<li class="passed">✅ Sin errores detectados</li>' : ''}
282
+ </ul>
283
+ </div>
284
+ `;
285
+ // Errors - with AI explanation if available
286
+ if (test.error || test.schemaErrors) {
287
+ let aiExplanation = '';
288
+ if (errorExplanations && test.error) {
289
+ for (const [key, explanation] of Object.entries(errorExplanations)) {
290
+ if (test.error.startsWith(key) || key.startsWith(test.error.substring(0, 30))) {
291
+ aiExplanation = explanation;
292
+ break;
293
+ }
294
+ }
295
+ }
296
+ html += `
297
+ <div class="detail-section">
298
+ <h4>🚨 Detalles del Error</h4>
299
+ ${aiExplanation ? `
300
+ <div class="ai-explanation">
301
+ <span class="ai-label">🤖 Explicación IA:</span>
302
+ <p>${escapeHtml(aiExplanation)}</p>
303
+ </div>
304
+ ` : ''}
305
+ ${test.error ? `<div class="error-summary">${formatErrorMessage(test.error)}</div>` : ''}
306
+ ${test.schemaErrors && test.schemaErrors.length > 0 ? `
307
+ <div class="schema-errors">
308
+ <p class="error-intro"><strong>Errores de Validación de Schema:</strong></p>
309
+ <ul class="error-list">
310
+ ${test.schemaErrors.map((err) => `
311
+ <li class="error-item">
312
+ <span class="error-icon">⚠️</span>
313
+ <div class="error-content">
314
+ <span class="error-field">${err.instancePath || 'root'}</span>
315
+ <span class="error-message">${escapeHtml(err.message)}</span>
316
+ ${err.keyword ? `<span class="error-keyword">[${err.keyword}]</span>` : ''}
317
+ </div>
318
+ </li>
319
+ `).join('')}
320
+ </ul>
321
+ </div>
322
+ ` : ''}
323
+ </div>
324
+ `;
325
+ }
326
+ return html;
327
+ }
328
+ //# sourceMappingURL=report-test-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-test-details.js","sourceRoot":"","sources":["../../src/reporters/report-test-details.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * HTML Report Utilities
3
+ *
4
+ * Helper functions for formatting and styling report content.
5
+ *
6
+ * @module reporters/report-utils
7
+ */
8
+ /**
9
+ * Formats a duration in milliseconds to a human-readable string
10
+ */
11
+ export declare function formatDuration(ms: number): string;
12
+ /**
13
+ * Escapes HTML special characters to prevent XSS
14
+ */
15
+ export declare function escapeHtml(text: string): string;
16
+ /**
17
+ * Formats error messages into human-readable HTML
18
+ */
19
+ export declare function formatErrorMessage(error: string): string;
20
+ /**
21
+ * Get Tailwind CSS color classes for HTTP method badges
22
+ */
23
+ export declare function getMethodColorClass(method: string): string;
24
+ /**
25
+ * Get Tailwind CSS classes for priority badges
26
+ */
27
+ export declare function getPriorityBadgeClass(priority: string): string;
28
+ /**
29
+ * Get Tailwind CSS border classes for pattern cards
30
+ */
31
+ export declare function getPatternBorderClass(impact: string): string;
32
+ /** Get label for root cause */
33
+ export declare function getRootCauseLabel(rootCause: string): string;
34
+ /** Get border color class for root cause */
35
+ export declare function getRootCauseBorderColor(rootCause: string): string;
36
+ /** Get priority badge class for root cause */
37
+ export declare function getRootCausePriorityBadge(rootCause: string): string;
38
+ /** Get method badge class */
39
+ export declare function getMethodBadgeClass(method: string): string;
40
+ //# sourceMappingURL=report-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-utils.d.ts","sourceRoot":"","sources":["../../src/reporters/report-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8CxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,+BAA+B;AAC/B,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAW3D;AAED,4CAA4C;AAC5C,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWjE;AAED,8CAA8C;AAC9C,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWnE;AAED,6BAA6B;AAC7B,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS1D"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * HTML Report Utilities
3
+ *
4
+ * Helper functions for formatting and styling report content.
5
+ *
6
+ * @module reporters/report-utils
7
+ */
8
+ /**
9
+ * Formats a duration in milliseconds to a human-readable string
10
+ */
11
+ export function formatDuration(ms) {
12
+ if (ms < 1000)
13
+ return `${ms}ms`;
14
+ if (ms < 60000)
15
+ return `${(ms / 1000).toFixed(2)}s`;
16
+ const minutes = Math.floor(ms / 60000);
17
+ const seconds = ((ms % 60000) / 1000).toFixed(0);
18
+ return `${minutes}m ${seconds}s`;
19
+ }
20
+ /**
21
+ * Escapes HTML special characters to prevent XSS
22
+ */
23
+ export function escapeHtml(text) {
24
+ const map = {
25
+ '&': '&amp;',
26
+ '<': '&lt;',
27
+ '>': '&gt;',
28
+ '"': '&quot;',
29
+ "'": '&#039;'
30
+ };
31
+ return text.replace(/[&<>"']/g, m => map[m]);
32
+ }
33
+ /**
34
+ * Formats error messages into human-readable HTML
35
+ */
36
+ export function formatErrorMessage(error) {
37
+ const parts = error.split(';').map(s => s.trim()).filter(Boolean);
38
+ if (parts.length === 1) {
39
+ return `<p class="error-main">${escapeHtml(error)}</p>`;
40
+ }
41
+ let html = '<div class="error-multi">';
42
+ for (const part of parts) {
43
+ if (part.includes('Expected status') && part.includes('got')) {
44
+ const match = part.match(/Expected status (\d+), got (\d+)/);
45
+ if (match) {
46
+ html += `
47
+ <div class="error-status-mismatch">
48
+ <span class="error-label">Status Mismatch:</span>
49
+ <span class="expected">Expected: <code>${match[1]}</code></span>
50
+ <span class="vs">→</span>
51
+ <span class="actual">Actual: <code>${match[2]}</code></span>
52
+ </div>`;
53
+ continue;
54
+ }
55
+ }
56
+ if (part.includes('Schema validation failed')) {
57
+ html += `<p class="error-schema-header">📋 Schema validation failed</p>`;
58
+ continue;
59
+ }
60
+ if (part.includes('must have required property')) {
61
+ const match = part.match(/must have required property '([^']+)'/);
62
+ if (match) {
63
+ html += `
64
+ <div class="error-missing-prop">
65
+ <span class="error-icon">📦</span>
66
+ <span>Missing required field: <code>${match[1]}</code></span>
67
+ </div>`;
68
+ continue;
69
+ }
70
+ }
71
+ html += `<p class="error-line">${escapeHtml(part)}</p>`;
72
+ }
73
+ html += '</div>';
74
+ return html;
75
+ }
76
+ /**
77
+ * Get Tailwind CSS color classes for HTTP method badges
78
+ */
79
+ export function getMethodColorClass(method) {
80
+ switch (method.toUpperCase()) {
81
+ case 'GET': return 'bg-blue-100 text-blue-800';
82
+ case 'POST': return 'bg-green-100 text-green-800';
83
+ case 'PUT': return 'bg-yellow-100 text-yellow-800';
84
+ case 'PATCH': return 'bg-orange-100 text-orange-800';
85
+ case 'DELETE': return 'bg-red-100 text-red-800';
86
+ default: return 'bg-gray-100 text-gray-800';
87
+ }
88
+ }
89
+ /**
90
+ * Get Tailwind CSS classes for priority badges
91
+ */
92
+ export function getPriorityBadgeClass(priority) {
93
+ switch (priority.toLowerCase()) {
94
+ case 'critical': return 'bg-red-600 text-white';
95
+ case 'high': return 'bg-orange-500 text-white';
96
+ case 'medium': return 'bg-yellow-500 text-white';
97
+ case 'low': return 'bg-blue-500 text-white';
98
+ default: return 'bg-gray-500 text-white';
99
+ }
100
+ }
101
+ /**
102
+ * Get Tailwind CSS border classes for pattern cards
103
+ */
104
+ export function getPatternBorderClass(impact) {
105
+ switch (impact.toLowerCase()) {
106
+ case 'critical': return 'border-red-500 bg-red-50';
107
+ case 'high': return 'border-orange-500 bg-orange-50';
108
+ case 'medium': return 'border-yellow-500 bg-yellow-50';
109
+ case 'low': return 'border-blue-500 bg-blue-50';
110
+ default: return 'border-gray-300 bg-gray-50';
111
+ }
112
+ }
113
+ /** Get label for root cause */
114
+ export function getRootCauseLabel(rootCause) {
115
+ const labels = {
116
+ endpoint_not_implemented: 'Not Implemented',
117
+ endpoint_not_documented: 'Not Documented',
118
+ auth_mismatch: 'Auth Mismatch',
119
+ missing_dependency: 'Missing Dependency',
120
+ schema_mismatch: 'Schema Mismatch',
121
+ business_rule_violation: 'Business Rule',
122
+ unknown: 'Unknown',
123
+ };
124
+ return labels[rootCause] || rootCause;
125
+ }
126
+ /** Get border color class for root cause */
127
+ export function getRootCauseBorderColor(rootCause) {
128
+ const colors = {
129
+ endpoint_not_implemented: 'border-red-500',
130
+ business_rule_violation: 'border-orange-600',
131
+ auth_mismatch: 'border-orange-500',
132
+ schema_mismatch: 'border-yellow-500',
133
+ missing_dependency: 'border-blue-500',
134
+ endpoint_not_documented: 'border-gray-400',
135
+ unknown: 'border-gray-300',
136
+ };
137
+ return colors[rootCause] || 'border-gray-300';
138
+ }
139
+ /** Get priority badge class for root cause */
140
+ export function getRootCausePriorityBadge(rootCause) {
141
+ const badges = {
142
+ endpoint_not_implemented: 'bg-red-600 text-white',
143
+ business_rule_violation: 'bg-orange-600 text-white',
144
+ auth_mismatch: 'bg-orange-500 text-white',
145
+ schema_mismatch: 'bg-yellow-500 text-white',
146
+ missing_dependency: 'bg-blue-500 text-white',
147
+ endpoint_not_documented: 'bg-gray-500 text-white',
148
+ unknown: 'bg-gray-400 text-white',
149
+ };
150
+ return badges[rootCause] || 'bg-gray-400 text-white';
151
+ }
152
+ /** Get method badge class */
153
+ export function getMethodBadgeClass(method) {
154
+ const badges = {
155
+ GET: 'bg-blue-600 text-white',
156
+ POST: 'bg-green-600 text-white',
157
+ PUT: 'bg-yellow-600 text-white',
158
+ PATCH: 'bg-orange-600 text-white',
159
+ DELETE: 'bg-red-600 text-white',
160
+ };
161
+ return badges[method.toUpperCase()] || 'bg-gray-600 text-white';
162
+ }
163
+ //# sourceMappingURL=report-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-utils.js","sourceRoot":"","sources":["../../src/reporters/report-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * AI Configuration Types
3
+ *
4
+ * Defines configuration levels and capabilities for AI-powered test generation
5
+ *
6
+ * @module types/ai-config
7
+ */
8
+ /**
9
+ * AI capability levels
10
+ * - off: No AI, only heuristics
11
+ * - basic: Contextual data generation only
12
+ * - smart: Auto-dependencies, data flows, smart assertions
13
+ * - advanced: All features including domain edge cases and user story analysis
14
+ */
15
+ export type AILevel = 'off' | 'basic' | 'smart' | 'advanced';
16
+ /**
17
+ * AI capabilities configuration
18
+ */
19
+ export interface AICapabilities {
20
+ /** Generate contextual data based on API domain */
21
+ contextualData: boolean;
22
+ /** Automatically detect test dependencies */
23
+ autoDependencies: boolean;
24
+ /** Automatically detect data flows between tests */
25
+ autoDataFlow: boolean;
26
+ /** Generate smart business logic assertions */
27
+ smartAssertions: boolean;
28
+ /** Suggest domain-specific edge cases */
29
+ domainEdgeCases: boolean;
30
+ /** Analyze user stories for test generation */
31
+ userStoryAnalysis: boolean;
32
+ }
33
+ /**
34
+ * LLM configuration
35
+ */
36
+ export interface LLMConfig {
37
+ /** Maximum tokens for LLM responses */
38
+ maxTokens: number;
39
+ /** Temperature for generation (0-1) */
40
+ temperature: number;
41
+ /** Optional: specific model to use */
42
+ model?: string;
43
+ }
44
+ /**
45
+ * Complete AI configuration
46
+ */
47
+ export interface AIConfig {
48
+ /** AI capability level */
49
+ level: AILevel;
50
+ /** Enabled capabilities */
51
+ capabilities: AICapabilities;
52
+ /** LLM configuration */
53
+ llm: LLMConfig;
54
+ }
55
+ /**
56
+ * Predefined AI level configurations
57
+ */
58
+ export declare const AI_LEVELS: Record<AILevel, AIConfig>;
59
+ /**
60
+ * Get AI configuration for a specific level
61
+ */
62
+ export declare function getAIConfig(level?: AILevel): AIConfig;
63
+ //# sourceMappingURL=ai-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-config.d.ts","sourceRoot":"","sources":["../../src/types/ai-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,cAAc,EAAE,OAAO,CAAC;IAExB,6CAA6C;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAE1B,oDAAoD;IACpD,YAAY,EAAE,OAAO,CAAC;IAEtB,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC;IAEzB,yCAAyC;IACzC,eAAe,EAAE,OAAO,CAAC;IAEzB,+CAA+C;IAC/C,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,0BAA0B;IAC1B,KAAK,EAAE,OAAO,CAAC;IAEf,2BAA2B;IAC3B,YAAY,EAAE,cAAc,CAAC;IAE7B,wBAAwB;IACxB,GAAG,EAAE,SAAS,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,CAgE/C,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,GAAE,OAAe,GAAG,QAAQ,CAE5D"}