@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,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Service - Test result reporting and formatting
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all test result reporting including:
|
|
5
|
+
* - Markdown generation
|
|
6
|
+
* - HTML generation
|
|
7
|
+
* - JSON formatting
|
|
8
|
+
* - Summary statistics
|
|
9
|
+
*
|
|
10
|
+
* @module mcp/services/report-service
|
|
11
|
+
*/
|
|
12
|
+
import type { TestResult } from '../../types/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Options for HTML report generation
|
|
15
|
+
*/
|
|
16
|
+
export interface HtmlReportOptions {
|
|
17
|
+
apiName?: string;
|
|
18
|
+
title?: string;
|
|
19
|
+
includeFullDetails?: boolean;
|
|
20
|
+
includeCharts?: boolean;
|
|
21
|
+
theme?: 'light' | 'dark';
|
|
22
|
+
aiAnalysis?: any;
|
|
23
|
+
coverage?: any;
|
|
24
|
+
sourceComparison?: any;
|
|
25
|
+
failureDiscrepancyCorrelation?: any;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Service for test result reporting
|
|
29
|
+
*/
|
|
30
|
+
export declare class ReportService {
|
|
31
|
+
/**
|
|
32
|
+
* Generates a Markdown report from test results
|
|
33
|
+
*
|
|
34
|
+
* @param results - Test results to report
|
|
35
|
+
* @returns Markdown formatted report
|
|
36
|
+
*/
|
|
37
|
+
generateMarkdown(results: TestResult[]): string;
|
|
38
|
+
/**
|
|
39
|
+
* Generates an HTML report from test results
|
|
40
|
+
*
|
|
41
|
+
* @param results - Test results to report
|
|
42
|
+
* @param options - HTML generation options
|
|
43
|
+
* @returns HTML formatted report
|
|
44
|
+
*/
|
|
45
|
+
generateHTML(results: TestResult[], options?: HtmlReportOptions): string;
|
|
46
|
+
/**
|
|
47
|
+
* Generates a JSON report from test results
|
|
48
|
+
*
|
|
49
|
+
* @param results - Test results to report
|
|
50
|
+
* @returns JSON formatted report
|
|
51
|
+
*/
|
|
52
|
+
generateJSON(results: TestResult[]): string;
|
|
53
|
+
/**
|
|
54
|
+
* Calculates summary statistics from test results
|
|
55
|
+
*
|
|
56
|
+
* @param results - Test results to summarize
|
|
57
|
+
* @returns Summary object
|
|
58
|
+
*/
|
|
59
|
+
calculateSummary(results: TestResult[]): {
|
|
60
|
+
total: number;
|
|
61
|
+
passed: number;
|
|
62
|
+
failed: number;
|
|
63
|
+
skipped: number;
|
|
64
|
+
passRate: string;
|
|
65
|
+
duration: number;
|
|
66
|
+
avgResponseTime: number;
|
|
67
|
+
byCategory: Record<string, {
|
|
68
|
+
passed: number;
|
|
69
|
+
failed: number;
|
|
70
|
+
total: number;
|
|
71
|
+
}>;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Groups test results by category
|
|
75
|
+
*
|
|
76
|
+
* @param results - Test results to group
|
|
77
|
+
* @returns Results grouped by category
|
|
78
|
+
*/
|
|
79
|
+
private groupByCategory;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=report-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-service.d.ts","sourceRoot":"","sources":["../../../src/mcp/services/report-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAMvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,6BAA6B,CAAC,EAAE,GAAG,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IAgD/C;;;;;;OAMG;IACH,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAuDxE;;;;;OAKG;IACH,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM;IA2B3C;;;;;OAKG;IACH,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC/E;IAwCD;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAaxB"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Service - Test result reporting and formatting
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all test result reporting including:
|
|
5
|
+
* - Markdown generation
|
|
6
|
+
* - HTML generation
|
|
7
|
+
* - JSON formatting
|
|
8
|
+
* - Summary statistics
|
|
9
|
+
*
|
|
10
|
+
* @module mcp/services/report-service
|
|
11
|
+
*/
|
|
12
|
+
import { generateProfessionalHtmlReport } from '../../reporters/html-report-generator.js';
|
|
13
|
+
import { createLogger } from '../../utils/logger.js';
|
|
14
|
+
const log = createLogger('report-service');
|
|
15
|
+
/**
|
|
16
|
+
* Service for test result reporting
|
|
17
|
+
*/
|
|
18
|
+
export class ReportService {
|
|
19
|
+
/**
|
|
20
|
+
* Generates a Markdown report from test results
|
|
21
|
+
*
|
|
22
|
+
* @param results - Test results to report
|
|
23
|
+
* @returns Markdown formatted report
|
|
24
|
+
*/
|
|
25
|
+
generateMarkdown(results) {
|
|
26
|
+
log.info('Generating Markdown report', { testCount: results.length });
|
|
27
|
+
const passed = results.filter(r => r.status === 'passed').length;
|
|
28
|
+
const failed = results.filter(r => r.status === 'failed').length;
|
|
29
|
+
const total = results.length;
|
|
30
|
+
const passRate = total > 0 ? ((passed / total) * 100).toFixed(1) : '0.0';
|
|
31
|
+
const lines = [];
|
|
32
|
+
// Header
|
|
33
|
+
lines.push('# Test Results\n');
|
|
34
|
+
lines.push(`**Total:** ${total} | **Passed:** ${passed} | **Failed:** ${failed} | **Pass Rate:** ${passRate}%\n`);
|
|
35
|
+
// Results by category
|
|
36
|
+
const byCategory = this.groupByCategory(results);
|
|
37
|
+
if (Object.keys(byCategory).length > 0) {
|
|
38
|
+
lines.push('## Results by Category\n');
|
|
39
|
+
for (const [category, categoryResults] of Object.entries(byCategory)) {
|
|
40
|
+
const catPassed = categoryResults.filter(r => r.status === 'passed').length;
|
|
41
|
+
const catTotal = categoryResults.length;
|
|
42
|
+
lines.push(`- **${category}**: ${catPassed}/${catTotal} passed\n`);
|
|
43
|
+
}
|
|
44
|
+
lines.push('');
|
|
45
|
+
}
|
|
46
|
+
// Failed tests detail
|
|
47
|
+
const failedTests = results.filter(r => r.status === 'failed');
|
|
48
|
+
if (failedTests.length > 0) {
|
|
49
|
+
lines.push('## Failed Tests\n');
|
|
50
|
+
for (const result of failedTests) {
|
|
51
|
+
lines.push(`### ${result.testCase.name}\n`);
|
|
52
|
+
lines.push(`- **Endpoint:** \`${result.testCase.method} ${result.testCase.path}\`\n`);
|
|
53
|
+
lines.push(`- **Expected Status:** ${result.testCase.expectedStatus}\n`);
|
|
54
|
+
lines.push(`- **Actual Status:** ${result.actualStatus || 'N/A'}\n`);
|
|
55
|
+
if (result.error) {
|
|
56
|
+
lines.push(`- **Error:** ${result.error}\n`);
|
|
57
|
+
}
|
|
58
|
+
lines.push('');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const markdown = lines.join('');
|
|
62
|
+
log.info('Markdown report generated', { length: markdown.length });
|
|
63
|
+
return markdown;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generates an HTML report from test results
|
|
67
|
+
*
|
|
68
|
+
* @param results - Test results to report
|
|
69
|
+
* @param options - HTML generation options
|
|
70
|
+
* @returns HTML formatted report
|
|
71
|
+
*/
|
|
72
|
+
generateHTML(results, options) {
|
|
73
|
+
log.info('Generating HTML report', {
|
|
74
|
+
testCount: results.length,
|
|
75
|
+
options
|
|
76
|
+
});
|
|
77
|
+
try {
|
|
78
|
+
const summary = this.calculateSummary(results);
|
|
79
|
+
const byCategory = this.groupByCategory(results);
|
|
80
|
+
const byCategoryStats = Object.entries(byCategory).reduce((acc, [cat, catResults]) => {
|
|
81
|
+
acc[cat] = {
|
|
82
|
+
passed: catResults.filter(r => r.status === 'passed').length,
|
|
83
|
+
failed: catResults.filter(r => r.status === 'failed').length,
|
|
84
|
+
total: catResults.length
|
|
85
|
+
};
|
|
86
|
+
return acc;
|
|
87
|
+
}, {});
|
|
88
|
+
// Build ReportData object
|
|
89
|
+
const reportData = {
|
|
90
|
+
...(options?.apiName && { apiName: options.apiName }),
|
|
91
|
+
summary,
|
|
92
|
+
allTests: results.map(r => ({
|
|
93
|
+
id: r.testCase.id,
|
|
94
|
+
name: r.testCase.name,
|
|
95
|
+
category: r.testCase.category,
|
|
96
|
+
status: r.status,
|
|
97
|
+
method: r.testCase.method,
|
|
98
|
+
path: r.testCase.path,
|
|
99
|
+
endpoint: `${r.testCase.method} ${r.testCase.path}`,
|
|
100
|
+
expectedStatus: r.testCase.expectedStatus,
|
|
101
|
+
actualStatus: r.actualStatus,
|
|
102
|
+
error: r.error,
|
|
103
|
+
duration: r.responseTime
|
|
104
|
+
})),
|
|
105
|
+
byCategory: byCategoryStats,
|
|
106
|
+
byEndpoint: {},
|
|
107
|
+
environment: 'Test',
|
|
108
|
+
timestamp: new Date().toISOString(),
|
|
109
|
+
...(options?.aiAnalysis && { aiAnalysis: options.aiAnalysis }),
|
|
110
|
+
...(options?.coverage && { coverage: options.coverage }),
|
|
111
|
+
...(options?.sourceComparison && { sourceComparison: options.sourceComparison }),
|
|
112
|
+
...(options?.failureDiscrepancyCorrelation && { failureDiscrepancyCorrelation: options.failureDiscrepancyCorrelation })
|
|
113
|
+
};
|
|
114
|
+
const html = generateProfessionalHtmlReport(reportData);
|
|
115
|
+
log.info('HTML report generated', { length: html.length });
|
|
116
|
+
return html;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
log.error('HTML report generation failed', { error });
|
|
120
|
+
throw new Error(`HTML report generation failed: ${error}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Generates a JSON report from test results
|
|
125
|
+
*
|
|
126
|
+
* @param results - Test results to report
|
|
127
|
+
* @returns JSON formatted report
|
|
128
|
+
*/
|
|
129
|
+
generateJSON(results) {
|
|
130
|
+
log.info('Generating JSON report', { testCount: results.length });
|
|
131
|
+
const summary = this.calculateSummary(results);
|
|
132
|
+
const report = {
|
|
133
|
+
summary,
|
|
134
|
+
results: results.map(r => ({
|
|
135
|
+
id: r.testCase.id,
|
|
136
|
+
name: r.testCase.name,
|
|
137
|
+
status: r.status,
|
|
138
|
+
method: r.testCase.method,
|
|
139
|
+
path: r.testCase.path,
|
|
140
|
+
expectedStatus: r.testCase.expectedStatus,
|
|
141
|
+
actualStatus: r.actualStatus,
|
|
142
|
+
responseTime: r.responseTime,
|
|
143
|
+
error: r.error,
|
|
144
|
+
category: r.testCase.category
|
|
145
|
+
}))
|
|
146
|
+
};
|
|
147
|
+
const json = JSON.stringify(report, null, 2);
|
|
148
|
+
log.info('JSON report generated', { length: json.length });
|
|
149
|
+
return json;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Calculates summary statistics from test results
|
|
153
|
+
*
|
|
154
|
+
* @param results - Test results to summarize
|
|
155
|
+
* @returns Summary object
|
|
156
|
+
*/
|
|
157
|
+
calculateSummary(results) {
|
|
158
|
+
const total = results.length;
|
|
159
|
+
const passed = results.filter(r => r.status === 'passed').length;
|
|
160
|
+
const failed = results.filter(r => r.status === 'failed').length;
|
|
161
|
+
const skipped = results.filter(r => r.status === 'skipped').length;
|
|
162
|
+
const passRate = total > 0 ? ((passed / total) * 100).toFixed(1) : '0.0';
|
|
163
|
+
const responseTimes = results
|
|
164
|
+
.filter(r => r.responseTime !== undefined)
|
|
165
|
+
.map(r => r.responseTime);
|
|
166
|
+
const totalDuration = responseTimes.length > 0
|
|
167
|
+
? responseTimes.reduce((a, b) => a + b, 0)
|
|
168
|
+
: 0;
|
|
169
|
+
const avgResponseTime = responseTimes.length > 0
|
|
170
|
+
? totalDuration / responseTimes.length
|
|
171
|
+
: 0;
|
|
172
|
+
const byCategory = this.groupByCategory(results);
|
|
173
|
+
const byCategorySummary = {};
|
|
174
|
+
for (const [category, categoryResults] of Object.entries(byCategory)) {
|
|
175
|
+
byCategorySummary[category] = {
|
|
176
|
+
passed: categoryResults.filter(r => r.status === 'passed').length,
|
|
177
|
+
failed: categoryResults.filter(r => r.status === 'failed').length,
|
|
178
|
+
total: categoryResults.length
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
total,
|
|
183
|
+
passed,
|
|
184
|
+
failed,
|
|
185
|
+
skipped,
|
|
186
|
+
passRate,
|
|
187
|
+
duration: totalDuration,
|
|
188
|
+
avgResponseTime,
|
|
189
|
+
byCategory: byCategorySummary
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Groups test results by category
|
|
194
|
+
*
|
|
195
|
+
* @param results - Test results to group
|
|
196
|
+
* @returns Results grouped by category
|
|
197
|
+
*/
|
|
198
|
+
groupByCategory(results) {
|
|
199
|
+
const grouped = {};
|
|
200
|
+
for (const result of results) {
|
|
201
|
+
const category = result.testCase.category;
|
|
202
|
+
if (!grouped[category]) {
|
|
203
|
+
grouped[category] = [];
|
|
204
|
+
}
|
|
205
|
+
grouped[category].push(result);
|
|
206
|
+
}
|
|
207
|
+
return grouped;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=report-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-service.js","sourceRoot":"","sources":["../../../src/mcp/services/report-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec Service - OpenAPI specification operations
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all OpenAPI spec parsing, endpoint extraction,
|
|
5
|
+
* and authentication inference logic.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp/services/spec-service
|
|
8
|
+
*/
|
|
9
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
10
|
+
import type { ParsedEndpoint, AuthConfig } from '../../types/index.js';
|
|
11
|
+
/**
|
|
12
|
+
* Service for OpenAPI specification operations
|
|
13
|
+
*/
|
|
14
|
+
export declare class SpecService {
|
|
15
|
+
/**
|
|
16
|
+
* Parses an OpenAPI specification from a file
|
|
17
|
+
*
|
|
18
|
+
* @param specPath - Path to OpenAPI spec file (YAML or JSON)
|
|
19
|
+
* @returns Parsed OpenAPI document
|
|
20
|
+
*/
|
|
21
|
+
parseSpec(specPath: string): Promise<OpenAPIV3.Document>;
|
|
22
|
+
/**
|
|
23
|
+
* Extracts endpoints from an OpenAPI document
|
|
24
|
+
*
|
|
25
|
+
* @param spec - OpenAPI document
|
|
26
|
+
* @returns Array of parsed endpoints with metadata
|
|
27
|
+
*/
|
|
28
|
+
extractEndpoints(spec: OpenAPIV3.Document): Promise<ParsedEndpoint[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Infers authentication configuration from OpenAPI spec
|
|
31
|
+
*
|
|
32
|
+
* @param spec - OpenAPI document
|
|
33
|
+
* @returns Inferred auth configuration
|
|
34
|
+
*/
|
|
35
|
+
inferAuth(spec: OpenAPIV3.Document): Promise<AuthConfig>;
|
|
36
|
+
/**
|
|
37
|
+
* Discovers OpenAPI spec from a base URL
|
|
38
|
+
*
|
|
39
|
+
* Attempts to find the spec at common paths like:
|
|
40
|
+
* - /openapi.json
|
|
41
|
+
* - /swagger.json
|
|
42
|
+
* - /api-docs
|
|
43
|
+
* - etc.
|
|
44
|
+
*
|
|
45
|
+
* @param baseUrl - Base URL of the API
|
|
46
|
+
* @returns Path to discovered spec (temp file) or null if not found
|
|
47
|
+
*/
|
|
48
|
+
discoverSpec(baseUrl: string): Promise<string | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Parses spec from path or discovers from base URL
|
|
51
|
+
*
|
|
52
|
+
* @param specPath - Optional path to spec file
|
|
53
|
+
* @param baseUrl - Optional base URL for discovery
|
|
54
|
+
* @returns Parsed OpenAPI document
|
|
55
|
+
*/
|
|
56
|
+
parseOrDiscoverSpec(specPath?: string, baseUrl?: string): Promise<OpenAPIV3.Document>;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=spec-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-service.d.ts","sourceRoot":"","sources":["../../../src/mcp/services/spec-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvE;;GAEG;AACH,qBAAa,WAAW;IACtB;;;;;OAKG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;IAkB9D;;;;;OAKG;IACG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAmB3E;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB9D;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmB3D;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;CAmB/B"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec Service - OpenAPI specification operations
|
|
3
|
+
*
|
|
4
|
+
* Centralizes all OpenAPI spec parsing, endpoint extraction,
|
|
5
|
+
* and authentication inference logic.
|
|
6
|
+
*
|
|
7
|
+
* @module mcp/services/spec-service
|
|
8
|
+
*/
|
|
9
|
+
import { parseOpenAPISpec, extractEndpoints, inferAuthFromSpec } from '../../parsers/openapi-parser.js';
|
|
10
|
+
import { discoverOpenAPI } from '../../utils/openapi-discovery.js';
|
|
11
|
+
import { createLogger } from '../../utils/logger.js';
|
|
12
|
+
const log = createLogger('spec-service');
|
|
13
|
+
/**
|
|
14
|
+
* Service for OpenAPI specification operations
|
|
15
|
+
*/
|
|
16
|
+
export class SpecService {
|
|
17
|
+
/**
|
|
18
|
+
* Parses an OpenAPI specification from a file
|
|
19
|
+
*
|
|
20
|
+
* @param specPath - Path to OpenAPI spec file (YAML or JSON)
|
|
21
|
+
* @returns Parsed OpenAPI document
|
|
22
|
+
*/
|
|
23
|
+
async parseSpec(specPath) {
|
|
24
|
+
log.info('Parsing OpenAPI spec', { path: specPath });
|
|
25
|
+
try {
|
|
26
|
+
const spec = await parseOpenAPISpec(specPath);
|
|
27
|
+
log.info('OpenAPI spec parsed successfully', {
|
|
28
|
+
path: specPath,
|
|
29
|
+
title: spec.info?.title,
|
|
30
|
+
version: spec.info?.version,
|
|
31
|
+
paths: Object.keys(spec.paths || {}).length
|
|
32
|
+
});
|
|
33
|
+
return spec;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
log.error('Failed to parse OpenAPI spec', { path: specPath, error });
|
|
37
|
+
throw new Error(`Failed to parse OpenAPI spec from ${specPath}: ${error}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Extracts endpoints from an OpenAPI document
|
|
42
|
+
*
|
|
43
|
+
* @param spec - OpenAPI document
|
|
44
|
+
* @returns Array of parsed endpoints with metadata
|
|
45
|
+
*/
|
|
46
|
+
async extractEndpoints(spec) {
|
|
47
|
+
log.info('Extracting endpoints from spec', {
|
|
48
|
+
title: spec.info?.title,
|
|
49
|
+
pathCount: Object.keys(spec.paths || {}).length
|
|
50
|
+
});
|
|
51
|
+
try {
|
|
52
|
+
const endpoints = extractEndpoints(spec);
|
|
53
|
+
log.info('Endpoints extracted successfully', {
|
|
54
|
+
count: endpoints.length,
|
|
55
|
+
methods: [...new Set(endpoints.map(e => e.method))]
|
|
56
|
+
});
|
|
57
|
+
return endpoints;
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
log.error('Failed to extract endpoints', { error });
|
|
61
|
+
throw new Error(`Failed to extract endpoints: ${error}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Infers authentication configuration from OpenAPI spec
|
|
66
|
+
*
|
|
67
|
+
* @param spec - OpenAPI document
|
|
68
|
+
* @returns Inferred auth configuration
|
|
69
|
+
*/
|
|
70
|
+
async inferAuth(spec) {
|
|
71
|
+
log.info('Inferring authentication from spec', {
|
|
72
|
+
title: spec.info?.title
|
|
73
|
+
});
|
|
74
|
+
try {
|
|
75
|
+
const auth = inferAuthFromSpec(spec);
|
|
76
|
+
log.info('Authentication inferred', {
|
|
77
|
+
type: auth.type,
|
|
78
|
+
hasToken: !!auth.token,
|
|
79
|
+
hasOAuth2: !!auth.oauth2
|
|
80
|
+
});
|
|
81
|
+
return auth;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
log.error('Failed to infer auth', { error });
|
|
85
|
+
throw new Error(`Failed to infer authentication: ${error}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Discovers OpenAPI spec from a base URL
|
|
90
|
+
*
|
|
91
|
+
* Attempts to find the spec at common paths like:
|
|
92
|
+
* - /openapi.json
|
|
93
|
+
* - /swagger.json
|
|
94
|
+
* - /api-docs
|
|
95
|
+
* - etc.
|
|
96
|
+
*
|
|
97
|
+
* @param baseUrl - Base URL of the API
|
|
98
|
+
* @returns Path to discovered spec (temp file) or null if not found
|
|
99
|
+
*/
|
|
100
|
+
async discoverSpec(baseUrl) {
|
|
101
|
+
log.info('Discovering OpenAPI spec', { baseUrl });
|
|
102
|
+
try {
|
|
103
|
+
const specPath = await discoverOpenAPI(baseUrl);
|
|
104
|
+
if (specPath) {
|
|
105
|
+
log.info('OpenAPI spec discovered', { baseUrl, path: specPath });
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
log.warn('OpenAPI spec not found', { baseUrl });
|
|
109
|
+
}
|
|
110
|
+
return specPath;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
log.error('Failed to discover OpenAPI spec', { baseUrl, error });
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parses spec from path or discovers from base URL
|
|
119
|
+
*
|
|
120
|
+
* @param specPath - Optional path to spec file
|
|
121
|
+
* @param baseUrl - Optional base URL for discovery
|
|
122
|
+
* @returns Parsed OpenAPI document
|
|
123
|
+
*/
|
|
124
|
+
async parseOrDiscoverSpec(specPath, baseUrl) {
|
|
125
|
+
// If spec path provided, use it
|
|
126
|
+
if (specPath) {
|
|
127
|
+
return this.parseSpec(specPath);
|
|
128
|
+
}
|
|
129
|
+
// Otherwise, try to discover from base URL
|
|
130
|
+
if (baseUrl) {
|
|
131
|
+
const discoveredPath = await this.discoverSpec(baseUrl);
|
|
132
|
+
if (discoveredPath) {
|
|
133
|
+
return this.parseSpec(discoveredPath);
|
|
134
|
+
}
|
|
135
|
+
throw new Error(`OpenAPI spec not found at ${baseUrl}. Please provide specPath explicitly.`);
|
|
136
|
+
}
|
|
137
|
+
throw new Error('Either specPath or baseUrl must be provided');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=spec-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-service.js","sourceRoot":"","sources":["../../../src/mcp/services/spec-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Endpoint Extractor
|
|
3
|
+
*
|
|
4
|
+
* Extracts and resolves endpoint information from OpenAPI specifications.
|
|
5
|
+
*
|
|
6
|
+
* @module parsers/endpoint-extractor
|
|
7
|
+
*/
|
|
8
|
+
import type { OpenAPIV3 } from 'openapi-types';
|
|
9
|
+
import type { ParsedEndpoint } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Extracts all endpoints from an OpenAPI specification
|
|
12
|
+
*
|
|
13
|
+
* @param spec - Parsed OpenAPI specification
|
|
14
|
+
* @returns Array of parsed endpoints with their metadata
|
|
15
|
+
*/
|
|
16
|
+
export declare function extractEndpoints(spec: OpenAPIV3.Document): ParsedEndpoint[];
|
|
17
|
+
/**
|
|
18
|
+
* Extracts security schemes from an OpenAPI specification
|
|
19
|
+
*
|
|
20
|
+
* @param spec - Parsed OpenAPI specification
|
|
21
|
+
* @returns Map of security scheme name to security scheme object
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractSecuritySchemes(spec: OpenAPIV3.Document): Record<string, OpenAPIV3.SecuritySchemeObject>;
|
|
24
|
+
/**
|
|
25
|
+
* Resolves security requirements to actual security scheme objects
|
|
26
|
+
*
|
|
27
|
+
* @param security - Security requirements array from operation or global
|
|
28
|
+
* @param schemes - Available security schemes from spec
|
|
29
|
+
* @returns Array of resolved security scheme objects
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveSecurityRequirements(security: OpenAPIV3.SecurityRequirementObject[] | undefined, schemes: Record<string, OpenAPIV3.SecuritySchemeObject>): OpenAPIV3.SecuritySchemeObject[];
|
|
32
|
+
//# sourceMappingURL=endpoint-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-extractor.d.ts","sourceRoot":"","sources":["../../src/parsers/endpoint-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAc,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMpE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,GAAG,cAAc,EAAE,CAyI3E;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,CAAC,QAAQ,GACvB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,CAAC,yBAAyB,EAAE,GAAG,SAAS,EAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,oBAAoB,CAAC,GACtD,SAAS,CAAC,oBAAoB,EAAE,CAmBlC"}
|