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