@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,257 @@
1
+ /**
2
+ * Custom Error Classes for OpenAPI Contract Tester
3
+ *
4
+ * Provides semantic error types with error codes for better error handling
5
+ * and user-friendly error messages.
6
+ *
7
+ * @module utils/errors
8
+ */
9
+ /**
10
+ * Error codes for different failure scenarios
11
+ */
12
+ export var ErrorCode;
13
+ (function (ErrorCode) {
14
+ // OpenAPI Parsing Errors (E001-E099)
15
+ ErrorCode["OPENAPI_PARSE_ERROR"] = "E001";
16
+ ErrorCode["OPENAPI_INVALID_SPEC"] = "E002";
17
+ ErrorCode["OPENAPI_UNSUPPORTED_VERSION"] = "E003";
18
+ ErrorCode["OPENAPI_MISSING_PATHS"] = "E004";
19
+ ErrorCode["OPENAPI_INVALID_SCHEMA"] = "E005";
20
+ // Test Generation Errors (E100-E199)
21
+ ErrorCode["TEST_GENERATION_FAILED"] = "E100";
22
+ ErrorCode["NO_ENDPOINTS_FOUND"] = "E101";
23
+ ErrorCode["INVALID_TEST_CATEGORY"] = "E102";
24
+ ErrorCode["DATA_GENERATION_FAILED"] = "E103";
25
+ // Test Execution Errors (E200-E299)
26
+ ErrorCode["TEST_EXECUTION_FAILED"] = "E200";
27
+ ErrorCode["HTTP_REQUEST_FAILED"] = "E201";
28
+ ErrorCode["TIMEOUT_ERROR"] = "E202";
29
+ ErrorCode["NETWORK_ERROR"] = "E203";
30
+ ErrorCode["AUTH_ERROR"] = "E204";
31
+ // Validation Errors (E300-E399)
32
+ ErrorCode["SCHEMA_VALIDATION_FAILED"] = "E300";
33
+ ErrorCode["RESPONSE_VALIDATION_FAILED"] = "E301";
34
+ ErrorCode["CONTRACT_VALIDATION_FAILED"] = "E302";
35
+ // Business Rules Errors (E400-E499)
36
+ ErrorCode["BUSINESS_RULES_PARSE_ERROR"] = "E400";
37
+ ErrorCode["BUSINESS_RULES_NOT_FOUND"] = "E401";
38
+ ErrorCode["BUSINESS_RULES_INVALID"] = "E402";
39
+ ErrorCode["DOCS_NOT_FOUND"] = "E403";
40
+ ErrorCode["RULES_EXTRACTION_FAILED"] = "E404";
41
+ // Pact Errors (E500-E599)
42
+ ErrorCode["PACT_GENERATION_FAILED"] = "E500";
43
+ ErrorCode["PACT_VERIFICATION_FAILED"] = "E501";
44
+ ErrorCode["PACT_BROKER_ERROR"] = "E502";
45
+ // MCP Server Errors (E600-E699)
46
+ ErrorCode["MCP_TOOL_NOT_FOUND"] = "E600";
47
+ ErrorCode["MCP_INVALID_ARGUMENTS"] = "E601";
48
+ ErrorCode["MCP_INTERNAL_ERROR"] = "E602";
49
+ // File System Errors (E700-E799)
50
+ ErrorCode["FILE_NOT_FOUND"] = "E700";
51
+ ErrorCode["FILE_READ_ERROR"] = "E701";
52
+ ErrorCode["FILE_WRITE_ERROR"] = "E702";
53
+ ErrorCode["DIRECTORY_NOT_FOUND"] = "E703";
54
+ // Generic Errors (E900-E999)
55
+ ErrorCode["UNKNOWN_ERROR"] = "E999";
56
+ })(ErrorCode || (ErrorCode = {}));
57
+ /**
58
+ * Base error class with error code and user-friendly messages
59
+ */
60
+ export class BaseError extends Error {
61
+ /**
62
+ * Error code for programmatic handling
63
+ */
64
+ code;
65
+ /**
66
+ * User-friendly error message
67
+ */
68
+ userMessage;
69
+ /**
70
+ * Additional context/metadata
71
+ */
72
+ context;
73
+ /**
74
+ * Whether this error is retryable
75
+ */
76
+ retryable;
77
+ constructor(code, message, userMessage, context, retryable = false) {
78
+ super(message);
79
+ this.name = this.constructor.name;
80
+ this.code = code;
81
+ this.userMessage = userMessage;
82
+ this.context = context;
83
+ this.retryable = retryable;
84
+ // Maintains proper stack trace for where error was thrown (V8 only)
85
+ if (Error.captureStackTrace) {
86
+ Error.captureStackTrace(this, this.constructor);
87
+ }
88
+ }
89
+ /**
90
+ * Converts error to JSON for logging/API responses
91
+ */
92
+ toJSON() {
93
+ return {
94
+ name: this.name,
95
+ code: this.code,
96
+ message: this.userMessage,
97
+ context: this.context,
98
+ retryable: this.retryable,
99
+ };
100
+ }
101
+ }
102
+ /**
103
+ * OpenAPI parsing and validation errors
104
+ */
105
+ export class OpenAPIError extends BaseError {
106
+ constructor(code, message, userMessage, context) {
107
+ super(code, message, userMessage, context, false);
108
+ }
109
+ }
110
+ /**
111
+ * Test generation errors
112
+ */
113
+ export class TestGenerationError extends BaseError {
114
+ constructor(code, message, userMessage, context) {
115
+ super(code, message, userMessage, context, false);
116
+ }
117
+ }
118
+ /**
119
+ * Test execution errors (potentially retryable)
120
+ */
121
+ export class TestExecutionError extends BaseError {
122
+ constructor(code, message, userMessage, context, retryable = true) {
123
+ super(code, message, userMessage, context, retryable);
124
+ }
125
+ }
126
+ /**
127
+ * Validation errors
128
+ */
129
+ export class ValidationError extends BaseError {
130
+ constructor(code, message, userMessage, context) {
131
+ super(code, message, userMessage, context, false);
132
+ }
133
+ }
134
+ /**
135
+ * Business rules errors
136
+ */
137
+ export class BusinessRuleError extends BaseError {
138
+ constructor(code, message, userMessage, context) {
139
+ super(code, message, userMessage, context, false);
140
+ }
141
+ }
142
+ /**
143
+ * Pact contract testing errors
144
+ */
145
+ export class PactError extends BaseError {
146
+ constructor(code, message, userMessage, context, retryable = false) {
147
+ super(code, message, userMessage, context, retryable);
148
+ }
149
+ }
150
+ /**
151
+ * MCP server errors
152
+ */
153
+ export class MCPError extends BaseError {
154
+ constructor(code, message, userMessage, context) {
155
+ super(code, message, userMessage, context, false);
156
+ }
157
+ }
158
+ /**
159
+ * File system errors
160
+ */
161
+ export class FileSystemError extends BaseError {
162
+ constructor(code, message, userMessage, context) {
163
+ super(code, message, userMessage, context, false);
164
+ }
165
+ }
166
+ /**
167
+ * Formats an error for user display (removes stack trace, sanitizes)
168
+ *
169
+ * @param error - Error to format
170
+ * @returns User-friendly error object
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * try {
175
+ * // ... code
176
+ * } catch (error) {
177
+ * const formatted = formatError(error);
178
+ * return { success: false, error: formatted };
179
+ * }
180
+ * ```
181
+ */
182
+ export function formatError(error) {
183
+ if (error instanceof BaseError) {
184
+ return {
185
+ code: error.code,
186
+ message: error.userMessage,
187
+ retryable: error.retryable,
188
+ context: error.context,
189
+ };
190
+ }
191
+ if (error instanceof Error) {
192
+ return {
193
+ code: ErrorCode.UNKNOWN_ERROR,
194
+ message: error.message,
195
+ retryable: false,
196
+ };
197
+ }
198
+ return {
199
+ code: ErrorCode.UNKNOWN_ERROR,
200
+ message: String(error),
201
+ retryable: false,
202
+ };
203
+ }
204
+ /**
205
+ * Type guard to check if error is retryable
206
+ *
207
+ * @param error - Error to check
208
+ * @returns True if error is retryable
209
+ */
210
+ export function isRetryableError(error) {
211
+ return error instanceof BaseError && error.retryable;
212
+ }
213
+ /**
214
+ * Wraps a native error in appropriate custom error class
215
+ *
216
+ * @param error - Native error
217
+ * @param context - Additional context
218
+ * @returns Custom error instance
219
+ *
220
+ * @example
221
+ * ```typescript
222
+ * try {
223
+ * await fs.readFile('file.yml');
224
+ * } catch (error) {
225
+ * throw wrapError(error, { file: 'file.yml' });
226
+ * }
227
+ * ```
228
+ */
229
+ export function wrapError(error, context) {
230
+ if (error instanceof BaseError) {
231
+ return error;
232
+ }
233
+ if (error instanceof Error) {
234
+ // Detect error type from message/name
235
+ const message = error.message.toLowerCase();
236
+ if (message.includes('enoent') || message.includes('file not found')) {
237
+ return new FileSystemError(ErrorCode.FILE_NOT_FOUND, error.message, 'The specified file could not be found', { ...context, originalError: error.name });
238
+ }
239
+ if (message.includes('timeout') || message.includes('timed out')) {
240
+ return new TestExecutionError(ErrorCode.TIMEOUT_ERROR, error.message, 'Request timed out. The server took too long to respond.', context, true // retryable
241
+ );
242
+ }
243
+ if (message.includes('network') || message.includes('econnrefused')) {
244
+ return new TestExecutionError(ErrorCode.NETWORK_ERROR, error.message, 'Network error occurred. Please check your connection.', context, true // retryable
245
+ );
246
+ }
247
+ if (message.includes('unauthorized') || message.includes('401')) {
248
+ return new TestExecutionError(ErrorCode.AUTH_ERROR, error.message, 'Authentication failed. Please check your credentials.', context, false // not retryable
249
+ );
250
+ }
251
+ // Generic unknown error
252
+ return new BaseError(ErrorCode.UNKNOWN_ERROR, error.message, 'An unexpected error occurred', { ...context, originalError: error.name }, false);
253
+ }
254
+ // Non-Error object thrown
255
+ return new BaseError(ErrorCode.UNKNOWN_ERROR, String(error), 'An unexpected error occurred', context, false);
256
+ }
257
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Centralized Logger for OpenAPI Contract Tester
3
+ *
4
+ * Provides robust logging with support for:
5
+ * - MCP mode (writes to file, not stdout/stderr to avoid breaking STDIO protocol)
6
+ * - Standalone mode (uses console for development/testing)
7
+ * - Log levels (DEBUG, INFO, WARN, ERROR)
8
+ * - Structured logging (JSON format)
9
+ * - Automatic log rotation
10
+ *
11
+ * @module utils/logger
12
+ */
13
+ /**
14
+ * Log levels in order of severity
15
+ */
16
+ export declare enum LogLevel {
17
+ DEBUG = 0,
18
+ INFO = 1,
19
+ WARN = 2,
20
+ ERROR = 3
21
+ }
22
+ /**
23
+ * Log entry structure
24
+ */
25
+ export interface LogEntry {
26
+ /**
27
+ * ISO timestamp of when the log was created
28
+ */
29
+ timestamp: string;
30
+ /**
31
+ * Log level
32
+ */
33
+ level: 'debug' | 'info' | 'warn' | 'error';
34
+ /**
35
+ * Log message
36
+ */
37
+ message: string;
38
+ /**
39
+ * Optional metadata (error objects, request data, etc.)
40
+ */
41
+ meta?: unknown;
42
+ /**
43
+ * Source component that generated the log
44
+ */
45
+ source?: string;
46
+ }
47
+ /**
48
+ * Logger configuration options
49
+ */
50
+ export interface LoggerConfig {
51
+ /**
52
+ * Minimum log level to record
53
+ * @default LogLevel.INFO
54
+ */
55
+ minLevel?: LogLevel;
56
+ /**
57
+ * Directory where log files will be stored
58
+ * @default './logs'
59
+ */
60
+ logDir?: string;
61
+ /**
62
+ * Base name for log files (will append date)
63
+ * @default 'mcp-server'
64
+ */
65
+ logFileName?: string;
66
+ /**
67
+ * Maximum log file size in bytes before rotation
68
+ * @default 10MB (10 * 1024 * 1024)
69
+ */
70
+ maxFileSize?: number;
71
+ /**
72
+ * Maximum number of rotated log files to keep
73
+ * @default 5
74
+ */
75
+ maxFiles?: number;
76
+ /**
77
+ * Whether to use console output (standalone mode)
78
+ * Set to false when running as MCP server
79
+ * @default true
80
+ */
81
+ useConsole?: boolean;
82
+ /**
83
+ * Whether to write to file
84
+ * @default true in MCP mode, false in standalone
85
+ */
86
+ writeToFile?: boolean;
87
+ /**
88
+ * Whether to include source location in logs
89
+ * @default true
90
+ */
91
+ includeSource?: boolean;
92
+ }
93
+ /**
94
+ * Centralized logger for the application
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * // Initialize for MCP mode (no console output)
99
+ * const logger = new Logger({
100
+ * useConsole: false,
101
+ * writeToFile: true,
102
+ * minLevel: LogLevel.INFO
103
+ * });
104
+ *
105
+ * // Log messages
106
+ * logger.info('Server started', { port: 3000 });
107
+ * logger.error('Failed to parse spec', { error, file: 'api.yml' });
108
+ *
109
+ * // Log with source
110
+ * logger.warn('Endpoint not found', { endpoint: 'POST /users' }, 'business-rules-generator');
111
+ * ```
112
+ */
113
+ export declare class Logger {
114
+ private config;
115
+ private currentLogFile;
116
+ private currentLogSize;
117
+ constructor(config?: LoggerConfig);
118
+ /**
119
+ * Logs a debug message
120
+ *
121
+ * @param message - Log message
122
+ * @param meta - Optional metadata
123
+ * @param source - Optional source component
124
+ */
125
+ debug(message: string, meta?: unknown, source?: string): void;
126
+ /**
127
+ * Logs an info message
128
+ *
129
+ * @param message - Log message
130
+ * @param meta - Optional metadata
131
+ * @param source - Optional source component
132
+ */
133
+ info(message: string, meta?: unknown, source?: string): void;
134
+ /**
135
+ * Logs a warning message
136
+ *
137
+ * @param message - Log message
138
+ * @param meta - Optional metadata
139
+ * @param source - Optional source component
140
+ */
141
+ warn(message: string, meta?: unknown, source?: string): void;
142
+ /**
143
+ * Logs an error message
144
+ *
145
+ * @param message - Log message
146
+ * @param meta - Optional metadata (can include Error object)
147
+ * @param source - Optional source component
148
+ */
149
+ error(message: string, meta?: unknown, source?: string): void;
150
+ /**
151
+ * Core logging method
152
+ * @internal
153
+ */
154
+ private log;
155
+ /**
156
+ * Writes log entry to console (for standalone mode)
157
+ * @internal
158
+ */
159
+ private writeToConsole;
160
+ /**
161
+ * Writes log entry to file (for MCP mode)
162
+ * @internal
163
+ */
164
+ private writeToFile;
165
+ /**
166
+ * Ensures log directory exists
167
+ * @internal
168
+ */
169
+ private ensureLogDirectory;
170
+ /**
171
+ * Gets the current log file path
172
+ * @internal
173
+ */
174
+ private getLogFilePath;
175
+ /**
176
+ * Rotates log files when max size is reached
177
+ * @internal
178
+ */
179
+ private rotateLogFile;
180
+ /**
181
+ * Removes old log files beyond maxFiles limit
182
+ * @internal
183
+ */
184
+ private cleanupOldLogs;
185
+ /**
186
+ * Flushes any pending logs (useful before shutdown)
187
+ */
188
+ flush(): void;
189
+ }
190
+ /**
191
+ * Global logger instance
192
+ *
193
+ * Configured from environment variables via config module:
194
+ * - MCP_MODE: Enable file logging (auto-detected from STDIO)
195
+ * - LOG_LEVEL: Minimum log level (debug, info, warn, error)
196
+ * - LOG_DIR or MCP_ROOT/logs: Log directory
197
+ * - MAX_LOG_FILE_SIZE: Maximum file size before rotation (bytes)
198
+ * - MAX_LOG_FILES: Number of rotated files to keep
199
+ */
200
+ export declare const logger: Logger;
201
+ /**
202
+ * Creates a logger with a specific source tag
203
+ *
204
+ * @param source - Source component name
205
+ * @returns Logger wrapper with source pre-set
206
+ *
207
+ * @example
208
+ * ```typescript
209
+ * const log = createLogger('business-rules-generator');
210
+ * log.info('Processing rules', { count: 20 });
211
+ * // Output: [2025-01-19T10:00:00Z] [INFO] [business-rules-generator] Processing rules
212
+ * ```
213
+ */
214
+ export declare function createLogger(source: string): {
215
+ debug: (message: string, meta?: unknown) => void;
216
+ info: (message: string, meta?: unknown) => void;
217
+ warn: (message: string, meta?: unknown) => void;
218
+ error: (message: string, meta?: unknown) => void;
219
+ };
220
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAE3C;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,cAAc,CAAK;gBAEf,MAAM,GAAE,YAAiB;IAmBrC;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7D;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAI7D;;;OAGG;IACH,OAAO,CAAC,GAAG;IA8CX;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgBtB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAwBnB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,OAAO,CAAC,cAAc;IAKtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA0BrB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAoBD;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,QAOjB,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM;qBAEtB,MAAM,SAAS,OAAO;oBACvB,MAAM,SAAS,OAAO;oBACtB,MAAM,SAAS,OAAO;qBACrB,MAAM,SAAS,OAAO;EAE1C"}