@hazeljs/gateway 0.2.0-beta.41
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/LICENSE +192 -0
- package/README.md +255 -0
- package/dist/__tests__/canary-engine.test.d.ts +2 -0
- package/dist/__tests__/canary-engine.test.d.ts.map +1 -0
- package/dist/__tests__/canary-engine.test.js +133 -0
- package/dist/__tests__/decorators.test.d.ts +2 -0
- package/dist/__tests__/decorators.test.d.ts.map +1 -0
- package/dist/__tests__/decorators.test.js +174 -0
- package/dist/__tests__/from-config.test.d.ts +2 -0
- package/dist/__tests__/from-config.test.d.ts.map +1 -0
- package/dist/__tests__/from-config.test.js +67 -0
- package/dist/__tests__/gateway-metrics.test.d.ts +2 -0
- package/dist/__tests__/gateway-metrics.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-metrics.test.js +82 -0
- package/dist/__tests__/gateway-module.test.d.ts +2 -0
- package/dist/__tests__/gateway-module.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-module.test.js +91 -0
- package/dist/__tests__/gateway.test.d.ts +2 -0
- package/dist/__tests__/gateway.test.d.ts.map +1 -0
- package/dist/__tests__/gateway.test.js +257 -0
- package/dist/__tests__/hazel-integration.test.d.ts +2 -0
- package/dist/__tests__/hazel-integration.test.d.ts.map +1 -0
- package/dist/__tests__/hazel-integration.test.js +92 -0
- package/dist/__tests__/route-matcher.test.d.ts +2 -0
- package/dist/__tests__/route-matcher.test.d.ts.map +1 -0
- package/dist/__tests__/route-matcher.test.js +67 -0
- package/dist/__tests__/service-proxy.test.d.ts +2 -0
- package/dist/__tests__/service-proxy.test.d.ts.map +1 -0
- package/dist/__tests__/service-proxy.test.js +110 -0
- package/dist/__tests__/traffic-mirror.test.d.ts +2 -0
- package/dist/__tests__/traffic-mirror.test.d.ts.map +1 -0
- package/dist/__tests__/traffic-mirror.test.js +70 -0
- package/dist/__tests__/version-router.test.d.ts +2 -0
- package/dist/__tests__/version-router.test.d.ts.map +1 -0
- package/dist/__tests__/version-router.test.js +136 -0
- package/dist/canary/canary-engine.d.ts +107 -0
- package/dist/canary/canary-engine.d.ts.map +1 -0
- package/dist/canary/canary-engine.js +334 -0
- package/dist/decorators/index.d.ts +74 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +170 -0
- package/dist/gateway.d.ts +67 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +310 -0
- package/dist/gateway.module.d.ts +67 -0
- package/dist/gateway.module.d.ts.map +1 -0
- package/dist/gateway.module.js +82 -0
- package/dist/hazel-integration.d.ts +24 -0
- package/dist/hazel-integration.d.ts.map +1 -0
- package/dist/hazel-integration.js +70 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/metrics/gateway-metrics.d.ts +64 -0
- package/dist/metrics/gateway-metrics.d.ts.map +1 -0
- package/dist/metrics/gateway-metrics.js +159 -0
- package/dist/middleware/traffic-mirror.d.ts +19 -0
- package/dist/middleware/traffic-mirror.d.ts.map +1 -0
- package/dist/middleware/traffic-mirror.js +60 -0
- package/dist/proxy/service-proxy.d.ts +68 -0
- package/dist/proxy/service-proxy.d.ts.map +1 -0
- package/dist/proxy/service-proxy.js +211 -0
- package/dist/routing/route-matcher.d.ts +31 -0
- package/dist/routing/route-matcher.d.ts.map +1 -0
- package/dist/routing/route-matcher.js +112 -0
- package/dist/routing/version-router.d.ts +36 -0
- package/dist/routing/version-router.d.ts.map +1 -0
- package/dist/routing/version-router.js +136 -0
- package/dist/types/index.d.ts +217 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +17 -0
- package/package.json +74 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hazeljs/gateway - Type Definitions
|
|
3
|
+
*/
|
|
4
|
+
import { CircuitBreakerConfig, RetryConfig, RateLimiterConfig } from '@hazeljs/resilience';
|
|
5
|
+
import { DiscoveryClientConfig, ServiceFilter } from '@hazeljs/discovery';
|
|
6
|
+
export interface GatewayConfig {
|
|
7
|
+
/** Discovery client configuration */
|
|
8
|
+
discovery?: DiscoveryClientConfig;
|
|
9
|
+
/** Default resilience settings applied to all routes */
|
|
10
|
+
resilience?: GatewayResilienceDefaults;
|
|
11
|
+
/** Metrics collection configuration */
|
|
12
|
+
metrics?: GatewayMetricsConfig;
|
|
13
|
+
/** Global middleware */
|
|
14
|
+
middleware?: GatewayMiddlewareConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface GatewayResilienceDefaults {
|
|
17
|
+
/** Default circuit breaker config for all routes */
|
|
18
|
+
defaultCircuitBreaker?: Partial<CircuitBreakerConfig>;
|
|
19
|
+
/** Default retry config for all routes */
|
|
20
|
+
defaultRetry?: Partial<RetryConfig>;
|
|
21
|
+
/** Default timeout in ms for all routes */
|
|
22
|
+
defaultTimeout?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface GatewayMetricsConfig {
|
|
25
|
+
/** Whether to collect metrics */
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
/** How often to aggregate metrics (ms or string like '10s') */
|
|
28
|
+
collectionInterval?: number | string;
|
|
29
|
+
/** Metrics window size in ms */
|
|
30
|
+
windowSize?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface GatewayMiddlewareConfig {
|
|
33
|
+
/** Enable CORS */
|
|
34
|
+
cors?: boolean | CorsConfig;
|
|
35
|
+
/** Enable request logging */
|
|
36
|
+
logging?: boolean;
|
|
37
|
+
/** Enable request ID generation */
|
|
38
|
+
requestId?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface CorsConfig {
|
|
41
|
+
origin?: string | string[];
|
|
42
|
+
methods?: string[];
|
|
43
|
+
headers?: string[];
|
|
44
|
+
credentials?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface RouteConfig {
|
|
47
|
+
/** URL pattern to match (supports ** glob, :param, *) */
|
|
48
|
+
path: string;
|
|
49
|
+
/** HTTP methods to match (default: all) */
|
|
50
|
+
methods?: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface ServiceRouteConfig {
|
|
53
|
+
/** Name of the service in the discovery registry */
|
|
54
|
+
serviceName: string;
|
|
55
|
+
/** Load balancing strategy override */
|
|
56
|
+
loadBalancingStrategy?: string;
|
|
57
|
+
/** Filter for service instances */
|
|
58
|
+
filter?: ServiceFilter;
|
|
59
|
+
/** Path prefix to strip before forwarding */
|
|
60
|
+
stripPrefix?: string;
|
|
61
|
+
/** Path prefix to add when forwarding */
|
|
62
|
+
addPrefix?: string;
|
|
63
|
+
}
|
|
64
|
+
export type VersionResolutionStrategy = 'header' | 'uri' | 'query';
|
|
65
|
+
export interface VersionRouteConfig {
|
|
66
|
+
/** How to detect the requested version */
|
|
67
|
+
strategy?: VersionResolutionStrategy;
|
|
68
|
+
/** Header name for header-based routing (default: 'X-API-Version') */
|
|
69
|
+
header?: string;
|
|
70
|
+
/** Query parameter name for query-based routing */
|
|
71
|
+
queryParam?: string;
|
|
72
|
+
/** Route definitions per version */
|
|
73
|
+
routes: Record<string, VersionRouteEntry>;
|
|
74
|
+
/** Default version if none specified */
|
|
75
|
+
defaultVersion?: string;
|
|
76
|
+
}
|
|
77
|
+
export interface VersionRouteEntry {
|
|
78
|
+
/** Weight for weighted routing (0-100) */
|
|
79
|
+
weight: number;
|
|
80
|
+
/** Whether to route only when version is explicitly requested */
|
|
81
|
+
allowExplicit?: boolean;
|
|
82
|
+
/** Service filter override for this version */
|
|
83
|
+
filter?: ServiceFilter;
|
|
84
|
+
}
|
|
85
|
+
export interface CanaryConfig {
|
|
86
|
+
/** Stable version configuration */
|
|
87
|
+
stable: CanaryVersionConfig;
|
|
88
|
+
/** Canary version configuration */
|
|
89
|
+
canary: CanaryVersionConfig;
|
|
90
|
+
/** Promotion strategy configuration */
|
|
91
|
+
promotion: CanaryPromotionConfig;
|
|
92
|
+
}
|
|
93
|
+
export interface CanaryVersionConfig {
|
|
94
|
+
/** Version identifier (matches metadata.version on ServiceInstance) */
|
|
95
|
+
version: string;
|
|
96
|
+
/** Initial traffic weight (0-100, stable + canary should = 100) */
|
|
97
|
+
weight: number;
|
|
98
|
+
/** Optional service filter override */
|
|
99
|
+
filter?: ServiceFilter;
|
|
100
|
+
}
|
|
101
|
+
export interface CanaryPromotionConfig {
|
|
102
|
+
/** Strategy for evaluating promotion readiness */
|
|
103
|
+
strategy: 'error-rate' | 'latency' | 'custom';
|
|
104
|
+
/** Error rate threshold percentage (for 'error-rate' strategy) */
|
|
105
|
+
errorThreshold?: number;
|
|
106
|
+
/** Latency threshold in ms (for 'latency' strategy) */
|
|
107
|
+
latencyThreshold?: number;
|
|
108
|
+
/** Time window for evaluation (ms or string like '5m') */
|
|
109
|
+
evaluationWindow: number | string;
|
|
110
|
+
/** Whether to automatically promote through steps */
|
|
111
|
+
autoPromote: boolean;
|
|
112
|
+
/** Whether to automatically rollback on threshold breach */
|
|
113
|
+
autoRollback: boolean;
|
|
114
|
+
/** Weight progression steps (e.g. [10, 25, 50, 75, 100]) */
|
|
115
|
+
steps: number[];
|
|
116
|
+
/** Time between promotion steps (ms or string like '10m') */
|
|
117
|
+
stepInterval: number | string;
|
|
118
|
+
/** Custom evaluator function (for 'custom' strategy) */
|
|
119
|
+
customEvaluator?: (metrics: CanaryMetrics) => CanaryDecision;
|
|
120
|
+
/** Minimum number of requests before evaluation can happen */
|
|
121
|
+
minRequests?: number;
|
|
122
|
+
}
|
|
123
|
+
export interface CanaryMetrics {
|
|
124
|
+
stable: CanaryVersionMetrics;
|
|
125
|
+
canary: CanaryVersionMetrics;
|
|
126
|
+
}
|
|
127
|
+
export interface CanaryVersionMetrics {
|
|
128
|
+
totalRequests: number;
|
|
129
|
+
errorCount: number;
|
|
130
|
+
errorRate: number;
|
|
131
|
+
averageLatency: number;
|
|
132
|
+
p99Latency: number;
|
|
133
|
+
}
|
|
134
|
+
export type CanaryDecision = 'promote' | 'rollback' | 'hold';
|
|
135
|
+
export declare enum CanaryState {
|
|
136
|
+
/** Canary is actively receiving traffic at current weight */
|
|
137
|
+
ACTIVE = "ACTIVE",
|
|
138
|
+
/** Canary was promoted to 100% */
|
|
139
|
+
PROMOTED = "PROMOTED",
|
|
140
|
+
/** Canary was rolled back, all traffic to stable */
|
|
141
|
+
ROLLED_BACK = "ROLLED_BACK",
|
|
142
|
+
/** Canary is paused (manual intervention) */
|
|
143
|
+
PAUSED = "PAUSED"
|
|
144
|
+
}
|
|
145
|
+
export interface TrafficPolicyConfig {
|
|
146
|
+
/** Mirror traffic to another service for shadow testing */
|
|
147
|
+
mirror?: TrafficMirrorConfig;
|
|
148
|
+
/** Request/response transformation */
|
|
149
|
+
transform?: TrafficTransformConfig;
|
|
150
|
+
/** Timeout override in ms */
|
|
151
|
+
timeout?: number;
|
|
152
|
+
/** Retry override */
|
|
153
|
+
retry?: Partial<RetryConfig>;
|
|
154
|
+
/** Circuit breaker override */
|
|
155
|
+
circuitBreaker?: Partial<CircuitBreakerConfig>;
|
|
156
|
+
/** Rate limit override */
|
|
157
|
+
rateLimit?: Partial<RateLimiterConfig>;
|
|
158
|
+
}
|
|
159
|
+
export interface TrafficMirrorConfig {
|
|
160
|
+
/** Target service name for mirrored traffic */
|
|
161
|
+
service: string;
|
|
162
|
+
/** Percentage of traffic to mirror (0-100) */
|
|
163
|
+
percentage: number;
|
|
164
|
+
/** Whether to wait for mirror response */
|
|
165
|
+
waitForResponse?: boolean;
|
|
166
|
+
}
|
|
167
|
+
export interface TrafficTransformConfig {
|
|
168
|
+
/** Transform the outgoing request before forwarding */
|
|
169
|
+
request?: (req: ProxyRequest) => ProxyRequest;
|
|
170
|
+
/** Transform the response before returning to client */
|
|
171
|
+
response?: (res: ProxyResponse) => ProxyResponse;
|
|
172
|
+
}
|
|
173
|
+
export interface ProxyRequest {
|
|
174
|
+
method: string;
|
|
175
|
+
path: string;
|
|
176
|
+
headers: Record<string, string | string[] | undefined>;
|
|
177
|
+
body?: unknown;
|
|
178
|
+
query?: Record<string, string>;
|
|
179
|
+
}
|
|
180
|
+
export interface ProxyResponse {
|
|
181
|
+
status: number;
|
|
182
|
+
headers: Record<string, string | string[] | undefined>;
|
|
183
|
+
body?: unknown;
|
|
184
|
+
}
|
|
185
|
+
export interface GatewayRouteDefinition {
|
|
186
|
+
/** Route path pattern */
|
|
187
|
+
path: string;
|
|
188
|
+
/** Target service name */
|
|
189
|
+
serviceName: string;
|
|
190
|
+
/** Full service route configuration */
|
|
191
|
+
serviceConfig?: ServiceRouteConfig;
|
|
192
|
+
/** Version routing configuration */
|
|
193
|
+
versionRoute?: VersionRouteConfig;
|
|
194
|
+
/** Canary deployment configuration */
|
|
195
|
+
canary?: CanaryConfig;
|
|
196
|
+
/** Traffic policy */
|
|
197
|
+
trafficPolicy?: TrafficPolicyConfig;
|
|
198
|
+
/** Rate limiter config */
|
|
199
|
+
rateLimit?: Partial<RateLimiterConfig>;
|
|
200
|
+
/** Circuit breaker config */
|
|
201
|
+
circuitBreaker?: Partial<CircuitBreakerConfig>;
|
|
202
|
+
/** HTTP methods */
|
|
203
|
+
methods?: string[];
|
|
204
|
+
}
|
|
205
|
+
export interface GatewayFullConfig extends GatewayConfig {
|
|
206
|
+
/** Route definitions loaded from configuration */
|
|
207
|
+
routes: GatewayRouteDefinition[];
|
|
208
|
+
}
|
|
209
|
+
export interface GatewayEvent {
|
|
210
|
+
type: string;
|
|
211
|
+
timestamp: number;
|
|
212
|
+
route?: string;
|
|
213
|
+
service?: string;
|
|
214
|
+
data?: Record<string, unknown>;
|
|
215
|
+
}
|
|
216
|
+
export type GatewayEventType = 'canary:promote' | 'canary:rollback' | 'canary:complete' | 'canary:paused' | 'circuit:open' | 'circuit:close' | 'circuit:half-open' | 'rate-limit:exceeded' | 'route:error' | 'route:timeout';
|
|
217
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @hazeljs/gateway - Type Definitions
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CanaryState = void 0;
|
|
7
|
+
var CanaryState;
|
|
8
|
+
(function (CanaryState) {
|
|
9
|
+
/** Canary is actively receiving traffic at current weight */
|
|
10
|
+
CanaryState["ACTIVE"] = "ACTIVE";
|
|
11
|
+
/** Canary was promoted to 100% */
|
|
12
|
+
CanaryState["PROMOTED"] = "PROMOTED";
|
|
13
|
+
/** Canary was rolled back, all traffic to stable */
|
|
14
|
+
CanaryState["ROLLED_BACK"] = "ROLLED_BACK";
|
|
15
|
+
/** Canary is paused (manual intervention) */
|
|
16
|
+
CanaryState["PAUSED"] = "PAUSED";
|
|
17
|
+
})(CanaryState || (exports.CanaryState = CanaryState = {}));
|
package/package.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hazeljs/gateway",
|
|
3
|
+
"version": "0.2.0-beta.41",
|
|
4
|
+
"description": "Intelligent API Gateway for HazelJS - Version routing, canary deployments, circuit breaking, and traffic management",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"test": "jest --coverage --passWithNoTests",
|
|
13
|
+
"test:ci": "jest --coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=clover --no-coverage-threshold",
|
|
14
|
+
"test:watch": "jest --watch",
|
|
15
|
+
"lint": "eslint \"src/**/*.ts\"",
|
|
16
|
+
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
|
17
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
18
|
+
"clean": "rm -rf dist"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {
|
|
21
|
+
"@hazeljs/core": "^0.2.0-beta.41",
|
|
22
|
+
"@hazeljs/discovery": "^0.2.0-beta.41",
|
|
23
|
+
"@hazeljs/resilience": "^0.2.0-beta.41",
|
|
24
|
+
"axios": "^1.6.0",
|
|
25
|
+
"reflect-metadata": "^0.2.2"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/jest": "^29.5.14",
|
|
29
|
+
"@types/node": "^20.17.50",
|
|
30
|
+
"@typescript-eslint/eslint-plugin": "^8.18.2",
|
|
31
|
+
"@typescript-eslint/parser": "^8.18.2",
|
|
32
|
+
"eslint": "^8.56.0",
|
|
33
|
+
"eslint-config-prettier": "^9.1.0",
|
|
34
|
+
"eslint-plugin-prettier": "^5.1.3",
|
|
35
|
+
"jest": "^29.7.0",
|
|
36
|
+
"prettier": "^3.2.5",
|
|
37
|
+
"ts-jest": "^29.1.2",
|
|
38
|
+
"typescript": "^5.3.3"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@hazeljs/config": "*"
|
|
42
|
+
},
|
|
43
|
+
"peerDependenciesMeta": {
|
|
44
|
+
"@hazeljs/config": {
|
|
45
|
+
"optional": true
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "git+https://github.com/hazel-js/hazeljs.git",
|
|
54
|
+
"directory": "packages/gateway"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"hazeljs",
|
|
58
|
+
"api-gateway",
|
|
59
|
+
"gateway",
|
|
60
|
+
"routing",
|
|
61
|
+
"canary",
|
|
62
|
+
"circuit-breaker",
|
|
63
|
+
"traffic-management",
|
|
64
|
+
"version-routing",
|
|
65
|
+
"microservices"
|
|
66
|
+
],
|
|
67
|
+
"author": "Muhammad Arslan <marslan@hazeljs.com>",
|
|
68
|
+
"license": "MIT",
|
|
69
|
+
"bugs": {
|
|
70
|
+
"url": "https://github.com/hazeljs/hazel-js/issues"
|
|
71
|
+
},
|
|
72
|
+
"homepage": "https://hazeljs.com",
|
|
73
|
+
"gitHead": "b50699eaa4847a8cfe9c346d7e4464b4af7f3120"
|
|
74
|
+
}
|