@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.
- package/.env.example +91 -0
- package/README.md +472 -0
- package/dist/ai-engine/assertion-generator.d.ts +48 -0
- package/dist/ai-engine/assertion-generator.d.ts.map +1 -0
- package/dist/ai-engine/assertion-generator.js +166 -0
- package/dist/ai-engine/assertion-generator.js.map +1 -0
- package/dist/ai-engine/context-data-generator.d.ts +38 -0
- package/dist/ai-engine/context-data-generator.d.ts.map +1 -0
- package/dist/ai-engine/context-data-generator.js +146 -0
- package/dist/ai-engine/context-data-generator.js.map +1 -0
- package/dist/ai-engine/dataflow-detector.d.ts +53 -0
- package/dist/ai-engine/dataflow-detector.d.ts.map +1 -0
- package/dist/ai-engine/dataflow-detector.js +217 -0
- package/dist/ai-engine/dataflow-detector.js.map +1 -0
- package/dist/ai-engine/dependency-detector.d.ts +52 -0
- package/dist/ai-engine/dependency-detector.d.ts.map +1 -0
- package/dist/ai-engine/dependency-detector.js +241 -0
- package/dist/ai-engine/dependency-detector.js.map +1 -0
- package/dist/ai-engine/edge-case-suggester.d.ts +63 -0
- package/dist/ai-engine/edge-case-suggester.d.ts.map +1 -0
- package/dist/ai-engine/edge-case-suggester.js +177 -0
- package/dist/ai-engine/edge-case-suggester.js.map +1 -0
- package/dist/ai-engine/index.d.ts +13 -0
- package/dist/ai-engine/index.d.ts.map +1 -0
- package/dist/ai-engine/index.js +13 -0
- package/dist/ai-engine/index.js.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts +41 -0
- package/dist/analyzers/ai-failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/ai-failure-analyzer.js +220 -0
- package/dist/analyzers/ai-failure-analyzer.js.map +1 -0
- package/dist/analyzers/comparison-utils.d.ts +31 -0
- package/dist/analyzers/comparison-utils.d.ts.map +1 -0
- package/dist/analyzers/comparison-utils.js +85 -0
- package/dist/analyzers/comparison-utils.js.map +1 -0
- package/dist/analyzers/context-analyzer.d.ts +49 -0
- package/dist/analyzers/context-analyzer.d.ts.map +1 -0
- package/dist/analyzers/context-analyzer.js +292 -0
- package/dist/analyzers/context-analyzer.js.map +1 -0
- package/dist/analyzers/dependency-analyzer.d.ts +44 -0
- package/dist/analyzers/dependency-analyzer.d.ts.map +1 -0
- package/dist/analyzers/dependency-analyzer.js +313 -0
- package/dist/analyzers/dependency-analyzer.js.map +1 -0
- package/dist/analyzers/failure-analyzer.d.ts +122 -0
- package/dist/analyzers/failure-analyzer.d.ts.map +1 -0
- package/dist/analyzers/failure-analyzer.js +140 -0
- package/dist/analyzers/failure-analyzer.js.map +1 -0
- package/dist/analyzers/failure-detectors/index.d.ts +33 -0
- package/dist/analyzers/failure-detectors/index.d.ts.map +1 -0
- package/dist/analyzers/failure-detectors/index.js +164 -0
- package/dist/analyzers/failure-detectors/index.js.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts +111 -0
- package/dist/analyzers/failure-discrepancy-correlator.d.ts.map +1 -0
- package/dist/analyzers/failure-discrepancy-correlator.js +202 -0
- package/dist/analyzers/failure-discrepancy-correlator.js.map +1 -0
- package/dist/analyzers/index.d.ts +10 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +10 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/semantic-matcher.d.ts +123 -0
- package/dist/analyzers/semantic-matcher.d.ts.map +1 -0
- package/dist/analyzers/semantic-matcher.js +297 -0
- package/dist/analyzers/semantic-matcher.js.map +1 -0
- package/dist/analyzers/source-comparator.d.ts +177 -0
- package/dist/analyzers/source-comparator.d.ts.map +1 -0
- package/dist/analyzers/source-comparator.js +225 -0
- package/dist/analyzers/source-comparator.js.map +1 -0
- package/dist/business-rules/business-rules-analyzer.d.ts +44 -0
- package/dist/business-rules/business-rules-analyzer.d.ts.map +1 -0
- package/dist/business-rules/business-rules-analyzer.js +363 -0
- package/dist/business-rules/business-rules-analyzer.js.map +1 -0
- package/dist/business-rules/business-rules-generator.d.ts +78 -0
- package/dist/business-rules/business-rules-generator.d.ts.map +1 -0
- package/dist/business-rules/business-rules-generator.js +357 -0
- package/dist/business-rules/business-rules-generator.js.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts +50 -0
- package/dist/business-rules/extractors/rule-extractors.d.ts.map +1 -0
- package/dist/business-rules/extractors/rule-extractors.js +189 -0
- package/dist/business-rules/extractors/rule-extractors.js.map +1 -0
- package/dist/business-rules/value-generators.d.ts +70 -0
- package/dist/business-rules/value-generators.d.ts.map +1 -0
- package/dist/business-rules/value-generators.js +142 -0
- package/dist/business-rules/value-generators.js.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts +16 -0
- package/dist/executor/auth-providers/auth-header-builder.d.ts.map +1 -0
- package/dist/executor/auth-providers/auth-header-builder.js +47 -0
- package/dist/executor/auth-providers/auth-header-builder.js.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts +19 -0
- package/dist/executor/auth-providers/oauth2-provider.d.ts.map +1 -0
- package/dist/executor/auth-providers/oauth2-provider.js +114 -0
- package/dist/executor/auth-providers/oauth2-provider.js.map +1 -0
- package/dist/executor/http-client.d.ts +133 -0
- package/dist/executor/http-client.d.ts.map +1 -0
- package/dist/executor/http-client.js +172 -0
- package/dist/executor/http-client.js.map +1 -0
- package/dist/executor/http-request-builder.d.ts +69 -0
- package/dist/executor/http-request-builder.d.ts.map +1 -0
- package/dist/executor/http-request-builder.js +140 -0
- package/dist/executor/http-request-builder.js.map +1 -0
- package/dist/executor/http-response-parser.d.ts +28 -0
- package/dist/executor/http-response-parser.d.ts.map +1 -0
- package/dist/executor/http-response-parser.js +74 -0
- package/dist/executor/http-response-parser.js.map +1 -0
- package/dist/executor/response-handler.d.ts +66 -0
- package/dist/executor/response-handler.d.ts.map +1 -0
- package/dist/executor/response-handler.js +135 -0
- package/dist/executor/response-handler.js.map +1 -0
- package/dist/executor/result-processor.d.ts +27 -0
- package/dist/executor/result-processor.d.ts.map +1 -0
- package/dist/executor/result-processor.js +140 -0
- package/dist/executor/result-processor.js.map +1 -0
- package/dist/executor/result-utils.d.ts +21 -0
- package/dist/executor/result-utils.d.ts.map +1 -0
- package/dist/executor/result-utils.js +29 -0
- package/dist/executor/result-utils.js.map +1 -0
- package/dist/executor/test-executor.d.ts +49 -0
- package/dist/executor/test-executor.d.ts.map +1 -0
- package/dist/executor/test-executor.js +226 -0
- package/dist/executor/test-executor.js.map +1 -0
- package/dist/executor/test-runner.d.ts +85 -0
- package/dist/executor/test-runner.d.ts.map +1 -0
- package/dist/executor/test-runner.js +177 -0
- package/dist/executor/test-runner.js.map +1 -0
- package/dist/executor/token-detector/index.d.ts +7 -0
- package/dist/executor/token-detector/index.d.ts.map +1 -0
- package/dist/executor/token-detector/index.js +7 -0
- package/dist/executor/token-detector/index.js.map +1 -0
- package/dist/executor/token-detector/token-detector.d.ts +64 -0
- package/dist/executor/token-detector/token-detector.d.ts.map +1 -0
- package/dist/executor/token-detector/token-detector.js +140 -0
- package/dist/executor/token-detector/token-detector.js.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts +30 -0
- package/dist/generators/business-rule-from-stories-generator.d.ts.map +1 -0
- package/dist/generators/business-rule-from-stories-generator.js +227 -0
- package/dist/generators/business-rule-from-stories-generator.js.map +1 -0
- package/dist/generators/data/ai-data-generator.d.ts +23 -0
- package/dist/generators/data/ai-data-generator.d.ts.map +1 -0
- package/dist/generators/data/ai-data-generator.js +41 -0
- package/dist/generators/data/ai-data-generator.js.map +1 -0
- package/dist/generators/data/base-generator.d.ts +121 -0
- package/dist/generators/data/base-generator.d.ts.map +1 -0
- package/dist/generators/data/base-generator.js +200 -0
- package/dist/generators/data/base-generator.js.map +1 -0
- package/dist/generators/data/heuristic-data-generator.d.ts +28 -0
- package/dist/generators/data/heuristic-data-generator.d.ts.map +1 -0
- package/dist/generators/data/heuristic-data-generator.js +49 -0
- package/dist/generators/data/heuristic-data-generator.js.map +1 -0
- package/dist/generators/data/index.d.ts +48 -0
- package/dist/generators/data/index.d.ts.map +1 -0
- package/dist/generators/data/index.js +201 -0
- package/dist/generators/data/index.js.map +1 -0
- package/dist/generators/data/schema-walker.d.ts +45 -0
- package/dist/generators/data/schema-walker.d.ts.map +1 -0
- package/dist/generators/data/schema-walker.js +103 -0
- package/dist/generators/data/schema-walker.js.map +1 -0
- package/dist/generators/data/type-strategies.d.ts +79 -0
- package/dist/generators/data/type-strategies.d.ts.map +1 -0
- package/dist/generators/data/type-strategies.js +394 -0
- package/dist/generators/data/type-strategies.js.map +1 -0
- package/dist/generators/data-generator.d.ts +11 -0
- package/dist/generators/data-generator.d.ts.map +1 -0
- package/dist/generators/data-generator.js +11 -0
- package/dist/generators/data-generator.js.map +1 -0
- package/dist/generators/edge-case-generator.d.ts +55 -0
- package/dist/generators/edge-case-generator.d.ts.map +1 -0
- package/dist/generators/edge-case-generator.js +327 -0
- package/dist/generators/edge-case-generator.js.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts +26 -0
- package/dist/generators/edge-cases/boundary-analyzer.d.ts.map +1 -0
- package/dist/generators/edge-cases/boundary-analyzer.js +95 -0
- package/dist/generators/edge-cases/boundary-analyzer.js.map +1 -0
- package/dist/generators/error-case-generator.d.ts +11 -0
- package/dist/generators/error-case-generator.d.ts.map +1 -0
- package/dist/generators/error-case-generator.js +11 -0
- package/dist/generators/error-case-generator.js.map +1 -0
- package/dist/generators/errors/auth-error-strategy.d.ts +36 -0
- package/dist/generators/errors/auth-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/auth-error-strategy.js +118 -0
- package/dist/generators/errors/auth-error-strategy.js.map +1 -0
- package/dist/generators/errors/business-error-strategy.d.ts +44 -0
- package/dist/generators/errors/business-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/business-error-strategy.js +152 -0
- package/dist/generators/errors/business-error-strategy.js.map +1 -0
- package/dist/generators/errors/error-strategy-factory.d.ts +27 -0
- package/dist/generators/errors/error-strategy-factory.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy-factory.js +47 -0
- package/dist/generators/errors/error-strategy-factory.js.map +1 -0
- package/dist/generators/errors/error-strategy.d.ts +62 -0
- package/dist/generators/errors/error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/error-strategy.js +69 -0
- package/dist/generators/errors/error-strategy.js.map +1 -0
- package/dist/generators/errors/index.d.ts +23 -0
- package/dist/generators/errors/index.d.ts.map +1 -0
- package/dist/generators/errors/index.js +73 -0
- package/dist/generators/errors/index.js.map +1 -0
- package/dist/generators/errors/validation-error-strategy.d.ts +25 -0
- package/dist/generators/errors/validation-error-strategy.d.ts.map +1 -0
- package/dist/generators/errors/validation-error-strategy.js +214 -0
- package/dist/generators/errors/validation-error-strategy.js.map +1 -0
- package/dist/generators/happy-path-generator.d.ts +93 -0
- package/dist/generators/happy-path-generator.d.ts.map +1 -0
- package/dist/generators/happy-path-generator.js +275 -0
- package/dist/generators/happy-path-generator.js.map +1 -0
- package/dist/generators/test-enricher.d.ts +44 -0
- package/dist/generators/test-enricher.d.ts.map +1 -0
- package/dist/generators/test-enricher.js +109 -0
- package/dist/generators/test-enricher.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/ai-cache.d.ts +123 -0
- package/dist/llm/ai-cache.d.ts.map +1 -0
- package/dist/llm/ai-cache.js +220 -0
- package/dist/llm/ai-cache.js.map +1 -0
- package/dist/llm/ai-client.d.ts +92 -0
- package/dist/llm/ai-client.d.ts.map +1 -0
- package/dist/llm/ai-client.js +386 -0
- package/dist/llm/ai-client.js.map +1 -0
- package/dist/llm/data-generator-ai.d.ts +84 -0
- package/dist/llm/data-generator-ai.d.ts.map +1 -0
- package/dist/llm/data-generator-ai.js +284 -0
- package/dist/llm/data-generator-ai.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/handlers/base-handler.d.ts +72 -0
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -0
- package/dist/mcp/handlers/base-handler.js +86 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -0
- package/dist/mcp/handlers/compare-sources.d.ts +91 -0
- package/dist/mcp/handlers/compare-sources.d.ts.map +1 -0
- package/dist/mcp/handlers/compare-sources.js +182 -0
- package/dist/mcp/handlers/compare-sources.js.map +1 -0
- package/dist/mcp/handlers/export-results.d.ts +53 -0
- package/dist/mcp/handlers/export-results.d.ts.map +1 -0
- package/dist/mcp/handlers/export-results.js +132 -0
- package/dist/mcp/handlers/export-results.js.map +1 -0
- package/dist/mcp/handlers/export-to-postman.d.ts +65 -0
- package/dist/mcp/handlers/export-to-postman.d.ts.map +1 -0
- package/dist/mcp/handlers/export-to-postman.js +128 -0
- package/dist/mcp/handlers/export-to-postman.js.map +1 -0
- package/dist/mcp/handlers/generate-tests.d.ts +74 -0
- package/dist/mcp/handlers/generate-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/generate-tests.js +519 -0
- package/dist/mcp/handlers/generate-tests.js.map +1 -0
- package/dist/mcp/handlers/index.d.ts +13 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -0
- package/dist/mcp/handlers/index.js +12 -0
- package/dist/mcp/handlers/index.js.map +1 -0
- package/dist/mcp/handlers/run-tests.d.ts +89 -0
- package/dist/mcp/handlers/run-tests.d.ts.map +1 -0
- package/dist/mcp/handlers/run-tests.js +233 -0
- package/dist/mcp/handlers/run-tests.js.map +1 -0
- package/dist/mcp/handlers/types.d.ts +61 -0
- package/dist/mcp/handlers/types.d.ts.map +1 -0
- package/dist/mcp/handlers/types.js +9 -0
- package/dist/mcp/handlers/types.js.map +1 -0
- package/dist/mcp/server.d.ts +64 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +200 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/services/file-service.d.ts +66 -0
- package/dist/mcp/services/file-service.d.ts.map +1 -0
- package/dist/mcp/services/file-service.js +143 -0
- package/dist/mcp/services/file-service.js.map +1 -0
- package/dist/mcp/services/llm-service.d.ts +70 -0
- package/dist/mcp/services/llm-service.d.ts.map +1 -0
- package/dist/mcp/services/llm-service.js +189 -0
- package/dist/mcp/services/llm-service.js.map +1 -0
- package/dist/mcp/services/postman-service.d.ts +128 -0
- package/dist/mcp/services/postman-service.d.ts.map +1 -0
- package/dist/mcp/services/postman-service.js +266 -0
- package/dist/mcp/services/postman-service.js.map +1 -0
- package/dist/mcp/services/report-service.d.ts +81 -0
- package/dist/mcp/services/report-service.d.ts.map +1 -0
- package/dist/mcp/services/report-service.js +210 -0
- package/dist/mcp/services/report-service.js.map +1 -0
- package/dist/mcp/services/spec-service.d.ts +58 -0
- package/dist/mcp/services/spec-service.d.ts.map +1 -0
- package/dist/mcp/services/spec-service.js +140 -0
- package/dist/mcp/services/spec-service.js.map +1 -0
- package/dist/parsers/endpoint-extractor.d.ts +32 -0
- package/dist/parsers/endpoint-extractor.d.ts.map +1 -0
- package/dist/parsers/endpoint-extractor.js +160 -0
- package/dist/parsers/endpoint-extractor.js.map +1 -0
- package/dist/parsers/openapi-parser.d.ts +120 -0
- package/dist/parsers/openapi-parser.d.ts.map +1 -0
- package/dist/parsers/openapi-parser.js +257 -0
- package/dist/parsers/openapi-parser.js.map +1 -0
- package/dist/parsers/visitors/auth-visitor.d.ts +28 -0
- package/dist/parsers/visitors/auth-visitor.d.ts.map +1 -0
- package/dist/parsers/visitors/auth-visitor.js +116 -0
- package/dist/parsers/visitors/auth-visitor.js.map +1 -0
- package/dist/prd/index.d.ts +10 -0
- package/dist/prd/index.d.ts.map +1 -0
- package/dist/prd/index.js +10 -0
- package/dist/prd/index.js.map +1 -0
- package/dist/prd/prd-reader.d.ts +124 -0
- package/dist/prd/prd-reader.d.ts.map +1 -0
- package/dist/prd/prd-reader.js +308 -0
- package/dist/prd/prd-reader.js.map +1 -0
- package/dist/prd/prd-storage.d.ts +232 -0
- package/dist/prd/prd-storage.d.ts.map +1 -0
- package/dist/prd/prd-storage.js +129 -0
- package/dist/prd/prd-storage.js.map +1 -0
- package/dist/repairers/test-auto-repairer.d.ts +61 -0
- package/dist/repairers/test-auto-repairer.d.ts.map +1 -0
- package/dist/repairers/test-auto-repairer.js +213 -0
- package/dist/repairers/test-auto-repairer.js.map +1 -0
- package/dist/reporters/comparison-report-generator.d.ts +58 -0
- package/dist/reporters/comparison-report-generator.d.ts.map +1 -0
- package/dist/reporters/comparison-report-generator.js +369 -0
- package/dist/reporters/comparison-report-generator.js.map +1 -0
- package/dist/reporters/gherkin-formatter.d.ts +34 -0
- package/dist/reporters/gherkin-formatter.d.ts.map +1 -0
- package/dist/reporters/gherkin-formatter.js +231 -0
- package/dist/reporters/gherkin-formatter.js.map +1 -0
- package/dist/reporters/html-report-generator.d.ts +174 -0
- package/dist/reporters/html-report-generator.d.ts.map +1 -0
- package/dist/reporters/html-report-generator.js +194 -0
- package/dist/reporters/html-report-generator.js.map +1 -0
- package/dist/reporters/report-charts.d.ts +23 -0
- package/dist/reporters/report-charts.d.ts.map +1 -0
- package/dist/reporters/report-charts.js +182 -0
- package/dist/reporters/report-charts.js.map +1 -0
- package/dist/reporters/report-sections.d.ts +34 -0
- package/dist/reporters/report-sections.d.ts.map +1 -0
- package/dist/reporters/report-sections.js +481 -0
- package/dist/reporters/report-sections.js.map +1 -0
- package/dist/reporters/report-styles.d.ts +12 -0
- package/dist/reporters/report-styles.d.ts.map +1 -0
- package/dist/reporters/report-styles.js +412 -0
- package/dist/reporters/report-styles.js.map +1 -0
- package/dist/reporters/report-test-details.d.ts +56 -0
- package/dist/reporters/report-test-details.d.ts.map +1 -0
- package/dist/reporters/report-test-details.js +328 -0
- package/dist/reporters/report-test-details.js.map +1 -0
- package/dist/reporters/report-utils.d.ts +40 -0
- package/dist/reporters/report-utils.d.ts.map +1 -0
- package/dist/reporters/report-utils.js +163 -0
- package/dist/reporters/report-utils.js.map +1 -0
- package/dist/types/ai-config.d.ts +63 -0
- package/dist/types/ai-config.d.ts.map +1 -0
- package/dist/types/ai-config.js +79 -0
- package/dist/types/ai-config.js.map +1 -0
- package/dist/types/business-rules.d.ts +235 -0
- package/dist/types/business-rules.d.ts.map +1 -0
- package/dist/types/business-rules.js +6 -0
- package/dist/types/business-rules.js.map +1 -0
- package/dist/types/config.d.ts +106 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/core.d.ts +72 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/core.js +6 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/openapi.d.ts +139 -0
- package/dist/types/openapi.d.ts.map +1 -0
- package/dist/types/openapi.js +6 -0
- package/dist/types/openapi.js.map +1 -0
- package/dist/types/pact.d.ts +101 -0
- package/dist/types/pact.d.ts.map +1 -0
- package/dist/types/pact.js +6 -0
- package/dist/types/pact.js.map +1 -0
- package/dist/types/reporting.d.ts +93 -0
- package/dist/types/reporting.d.ts.map +1 -0
- package/dist/types/reporting.js +6 -0
- package/dist/types/reporting.js.map +1 -0
- package/dist/types/test-case.d.ts +233 -0
- package/dist/types/test-case.d.ts.map +1 -0
- package/dist/types/test-case.js +6 -0
- package/dist/types/test-case.js.map +1 -0
- package/dist/types/test-execution.d.ts +80 -0
- package/dist/types/test-execution.d.ts.map +1 -0
- package/dist/types/test-execution.js +6 -0
- package/dist/types/test-execution.js.map +1 -0
- package/dist/utils/auth-generator.d.ts +30 -0
- package/dist/utils/auth-generator.d.ts.map +1 -0
- package/dist/utils/auth-generator.js +68 -0
- package/dist/utils/auth-generator.js.map +1 -0
- package/dist/utils/config.d.ts +181 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +141 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/coverage-calculator.d.ts +81 -0
- package/dist/utils/coverage-calculator.d.ts.map +1 -0
- package/dist/utils/coverage-calculator.js +134 -0
- package/dist/utils/coverage-calculator.js.map +1 -0
- package/dist/utils/data-loader.d.ts +52 -0
- package/dist/utils/data-loader.d.ts.map +1 -0
- package/dist/utils/data-loader.js +192 -0
- package/dist/utils/data-loader.js.map +1 -0
- package/dist/utils/errors.d.ts +167 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +257 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +220 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +325 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/openapi-discovery.d.ts +31 -0
- package/dist/utils/openapi-discovery.d.ts.map +1 -0
- package/dist/utils/openapi-discovery.js +322 -0
- package/dist/utils/openapi-discovery.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +101 -0
- package/dist/utils/path-resolver.d.ts.map +1 -0
- package/dist/utils/path-resolver.js +167 -0
- package/dist/utils/path-resolver.js.map +1 -0
- package/dist/utils/resilience.d.ts +181 -0
- package/dist/utils/resilience.d.ts.map +1 -0
- package/dist/utils/resilience.js +269 -0
- package/dist/utils/resilience.js.map +1 -0
- package/dist/validators/openapi-validator.d.ts +198 -0
- package/dist/validators/openapi-validator.d.ts.map +1 -0
- package/dist/validators/openapi-validator.js +349 -0
- package/dist/validators/openapi-validator.js.map +1 -0
- package/dist/validators/response-matcher.d.ts +84 -0
- package/dist/validators/response-matcher.d.ts.map +1 -0
- package/dist/validators/response-matcher.js +234 -0
- package/dist/validators/response-matcher.js.map +1 -0
- package/dist/validators/schema-validator.d.ts +174 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/dist/validators/schema-validator.js +340 -0
- package/dist/validators/schema-validator.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coverage Calculator
|
|
3
|
+
*
|
|
4
|
+
* Calculates endpoint coverage from test results
|
|
5
|
+
* without generating new tests (unlike preview-test-coverage)
|
|
6
|
+
*
|
|
7
|
+
* @module utils/coverage-calculator
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Calculates endpoint coverage from test results
|
|
11
|
+
*
|
|
12
|
+
* Analyzes results.json to determine which endpoints were tested
|
|
13
|
+
* and which are missing coverage
|
|
14
|
+
*
|
|
15
|
+
* @param results - Test results object with allTests array
|
|
16
|
+
* @returns Coverage statistics
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const results = JSON.parse(await fs.readFile('results.json', 'utf-8'));
|
|
21
|
+
* const coverage = calculateCoverageFromResults(results);
|
|
22
|
+
*
|
|
23
|
+
* console.log(coverage.coveragePercentage); // "85%"
|
|
24
|
+
* console.log(coverage.uncoveredEndpoints); // [{ method: "DELETE", path: "/users/{id}" }]
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function calculateCoverageFromResults(results) {
|
|
28
|
+
const endpointMap = new Map();
|
|
29
|
+
// Extract and group tests by endpoint
|
|
30
|
+
for (const test of results.allTests || []) {
|
|
31
|
+
// Get endpoint identifier (prefer explicit endpoint field, fallback to method+path)
|
|
32
|
+
const method = test.method || 'UNKNOWN';
|
|
33
|
+
const path = test.path || 'unknown';
|
|
34
|
+
const endpointKey = test.endpoint || `${method} ${path}`;
|
|
35
|
+
if (!endpointMap.has(endpointKey)) {
|
|
36
|
+
endpointMap.set(endpointKey, {
|
|
37
|
+
method,
|
|
38
|
+
path,
|
|
39
|
+
totalTests: 0,
|
|
40
|
+
passedTests: 0,
|
|
41
|
+
failedTests: 0,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const endpoint = endpointMap.get(endpointKey);
|
|
45
|
+
endpoint.totalTests++;
|
|
46
|
+
if (test.status === 'passed') {
|
|
47
|
+
endpoint.passedTests++;
|
|
48
|
+
}
|
|
49
|
+
else if (test.status === 'failed') {
|
|
50
|
+
endpoint.failedTests++;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Calculate coverage statistics
|
|
54
|
+
const totalEndpoints = endpointMap.size;
|
|
55
|
+
const testedEndpoints = endpointMap.size; // All endpoints in results have at least 1 test
|
|
56
|
+
// Find uncovered endpoints (in this case, none since we only have tested ones)
|
|
57
|
+
// This would require OpenAPI spec to find truly uncovered endpoints
|
|
58
|
+
const uncoveredEndpoints = [];
|
|
59
|
+
// Build detailed endpoint info
|
|
60
|
+
const endpointDetails = Array.from(endpointMap.entries()).map(([endpointKey, data]) => ({
|
|
61
|
+
endpoint: endpointKey,
|
|
62
|
+
method: data.method,
|
|
63
|
+
path: data.path,
|
|
64
|
+
totalTests: data.totalTests,
|
|
65
|
+
passedTests: data.passedTests,
|
|
66
|
+
failedTests: data.failedTests,
|
|
67
|
+
hasCoverage: data.totalTests > 0,
|
|
68
|
+
}));
|
|
69
|
+
const coveragePercentage = totalEndpoints > 0
|
|
70
|
+
? `${((testedEndpoints / totalEndpoints) * 100).toFixed(2)}%`
|
|
71
|
+
: '0%';
|
|
72
|
+
return {
|
|
73
|
+
totalEndpoints,
|
|
74
|
+
testedEndpoints,
|
|
75
|
+
coveragePercentage,
|
|
76
|
+
uncoveredEndpoints,
|
|
77
|
+
endpointDetails,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Calculates coverage with OpenAPI spec to find truly uncovered endpoints
|
|
82
|
+
*
|
|
83
|
+
* Compares test results against OpenAPI spec to identify endpoints
|
|
84
|
+
* that exist in spec but have no tests
|
|
85
|
+
*
|
|
86
|
+
* @param results - Test results object
|
|
87
|
+
* @param specEndpoints - Parsed endpoints from OpenAPI spec
|
|
88
|
+
* @returns Coverage statistics including truly uncovered endpoints
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const spec = await parseOpenAPISpec('api.yml');
|
|
93
|
+
* const endpoints = extractEndpoints(spec);
|
|
94
|
+
* const coverage = calculateCoverageWithSpec(results, endpoints);
|
|
95
|
+
*
|
|
96
|
+
* console.log(coverage.uncoveredEndpoints);
|
|
97
|
+
* // [{ method: "DELETE", path: "/admin/logs" }]
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export function calculateCoverageWithSpec(results, specEndpoints) {
|
|
101
|
+
const baseCoverage = calculateCoverageFromResults(results);
|
|
102
|
+
// Get all tested endpoints
|
|
103
|
+
const testedEndpointsSet = new Set();
|
|
104
|
+
for (const test of results.allTests || []) {
|
|
105
|
+
const method = test.method || 'UNKNOWN';
|
|
106
|
+
const path = test.path || 'unknown';
|
|
107
|
+
const endpointKey = `${method} ${path}`;
|
|
108
|
+
testedEndpointsSet.add(endpointKey);
|
|
109
|
+
}
|
|
110
|
+
// Find uncovered endpoints from spec
|
|
111
|
+
const uncoveredEndpoints = [];
|
|
112
|
+
for (const endpoint of specEndpoints) {
|
|
113
|
+
const endpointKey = `${endpoint.method} ${endpoint.path}`;
|
|
114
|
+
if (!testedEndpointsSet.has(endpointKey)) {
|
|
115
|
+
uncoveredEndpoints.push({
|
|
116
|
+
method: endpoint.method,
|
|
117
|
+
path: endpoint.path,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const totalEndpoints = specEndpoints.length;
|
|
122
|
+
const testedEndpoints = totalEndpoints - uncoveredEndpoints.length;
|
|
123
|
+
const coveragePercentage = totalEndpoints > 0
|
|
124
|
+
? `${((testedEndpoints / totalEndpoints) * 100).toFixed(2)}%`
|
|
125
|
+
: '0%';
|
|
126
|
+
return {
|
|
127
|
+
...baseCoverage,
|
|
128
|
+
totalEndpoints,
|
|
129
|
+
testedEndpoints,
|
|
130
|
+
coveragePercentage,
|
|
131
|
+
uncoveredEndpoints,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=coverage-calculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage-calculator.js","sourceRoot":"","sources":["../../src/utils/coverage-calculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Data Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads test data from various file formats (Excel, CSV, JSON).
|
|
5
|
+
* Supports sharing test data across teams via files.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/data-loader
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Loads test data from a file (Excel, CSV, or JSON)
|
|
11
|
+
*
|
|
12
|
+
* Supports:
|
|
13
|
+
* - Excel (.xlsx, .xls) - Reads first row as headers, second row as data
|
|
14
|
+
* - CSV (.csv) - Reads first row as headers, second row as data
|
|
15
|
+
* - JSON (.json) - Reads entire object
|
|
16
|
+
*
|
|
17
|
+
* @param filePath - Absolute path to the data file
|
|
18
|
+
* @returns Test data as key-value pairs
|
|
19
|
+
* @throws Error if file format is unsupported or file cannot be read
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Excel/CSV format:
|
|
24
|
+
* // | username | password | grant_type |
|
|
25
|
+
* // | user@bank.com | SecurePass123! | password |
|
|
26
|
+
*
|
|
27
|
+
* const data = await loadTestData('./test-data.xlsx');
|
|
28
|
+
* // Returns: { username: 'user@bank.com', password: 'SecurePass123!', grant_type: 'password' }
|
|
29
|
+
*
|
|
30
|
+
* // JSON format:
|
|
31
|
+
* // { "username": "user@bank.com", "password": "SecurePass123!" }
|
|
32
|
+
*
|
|
33
|
+
* const data = await loadTestData('./test-data.json');
|
|
34
|
+
* // Returns: { username: 'user@bank.com', password: 'SecurePass123!' }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadTestData(filePath: string): Promise<Record<string, any>>;
|
|
38
|
+
/**
|
|
39
|
+
* Validates that test data contains required fields
|
|
40
|
+
*
|
|
41
|
+
* @param testData - Test data object
|
|
42
|
+
* @param requiredFields - Array of required field names
|
|
43
|
+
* @throws Error if any required field is missing
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* validateTestData(data, ['username', 'password']);
|
|
48
|
+
* // Throws if username or password is missing
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function validateTestData(testData: Record<string, any>, requiredFields: string[]): void;
|
|
52
|
+
//# sourceMappingURL=data-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-loader.d.ts","sourceRoot":"","sources":["../../src/utils/data-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkBjF;AAsID;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,cAAc,EAAE,MAAM,EAAE,GACvB,IAAI,CAQN"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test Data Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads test data from various file formats (Excel, CSV, JSON).
|
|
5
|
+
* Supports sharing test data across teams via files.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/data-loader
|
|
8
|
+
*/
|
|
9
|
+
import * as XLSX from 'xlsx';
|
|
10
|
+
import * as Papa from 'papaparse';
|
|
11
|
+
import { promises as fs } from 'fs';
|
|
12
|
+
import { extname } from 'path';
|
|
13
|
+
import { createLogger } from './logger.js';
|
|
14
|
+
const log = createLogger('data-loader');
|
|
15
|
+
/**
|
|
16
|
+
* Loads test data from a file (Excel, CSV, or JSON)
|
|
17
|
+
*
|
|
18
|
+
* Supports:
|
|
19
|
+
* - Excel (.xlsx, .xls) - Reads first row as headers, second row as data
|
|
20
|
+
* - CSV (.csv) - Reads first row as headers, second row as data
|
|
21
|
+
* - JSON (.json) - Reads entire object
|
|
22
|
+
*
|
|
23
|
+
* @param filePath - Absolute path to the data file
|
|
24
|
+
* @returns Test data as key-value pairs
|
|
25
|
+
* @throws Error if file format is unsupported or file cannot be read
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* // Excel/CSV format:
|
|
30
|
+
* // | username | password | grant_type |
|
|
31
|
+
* // | user@bank.com | SecurePass123! | password |
|
|
32
|
+
*
|
|
33
|
+
* const data = await loadTestData('./test-data.xlsx');
|
|
34
|
+
* // Returns: { username: 'user@bank.com', password: 'SecurePass123!', grant_type: 'password' }
|
|
35
|
+
*
|
|
36
|
+
* // JSON format:
|
|
37
|
+
* // { "username": "user@bank.com", "password": "SecurePass123!" }
|
|
38
|
+
*
|
|
39
|
+
* const data = await loadTestData('./test-data.json');
|
|
40
|
+
* // Returns: { username: 'user@bank.com', password: 'SecurePass123!' }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export async function loadTestData(filePath) {
|
|
44
|
+
const ext = extname(filePath).toLowerCase();
|
|
45
|
+
log.info('Loading test data from file', { filePath, extension: ext });
|
|
46
|
+
switch (ext) {
|
|
47
|
+
case '.xlsx':
|
|
48
|
+
case '.xls':
|
|
49
|
+
return await loadExcelData(filePath);
|
|
50
|
+
case '.csv':
|
|
51
|
+
return await loadCsvData(filePath);
|
|
52
|
+
case '.json':
|
|
53
|
+
return await loadJsonData(filePath);
|
|
54
|
+
default:
|
|
55
|
+
throw new Error(`Unsupported test data file format: ${ext}. Supported formats: .xlsx, .xls, .csv, .json`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Loads test data from Excel file
|
|
60
|
+
*
|
|
61
|
+
* Expects:
|
|
62
|
+
* - First row: Column headers (field names)
|
|
63
|
+
* - Second row: Data values
|
|
64
|
+
*
|
|
65
|
+
* @param filePath - Path to Excel file
|
|
66
|
+
* @returns Test data object
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
async function loadExcelData(filePath) {
|
|
70
|
+
try {
|
|
71
|
+
// Read Excel file
|
|
72
|
+
const workbook = XLSX.readFile(filePath);
|
|
73
|
+
// Get first sheet
|
|
74
|
+
const sheetName = workbook.SheetNames[0];
|
|
75
|
+
if (!sheetName) {
|
|
76
|
+
throw new Error('Excel file is empty (no sheets found)');
|
|
77
|
+
}
|
|
78
|
+
const worksheet = workbook.Sheets[sheetName];
|
|
79
|
+
// Convert to JSON (array of objects)
|
|
80
|
+
const jsonData = XLSX.utils.sheet_to_json(worksheet);
|
|
81
|
+
if (jsonData.length === 0) {
|
|
82
|
+
throw new Error('Excel file is empty (no data rows found)');
|
|
83
|
+
}
|
|
84
|
+
// Return first row as test data
|
|
85
|
+
const testData = jsonData[0];
|
|
86
|
+
log.debug('Loaded Excel data', {
|
|
87
|
+
filePath,
|
|
88
|
+
sheetName,
|
|
89
|
+
rowCount: jsonData.length,
|
|
90
|
+
fields: Object.keys(testData),
|
|
91
|
+
});
|
|
92
|
+
return testData;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
96
|
+
log.error('Failed to load Excel file', { filePath, error: errorMessage });
|
|
97
|
+
throw new Error(`Failed to load Excel file: ${errorMessage}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Loads test data from CSV file
|
|
102
|
+
*
|
|
103
|
+
* Expects:
|
|
104
|
+
* - First row: Column headers (field names)
|
|
105
|
+
* - Second row: Data values
|
|
106
|
+
*
|
|
107
|
+
* @param filePath - Path to CSV file
|
|
108
|
+
* @returns Test data object
|
|
109
|
+
* @internal
|
|
110
|
+
*/
|
|
111
|
+
async function loadCsvData(filePath) {
|
|
112
|
+
try {
|
|
113
|
+
// Read CSV file
|
|
114
|
+
const csvContent = await fs.readFile(filePath, 'utf-8');
|
|
115
|
+
// Parse CSV
|
|
116
|
+
const result = Papa.parse(csvContent, {
|
|
117
|
+
header: true, // First row as headers
|
|
118
|
+
skipEmptyLines: true,
|
|
119
|
+
dynamicTyping: true, // Auto-convert numbers, booleans
|
|
120
|
+
});
|
|
121
|
+
if (result.errors.length > 0) {
|
|
122
|
+
const errorMessages = result.errors.map((e) => e.message).join(', ');
|
|
123
|
+
throw new Error(`CSV parsing errors: ${errorMessages}`);
|
|
124
|
+
}
|
|
125
|
+
if (result.data.length === 0) {
|
|
126
|
+
throw new Error('CSV file is empty (no data rows found)');
|
|
127
|
+
}
|
|
128
|
+
// Return first row as test data
|
|
129
|
+
const testData = result.data[0];
|
|
130
|
+
log.debug('Loaded CSV data', {
|
|
131
|
+
filePath,
|
|
132
|
+
rowCount: result.data.length,
|
|
133
|
+
fields: Object.keys(testData),
|
|
134
|
+
});
|
|
135
|
+
return testData;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
139
|
+
log.error('Failed to load CSV file', { filePath, error: errorMessage });
|
|
140
|
+
throw new Error(`Failed to load CSV file: ${errorMessage}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Loads test data from JSON file
|
|
145
|
+
*
|
|
146
|
+
* Expects a JSON object with key-value pairs.
|
|
147
|
+
*
|
|
148
|
+
* @param filePath - Path to JSON file
|
|
149
|
+
* @returns Test data object
|
|
150
|
+
* @internal
|
|
151
|
+
*/
|
|
152
|
+
async function loadJsonData(filePath) {
|
|
153
|
+
try {
|
|
154
|
+
// Read JSON file
|
|
155
|
+
const jsonContent = await fs.readFile(filePath, 'utf-8');
|
|
156
|
+
// Parse JSON
|
|
157
|
+
const testData = JSON.parse(jsonContent);
|
|
158
|
+
if (typeof testData !== 'object' || testData === null || Array.isArray(testData)) {
|
|
159
|
+
throw new Error('JSON file must contain an object (not an array or primitive)');
|
|
160
|
+
}
|
|
161
|
+
log.debug('Loaded JSON data', {
|
|
162
|
+
filePath,
|
|
163
|
+
fields: Object.keys(testData),
|
|
164
|
+
});
|
|
165
|
+
return testData;
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
169
|
+
log.error('Failed to load JSON file', { filePath, error: errorMessage });
|
|
170
|
+
throw new Error(`Failed to load JSON file: ${errorMessage}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validates that test data contains required fields
|
|
175
|
+
*
|
|
176
|
+
* @param testData - Test data object
|
|
177
|
+
* @param requiredFields - Array of required field names
|
|
178
|
+
* @throws Error if any required field is missing
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* validateTestData(data, ['username', 'password']);
|
|
183
|
+
* // Throws if username or password is missing
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export function validateTestData(testData, requiredFields) {
|
|
187
|
+
const missingFields = requiredFields.filter((field) => !(field in testData));
|
|
188
|
+
if (missingFields.length > 0) {
|
|
189
|
+
throw new Error(`Test data is missing required fields: ${missingFields.join(', ')}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=data-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-loader.js","sourceRoot":"","sources":["../../src/utils/data-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
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 declare enum ErrorCode {
|
|
13
|
+
OPENAPI_PARSE_ERROR = "E001",
|
|
14
|
+
OPENAPI_INVALID_SPEC = "E002",
|
|
15
|
+
OPENAPI_UNSUPPORTED_VERSION = "E003",
|
|
16
|
+
OPENAPI_MISSING_PATHS = "E004",
|
|
17
|
+
OPENAPI_INVALID_SCHEMA = "E005",
|
|
18
|
+
TEST_GENERATION_FAILED = "E100",
|
|
19
|
+
NO_ENDPOINTS_FOUND = "E101",
|
|
20
|
+
INVALID_TEST_CATEGORY = "E102",
|
|
21
|
+
DATA_GENERATION_FAILED = "E103",
|
|
22
|
+
TEST_EXECUTION_FAILED = "E200",
|
|
23
|
+
HTTP_REQUEST_FAILED = "E201",
|
|
24
|
+
TIMEOUT_ERROR = "E202",
|
|
25
|
+
NETWORK_ERROR = "E203",
|
|
26
|
+
AUTH_ERROR = "E204",
|
|
27
|
+
SCHEMA_VALIDATION_FAILED = "E300",
|
|
28
|
+
RESPONSE_VALIDATION_FAILED = "E301",
|
|
29
|
+
CONTRACT_VALIDATION_FAILED = "E302",
|
|
30
|
+
BUSINESS_RULES_PARSE_ERROR = "E400",
|
|
31
|
+
BUSINESS_RULES_NOT_FOUND = "E401",
|
|
32
|
+
BUSINESS_RULES_INVALID = "E402",
|
|
33
|
+
DOCS_NOT_FOUND = "E403",
|
|
34
|
+
RULES_EXTRACTION_FAILED = "E404",
|
|
35
|
+
PACT_GENERATION_FAILED = "E500",
|
|
36
|
+
PACT_VERIFICATION_FAILED = "E501",
|
|
37
|
+
PACT_BROKER_ERROR = "E502",
|
|
38
|
+
MCP_TOOL_NOT_FOUND = "E600",
|
|
39
|
+
MCP_INVALID_ARGUMENTS = "E601",
|
|
40
|
+
MCP_INTERNAL_ERROR = "E602",
|
|
41
|
+
FILE_NOT_FOUND = "E700",
|
|
42
|
+
FILE_READ_ERROR = "E701",
|
|
43
|
+
FILE_WRITE_ERROR = "E702",
|
|
44
|
+
DIRECTORY_NOT_FOUND = "E703",
|
|
45
|
+
UNKNOWN_ERROR = "E999"
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Base error class with error code and user-friendly messages
|
|
49
|
+
*/
|
|
50
|
+
export declare class BaseError extends Error {
|
|
51
|
+
/**
|
|
52
|
+
* Error code for programmatic handling
|
|
53
|
+
*/
|
|
54
|
+
readonly code: ErrorCode;
|
|
55
|
+
/**
|
|
56
|
+
* User-friendly error message
|
|
57
|
+
*/
|
|
58
|
+
readonly userMessage: string;
|
|
59
|
+
/**
|
|
60
|
+
* Additional context/metadata
|
|
61
|
+
*/
|
|
62
|
+
readonly context?: Record<string, unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Whether this error is retryable
|
|
65
|
+
*/
|
|
66
|
+
readonly retryable: boolean;
|
|
67
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>, retryable?: boolean);
|
|
68
|
+
/**
|
|
69
|
+
* Converts error to JSON for logging/API responses
|
|
70
|
+
*/
|
|
71
|
+
toJSON(): Record<string, unknown>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* OpenAPI parsing and validation errors
|
|
75
|
+
*/
|
|
76
|
+
export declare class OpenAPIError extends BaseError {
|
|
77
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Test generation errors
|
|
81
|
+
*/
|
|
82
|
+
export declare class TestGenerationError extends BaseError {
|
|
83
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Test execution errors (potentially retryable)
|
|
87
|
+
*/
|
|
88
|
+
export declare class TestExecutionError extends BaseError {
|
|
89
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>, retryable?: boolean);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validation errors
|
|
93
|
+
*/
|
|
94
|
+
export declare class ValidationError extends BaseError {
|
|
95
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Business rules errors
|
|
99
|
+
*/
|
|
100
|
+
export declare class BusinessRuleError extends BaseError {
|
|
101
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Pact contract testing errors
|
|
105
|
+
*/
|
|
106
|
+
export declare class PactError extends BaseError {
|
|
107
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>, retryable?: boolean);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* MCP server errors
|
|
111
|
+
*/
|
|
112
|
+
export declare class MCPError extends BaseError {
|
|
113
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* File system errors
|
|
117
|
+
*/
|
|
118
|
+
export declare class FileSystemError extends BaseError {
|
|
119
|
+
constructor(code: ErrorCode, message: string, userMessage: string, context?: Record<string, unknown>);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Formats an error for user display (removes stack trace, sanitizes)
|
|
123
|
+
*
|
|
124
|
+
* @param error - Error to format
|
|
125
|
+
* @returns User-friendly error object
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* try {
|
|
130
|
+
* // ... code
|
|
131
|
+
* } catch (error) {
|
|
132
|
+
* const formatted = formatError(error);
|
|
133
|
+
* return { success: false, error: formatted };
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export declare function formatError(error: unknown): {
|
|
138
|
+
code: string;
|
|
139
|
+
message: string;
|
|
140
|
+
retryable?: boolean;
|
|
141
|
+
context?: Record<string, unknown>;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Type guard to check if error is retryable
|
|
145
|
+
*
|
|
146
|
+
* @param error - Error to check
|
|
147
|
+
* @returns True if error is retryable
|
|
148
|
+
*/
|
|
149
|
+
export declare function isRetryableError(error: unknown): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Wraps a native error in appropriate custom error class
|
|
152
|
+
*
|
|
153
|
+
* @param error - Native error
|
|
154
|
+
* @param context - Additional context
|
|
155
|
+
* @returns Custom error instance
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* try {
|
|
160
|
+
* await fs.readFile('file.yml');
|
|
161
|
+
* } catch (error) {
|
|
162
|
+
* throw wrapError(error, { file: 'file.yml' });
|
|
163
|
+
* }
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export declare function wrapError(error: unknown, context?: Record<string, unknown>): BaseError;
|
|
167
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|