ninja-reverse-proxy 1.0.4 → 1.0.5
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/README.md +187 -139
- package/dist/balancer/contracts/balancer.interface.d.ts +8 -0
- package/dist/balancer/contracts/balancer.interface.d.ts.map +1 -0
- package/dist/balancer/contracts/balancer.interface.js +2 -0
- package/dist/balancer/contracts/balancer.interface.js.map +1 -0
- package/dist/balancer/contracts/context.types.d.ts +7 -0
- package/dist/balancer/contracts/context.types.d.ts.map +1 -0
- package/dist/balancer/contracts/context.types.js +2 -0
- package/dist/balancer/contracts/context.types.js.map +1 -0
- package/dist/balancer/contracts/strategy.interface.d.ts +6 -0
- package/dist/balancer/contracts/strategy.interface.d.ts.map +1 -0
- package/dist/balancer/contracts/strategy.interface.js +2 -0
- package/dist/balancer/contracts/strategy.interface.js.map +1 -0
- package/dist/balancer/core/load-balancer.d.ts +21 -0
- package/dist/balancer/core/load-balancer.d.ts.map +1 -0
- package/dist/balancer/core/load-balancer.js +188 -0
- package/dist/balancer/core/load-balancer.js.map +1 -0
- package/dist/balancer/core/strategy-registry.d.ts +8 -0
- package/dist/balancer/core/strategy-registry.d.ts.map +1 -0
- package/dist/balancer/core/strategy-registry.js +11 -0
- package/dist/balancer/core/strategy-registry.js.map +1 -0
- package/dist/balancer/factory/balancer.factory.d.ts +4 -0
- package/dist/balancer/factory/balancer.factory.d.ts.map +1 -0
- package/dist/balancer/factory/balancer.factory.js +35 -0
- package/dist/balancer/factory/balancer.factory.js.map +1 -0
- package/dist/balancer/index.d.ts +6 -0
- package/dist/balancer/index.d.ts.map +1 -0
- package/dist/balancer/index.js +3 -0
- package/dist/balancer/index.js.map +1 -0
- package/dist/balancer/strategies/adaptive-wrr.strategy.d.ts +8 -0
- package/dist/balancer/strategies/adaptive-wrr.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/adaptive-wrr.strategy.js +32 -0
- package/dist/balancer/strategies/adaptive-wrr.strategy.js.map +1 -0
- package/dist/balancer/strategies/consistent-hashing.strategy.d.ts +11 -0
- package/dist/balancer/strategies/consistent-hashing.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/consistent-hashing.strategy.js +45 -0
- package/dist/balancer/strategies/consistent-hashing.strategy.js.map +1 -0
- package/dist/balancer/strategies/ip-hash.strategy.d.ts +7 -0
- package/dist/balancer/strategies/ip-hash.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/ip-hash.strategy.js +24 -0
- package/dist/balancer/strategies/ip-hash.strategy.js.map +1 -0
- package/dist/balancer/strategies/least-connections.strategy.d.ts +6 -0
- package/dist/balancer/strategies/least-connections.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/least-connections.strategy.js +8 -0
- package/dist/balancer/strategies/least-connections.strategy.js.map +1 -0
- package/dist/balancer/strategies/least-response-time.strategy.d.ts +6 -0
- package/dist/balancer/strategies/least-response-time.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/least-response-time.strategy.js +8 -0
- package/dist/balancer/strategies/least-response-time.strategy.js.map +1 -0
- package/dist/balancer/strategies/power-of-two.strategy.d.ts +6 -0
- package/dist/balancer/strategies/power-of-two.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/power-of-two.strategy.js +17 -0
- package/dist/balancer/strategies/power-of-two.strategy.js.map +1 -0
- package/dist/balancer/strategies/random.strategy.d.ts +6 -0
- package/dist/balancer/strategies/random.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/random.strategy.js +8 -0
- package/dist/balancer/strategies/random.strategy.js.map +1 -0
- package/dist/balancer/strategies/resource-based.strategy.d.ts +7 -0
- package/dist/balancer/strategies/resource-based.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/resource-based.strategy.js +24 -0
- package/dist/balancer/strategies/resource-based.strategy.js.map +1 -0
- package/dist/balancer/strategies/round-robin.strategy.d.ts +7 -0
- package/dist/balancer/strategies/round-robin.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/round-robin.strategy.js +11 -0
- package/dist/balancer/strategies/round-robin.strategy.js.map +1 -0
- package/dist/balancer/strategies/sticky-sessions.strategy.d.ts +8 -0
- package/dist/balancer/strategies/sticky-sessions.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/sticky-sessions.strategy.js +20 -0
- package/dist/balancer/strategies/sticky-sessions.strategy.js.map +1 -0
- package/dist/balancer/strategies/weighted-least-connections.strategy.d.ts +6 -0
- package/dist/balancer/strategies/weighted-least-connections.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/weighted-least-connections.strategy.js +12 -0
- package/dist/balancer/strategies/weighted-least-connections.strategy.js.map +1 -0
- package/dist/balancer/strategies/weighted-round-robin.strategy.d.ts +8 -0
- package/dist/balancer/strategies/weighted-round-robin.strategy.d.ts.map +1 -0
- package/dist/balancer/strategies/weighted-round-robin.strategy.js +31 -0
- package/dist/balancer/strategies/weighted-round-robin.strategy.js.map +1 -0
- package/dist/cache/cache-manager.d.ts +25 -0
- package/dist/cache/cache-manager.d.ts.map +1 -0
- package/dist/cache/cache-manager.js +176 -0
- package/dist/cache/cache-manager.js.map +1 -0
- package/dist/cache/contracts/cache-config.interface.d.ts +25 -0
- package/dist/cache/contracts/cache-config.interface.d.ts.map +1 -0
- package/dist/cache/contracts/cache-config.interface.js +2 -0
- package/dist/cache/contracts/cache-config.interface.js.map +1 -0
- package/dist/cache/contracts/cache.interface.d.ts +8 -0
- package/dist/cache/contracts/cache.interface.d.ts.map +1 -0
- package/dist/cache/contracts/cache.interface.js +2 -0
- package/dist/cache/contracts/cache.interface.js.map +1 -0
- package/dist/cache/contracts/invalidator.interface.d.ts +6 -0
- package/dist/cache/contracts/invalidator.interface.d.ts.map +1 -0
- package/dist/cache/contracts/invalidator.interface.js +2 -0
- package/dist/cache/contracts/invalidator.interface.js.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/invalidation/debezium.invalidator.d.ts +8 -0
- package/dist/cache/invalidation/debezium.invalidator.d.ts.map +1 -0
- package/dist/cache/invalidation/debezium.invalidator.js +71 -0
- package/dist/cache/invalidation/debezium.invalidator.js.map +1 -0
- package/dist/cache/invalidation/pattern.invalidator.d.ts +9 -0
- package/dist/cache/invalidation/pattern.invalidator.d.ts.map +1 -0
- package/dist/cache/invalidation/pattern.invalidator.js +10 -0
- package/dist/cache/invalidation/pattern.invalidator.js.map +1 -0
- package/dist/cache/invalidation/tag.invalidator.d.ts +7 -0
- package/dist/cache/invalidation/tag.invalidator.d.ts.map +1 -0
- package/dist/cache/invalidation/tag.invalidator.js +17 -0
- package/dist/cache/invalidation/tag.invalidator.js.map +1 -0
- package/dist/cache/policies/cache-control.parser.d.ts +9 -0
- package/dist/cache/policies/cache-control.parser.d.ts.map +1 -0
- package/dist/cache/policies/cache-control.parser.js +18 -0
- package/dist/cache/policies/cache-control.parser.js.map +1 -0
- package/dist/cache/policies/key-builder.d.ts +11 -0
- package/dist/cache/policies/key-builder.d.ts.map +1 -0
- package/dist/cache/policies/key-builder.js +20 -0
- package/dist/cache/policies/key-builder.js.map +1 -0
- package/dist/cache/policies/stale-if-error.d.ts +4 -0
- package/dist/cache/policies/stale-if-error.d.ts.map +1 -0
- package/dist/cache/policies/stale-if-error.js +7 -0
- package/dist/cache/policies/stale-if-error.js.map +1 -0
- package/dist/cache/policies/stale-while-revalidate.d.ts +7 -0
- package/dist/cache/policies/stale-while-revalidate.d.ts.map +1 -0
- package/dist/cache/policies/stale-while-revalidate.js +13 -0
- package/dist/cache/policies/stale-while-revalidate.js.map +1 -0
- package/dist/cache/stores/hybrid.cache.d.ts +13 -0
- package/dist/cache/stores/hybrid.cache.d.ts.map +1 -0
- package/dist/cache/stores/hybrid.cache.js +36 -0
- package/dist/cache/stores/hybrid.cache.js.map +1 -0
- package/dist/cache/stores/in-memory-lru.d.ts +14 -0
- package/dist/cache/stores/in-memory-lru.d.ts.map +1 -0
- package/dist/cache/stores/in-memory-lru.js +41 -0
- package/dist/cache/stores/in-memory-lru.js.map +1 -0
- package/dist/cache/stores/redis.cache.d.ts +13 -0
- package/dist/cache/stores/redis.cache.d.ts.map +1 -0
- package/dist/cache/stores/redis.cache.js +39 -0
- package/dist/cache/stores/redis.cache.js.map +1 -0
- package/dist/config/config-schema.d.ts +3 -0
- package/dist/config/config-schema.d.ts.map +1 -0
- package/dist/config/config-schema.js +2 -0
- package/dist/config/config-schema.js.map +1 -0
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +2 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/config.loader.d.ts +266 -0
- package/dist/config/config.loader.d.ts.map +1 -0
- package/dist/config/config.loader.js +204 -0
- package/dist/config/config.loader.js.map +1 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schemas/admin.schema.d.ts +7 -0
- package/dist/config/schemas/admin.schema.d.ts.map +1 -0
- package/dist/config/schemas/admin.schema.js +11 -0
- package/dist/config/schemas/admin.schema.js.map +1 -0
- package/dist/config/schemas/balancer.schema.d.ts +32 -0
- package/dist/config/schemas/balancer.schema.d.ts.map +1 -0
- package/dist/config/schemas/balancer.schema.js +52 -0
- package/dist/config/schemas/balancer.schema.js.map +1 -0
- package/dist/config/schemas/cache.schema.d.ts +25 -0
- package/dist/config/schemas/cache.schema.d.ts.map +1 -0
- package/dist/config/schemas/cache.schema.js +57 -0
- package/dist/config/schemas/cache.schema.js.map +1 -0
- package/dist/config/schemas/discovery.schema.d.ts +8 -0
- package/dist/config/schemas/discovery.schema.d.ts.map +1 -0
- package/dist/config/schemas/discovery.schema.js +13 -0
- package/dist/config/schemas/discovery.schema.js.map +1 -0
- package/dist/config/schemas/observability.schema.d.ts +48 -0
- package/dist/config/schemas/observability.schema.d.ts.map +1 -0
- package/dist/config/schemas/observability.schema.js +56 -0
- package/dist/config/schemas/observability.schema.js.map +1 -0
- package/dist/config/schemas/ratelimit.schema.d.ts +36 -0
- package/dist/config/schemas/ratelimit.schema.d.ts.map +1 -0
- package/dist/config/schemas/ratelimit.schema.js +51 -0
- package/dist/config/schemas/ratelimit.schema.js.map +1 -0
- package/dist/config/schemas/resilience.schema.d.ts +36 -0
- package/dist/config/schemas/resilience.schema.d.ts.map +1 -0
- package/dist/config/schemas/resilience.schema.js +91 -0
- package/dist/config/schemas/resilience.schema.js.map +1 -0
- package/dist/config/schemas/server.schema.d.ts +512 -0
- package/dist/config/schemas/server.schema.d.ts.map +1 -0
- package/dist/config/schemas/server.schema.js +104 -0
- package/dist/config/schemas/server.schema.js.map +1 -0
- package/dist/config/server-schema.d.ts +2 -0
- package/dist/config/server-schema.d.ts.map +1 -0
- package/dist/config/server-schema.js +2 -0
- package/dist/config/server-schema.js.map +1 -0
- package/dist/{server-schema.d.ts → core/cluster/ipc.protocol.d.ts} +4 -8
- package/dist/core/cluster/ipc.protocol.d.ts.map +1 -0
- package/dist/{server-schema.js → core/cluster/ipc.protocol.js} +5 -4
- package/dist/core/cluster/ipc.protocol.js.map +1 -0
- package/dist/core/cluster/master.d.ts +10 -0
- package/dist/core/cluster/master.d.ts.map +1 -0
- package/dist/core/cluster/master.js +875 -0
- package/dist/core/cluster/master.js.map +1 -0
- package/dist/core/cluster/worker.d.ts +2 -0
- package/dist/core/cluster/worker.d.ts.map +1 -0
- package/dist/core/cluster/worker.js +313 -0
- package/dist/core/cluster/worker.js.map +1 -0
- package/dist/core/pipeline/context.d.ts +12 -0
- package/dist/core/pipeline/context.d.ts.map +1 -0
- package/dist/core/pipeline/context.js +10 -0
- package/dist/core/pipeline/context.js.map +1 -0
- package/dist/core/pipeline/middleware.pipeline.d.ts +8 -0
- package/dist/core/pipeline/middleware.pipeline.d.ts.map +1 -0
- package/dist/core/pipeline/middleware.pipeline.js +18 -0
- package/dist/core/pipeline/middleware.pipeline.js.map +1 -0
- package/dist/core/proxy/connection.pool.d.ts +6 -0
- package/dist/core/proxy/connection.pool.d.ts.map +1 -0
- package/dist/core/proxy/connection.pool.js +18 -0
- package/dist/core/proxy/connection.pool.js.map +1 -0
- package/dist/core/proxy/http.handler.d.ts +18 -0
- package/dist/core/proxy/http.handler.d.ts.map +1 -0
- package/dist/core/proxy/http.handler.js +35 -0
- package/dist/core/proxy/http.handler.js.map +1 -0
- package/dist/core/proxy/upstream.client.d.ts +12 -0
- package/dist/core/proxy/upstream.client.d.ts.map +1 -0
- package/dist/core/proxy/upstream.client.js +13 -0
- package/dist/core/proxy/upstream.client.js.map +1 -0
- package/dist/core/proxy/websocket.handler.d.ts +12 -0
- package/dist/core/proxy/websocket.handler.d.ts.map +1 -0
- package/dist/core/proxy/websocket.handler.js +77 -0
- package/dist/core/proxy/websocket.handler.js.map +1 -0
- package/dist/core/router/route.matcher.d.ts +7 -0
- package/dist/core/router/route.matcher.d.ts.map +1 -0
- package/dist/core/router/route.matcher.js +16 -0
- package/dist/core/router/route.matcher.js.map +1 -0
- package/dist/core/router/route.types.d.ts +17 -0
- package/dist/core/router/route.types.d.ts.map +1 -0
- package/dist/core/router/route.types.js +2 -0
- package/dist/core/router/route.types.js.map +1 -0
- package/dist/core/router/router.d.ts +8 -0
- package/dist/core/router/router.d.ts.map +1 -0
- package/dist/core/router/router.js +14 -0
- package/dist/core/router/router.js.map +1 -0
- package/dist/discovery/contracts/registry.interface.d.ts +13 -0
- package/dist/discovery/contracts/registry.interface.d.ts.map +1 -0
- package/dist/discovery/contracts/registry.interface.js +2 -0
- package/dist/discovery/contracts/registry.interface.js.map +1 -0
- package/dist/discovery/health/active.probe.d.ts +10 -0
- package/dist/discovery/health/active.probe.d.ts.map +1 -0
- package/dist/discovery/health/active.probe.js +46 -0
- package/dist/discovery/health/active.probe.js.map +1 -0
- package/dist/discovery/health/health.manager.d.ts +18 -0
- package/dist/discovery/health/health.manager.d.ts.map +1 -0
- package/dist/discovery/health/health.manager.js +76 -0
- package/dist/discovery/health/health.manager.js.map +1 -0
- package/dist/discovery/health/passive.probe.d.ts +12 -0
- package/dist/discovery/health/passive.probe.d.ts.map +1 -0
- package/dist/discovery/health/passive.probe.js +12 -0
- package/dist/discovery/health/passive.probe.js.map +1 -0
- package/dist/discovery/index.d.ts +7 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +6 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/{Serviceregistry.d.ts → discovery/registry/dynamic.registry.d.ts} +7 -3
- package/dist/discovery/registry/dynamic.registry.d.ts.map +1 -0
- package/dist/discovery/registry/dynamic.registry.js +138 -0
- package/dist/discovery/registry/dynamic.registry.js.map +1 -0
- package/dist/discovery/target-node.d.ts +12 -0
- package/dist/discovery/target-node.d.ts.map +1 -0
- package/dist/discovery/target-node.js +8 -0
- package/dist/discovery/target-node.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +52 -17
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +3 -0
- package/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/middleware/auth.middleware.js +15 -0
- package/dist/middleware/auth.middleware.js.map +1 -0
- package/dist/middleware/body-limit.middleware.d.ts +3 -0
- package/dist/middleware/body-limit.middleware.d.ts.map +1 -0
- package/dist/middleware/body-limit.middleware.js +12 -0
- package/dist/middleware/body-limit.middleware.js.map +1 -0
- package/dist/middleware/cache.middleware.d.ts +4 -0
- package/dist/middleware/cache.middleware.d.ts.map +1 -0
- package/dist/middleware/cache.middleware.js +16 -0
- package/dist/middleware/cache.middleware.js.map +1 -0
- package/dist/middleware/circuit.middleware.d.ts +3 -0
- package/dist/middleware/circuit.middleware.d.ts.map +1 -0
- package/dist/middleware/circuit.middleware.js +11 -0
- package/dist/middleware/circuit.middleware.js.map +1 -0
- package/dist/middleware/cors.middleware.d.ts +3 -0
- package/dist/middleware/cors.middleware.d.ts.map +1 -0
- package/dist/middleware/cors.middleware.js +19 -0
- package/dist/middleware/cors.middleware.js.map +1 -0
- package/dist/middleware/logging.middleware.d.ts +3 -0
- package/dist/middleware/logging.middleware.d.ts.map +1 -0
- package/dist/middleware/logging.middleware.js +9 -0
- package/dist/middleware/logging.middleware.js.map +1 -0
- package/dist/middleware/rate-limit.middleware.d.ts +4 -0
- package/dist/middleware/rate-limit.middleware.d.ts.map +1 -0
- package/dist/middleware/rate-limit.middleware.js +29 -0
- package/dist/middleware/rate-limit.middleware.js.map +1 -0
- package/dist/middleware/tracing.middleware.d.ts +3 -0
- package/dist/middleware/tracing.middleware.d.ts.map +1 -0
- package/dist/middleware/tracing.middleware.js +18 -0
- package/dist/middleware/tracing.middleware.js.map +1 -0
- package/dist/observability/health/readiness.d.ts +14 -0
- package/dist/observability/health/readiness.d.ts.map +1 -0
- package/dist/observability/health/readiness.js +23 -0
- package/dist/observability/health/readiness.js.map +1 -0
- package/dist/observability/index.d.ts +12 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +8 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/logger/logger.d.ts +19 -0
- package/dist/observability/logger/logger.d.ts.map +1 -0
- package/dist/observability/logger/logger.js +83 -0
- package/dist/observability/logger/logger.js.map +1 -0
- package/dist/observability/logger/tenant-log.streamer.d.ts +29 -0
- package/dist/observability/logger/tenant-log.streamer.d.ts.map +1 -0
- package/dist/observability/logger/tenant-log.streamer.js +80 -0
- package/dist/observability/logger/tenant-log.streamer.js.map +1 -0
- package/dist/observability/metrics/histogram.registry.d.ts +43 -0
- package/dist/observability/metrics/histogram.registry.d.ts.map +1 -0
- package/dist/observability/metrics/histogram.registry.js +87 -0
- package/dist/observability/metrics/histogram.registry.js.map +1 -0
- package/dist/observability/metrics/prometheus.exporter.d.ts +19 -0
- package/dist/observability/metrics/prometheus.exporter.d.ts.map +1 -0
- package/dist/observability/metrics/prometheus.exporter.js +107 -0
- package/dist/observability/metrics/prometheus.exporter.js.map +1 -0
- package/dist/observability/metrics/system.metrics.d.ts +10 -0
- package/dist/observability/metrics/system.metrics.d.ts.map +1 -0
- package/dist/observability/metrics/system.metrics.js +20 -0
- package/dist/observability/metrics/system.metrics.js.map +1 -0
- package/dist/observability/tracing/tracer.d.ts +16 -0
- package/dist/observability/tracing/tracer.d.ts.map +1 -0
- package/dist/observability/tracing/tracer.js +24 -0
- package/dist/observability/tracing/tracer.js.map +1 -0
- package/dist/ratelimit/algorithms/fixed-window.d.ts +6 -0
- package/dist/ratelimit/algorithms/fixed-window.d.ts.map +1 -0
- package/dist/ratelimit/algorithms/fixed-window.js +20 -0
- package/dist/ratelimit/algorithms/fixed-window.js.map +1 -0
- package/dist/ratelimit/algorithms/leaking-bucket.d.ts +5 -0
- package/dist/ratelimit/algorithms/leaking-bucket.d.ts.map +1 -0
- package/dist/ratelimit/algorithms/leaking-bucket.js +17 -0
- package/dist/ratelimit/algorithms/leaking-bucket.js.map +1 -0
- package/dist/ratelimit/algorithms/sliding-window-counter.d.ts +5 -0
- package/dist/ratelimit/algorithms/sliding-window-counter.d.ts.map +1 -0
- package/dist/ratelimit/algorithms/sliding-window-counter.js +24 -0
- package/dist/ratelimit/algorithms/sliding-window-counter.js.map +1 -0
- package/dist/ratelimit/algorithms/sliding-window-log.d.ts +5 -0
- package/dist/ratelimit/algorithms/sliding-window-log.d.ts.map +1 -0
- package/dist/ratelimit/algorithms/sliding-window-log.js +16 -0
- package/dist/ratelimit/algorithms/sliding-window-log.js.map +1 -0
- package/dist/ratelimit/algorithms/token-bucket.d.ts +5 -0
- package/dist/ratelimit/algorithms/token-bucket.d.ts.map +1 -0
- package/dist/ratelimit/algorithms/token-bucket.js +19 -0
- package/dist/ratelimit/algorithms/token-bucket.js.map +1 -0
- package/dist/ratelimit/contracts/limiter.interface.d.ts +11 -0
- package/dist/ratelimit/contracts/limiter.interface.d.ts.map +1 -0
- package/dist/ratelimit/contracts/limiter.interface.js +2 -0
- package/dist/ratelimit/contracts/limiter.interface.js.map +1 -0
- package/dist/ratelimit/contracts/storage.interface.d.ts +6 -0
- package/dist/ratelimit/contracts/storage.interface.d.ts.map +1 -0
- package/dist/ratelimit/contracts/storage.interface.js +2 -0
- package/dist/ratelimit/contracts/storage.interface.js.map +1 -0
- package/dist/ratelimit/index.d.ts +16 -0
- package/dist/ratelimit/index.d.ts.map +1 -0
- package/dist/ratelimit/index.js +12 -0
- package/dist/ratelimit/index.js.map +1 -0
- package/dist/ratelimit/policies/multi-dimension.policy.d.ts +14 -0
- package/dist/ratelimit/policies/multi-dimension.policy.d.ts.map +1 -0
- package/dist/ratelimit/policies/multi-dimension.policy.js +13 -0
- package/dist/ratelimit/policies/multi-dimension.policy.js.map +1 -0
- package/dist/ratelimit/policies/soft-limit.policy.d.ts +8 -0
- package/dist/ratelimit/policies/soft-limit.policy.d.ts.map +1 -0
- package/dist/ratelimit/policies/soft-limit.policy.js +16 -0
- package/dist/ratelimit/policies/soft-limit.policy.js.map +1 -0
- package/dist/ratelimit/rate-limiter.d.ts +48 -0
- package/dist/ratelimit/rate-limiter.d.ts.map +1 -0
- package/dist/ratelimit/rate-limiter.js +420 -0
- package/dist/ratelimit/rate-limiter.js.map +1 -0
- package/dist/ratelimit/storage/hybrid.store.d.ts +10 -0
- package/dist/ratelimit/storage/hybrid.store.d.ts.map +1 -0
- package/dist/ratelimit/storage/hybrid.store.js +58 -0
- package/dist/ratelimit/storage/hybrid.store.js.map +1 -0
- package/dist/ratelimit/storage/memory.store.d.ts +8 -0
- package/dist/ratelimit/storage/memory.store.d.ts.map +1 -0
- package/dist/ratelimit/storage/memory.store.js +20 -0
- package/dist/ratelimit/storage/memory.store.js.map +1 -0
- package/dist/ratelimit/storage/redis.store.d.ts +10 -0
- package/dist/ratelimit/storage/redis.store.d.ts.map +1 -0
- package/dist/ratelimit/storage/redis.store.js +20 -0
- package/dist/ratelimit/storage/redis.store.js.map +1 -0
- package/dist/resilience/bulkhead/bulkhead.d.ts +11 -0
- package/dist/resilience/bulkhead/bulkhead.d.ts.map +1 -0
- package/dist/resilience/bulkhead/bulkhead.js +38 -0
- package/dist/resilience/bulkhead/bulkhead.js.map +1 -0
- package/dist/resilience/circuit-breaker/adaptive.circuit-breaker.d.ts +17 -0
- package/dist/resilience/circuit-breaker/adaptive.circuit-breaker.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/adaptive.circuit-breaker.js +33 -0
- package/dist/resilience/circuit-breaker/adaptive.circuit-breaker.js.map +1 -0
- package/dist/resilience/circuit-breaker/circuit-breaker.manager.d.ts +9 -0
- package/dist/resilience/circuit-breaker/circuit-breaker.manager.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/circuit-breaker.manager.js +22 -0
- package/dist/resilience/circuit-breaker/circuit-breaker.manager.js.map +1 -0
- package/dist/resilience/circuit-breaker/classic.circuit-breaker.d.ts +15 -0
- package/dist/resilience/circuit-breaker/classic.circuit-breaker.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/classic.circuit-breaker.js +39 -0
- package/dist/resilience/circuit-breaker/classic.circuit-breaker.js.map +1 -0
- package/dist/resilience/circuit-breaker/contracts/circuit-breaker.interface.d.ts +6 -0
- package/dist/resilience/circuit-breaker/contracts/circuit-breaker.interface.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/contracts/circuit-breaker.interface.js +2 -0
- package/dist/resilience/circuit-breaker/contracts/circuit-breaker.interface.js.map +1 -0
- package/dist/resilience/circuit-breaker/states/closed.state.d.ts +5 -0
- package/dist/resilience/circuit-breaker/states/closed.state.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/states/closed.state.js +7 -0
- package/dist/resilience/circuit-breaker/states/closed.state.js.map +1 -0
- package/dist/resilience/circuit-breaker/states/half-open.state.d.ts +5 -0
- package/dist/resilience/circuit-breaker/states/half-open.state.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/states/half-open.state.js +7 -0
- package/dist/resilience/circuit-breaker/states/half-open.state.js.map +1 -0
- package/dist/resilience/circuit-breaker/states/open.state.d.ts +5 -0
- package/dist/resilience/circuit-breaker/states/open.state.d.ts.map +1 -0
- package/dist/resilience/circuit-breaker/states/open.state.js +7 -0
- package/dist/resilience/circuit-breaker/states/open.state.js.map +1 -0
- package/dist/resilience/index.d.ts +13 -0
- package/dist/resilience/index.d.ts.map +1 -0
- package/dist/resilience/index.js +11 -0
- package/dist/resilience/index.js.map +1 -0
- package/dist/resilience/retry/backoff/decorrelated-jitter.backoff.d.ts +2 -0
- package/dist/resilience/retry/backoff/decorrelated-jitter.backoff.d.ts.map +1 -0
- package/dist/resilience/retry/backoff/decorrelated-jitter.backoff.js +7 -0
- package/dist/resilience/retry/backoff/decorrelated-jitter.backoff.js.map +1 -0
- package/dist/resilience/retry/backoff/equal-jitter.backoff.d.ts +2 -0
- package/dist/resilience/retry/backoff/equal-jitter.backoff.d.ts.map +1 -0
- package/dist/resilience/retry/backoff/equal-jitter.backoff.js +6 -0
- package/dist/resilience/retry/backoff/equal-jitter.backoff.js.map +1 -0
- package/dist/resilience/retry/backoff/exponential.backoff.d.ts +2 -0
- package/dist/resilience/retry/backoff/exponential.backoff.d.ts.map +1 -0
- package/dist/resilience/retry/backoff/exponential.backoff.js +4 -0
- package/dist/resilience/retry/backoff/exponential.backoff.js.map +1 -0
- package/dist/resilience/retry/backoff/full-jitter.backoff.d.ts +2 -0
- package/dist/resilience/retry/backoff/full-jitter.backoff.d.ts.map +1 -0
- package/dist/resilience/retry/backoff/full-jitter.backoff.js +5 -0
- package/dist/resilience/retry/backoff/full-jitter.backoff.js.map +1 -0
- package/dist/resilience/retry/contracts/retry.interface.d.ts +5 -0
- package/dist/resilience/retry/contracts/retry.interface.d.ts.map +1 -0
- package/dist/resilience/retry/contracts/retry.interface.js +2 -0
- package/dist/resilience/retry/contracts/retry.interface.js.map +1 -0
- package/dist/resilience/retry/retry-budget.d.ts +17 -0
- package/dist/resilience/retry/retry-budget.d.ts.map +1 -0
- package/dist/resilience/retry/retry-budget.js +37 -0
- package/dist/resilience/retry/retry-budget.js.map +1 -0
- package/dist/resilience/retry/retry-handler.d.ts +7 -0
- package/dist/resilience/retry/retry-handler.d.ts.map +1 -0
- package/dist/resilience/retry/retry-handler.js +24 -0
- package/dist/resilience/retry/retry-handler.js.map +1 -0
- package/dist/server.d.ts +5 -9
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -645
- package/dist/server.js.map +1 -1
- package/dist/types/balancer.types.d.ts +18 -0
- package/dist/types/balancer.types.d.ts.map +1 -0
- package/dist/types/balancer.types.js +2 -0
- package/dist/types/balancer.types.js.map +1 -0
- package/dist/types/common.types.d.ts +11 -0
- package/dist/types/common.types.d.ts.map +1 -0
- package/dist/types/common.types.js +2 -0
- package/dist/types/common.types.js.map +1 -0
- package/dist/types/config.types.d.ts +8 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +2 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/types/http.types.d.ts +14 -0
- package/dist/types/http.types.d.ts.map +1 -0
- package/dist/types/http.types.js +2 -0
- package/dist/types/http.types.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/resilience.types.d.ts +31 -0
- package/dist/types/resilience.types.d.ts.map +1 -0
- package/dist/types/resilience.types.js +2 -0
- package/dist/types/resilience.types.js.map +1 -0
- package/dist/types/upstream.types.d.ts +28 -0
- package/dist/types/upstream.types.d.ts.map +1 -0
- package/dist/types/upstream.types.js +2 -0
- package/dist/types/upstream.types.js.map +1 -0
- package/package.json +8 -2
- package/config.example.yaml +0 -99
- package/dist/Serviceregistry.d.ts.map +0 -1
- package/dist/Serviceregistry.js +0 -95
- package/dist/Serviceregistry.js.map +0 -1
- package/dist/auto-scaler.d.ts +0 -27
- package/dist/auto-scaler.d.ts.map +0 -1
- package/dist/auto-scaler.js +0 -133
- package/dist/auto-scaler.js.map +0 -1
- package/dist/cache.d.ts +0 -22
- package/dist/cache.d.ts.map +0 -1
- package/dist/cache.js +0 -112
- package/dist/cache.js.map +0 -1
- package/dist/config-schema.d.ts +0 -53
- package/dist/config-schema.d.ts.map +0 -1
- package/dist/config-schema.js +0 -78
- package/dist/config-schema.js.map +0 -1
- package/dist/config.d.ts +0 -47
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -73
- package/dist/config.js.map +0 -1
- package/dist/health.d.ts +0 -5
- package/dist/health.d.ts.map +0 -1
- package/dist/health.js +0 -72
- package/dist/health.js.map +0 -1
- package/dist/loadBalancer.d.ts +0 -31
- package/dist/loadBalancer.d.ts.map +0 -1
- package/dist/loadBalancer.js +0 -171
- package/dist/loadBalancer.js.map +0 -1
- package/dist/metrics.d.ts +0 -14
- package/dist/metrics.d.ts.map +0 -1
- package/dist/metrics.js +0 -70
- package/dist/metrics.js.map +0 -1
- package/dist/rate-limiter.d.ts +0 -16
- package/dist/rate-limiter.d.ts.map +0 -1
- package/dist/rate-limiter.js +0 -59
- package/dist/rate-limiter.js.map +0 -1
- package/dist/server-schema.d.ts.map +0 -1
- package/dist/server-schema.js.map +0 -1
- package/monitoring/docker-compose.monitoring.yml +0 -22
- package/monitoring/prometheus.yml +0 -11
- package/monitoring/retry.t +0 -16
package/dist/auto-scaler.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { spawn, ChildProcess } from "child_process";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { registry } from "./Serviceregistry.js";
|
|
4
|
-
export class AutoScaler {
|
|
5
|
-
config;
|
|
6
|
-
// loadBalancer to get activeConnections with that servers
|
|
7
|
-
lb;
|
|
8
|
-
spawnedServers = new Map();
|
|
9
|
-
lastScaleAction = 0;
|
|
10
|
-
nextPort;
|
|
11
|
-
monitorInterval = null;
|
|
12
|
-
constructor(config, lb) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
this.lb = lb;
|
|
15
|
-
this.nextPort = config.startPort;
|
|
16
|
-
}
|
|
17
|
-
start() {
|
|
18
|
-
console.log(`[AutoScaler] Started — min:${this.config.minServers} max:${this.config.maxServers}`);
|
|
19
|
-
this.monitorInterval = setInterval(() => {
|
|
20
|
-
this.monitor();
|
|
21
|
-
}, 5000);
|
|
22
|
-
}
|
|
23
|
-
stop() {
|
|
24
|
-
if (this.monitorInterval) {
|
|
25
|
-
clearInterval(this.monitorInterval);
|
|
26
|
-
}
|
|
27
|
-
for (const [id] of this.spawnedServers) {
|
|
28
|
-
this.killServer(id);
|
|
29
|
-
}
|
|
30
|
-
console.log(`[AutoScaler] Stopped`);
|
|
31
|
-
}
|
|
32
|
-
monitor() {
|
|
33
|
-
const stats = this.lb.getStats();
|
|
34
|
-
const now = Date.now();
|
|
35
|
-
// to get total Active Connections :
|
|
36
|
-
const totalConnections = Object.values(stats).reduce((sum, s) => {
|
|
37
|
-
return sum + (s.activeConnections ?? 0);
|
|
38
|
-
}, 0);
|
|
39
|
-
console.log(`[AutoScaler] totalConnections: ${totalConnections}`);
|
|
40
|
-
const healthyCount = registry.getHealthy().length;
|
|
41
|
-
// since spawnedServers is an Map so its length will not exist instead of size will be there
|
|
42
|
-
const autoCount = this.spawnedServers.size;
|
|
43
|
-
console.log(`[AutoScaler] Connections: ${totalConnections} | Servers: ${healthyCount} (${autoCount} auto-scaled)`);
|
|
44
|
-
if (now - this.lastScaleAction < this.config.cooldownMs) {
|
|
45
|
-
console.log(`[AutoScaler] Cooldown active — waiting...`);
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
// Scaling Up :
|
|
49
|
-
if (totalConnections > this.config.scaleUpAt &&
|
|
50
|
-
healthyCount < this.config.maxServers) {
|
|
51
|
-
console.log(`[AutoScaler] SCALE UP — connections: ${totalConnections} > threshold: ${this.config.scaleUpAt}`);
|
|
52
|
-
this.spawnServer();
|
|
53
|
-
this.lastScaleAction = now;
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
// scale down
|
|
57
|
-
if (totalConnections < this.config.scaleDownAt &&
|
|
58
|
-
healthyCount > this.config.minServers &&
|
|
59
|
-
autoCount > 0) {
|
|
60
|
-
console.log(`[AutoScaler] SCALE DOWN — connections: ${totalConnections} < threshold: ${this.config.scaleDownAt}`);
|
|
61
|
-
this.killOldestServer();
|
|
62
|
-
this.lastScaleAction = now;
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
spawnServer() {
|
|
67
|
-
const port = this.nextPort++;
|
|
68
|
-
const id = `auto-node-${port}`;
|
|
69
|
-
console.log(`[AutoScaler] Spawning ${id} on port ${port}...`);
|
|
70
|
-
const child = spawn("node", ["server-template.js"], {
|
|
71
|
-
env: {
|
|
72
|
-
...process.env,
|
|
73
|
-
SERVER_PORT: String(port),
|
|
74
|
-
SERVER_ID: id,
|
|
75
|
-
PROXY_PORT: String(this.config.proxyPort),
|
|
76
|
-
},
|
|
77
|
-
stdio: "pipe", // capture output
|
|
78
|
-
});
|
|
79
|
-
child.stdout?.on("data", (data) => {
|
|
80
|
-
console.log(`[${id}] ${data.toString().trim()}`);
|
|
81
|
-
});
|
|
82
|
-
child.stderr?.on("data", (data) => {
|
|
83
|
-
console.error(`[${id} ERROR] ${data.toString().trim()}`);
|
|
84
|
-
});
|
|
85
|
-
child.on("exit", (code) => {
|
|
86
|
-
console.log(`[AutoScaler] ${id} exited with code ${code}`);
|
|
87
|
-
this.spawnedServers.delete(id);
|
|
88
|
-
});
|
|
89
|
-
this.spawnedServers.set(id, {
|
|
90
|
-
id,
|
|
91
|
-
port,
|
|
92
|
-
process: child,
|
|
93
|
-
spawnedAt: Date.now(),
|
|
94
|
-
});
|
|
95
|
-
console.log(`[AutoScaler]${id} spawned on port ${port}`);
|
|
96
|
-
}
|
|
97
|
-
killOldestServer() {
|
|
98
|
-
let oldest = null;
|
|
99
|
-
for (const [, server] of this.spawnedServers) {
|
|
100
|
-
if (!oldest || server.spawnedAt < oldest.spawnedAt) {
|
|
101
|
-
oldest = server;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
if (oldest) {
|
|
105
|
-
this.killServer(oldest.id);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
killServer(id) {
|
|
109
|
-
const server = this.spawnedServers.get(id);
|
|
110
|
-
if (!server)
|
|
111
|
-
return;
|
|
112
|
-
console.log(`[AutoScaler] Killing ${id}...`);
|
|
113
|
-
server.process.kill("SIGTERM"); // graceful shutdown
|
|
114
|
-
this.spawnedServers.delete(id);
|
|
115
|
-
}
|
|
116
|
-
getStats() {
|
|
117
|
-
return {
|
|
118
|
-
spawnedServers: this.spawnedServers.size,
|
|
119
|
-
servers: [...this.spawnedServers.values()].map((s) => ({
|
|
120
|
-
id: s.id,
|
|
121
|
-
port: s.port,
|
|
122
|
-
uptime: `${Math.floor((Date.now() - s.spawnedAt) / 1000)}s`,
|
|
123
|
-
})),
|
|
124
|
-
config: {
|
|
125
|
-
minServers: this.config.minServers,
|
|
126
|
-
maxServers: this.config.maxServers,
|
|
127
|
-
scaleUpAt: this.config.scaleUpAt,
|
|
128
|
-
scaleDownAt: this.config.scaleDownAt,
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=auto-scaler.js.map
|
package/dist/auto-scaler.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-scaler.js","sourceRoot":"","sources":["../src/auto-scaler.ts"],"names":[],"mappings":"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"}
|
package/dist/cache.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export interface CacheConfig {
|
|
2
|
-
host: string;
|
|
3
|
-
port: number;
|
|
4
|
-
ttlSeconds: number;
|
|
5
|
-
enabled: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare class Cache {
|
|
8
|
-
private client;
|
|
9
|
-
private ttlSeconds;
|
|
10
|
-
private enabled;
|
|
11
|
-
private connected;
|
|
12
|
-
constructor(config: CacheConfig);
|
|
13
|
-
connect(): Promise<void>;
|
|
14
|
-
buildKey(method: string, url: string): string;
|
|
15
|
-
get(key: string): Promise<string | null>;
|
|
16
|
-
set(key: string, value: string): Promise<void>;
|
|
17
|
-
invalidate(pattern: string): Promise<void>;
|
|
18
|
-
disconnect(): Promise<void>;
|
|
19
|
-
isConnected(): boolean;
|
|
20
|
-
getStats(): object;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=cache.d.ts.map
|
package/dist/cache.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,WAAW;IAiCzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAIvC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBxC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI,MAAM;CAOnB"}
|
package/dist/cache.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import { createClient } from "redis";
|
|
2
|
-
export class Cache {
|
|
3
|
-
client;
|
|
4
|
-
ttlSeconds;
|
|
5
|
-
enabled;
|
|
6
|
-
connected = false;
|
|
7
|
-
constructor(config) {
|
|
8
|
-
this.ttlSeconds = config.ttlSeconds;
|
|
9
|
-
this.enabled = config.enabled;
|
|
10
|
-
this.client = createClient({
|
|
11
|
-
socket: {
|
|
12
|
-
host: config.host,
|
|
13
|
-
port: config.port,
|
|
14
|
-
reconnectStrategy: (retries) => {
|
|
15
|
-
if (retries > 5) {
|
|
16
|
-
console.error(`[Cache] Redis reconnect failed after ${retries} attempts`);
|
|
17
|
-
return new Error("Redis reconnect failed");
|
|
18
|
-
}
|
|
19
|
-
return retries * 500;
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
this.client.on("error", (err) => {
|
|
24
|
-
console.error(`[Cache] Redis error: ${err.message}`);
|
|
25
|
-
this.connected = false;
|
|
26
|
-
});
|
|
27
|
-
this.client.on("connect", () => {
|
|
28
|
-
console.log(`[Cache] Redis connected at ${config.host}:${config.port}`);
|
|
29
|
-
this.connected = true;
|
|
30
|
-
});
|
|
31
|
-
this.client.on("reconnecting", () => {
|
|
32
|
-
console.log(`[Cache] Redis reconnecting...`);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
async connect() {
|
|
36
|
-
if (!this.enabled) {
|
|
37
|
-
console.log(`[Cache] Caching is disabled — skipping Redis connection`);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
try {
|
|
41
|
-
await this.client.connect();
|
|
42
|
-
this.connected = true;
|
|
43
|
-
}
|
|
44
|
-
catch (err) {
|
|
45
|
-
console.error(`[Cache] Failed to connect to Redis: ${err.message}`);
|
|
46
|
-
this.connected = false;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Build a unique cache key from method + url
|
|
50
|
-
buildKey(method, url) {
|
|
51
|
-
return `proxy:${method}:${url}`;
|
|
52
|
-
}
|
|
53
|
-
async get(key) {
|
|
54
|
-
if (!this.enabled || !this.connected)
|
|
55
|
-
return null;
|
|
56
|
-
try {
|
|
57
|
-
const value = await this.client.get(key);
|
|
58
|
-
if (value) {
|
|
59
|
-
console.log(`[Cache] HIT → ${key}`);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
console.log(`[Cache] MISS → ${key}`);
|
|
63
|
-
}
|
|
64
|
-
return value;
|
|
65
|
-
}
|
|
66
|
-
catch (err) {
|
|
67
|
-
console.error(`[Cache] GET error: ${err.message}`);
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
async set(key, value) {
|
|
72
|
-
if (!this.enabled || !this.connected)
|
|
73
|
-
return;
|
|
74
|
-
try {
|
|
75
|
-
await this.client.set(key, value, { EX: this.ttlSeconds });
|
|
76
|
-
console.log(`[Cache] SET → ${key} (TTL: ${this.ttlSeconds}s)`);
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
console.error(`[Cache] SET error: ${err.message}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async invalidate(pattern) {
|
|
83
|
-
if (!this.enabled || !this.connected)
|
|
84
|
-
return;
|
|
85
|
-
try {
|
|
86
|
-
const keys = await this.client.keys(`proxy:*:${pattern}`);
|
|
87
|
-
if (keys.length > 0) {
|
|
88
|
-
await this.client.del(keys);
|
|
89
|
-
console.log(`[Cache] INVALIDATED ${keys.length} keys for pattern: ${pattern}`);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
catch (err) {
|
|
93
|
-
console.error(`[Cache] INVALIDATE error: ${err.message}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async disconnect() {
|
|
97
|
-
if (this.connected) {
|
|
98
|
-
console.log(`[Cache] Redis disconnected`);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
isConnected() {
|
|
102
|
-
return this.connected;
|
|
103
|
-
}
|
|
104
|
-
getStats() {
|
|
105
|
-
return {
|
|
106
|
-
enabled: this.enabled,
|
|
107
|
-
connected: this.connected,
|
|
108
|
-
ttlSeconds: this.ttlSeconds,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=cache.js.map
|
package/dist/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/config-schema.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
export declare const rootConfigSchema: z.ZodObject<{
|
|
3
|
-
server: z.ZodObject<{
|
|
4
|
-
listen: z.ZodNumber;
|
|
5
|
-
httpsPort: z.ZodOptional<z.ZodNumber>;
|
|
6
|
-
workers: z.ZodOptional<z.ZodNumber>;
|
|
7
|
-
connectTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
8
|
-
readTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
9
|
-
compression: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
-
accessLog: z.ZodOptional<z.ZodString>;
|
|
11
|
-
upstreams: z.ZodArray<z.ZodObject<{
|
|
12
|
-
id: z.ZodString;
|
|
13
|
-
url: z.ZodString;
|
|
14
|
-
weight: z.ZodDefault<z.ZodNumber>;
|
|
15
|
-
healthPath: z.ZodDefault<z.ZodString>;
|
|
16
|
-
}, z.core.$strip>>;
|
|
17
|
-
headers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
18
|
-
key: z.ZodString;
|
|
19
|
-
value: z.ZodString;
|
|
20
|
-
}, z.core.$strip>>>;
|
|
21
|
-
paths: z.ZodArray<z.ZodObject<{
|
|
22
|
-
path: z.ZodString;
|
|
23
|
-
upstream: z.ZodArray<z.ZodString>;
|
|
24
|
-
rateLimit: z.ZodOptional<z.ZodObject<{
|
|
25
|
-
windowMs: z.ZodNumber;
|
|
26
|
-
maxRequests: z.ZodNumber;
|
|
27
|
-
}, z.core.$strip>>;
|
|
28
|
-
sticky: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
-
}, z.core.$strip>>;
|
|
30
|
-
loadBalancing: z.ZodDefault<z.ZodObject<{
|
|
31
|
-
strategy: z.ZodDefault<z.ZodEnum<{
|
|
32
|
-
"round-robin": "round-robin";
|
|
33
|
-
"least-connections": "least-connections";
|
|
34
|
-
"ip-hash": "ip-hash";
|
|
35
|
-
random: "random";
|
|
36
|
-
}>>;
|
|
37
|
-
failureThreshold: z.ZodDefault<z.ZodNumber>;
|
|
38
|
-
recoveryTimeMs: z.ZodDefault<z.ZodNumber>;
|
|
39
|
-
retry: z.ZodDefault<z.ZodObject<{
|
|
40
|
-
maxAttempts: z.ZodDefault<z.ZodNumber>;
|
|
41
|
-
statusCodes: z.ZodDefault<z.ZodArray<z.ZodNumber>>;
|
|
42
|
-
}, z.core.$strip>>;
|
|
43
|
-
}, z.core.$strip>>;
|
|
44
|
-
cache: z.ZodDefault<z.ZodObject<{
|
|
45
|
-
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
46
|
-
host: z.ZodDefault<z.ZodString>;
|
|
47
|
-
port: z.ZodDefault<z.ZodNumber>;
|
|
48
|
-
ttlSeconds: z.ZodDefault<z.ZodNumber>;
|
|
49
|
-
}, z.core.$strip>>;
|
|
50
|
-
}, z.core.$strip>;
|
|
51
|
-
}, z.core.$strip>;
|
|
52
|
-
export type ConfigSchemaType = z.infer<typeof rootConfigSchema>;
|
|
53
|
-
//# sourceMappingURL=config-schema.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkFxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAE3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
package/dist/config-schema.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
const upstreamSchema = z.object({
|
|
3
|
-
id: z.string(),
|
|
4
|
-
url: z.string().url(),
|
|
5
|
-
weight: z.number().default(1),
|
|
6
|
-
healthPath: z.string().default("/health"),
|
|
7
|
-
});
|
|
8
|
-
const headerSchema = z.object({
|
|
9
|
-
key: z.string(),
|
|
10
|
-
value: z.string(),
|
|
11
|
-
});
|
|
12
|
-
const rateLimitSchema = z
|
|
13
|
-
.object({
|
|
14
|
-
windowMs: z.number(),
|
|
15
|
-
maxRequests: z.number(),
|
|
16
|
-
})
|
|
17
|
-
.optional();
|
|
18
|
-
const pathRuleSchema = z.object({
|
|
19
|
-
path: z.string(),
|
|
20
|
-
upstream: z.array(z.string()),
|
|
21
|
-
rateLimit: rateLimitSchema,
|
|
22
|
-
sticky: z.boolean().default(false),
|
|
23
|
-
});
|
|
24
|
-
const loadBalancerSchema = z
|
|
25
|
-
.object({
|
|
26
|
-
strategy: z
|
|
27
|
-
.enum(["round-robin", "least-connections", "ip-hash", "random"])
|
|
28
|
-
.default("least-connections"),
|
|
29
|
-
failureThreshold: z.number().default(3),
|
|
30
|
-
recoveryTimeMs: z.number().default(15000),
|
|
31
|
-
retry: z
|
|
32
|
-
.object({
|
|
33
|
-
maxAttempts: z.number().default(2),
|
|
34
|
-
statusCodes: z.array(z.number()).default([502, 503, 504]),
|
|
35
|
-
})
|
|
36
|
-
.default({
|
|
37
|
-
maxAttempts: 2,
|
|
38
|
-
statusCodes: [502, 503, 504],
|
|
39
|
-
}),
|
|
40
|
-
})
|
|
41
|
-
.default({
|
|
42
|
-
strategy: "least-connections",
|
|
43
|
-
failureThreshold: 3,
|
|
44
|
-
recoveryTimeMs: 15000,
|
|
45
|
-
retry: {
|
|
46
|
-
maxAttempts: 2,
|
|
47
|
-
statusCodes: [502, 503, 504],
|
|
48
|
-
},
|
|
49
|
-
});
|
|
50
|
-
const cacheSchema = z.object({
|
|
51
|
-
enabled: z.boolean().default(false),
|
|
52
|
-
host: z.string().default("redis"),
|
|
53
|
-
port: z.number().default(6379),
|
|
54
|
-
ttlSeconds: z.number().default(60),
|
|
55
|
-
}).default({
|
|
56
|
-
enabled: false,
|
|
57
|
-
host: "redis",
|
|
58
|
-
port: 6379,
|
|
59
|
-
ttlSeconds: 60
|
|
60
|
-
});
|
|
61
|
-
const serverSchema = z.object({
|
|
62
|
-
listen: z.number(),
|
|
63
|
-
httpsPort: z.number().optional(),
|
|
64
|
-
workers: z.number().optional(),
|
|
65
|
-
connectTimeoutMs: z.number().default(5000),
|
|
66
|
-
readTimeoutMs: z.number().default(15000),
|
|
67
|
-
compression: z.boolean().default(false),
|
|
68
|
-
accessLog: z.string().optional(),
|
|
69
|
-
upstreams: z.array(upstreamSchema),
|
|
70
|
-
headers: z.array(headerSchema).optional(),
|
|
71
|
-
paths: z.array(pathRuleSchema),
|
|
72
|
-
loadBalancing: loadBalancerSchema,
|
|
73
|
-
cache: cacheSchema,
|
|
74
|
-
});
|
|
75
|
-
export const rootConfigSchema = z.object({
|
|
76
|
-
server: serverSchema,
|
|
77
|
-
});
|
|
78
|
-
//# sourceMappingURL=config-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export declare function parseYAMLConfig(filepath: string): Promise<any>;
|
|
2
|
-
export declare function validateConfig(config: any): Promise<{
|
|
3
|
-
server: {
|
|
4
|
-
listen: number;
|
|
5
|
-
connectTimeoutMs: number;
|
|
6
|
-
readTimeoutMs: number;
|
|
7
|
-
compression: boolean;
|
|
8
|
-
upstreams: {
|
|
9
|
-
id: string;
|
|
10
|
-
url: string;
|
|
11
|
-
weight: number;
|
|
12
|
-
healthPath: string;
|
|
13
|
-
}[];
|
|
14
|
-
paths: {
|
|
15
|
-
path: string;
|
|
16
|
-
upstream: string[];
|
|
17
|
-
sticky: boolean;
|
|
18
|
-
rateLimit?: {
|
|
19
|
-
windowMs: number;
|
|
20
|
-
maxRequests: number;
|
|
21
|
-
} | undefined;
|
|
22
|
-
}[];
|
|
23
|
-
loadBalancing: {
|
|
24
|
-
strategy: "round-robin" | "least-connections" | "ip-hash" | "random";
|
|
25
|
-
failureThreshold: number;
|
|
26
|
-
recoveryTimeMs: number;
|
|
27
|
-
retry: {
|
|
28
|
-
maxAttempts: number;
|
|
29
|
-
statusCodes: number[];
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
cache: {
|
|
33
|
-
enabled: boolean;
|
|
34
|
-
host: string;
|
|
35
|
-
port: number;
|
|
36
|
-
ttlSeconds: number;
|
|
37
|
-
};
|
|
38
|
-
httpsPort?: number | undefined;
|
|
39
|
-
workers?: number | undefined;
|
|
40
|
-
accessLog?: string | undefined;
|
|
41
|
-
headers?: {
|
|
42
|
-
key: string;
|
|
43
|
-
value: string;
|
|
44
|
-
}[] | undefined;
|
|
45
|
-
};
|
|
46
|
-
}>;
|
|
47
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,wBAAsB,eAAe,CAAC,QAAQ,EAAG,MAAM,gBAkEtD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAE/C"}
|
package/dist/config.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'fs';
|
|
2
|
-
import { parse } from 'yaml';
|
|
3
|
-
import { rootConfigSchema } from "./config-schema.js";
|
|
4
|
-
import path from 'path';
|
|
5
|
-
export async function parseYAMLConfig(filepath) {
|
|
6
|
-
const configFileContent = await fs.readFile(filepath, 'utf-8');
|
|
7
|
-
const configParsed = parse(configFileContent) || {};
|
|
8
|
-
if (!configParsed.server) {
|
|
9
|
-
configParsed.server = {};
|
|
10
|
-
}
|
|
11
|
-
const configDir = path.join(path.dirname(filepath), "config.d");
|
|
12
|
-
let dirExists = false;
|
|
13
|
-
try {
|
|
14
|
-
const stat = await fs.stat(configDir);
|
|
15
|
-
dirExists = stat.isDirectory();
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
dirExists = false;
|
|
19
|
-
}
|
|
20
|
-
if (dirExists) {
|
|
21
|
-
try {
|
|
22
|
-
const files = await fs.readdir(configDir);
|
|
23
|
-
const yamlFiles = files.filter(f => f.endsWith(".yaml") || f.endsWith(".yml"));
|
|
24
|
-
// Read and parse all files concurrently
|
|
25
|
-
const parsePromises = yamlFiles.map(async (file) => {
|
|
26
|
-
const extraFilePath = path.join(configDir, file);
|
|
27
|
-
try {
|
|
28
|
-
const extraContent = await fs.readFile(extraFilePath, "utf-8");
|
|
29
|
-
return parse(extraContent);
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
console.error(`[Config] Skipped loading broken file ${file}: ${err.message}`);
|
|
33
|
-
return null; // Return null so we can filter it out safely
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
const parsedFilesResults = await Promise.all(parsePromises);
|
|
37
|
-
// Merge results sequentially in memory (very fast)
|
|
38
|
-
for (const extraParsed of parsedFilesResults) {
|
|
39
|
-
if (extraParsed && extraParsed.server) {
|
|
40
|
-
// Check and merge upstreams safely
|
|
41
|
-
if (extraParsed.server.upstreams && Array.isArray(extraParsed.server.upstreams)) {
|
|
42
|
-
configParsed.server.upstreams = [
|
|
43
|
-
...(configParsed.server.upstreams || []),
|
|
44
|
-
...extraParsed.server.upstreams
|
|
45
|
-
];
|
|
46
|
-
}
|
|
47
|
-
// Check and merge paths safely
|
|
48
|
-
if (extraParsed.server.paths && Array.isArray(extraParsed.server.paths)) {
|
|
49
|
-
configParsed.server.paths = [
|
|
50
|
-
...(configParsed.server.paths || []),
|
|
51
|
-
...extraParsed.server.paths
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
|
-
// Check and merge headers safely
|
|
55
|
-
if (extraParsed.server.headers && Array.isArray(extraParsed.server.headers)) {
|
|
56
|
-
configParsed.server.headers = [
|
|
57
|
-
...(configParsed.server.headers || []),
|
|
58
|
-
...extraParsed.server.headers
|
|
59
|
-
];
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
catch (dirErr) {
|
|
65
|
-
console.error(`[Config] Error reading config.d directory: ${dirErr.message}`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return configParsed;
|
|
69
|
-
}
|
|
70
|
-
export async function validateConfig(config) {
|
|
71
|
-
return await rootConfigSchema.parseAsync(config);
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/health.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ConfigSchemaType } from "./config-schema.js";
|
|
2
|
-
import { LoadBalancer } from "./loadBalancer.js";
|
|
3
|
-
export declare function initialHealthCheck(upstreams: ConfigSchemaType["server"]["upstreams"], HEALTHY_UPSTREAMS: Set<string>): Promise<void>;
|
|
4
|
-
export declare function startHealthChecks(upstreams: ConfigSchemaType["server"]["upstreams"], HEALTHY_UPSTREAMS: Set<string>, lb: LoadBalancer): Promise<void>;
|
|
5
|
-
//# sourceMappingURL=health.d.ts.map
|
package/dist/health.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAClD,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,iBAmC/B;AAGD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAClD,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,EAAE,EAAE,YAAY,iBAmCjB"}
|
package/dist/health.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import http from "http";
|
|
2
|
-
import { LoadBalancer } from "./loadBalancer.js";
|
|
3
|
-
// Initial health check
|
|
4
|
-
export async function initialHealthCheck(upstreams, HEALTHY_UPSTREAMS) {
|
|
5
|
-
console.log(`Initial health check`);
|
|
6
|
-
for (const upstream of upstreams) {
|
|
7
|
-
await new Promise((resolve) => {
|
|
8
|
-
const upstreamUrl = new URL(upstream.url);
|
|
9
|
-
const req = http.request({
|
|
10
|
-
host: upstreamUrl.hostname,
|
|
11
|
-
port: upstreamUrl.port,
|
|
12
|
-
path: upstream.healthPath ?? "/health",
|
|
13
|
-
method: "GET",
|
|
14
|
-
}, (initialRes) => {
|
|
15
|
-
if (initialRes.statusCode === 200) {
|
|
16
|
-
console.log(`${upstream.id} is HEALTHY`);
|
|
17
|
-
HEALTHY_UPSTREAMS.add(upstream.id);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
console.log(`${upstream.id} is NOT HEALTHY`);
|
|
21
|
-
HEALTHY_UPSTREAMS.delete(upstream.id);
|
|
22
|
-
}
|
|
23
|
-
resolve();
|
|
24
|
-
});
|
|
25
|
-
req.on("error", () => {
|
|
26
|
-
console.log(`Some Error Occured`);
|
|
27
|
-
console.log(`${upstream.id} is NOT HEALTHY`);
|
|
28
|
-
HEALTHY_UPSTREAMS.delete(upstream.id);
|
|
29
|
-
resolve();
|
|
30
|
-
});
|
|
31
|
-
req.end();
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
console.log(`Initial Health Check Done!`);
|
|
35
|
-
console.log(`Healthy Upstreams: ${[...HEALTHY_UPSTREAMS].join(", ")}`);
|
|
36
|
-
}
|
|
37
|
-
// before reverse Proxy health check
|
|
38
|
-
export async function startHealthChecks(upstreams, HEALTHY_UPSTREAMS, lb) {
|
|
39
|
-
console.log(`Check for health check before server response`);
|
|
40
|
-
setInterval(() => {
|
|
41
|
-
console.log(`\n[HealthCheck] Checking all upstreams...`);
|
|
42
|
-
for (const upstream of upstreams) {
|
|
43
|
-
const upstreamUrl = new URL(upstream.url);
|
|
44
|
-
const req = http.request({
|
|
45
|
-
host: upstreamUrl.hostname,
|
|
46
|
-
port: upstreamUrl.port,
|
|
47
|
-
path: upstream.healthPath ?? "/health",
|
|
48
|
-
method: "GET",
|
|
49
|
-
}, (HealthRes) => {
|
|
50
|
-
if (HealthRes.statusCode === 200) {
|
|
51
|
-
if (!HEALTHY_UPSTREAMS.has(upstream.id)) {
|
|
52
|
-
HEALTHY_UPSTREAMS.add(upstream.id);
|
|
53
|
-
console.log(`${upstream.id} is back ONLINE!`);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
console.log(`${upstream.id} is HEALTHY`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
HEALTHY_UPSTREAMS.delete(upstream.id);
|
|
61
|
-
console.log(`${upstream.id} is DOWN!`);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
req.on("error", () => {
|
|
65
|
-
HEALTHY_UPSTREAMS.delete(upstream.id);
|
|
66
|
-
console.log(`${upstream.id} is DOWN! (con nection refused)`);
|
|
67
|
-
});
|
|
68
|
-
req.end();
|
|
69
|
-
}
|
|
70
|
-
}, 10000);
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=health.js.map
|
package/dist/health.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"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"}
|