@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 @@
|
|
|
1
|
+
{"version":3,"file":"openapi-discovery.js","sourceRoot":"","sources":["../../src/utils/openapi-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Resolution Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides secure and robust path resolution with protection against
|
|
5
|
+
* path traversal attacks and consistent handling across platforms.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/path-resolver
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Resolves a file path securely with path traversal protection
|
|
11
|
+
*
|
|
12
|
+
* Handles:
|
|
13
|
+
* - Absolute paths (override baseDir)
|
|
14
|
+
* - Relative paths (resolved from baseDir)
|
|
15
|
+
* - Home directory expansion (~)
|
|
16
|
+
* - Path traversal prevention (../ attacks)
|
|
17
|
+
* - Cross-platform normalization
|
|
18
|
+
*
|
|
19
|
+
* @param filePath - Path to resolve (can be absolute, relative, or use ~)
|
|
20
|
+
* @param workingDirectory - Base directory for relative path resolution (default: process.cwd())
|
|
21
|
+
* @returns Absolute, normalized, and validated file path
|
|
22
|
+
* @throws Error if path attempts to escape working directory
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* // Relative path
|
|
27
|
+
* resolveFilePath('./api.yml', '/home/user/project')
|
|
28
|
+
* // Returns: '/home/user/project/api.yml'
|
|
29
|
+
*
|
|
30
|
+
* // Absolute path (overrides baseDir)
|
|
31
|
+
* resolveFilePath('/etc/api.yml', '/home/user/project')
|
|
32
|
+
* // Returns: '/etc/api.yml'
|
|
33
|
+
*
|
|
34
|
+
* // Home directory expansion
|
|
35
|
+
* resolveFilePath('~/api.yml')
|
|
36
|
+
* // Returns: '/home/user/api.yml'
|
|
37
|
+
*
|
|
38
|
+
* // Path traversal attempt (throws error)
|
|
39
|
+
* resolveFilePath('../../../etc/passwd', '/home/user/project')
|
|
40
|
+
* // Throws: Error: Path '../../../etc/passwd' escapes working directory
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveFilePath(filePath: string, workingDirectory?: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Resolves an output path for writing files
|
|
46
|
+
*
|
|
47
|
+
* Similar to resolveFilePath but ensures parent directory exists
|
|
48
|
+
* and returns metadata about the resolution.
|
|
49
|
+
*
|
|
50
|
+
* @param outputPath - Path where file will be written
|
|
51
|
+
* @param defaultFilename - Default filename if outputPath is a directory
|
|
52
|
+
* @param workingDirectory - Base directory for relative path resolution
|
|
53
|
+
* @returns Resolved output path and parent directory
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* resolveOutputPath('./results/report.html', 'report.html', '/home/user/project')
|
|
58
|
+
* // Returns: {
|
|
59
|
+
* // filePath: '/home/user/project/results/report.html',
|
|
60
|
+
* // directory: '/home/user/project/results'
|
|
61
|
+
* // }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function resolveOutputPath(outputPath: string, defaultFilename: string, workingDirectory?: string): {
|
|
65
|
+
filePath: string;
|
|
66
|
+
directory: string;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Validates that a path exists within allowed boundaries
|
|
70
|
+
*
|
|
71
|
+
* @param filePath - Path to validate
|
|
72
|
+
* @param allowedBaseDir - Base directory that path must be within
|
|
73
|
+
* @returns true if path is within allowed directory
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* isPathWithinDirectory('/home/user/project/api.yml', '/home/user/project')
|
|
78
|
+
* // Returns: true
|
|
79
|
+
*
|
|
80
|
+
* isPathWithinDirectory('/etc/passwd', '/home/user/project')
|
|
81
|
+
* // Returns: false
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function isPathWithinDirectory(filePath: string, allowedBaseDir: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Normalizes a path for cross-platform compatibility
|
|
87
|
+
*
|
|
88
|
+
* Converts Windows backslashes to forward slashes and removes
|
|
89
|
+
* redundant separators.
|
|
90
|
+
*
|
|
91
|
+
* @param filePath - Path to normalize
|
|
92
|
+
* @returns Normalized path
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* normalizePath('foo\\bar\\..\\baz')
|
|
97
|
+
* // Returns: 'foo/baz' (Unix-style)
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare function normalizePath(filePath: string): string;
|
|
101
|
+
//# sourceMappingURL=path-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/path-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,MAAM,CA6CR;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,gBAAgB,CAAC,EAAE,MAAM,GACxB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAqBzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACrB,OAAO,CAgBT;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Resolution Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides secure and robust path resolution with protection against
|
|
5
|
+
* path traversal attacks and consistent handling across platforms.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/path-resolver
|
|
8
|
+
*/
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import { createLogger } from './logger.js';
|
|
11
|
+
const log = createLogger('path-resolver');
|
|
12
|
+
/**
|
|
13
|
+
* Resolves a file path securely with path traversal protection
|
|
14
|
+
*
|
|
15
|
+
* Handles:
|
|
16
|
+
* - Absolute paths (override baseDir)
|
|
17
|
+
* - Relative paths (resolved from baseDir)
|
|
18
|
+
* - Home directory expansion (~)
|
|
19
|
+
* - Path traversal prevention (../ attacks)
|
|
20
|
+
* - Cross-platform normalization
|
|
21
|
+
*
|
|
22
|
+
* @param filePath - Path to resolve (can be absolute, relative, or use ~)
|
|
23
|
+
* @param workingDirectory - Base directory for relative path resolution (default: process.cwd())
|
|
24
|
+
* @returns Absolute, normalized, and validated file path
|
|
25
|
+
* @throws Error if path attempts to escape working directory
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* // Relative path
|
|
30
|
+
* resolveFilePath('./api.yml', '/home/user/project')
|
|
31
|
+
* // Returns: '/home/user/project/api.yml'
|
|
32
|
+
*
|
|
33
|
+
* // Absolute path (overrides baseDir)
|
|
34
|
+
* resolveFilePath('/etc/api.yml', '/home/user/project')
|
|
35
|
+
* // Returns: '/etc/api.yml'
|
|
36
|
+
*
|
|
37
|
+
* // Home directory expansion
|
|
38
|
+
* resolveFilePath('~/api.yml')
|
|
39
|
+
* // Returns: '/home/user/api.yml'
|
|
40
|
+
*
|
|
41
|
+
* // Path traversal attempt (throws error)
|
|
42
|
+
* resolveFilePath('../../../etc/passwd', '/home/user/project')
|
|
43
|
+
* // Throws: Error: Path '../../../etc/passwd' escapes working directory
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export function resolveFilePath(filePath, workingDirectory) {
|
|
47
|
+
const baseDir = workingDirectory || process.cwd();
|
|
48
|
+
// 1. Handle absolute paths (they override baseDir)
|
|
49
|
+
if (path.isAbsolute(filePath)) {
|
|
50
|
+
log.debug('Resolved absolute path', { filePath });
|
|
51
|
+
return path.normalize(filePath);
|
|
52
|
+
}
|
|
53
|
+
// 2. Expand home directory (~)
|
|
54
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE;
|
|
55
|
+
if (filePath.startsWith('~/') || filePath === '~') {
|
|
56
|
+
if (!homeDir) {
|
|
57
|
+
throw new Error('Cannot expand ~ - HOME environment variable not set');
|
|
58
|
+
}
|
|
59
|
+
const expanded = path.join(homeDir, filePath.slice(2));
|
|
60
|
+
log.debug('Expanded home directory', { original: filePath, expanded });
|
|
61
|
+
return path.normalize(expanded);
|
|
62
|
+
}
|
|
63
|
+
// 3. Resolve relative to baseDir
|
|
64
|
+
const resolved = path.resolve(baseDir, filePath);
|
|
65
|
+
// 4. SECURITY: Prevent path traversal attacks
|
|
66
|
+
const relative = path.relative(baseDir, resolved);
|
|
67
|
+
if (relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
68
|
+
const error = new Error(`Path traversal detected: '${filePath}' escapes working directory '${baseDir}'`);
|
|
69
|
+
log.error('Path traversal attempt blocked', {
|
|
70
|
+
filePath,
|
|
71
|
+
baseDir,
|
|
72
|
+
resolved,
|
|
73
|
+
relative,
|
|
74
|
+
});
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
log.debug('Resolved relative path', {
|
|
78
|
+
filePath,
|
|
79
|
+
baseDir,
|
|
80
|
+
resolved,
|
|
81
|
+
});
|
|
82
|
+
return path.normalize(resolved);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Resolves an output path for writing files
|
|
86
|
+
*
|
|
87
|
+
* Similar to resolveFilePath but ensures parent directory exists
|
|
88
|
+
* and returns metadata about the resolution.
|
|
89
|
+
*
|
|
90
|
+
* @param outputPath - Path where file will be written
|
|
91
|
+
* @param defaultFilename - Default filename if outputPath is a directory
|
|
92
|
+
* @param workingDirectory - Base directory for relative path resolution
|
|
93
|
+
* @returns Resolved output path and parent directory
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* resolveOutputPath('./results/report.html', 'report.html', '/home/user/project')
|
|
98
|
+
* // Returns: {
|
|
99
|
+
* // filePath: '/home/user/project/results/report.html',
|
|
100
|
+
* // directory: '/home/user/project/results'
|
|
101
|
+
* // }
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export function resolveOutputPath(outputPath, defaultFilename, workingDirectory) {
|
|
105
|
+
const resolved = resolveFilePath(outputPath, workingDirectory);
|
|
106
|
+
// Check if path ends with directory separator (user wants to write to a directory)
|
|
107
|
+
const isDirectory = outputPath.endsWith('/') || outputPath.endsWith(path.sep);
|
|
108
|
+
const filePath = isDirectory
|
|
109
|
+
? path.join(resolved, defaultFilename)
|
|
110
|
+
: resolved;
|
|
111
|
+
const directory = path.dirname(filePath);
|
|
112
|
+
log.debug('Resolved output path', {
|
|
113
|
+
outputPath,
|
|
114
|
+
defaultFilename,
|
|
115
|
+
filePath,
|
|
116
|
+
directory,
|
|
117
|
+
});
|
|
118
|
+
return { filePath, directory };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Validates that a path exists within allowed boundaries
|
|
122
|
+
*
|
|
123
|
+
* @param filePath - Path to validate
|
|
124
|
+
* @param allowedBaseDir - Base directory that path must be within
|
|
125
|
+
* @returns true if path is within allowed directory
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* isPathWithinDirectory('/home/user/project/api.yml', '/home/user/project')
|
|
130
|
+
* // Returns: true
|
|
131
|
+
*
|
|
132
|
+
* isPathWithinDirectory('/etc/passwd', '/home/user/project')
|
|
133
|
+
* // Returns: false
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export function isPathWithinDirectory(filePath, allowedBaseDir) {
|
|
137
|
+
const normalizedFile = path.normalize(path.resolve(filePath));
|
|
138
|
+
const normalizedBase = path.normalize(path.resolve(allowedBaseDir));
|
|
139
|
+
const relative = path.relative(normalizedBase, normalizedFile);
|
|
140
|
+
const isWithin = !relative.startsWith('..') && !path.isAbsolute(relative);
|
|
141
|
+
log.debug('Path boundary check', {
|
|
142
|
+
filePath,
|
|
143
|
+
allowedBaseDir,
|
|
144
|
+
relative,
|
|
145
|
+
isWithin,
|
|
146
|
+
});
|
|
147
|
+
return isWithin;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Normalizes a path for cross-platform compatibility
|
|
151
|
+
*
|
|
152
|
+
* Converts Windows backslashes to forward slashes and removes
|
|
153
|
+
* redundant separators.
|
|
154
|
+
*
|
|
155
|
+
* @param filePath - Path to normalize
|
|
156
|
+
* @returns Normalized path
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* normalizePath('foo\\bar\\..\\baz')
|
|
161
|
+
* // Returns: 'foo/baz' (Unix-style)
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export function normalizePath(filePath) {
|
|
165
|
+
return path.normalize(filePath).replace(/\\/g, '/');
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=path-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolver.js","sourceRoot":"","sources":["../../src/utils/path-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resilience Utilities - Retry Logic and Circuit Breaker
|
|
3
|
+
*
|
|
4
|
+
* Provides retry mechanisms and circuit breaker pattern for handling
|
|
5
|
+
* transient failures gracefully.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/resilience
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Retry configuration options
|
|
11
|
+
*/
|
|
12
|
+
export interface RetryOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Maximum number of retry attempts
|
|
15
|
+
* @default 3
|
|
16
|
+
*/
|
|
17
|
+
maxRetries?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Initial delay in milliseconds
|
|
20
|
+
* @default 1000
|
|
21
|
+
*/
|
|
22
|
+
initialDelay?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Maximum delay in milliseconds
|
|
25
|
+
* @default 10000
|
|
26
|
+
*/
|
|
27
|
+
maxDelay?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Backoff multiplier for exponential backoff
|
|
30
|
+
* @default 2
|
|
31
|
+
*/
|
|
32
|
+
backoffMultiplier?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Custom function to determine if error should be retried
|
|
35
|
+
* @default isRetryableError
|
|
36
|
+
*/
|
|
37
|
+
shouldRetry?: (error: unknown) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Callback called on each retry attempt
|
|
40
|
+
*/
|
|
41
|
+
onRetry?: (attempt: number, error: unknown, delay: number) => void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Executes a function with retry logic and exponential backoff
|
|
45
|
+
*
|
|
46
|
+
* @param fn - Async function to execute
|
|
47
|
+
* @param options - Retry configuration
|
|
48
|
+
* @returns Result of the function
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const result = await withRetry(
|
|
53
|
+
* async () => fetch('https://api.example.com/data'),
|
|
54
|
+
* {
|
|
55
|
+
* maxRetries: 3,
|
|
56
|
+
* initialDelay: 1000,
|
|
57
|
+
* onRetry: (attempt, error, delay) => {
|
|
58
|
+
* console.log(`Retry attempt ${attempt} after ${delay}ms`);
|
|
59
|
+
* }
|
|
60
|
+
* }
|
|
61
|
+
* );
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function withRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
65
|
+
/**
|
|
66
|
+
* Circuit breaker states
|
|
67
|
+
*/
|
|
68
|
+
export declare enum CircuitState {
|
|
69
|
+
CLOSED = "CLOSED",// Normal operation
|
|
70
|
+
OPEN = "OPEN",// Circuit is open, requests fail fast
|
|
71
|
+
HALF_OPEN = "HALF_OPEN"
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Circuit breaker configuration
|
|
75
|
+
*/
|
|
76
|
+
export interface CircuitBreakerOptions {
|
|
77
|
+
/**
|
|
78
|
+
* Number of failures before opening circuit
|
|
79
|
+
* @default 5
|
|
80
|
+
*/
|
|
81
|
+
failureThreshold?: number;
|
|
82
|
+
/**
|
|
83
|
+
* Time in milliseconds to wait before transitioning to HALF_OPEN
|
|
84
|
+
* @default 60000 (1 minute)
|
|
85
|
+
*/
|
|
86
|
+
resetTimeout?: number;
|
|
87
|
+
/**
|
|
88
|
+
* Number of successful calls in HALF_OPEN before closing circuit
|
|
89
|
+
* @default 2
|
|
90
|
+
*/
|
|
91
|
+
successThreshold?: number;
|
|
92
|
+
/**
|
|
93
|
+
* Callback when circuit state changes
|
|
94
|
+
*/
|
|
95
|
+
onStateChange?: (oldState: CircuitState, newState: CircuitState) => void;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Circuit Breaker pattern implementation
|
|
99
|
+
*
|
|
100
|
+
* Prevents cascading failures by failing fast when a service is down
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const breaker = new CircuitBreaker({
|
|
105
|
+
* failureThreshold: 5,
|
|
106
|
+
* resetTimeout: 60000,
|
|
107
|
+
* });
|
|
108
|
+
*
|
|
109
|
+
* try {
|
|
110
|
+
* const result = await breaker.execute(async () => {
|
|
111
|
+
* return await fetch('https://api.example.com/data');
|
|
112
|
+
* });
|
|
113
|
+
* } catch (error) {
|
|
114
|
+
* console.error('Request failed or circuit is open');
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare class CircuitBreaker {
|
|
119
|
+
private state;
|
|
120
|
+
private failureCount;
|
|
121
|
+
private successCount;
|
|
122
|
+
private nextAttemptTime;
|
|
123
|
+
private readonly options;
|
|
124
|
+
constructor(options?: CircuitBreakerOptions);
|
|
125
|
+
/**
|
|
126
|
+
* Executes a function with circuit breaker protection
|
|
127
|
+
*
|
|
128
|
+
* @param fn - Async function to execute
|
|
129
|
+
* @returns Result of the function
|
|
130
|
+
* @throws Error if circuit is OPEN
|
|
131
|
+
*/
|
|
132
|
+
execute<T>(fn: () => Promise<T>): Promise<T>;
|
|
133
|
+
/**
|
|
134
|
+
* Called when operation succeeds
|
|
135
|
+
* @internal
|
|
136
|
+
*/
|
|
137
|
+
private onSuccess;
|
|
138
|
+
/**
|
|
139
|
+
* Called when operation fails
|
|
140
|
+
* @internal
|
|
141
|
+
*/
|
|
142
|
+
private onFailure;
|
|
143
|
+
/**
|
|
144
|
+
* Transitions circuit to a new state
|
|
145
|
+
* @internal
|
|
146
|
+
*/
|
|
147
|
+
private transitionTo;
|
|
148
|
+
/**
|
|
149
|
+
* Gets current circuit state
|
|
150
|
+
*/
|
|
151
|
+
getState(): CircuitState;
|
|
152
|
+
/**
|
|
153
|
+
* Gets current failure count
|
|
154
|
+
*/
|
|
155
|
+
getFailureCount(): number;
|
|
156
|
+
/**
|
|
157
|
+
* Manually resets the circuit breaker
|
|
158
|
+
*/
|
|
159
|
+
reset(): void;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Creates a resilient version of a function with both retry and circuit breaker
|
|
163
|
+
*
|
|
164
|
+
* @param fn - Function to make resilient
|
|
165
|
+
* @param retryOptions - Retry configuration
|
|
166
|
+
* @param circuitBreakerOptions - Circuit breaker configuration
|
|
167
|
+
* @returns Wrapped function
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* const resilientFetch = makeResilient(
|
|
172
|
+
* async (url: string) => fetch(url),
|
|
173
|
+
* { maxRetries: 3 },
|
|
174
|
+
* { failureThreshold: 5 }
|
|
175
|
+
* );
|
|
176
|
+
*
|
|
177
|
+
* const data = await resilientFetch('https://api.example.com/data');
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export declare function makeResilient<T extends (...args: any[]) => Promise<any>>(fn: T, retryOptions?: RetryOptions, circuitBreakerOptions?: CircuitBreakerOptions): T;
|
|
181
|
+
//# sourceMappingURL=resilience.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resilience.d.ts","sourceRoot":"","sources":["../../src/utils/resilience.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAE1C;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CAoDZ;AAED;;GAEG;AACH,oBAAY,YAAY;IACtB,MAAM,WAAW,CAAM,mBAAmB;IAC1C,IAAI,SAAS,CAAU,sCAAsC;IAC7D,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE9C,OAAO,GAAE,qBAA0B;IAS/C;;;;;;OAMG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAyBlD;;;OAGG;IACH,OAAO,CAAC,SAAS;IAmBjB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAkBjB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,QAAQ,IAAI,YAAY;IAIxB;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACtE,EAAE,EAAE,CAAC,EACL,YAAY,CAAC,EAAE,YAAY,EAC3B,qBAAqB,CAAC,EAAE,qBAAqB,GAC5C,CAAC,CAQH"}
|