@push.rocks/smartproxy 22.6.0 → 23.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.
Files changed (196) hide show
  1. package/changelog.md +18 -0
  2. package/dist_rust/{rustproxy → rustproxy_linux_amd64} +0 -0
  3. package/dist_rust/rustproxy_linux_arm64 +0 -0
  4. package/dist_ts/00_commitinfo_data.js +1 -1
  5. package/dist_ts/index.d.ts +0 -1
  6. package/dist_ts/index.js +1 -3
  7. package/dist_ts/plugins.d.ts +2 -1
  8. package/dist_ts/plugins.js +3 -2
  9. package/dist_ts/proxies/index.d.ts +0 -1
  10. package/dist_ts/proxies/index.js +1 -3
  11. package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
  12. package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.d.ts +9 -21
  13. package/dist_ts/proxies/smart-proxy/rust-proxy-bridge.js +83 -212
  14. package/dist_ts/proxies/smart-proxy/smart-proxy.js +2 -3
  15. package/npmextra.json +3 -0
  16. package/package.json +13 -11
  17. package/readme.md +35 -31
  18. package/ts/00_commitinfo_data.ts +1 -1
  19. package/ts/index.ts +0 -3
  20. package/ts/plugins.ts +2 -0
  21. package/ts/proxies/index.ts +0 -3
  22. package/ts/proxies/smart-proxy/models/route-types.ts +0 -2
  23. package/ts/proxies/smart-proxy/rust-proxy-bridge.ts +102 -233
  24. package/ts/proxies/smart-proxy/smart-proxy.ts +1 -2
  25. package/dist_ts/common/eventUtils.d.ts +0 -14
  26. package/dist_ts/common/eventUtils.js +0 -20
  27. package/dist_ts/common/types.d.ts +0 -82
  28. package/dist_ts/common/types.js +0 -15
  29. package/dist_ts/core/utils/event-system.d.ts +0 -200
  30. package/dist_ts/core/utils/event-system.js +0 -224
  31. package/dist_ts/core/utils/event-utils.d.ts +0 -15
  32. package/dist_ts/core/utils/event-utils.js +0 -11
  33. package/dist_ts/core/utils/route-manager.d.ts +0 -88
  34. package/dist_ts/core/utils/route-manager.js +0 -342
  35. package/dist_ts/core/utils/route-utils.d.ts +0 -28
  36. package/dist_ts/core/utils/route-utils.js +0 -67
  37. package/dist_ts/detection/detectors/http-detector-v2.d.ts +0 -33
  38. package/dist_ts/detection/detectors/http-detector-v2.js +0 -87
  39. package/dist_ts/detection/detectors/tls-detector-v2.d.ts +0 -33
  40. package/dist_ts/detection/detectors/tls-detector-v2.js +0 -80
  41. package/dist_ts/detection/protocol-detector-v2.d.ts +0 -46
  42. package/dist_ts/detection/protocol-detector-v2.js +0 -116
  43. package/dist_ts/forwarding/config/forwarding-types.d.ts +0 -42
  44. package/dist_ts/forwarding/config/forwarding-types.js +0 -18
  45. package/dist_ts/forwarding/config/index.d.ts +0 -9
  46. package/dist_ts/forwarding/config/index.js +0 -10
  47. package/dist_ts/forwarding/factory/forwarding-factory.d.ts +0 -25
  48. package/dist_ts/forwarding/factory/forwarding-factory.js +0 -172
  49. package/dist_ts/forwarding/factory/index.d.ts +0 -4
  50. package/dist_ts/forwarding/factory/index.js +0 -5
  51. package/dist_ts/forwarding/handlers/base-handler.d.ts +0 -62
  52. package/dist_ts/forwarding/handlers/base-handler.js +0 -121
  53. package/dist_ts/forwarding/handlers/http-handler.d.ts +0 -30
  54. package/dist_ts/forwarding/handlers/http-handler.js +0 -143
  55. package/dist_ts/forwarding/handlers/https-passthrough-handler.d.ts +0 -29
  56. package/dist_ts/forwarding/handlers/https-passthrough-handler.js +0 -156
  57. package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.d.ts +0 -36
  58. package/dist_ts/forwarding/handlers/https-terminate-to-http-handler.js +0 -276
  59. package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.d.ts +0 -35
  60. package/dist_ts/forwarding/handlers/https-terminate-to-https-handler.js +0 -261
  61. package/dist_ts/forwarding/handlers/index.d.ts +0 -8
  62. package/dist_ts/forwarding/handlers/index.js +0 -9
  63. package/dist_ts/forwarding/index.d.ts +0 -13
  64. package/dist_ts/forwarding/index.js +0 -16
  65. package/dist_ts/http/index.d.ts +0 -5
  66. package/dist_ts/http/index.js +0 -8
  67. package/dist_ts/http/models/http-types.d.ts +0 -6
  68. package/dist_ts/http/models/http-types.js +0 -7
  69. package/dist_ts/http/router/index.d.ts +0 -8
  70. package/dist_ts/http/router/index.js +0 -7
  71. package/dist_ts/http/router/proxy-router.d.ts +0 -115
  72. package/dist_ts/http/router/proxy-router.js +0 -325
  73. package/dist_ts/http/router/route-router.d.ts +0 -108
  74. package/dist_ts/http/router/route-router.js +0 -393
  75. package/dist_ts/protocols/tls/constants.d.ts +0 -122
  76. package/dist_ts/protocols/tls/constants.js +0 -135
  77. package/dist_ts/protocols/tls/parser.d.ts +0 -53
  78. package/dist_ts/protocols/tls/parser.js +0 -294
  79. package/dist_ts/protocols/tls/types.d.ts +0 -65
  80. package/dist_ts/protocols/tls/types.js +0 -5
  81. package/dist_ts/proxies/http-proxy/certificate-manager.d.ts +0 -95
  82. package/dist_ts/proxies/http-proxy/certificate-manager.js +0 -214
  83. package/dist_ts/proxies/http-proxy/connection-pool.d.ts +0 -47
  84. package/dist_ts/proxies/http-proxy/connection-pool.js +0 -195
  85. package/dist_ts/proxies/http-proxy/context-creator.d.ts +0 -34
  86. package/dist_ts/proxies/http-proxy/context-creator.js +0 -108
  87. package/dist_ts/proxies/http-proxy/default-certificates.d.ts +0 -54
  88. package/dist_ts/proxies/http-proxy/default-certificates.js +0 -127
  89. package/dist_ts/proxies/http-proxy/function-cache.d.ts +0 -95
  90. package/dist_ts/proxies/http-proxy/function-cache.js +0 -215
  91. package/dist_ts/proxies/http-proxy/handlers/index.d.ts +0 -4
  92. package/dist_ts/proxies/http-proxy/handlers/index.js +0 -6
  93. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +0 -18
  94. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +0 -78
  95. package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +0 -19
  96. package/dist_ts/proxies/http-proxy/handlers/static-handler.js +0 -211
  97. package/dist_ts/proxies/http-proxy/http-proxy.d.ts +0 -117
  98. package/dist_ts/proxies/http-proxy/http-proxy.js +0 -521
  99. package/dist_ts/proxies/http-proxy/http-request-handler.d.ts +0 -40
  100. package/dist_ts/proxies/http-proxy/http-request-handler.js +0 -257
  101. package/dist_ts/proxies/http-proxy/http2-request-handler.d.ts +0 -24
  102. package/dist_ts/proxies/http-proxy/http2-request-handler.js +0 -201
  103. package/dist_ts/proxies/http-proxy/index.d.ts +0 -14
  104. package/dist_ts/proxies/http-proxy/index.js +0 -16
  105. package/dist_ts/proxies/http-proxy/models/http-types.d.ts +0 -117
  106. package/dist_ts/proxies/http-proxy/models/http-types.js +0 -92
  107. package/dist_ts/proxies/http-proxy/models/index.d.ts +0 -5
  108. package/dist_ts/proxies/http-proxy/models/index.js +0 -6
  109. package/dist_ts/proxies/http-proxy/models/types.d.ts +0 -75
  110. package/dist_ts/proxies/http-proxy/models/types.js +0 -35
  111. package/dist_ts/proxies/http-proxy/request-handler.d.ts +0 -97
  112. package/dist_ts/proxies/http-proxy/request-handler.js +0 -737
  113. package/dist_ts/proxies/http-proxy/security-manager.d.ts +0 -98
  114. package/dist_ts/proxies/http-proxy/security-manager.js +0 -341
  115. package/dist_ts/proxies/http-proxy/websocket-handler.d.ts +0 -50
  116. package/dist_ts/proxies/http-proxy/websocket-handler.js +0 -505
  117. package/dist_ts/proxies/nftables-proxy/index.d.ts +0 -6
  118. package/dist_ts/proxies/nftables-proxy/index.js +0 -7
  119. package/dist_ts/proxies/nftables-proxy/models/errors.d.ts +0 -15
  120. package/dist_ts/proxies/nftables-proxy/models/errors.js +0 -28
  121. package/dist_ts/proxies/nftables-proxy/models/index.d.ts +0 -5
  122. package/dist_ts/proxies/nftables-proxy/models/index.js +0 -6
  123. package/dist_ts/proxies/nftables-proxy/models/interfaces.d.ts +0 -75
  124. package/dist_ts/proxies/nftables-proxy/models/interfaces.js +0 -5
  125. package/dist_ts/proxies/nftables-proxy/nftables-proxy.d.ts +0 -124
  126. package/dist_ts/proxies/nftables-proxy/nftables-proxy.js +0 -1374
  127. package/dist_ts/proxies/nftables-proxy/utils/index.d.ts +0 -9
  128. package/dist_ts/proxies/nftables-proxy/utils/index.js +0 -12
  129. package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.d.ts +0 -66
  130. package/dist_ts/proxies/nftables-proxy/utils/nft-command-executor.js +0 -131
  131. package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.d.ts +0 -39
  132. package/dist_ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.js +0 -112
  133. package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.d.ts +0 -59
  134. package/dist_ts/proxies/nftables-proxy/utils/nft-rule-validator.js +0 -130
  135. package/dist_ts/proxies/smart-proxy/acme-state-manager.d.ts +0 -42
  136. package/dist_ts/proxies/smart-proxy/acme-state-manager.js +0 -101
  137. package/dist_ts/proxies/smart-proxy/cert-store.d.ts +0 -10
  138. package/dist_ts/proxies/smart-proxy/cert-store.js +0 -72
  139. package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +0 -164
  140. package/dist_ts/proxies/smart-proxy/certificate-manager.js +0 -745
  141. package/dist_ts/proxies/smart-proxy/connection-manager.d.ts +0 -128
  142. package/dist_ts/proxies/smart-proxy/connection-manager.js +0 -689
  143. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +0 -43
  144. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +0 -180
  145. package/dist_ts/proxies/smart-proxy/metrics-collector.d.ts +0 -98
  146. package/dist_ts/proxies/smart-proxy/metrics-collector.js +0 -355
  147. package/dist_ts/proxies/smart-proxy/nftables-manager.d.ts +0 -82
  148. package/dist_ts/proxies/smart-proxy/nftables-manager.js +0 -237
  149. package/dist_ts/proxies/smart-proxy/port-manager.d.ts +0 -117
  150. package/dist_ts/proxies/smart-proxy/port-manager.js +0 -318
  151. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +0 -60
  152. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +0 -1407
  153. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +0 -112
  154. package/dist_ts/proxies/smart-proxy/route-manager.js +0 -453
  155. package/dist_ts/proxies/smart-proxy/route-orchestrator.d.ts +0 -56
  156. package/dist_ts/proxies/smart-proxy/route-orchestrator.js +0 -204
  157. package/dist_ts/proxies/smart-proxy/rust-binary-locator.d.ts +0 -23
  158. package/dist_ts/proxies/smart-proxy/rust-binary-locator.js +0 -104
  159. package/dist_ts/proxies/smart-proxy/security-manager.d.ts +0 -74
  160. package/dist_ts/proxies/smart-proxy/security-manager.js +0 -227
  161. package/dist_ts/proxies/smart-proxy/throughput-tracker.d.ts +0 -36
  162. package/dist_ts/proxies/smart-proxy/throughput-tracker.js +0 -115
  163. package/dist_ts/proxies/smart-proxy/timeout-manager.d.ts +0 -48
  164. package/dist_ts/proxies/smart-proxy/timeout-manager.js +0 -158
  165. package/dist_ts/proxies/smart-proxy/tls-manager.d.ts +0 -50
  166. package/dist_ts/proxies/smart-proxy/tls-manager.js +0 -110
  167. package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +0 -161
  168. package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +0 -282
  169. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +0 -73
  170. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +0 -259
  171. package/dist_ts/routing/router/proxy-router.d.ts +0 -115
  172. package/dist_ts/routing/router/proxy-router.js +0 -325
  173. package/dist_ts/routing/router/route-router.d.ts +0 -108
  174. package/dist_ts/routing/router/route-router.js +0 -393
  175. package/dist_ts/tls/alerts/index.d.ts +0 -4
  176. package/dist_ts/tls/alerts/index.js +0 -5
  177. package/dist_ts/tls/alerts/tls-alert.d.ts +0 -150
  178. package/dist_ts/tls/alerts/tls-alert.js +0 -226
  179. package/dist_ts/tls/sni/client-hello-parser.d.ts +0 -100
  180. package/dist_ts/tls/sni/client-hello-parser.js +0 -464
  181. package/dist_ts/tls/sni/sni-extraction.d.ts +0 -58
  182. package/dist_ts/tls/sni/sni-extraction.js +0 -275
  183. package/dist_ts/tls/utils/index.d.ts +0 -4
  184. package/dist_ts/tls/utils/index.js +0 -5
  185. package/dist_ts/tls/utils/tls-utils.d.ts +0 -49
  186. package/dist_ts/tls/utils/tls-utils.js +0 -75
  187. package/ts/proxies/nftables-proxy/index.ts +0 -6
  188. package/ts/proxies/nftables-proxy/models/errors.ts +0 -30
  189. package/ts/proxies/nftables-proxy/models/index.ts +0 -5
  190. package/ts/proxies/nftables-proxy/models/interfaces.ts +0 -94
  191. package/ts/proxies/nftables-proxy/nftables-proxy.ts +0 -1754
  192. package/ts/proxies/nftables-proxy/utils/index.ts +0 -38
  193. package/ts/proxies/nftables-proxy/utils/nft-command-executor.ts +0 -162
  194. package/ts/proxies/nftables-proxy/utils/nft-port-spec-normalizer.ts +0 -125
  195. package/ts/proxies/nftables-proxy/utils/nft-rule-validator.ts +0 -156
  196. package/ts/proxies/smart-proxy/rust-binary-locator.ts +0 -112
@@ -1,161 +0,0 @@
1
- /**
2
- * Route Patterns
3
- *
4
- * This file provides pre-defined route patterns for common use cases.
5
- * These patterns can be used as templates for creating route configurations.
6
- */
7
- import type { IRouteConfig } from '../models/route-types.js';
8
- /**
9
- * Create a basic HTTP route configuration
10
- */
11
- export declare function createHttpRoute(domains: string | string[], target: {
12
- host: string | string[];
13
- port: number | 'preserve' | ((ctx: any) => number);
14
- }, options?: Partial<IRouteConfig>): IRouteConfig;
15
- /**
16
- * Create an HTTPS route with TLS termination
17
- */
18
- export declare function createHttpsTerminateRoute(domains: string | string[], target: {
19
- host: string | string[];
20
- port: number | 'preserve' | ((ctx: any) => number);
21
- }, options?: Partial<IRouteConfig> & {
22
- certificate?: 'auto' | {
23
- key: string;
24
- cert: string;
25
- };
26
- reencrypt?: boolean;
27
- }): IRouteConfig;
28
- /**
29
- * Create an HTTPS route with TLS passthrough
30
- */
31
- export declare function createHttpsPassthroughRoute(domains: string | string[], target: {
32
- host: string | string[];
33
- port: number | 'preserve' | ((ctx: any) => number);
34
- }, options?: Partial<IRouteConfig>): IRouteConfig;
35
- /**
36
- * Create an HTTP to HTTPS redirect route
37
- */
38
- export declare function createHttpToHttpsRedirect(domains: string | string[], options?: Partial<IRouteConfig> & {
39
- redirectCode?: 301 | 302 | 307 | 308;
40
- preservePath?: boolean;
41
- }): IRouteConfig;
42
- /**
43
- * Create a complete HTTPS server with redirect from HTTP
44
- */
45
- export declare function createCompleteHttpsServer(domains: string | string[], target: {
46
- host: string | string[];
47
- port: number | 'preserve' | ((ctx: any) => number);
48
- }, options?: Partial<IRouteConfig> & {
49
- certificate?: 'auto' | {
50
- key: string;
51
- cert: string;
52
- };
53
- tlsMode?: 'terminate' | 'passthrough' | 'terminate-and-reencrypt';
54
- redirectCode?: 301 | 302 | 307 | 308;
55
- }): IRouteConfig[];
56
- /**
57
- * Create an API Gateway route pattern
58
- * @param domains Domain(s) to match
59
- * @param apiBasePath Base path for API endpoints (e.g., '/api')
60
- * @param target Target host and port
61
- * @param options Additional route options
62
- * @returns API route configuration
63
- */
64
- export declare function createApiGatewayRoute(domains: string | string[], apiBasePath: string, target: {
65
- host: string | string[];
66
- port: number;
67
- }, options?: {
68
- useTls?: boolean;
69
- certificate?: 'auto' | {
70
- key: string;
71
- cert: string;
72
- };
73
- addCorsHeaders?: boolean;
74
- [key: string]: any;
75
- }): IRouteConfig;
76
- /**
77
- * Create a WebSocket route pattern
78
- * @param domains Domain(s) to match
79
- * @param target WebSocket server host and port
80
- * @param options Additional route options
81
- * @returns WebSocket route configuration
82
- */
83
- export declare function createWebSocketRoute(domains: string | string[], target: {
84
- host: string | string[];
85
- port: number;
86
- }, options?: {
87
- useTls?: boolean;
88
- certificate?: 'auto' | {
89
- key: string;
90
- cert: string;
91
- };
92
- path?: string;
93
- [key: string]: any;
94
- }): IRouteConfig;
95
- /**
96
- * Create a load balancer route pattern
97
- * @param domains Domain(s) to match
98
- * @param backends Array of backend servers
99
- * @param options Additional route options
100
- * @returns Load balancer route configuration
101
- */
102
- export declare function createLoadBalancerRoute(domains: string | string[], backends: Array<{
103
- host: string;
104
- port: number;
105
- }>, options?: {
106
- useTls?: boolean;
107
- certificate?: 'auto' | {
108
- key: string;
109
- cert: string;
110
- };
111
- algorithm?: 'round-robin' | 'least-connections' | 'ip-hash';
112
- healthCheck?: {
113
- path: string;
114
- interval: number;
115
- timeout: number;
116
- unhealthyThreshold: number;
117
- healthyThreshold: number;
118
- };
119
- [key: string]: any;
120
- }): IRouteConfig;
121
- /**
122
- * Create a rate limiting route pattern
123
- * @param baseRoute Base route to add rate limiting to
124
- * @param rateLimit Rate limiting configuration
125
- * @returns Route with rate limiting
126
- */
127
- export declare function addRateLimiting(baseRoute: IRouteConfig, rateLimit: {
128
- maxRequests: number;
129
- window: number;
130
- keyBy?: 'ip' | 'path' | 'header';
131
- headerName?: string;
132
- errorMessage?: string;
133
- }): IRouteConfig;
134
- /**
135
- * Create a basic authentication route pattern
136
- * @param baseRoute Base route to add authentication to
137
- * @param auth Authentication configuration
138
- * @returns Route with basic authentication
139
- */
140
- export declare function addBasicAuth(baseRoute: IRouteConfig, auth: {
141
- users: Array<{
142
- username: string;
143
- password: string;
144
- }>;
145
- realm?: string;
146
- excludePaths?: string[];
147
- }): IRouteConfig;
148
- /**
149
- * Create a JWT authentication route pattern
150
- * @param baseRoute Base route to add JWT authentication to
151
- * @param jwt JWT authentication configuration
152
- * @returns Route with JWT authentication
153
- */
154
- export declare function addJwtAuth(baseRoute: IRouteConfig, jwt: {
155
- secret: string;
156
- algorithm?: string;
157
- issuer?: string;
158
- audience?: string;
159
- expiresIn?: number;
160
- excludePaths?: string[];
161
- }): IRouteConfig;
@@ -1,282 +0,0 @@
1
- /**
2
- * Route Patterns
3
- *
4
- * This file provides pre-defined route patterns for common use cases.
5
- * These patterns can be used as templates for creating route configurations.
6
- */
7
- import { mergeRouteConfigs } from './route-utils.js';
8
- import { SocketHandlers } from './route-helpers.js';
9
- /**
10
- * Create a basic HTTP route configuration
11
- */
12
- export function createHttpRoute(domains, target, options = {}) {
13
- const route = {
14
- match: {
15
- domains,
16
- ports: 80
17
- },
18
- action: {
19
- type: 'forward',
20
- targets: [{
21
- host: target.host,
22
- port: target.port
23
- }]
24
- },
25
- name: options.name || `HTTP: ${Array.isArray(domains) ? domains.join(', ') : domains}`
26
- };
27
- return mergeRouteConfigs(route, options);
28
- }
29
- /**
30
- * Create an HTTPS route with TLS termination
31
- */
32
- export function createHttpsTerminateRoute(domains, target, options = {}) {
33
- const route = {
34
- match: {
35
- domains,
36
- ports: 443
37
- },
38
- action: {
39
- type: 'forward',
40
- targets: [{
41
- host: target.host,
42
- port: target.port
43
- }],
44
- tls: {
45
- mode: options.reencrypt ? 'terminate-and-reencrypt' : 'terminate',
46
- certificate: options.certificate || 'auto'
47
- }
48
- },
49
- name: options.name || `HTTPS (terminate): ${Array.isArray(domains) ? domains.join(', ') : domains}`
50
- };
51
- return mergeRouteConfigs(route, options);
52
- }
53
- /**
54
- * Create an HTTPS route with TLS passthrough
55
- */
56
- export function createHttpsPassthroughRoute(domains, target, options = {}) {
57
- const route = {
58
- match: {
59
- domains,
60
- ports: 443
61
- },
62
- action: {
63
- type: 'forward',
64
- targets: [{
65
- host: target.host,
66
- port: target.port
67
- }],
68
- tls: {
69
- mode: 'passthrough'
70
- }
71
- },
72
- name: options.name || `HTTPS (passthrough): ${Array.isArray(domains) ? domains.join(', ') : domains}`
73
- };
74
- return mergeRouteConfigs(route, options);
75
- }
76
- /**
77
- * Create an HTTP to HTTPS redirect route
78
- */
79
- export function createHttpToHttpsRedirect(domains, options = {}) {
80
- const route = {
81
- match: {
82
- domains,
83
- ports: 80
84
- },
85
- action: {
86
- type: 'socket-handler',
87
- socketHandler: SocketHandlers.httpRedirect(options.preservePath ? 'https://{domain}{path}' : 'https://{domain}', options.redirectCode || 301)
88
- },
89
- name: options.name || `HTTP to HTTPS redirect: ${Array.isArray(domains) ? domains.join(', ') : domains}`
90
- };
91
- return mergeRouteConfigs(route, options);
92
- }
93
- /**
94
- * Create a complete HTTPS server with redirect from HTTP
95
- */
96
- export function createCompleteHttpsServer(domains, target, options = {}) {
97
- // Create the TLS route based on the selected mode
98
- const tlsRoute = options.tlsMode === 'passthrough'
99
- ? createHttpsPassthroughRoute(domains, target, options)
100
- : createHttpsTerminateRoute(domains, target, {
101
- ...options,
102
- reencrypt: options.tlsMode === 'terminate-and-reencrypt'
103
- });
104
- // Create the HTTP to HTTPS redirect route
105
- const redirectRoute = createHttpToHttpsRedirect(domains, {
106
- redirectCode: options.redirectCode,
107
- preservePath: true
108
- });
109
- return [tlsRoute, redirectRoute];
110
- }
111
- /**
112
- * Create an API Gateway route pattern
113
- * @param domains Domain(s) to match
114
- * @param apiBasePath Base path for API endpoints (e.g., '/api')
115
- * @param target Target host and port
116
- * @param options Additional route options
117
- * @returns API route configuration
118
- */
119
- export function createApiGatewayRoute(domains, apiBasePath, target, options = {}) {
120
- // Normalize apiBasePath to ensure it starts with / and doesn't end with /
121
- const normalizedPath = apiBasePath.startsWith('/')
122
- ? apiBasePath
123
- : `/${apiBasePath}`;
124
- // Add wildcard to path to match all API endpoints
125
- const apiPath = normalizedPath.endsWith('/')
126
- ? `${normalizedPath}*`
127
- : `${normalizedPath}/*`;
128
- // Create base route
129
- const baseRoute = options.useTls
130
- ? createHttpsTerminateRoute(domains, target, {
131
- certificate: options.certificate || 'auto'
132
- })
133
- : createHttpRoute(domains, target);
134
- // Add API-specific configurations
135
- const apiRoute = {
136
- match: {
137
- ...baseRoute.match,
138
- path: apiPath
139
- },
140
- name: options.name || `API Gateway: ${apiPath} -> ${Array.isArray(target.host) ? target.host.join(', ') : target.host}:${target.port}`,
141
- priority: options.priority || 100 // Higher priority for specific path matching
142
- };
143
- // Add CORS headers if requested
144
- if (options.addCorsHeaders) {
145
- apiRoute.headers = {
146
- response: {
147
- 'Access-Control-Allow-Origin': '*',
148
- 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
149
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization',
150
- 'Access-Control-Max-Age': '86400'
151
- }
152
- };
153
- }
154
- return mergeRouteConfigs(baseRoute, apiRoute);
155
- }
156
- /**
157
- * Create a WebSocket route pattern
158
- * @param domains Domain(s) to match
159
- * @param target WebSocket server host and port
160
- * @param options Additional route options
161
- * @returns WebSocket route configuration
162
- */
163
- export function createWebSocketRoute(domains, target, options = {}) {
164
- // Create base route
165
- const baseRoute = options.useTls
166
- ? createHttpsTerminateRoute(domains, target, {
167
- certificate: options.certificate || 'auto'
168
- })
169
- : createHttpRoute(domains, target);
170
- // Add WebSocket-specific configurations
171
- const wsRoute = {
172
- match: {
173
- ...baseRoute.match,
174
- path: options.path || '/ws',
175
- headers: {
176
- 'Upgrade': 'websocket'
177
- }
178
- },
179
- action: {
180
- ...baseRoute.action,
181
- websocket: {
182
- enabled: true,
183
- pingInterval: options.pingInterval || 30000, // 30 seconds
184
- pingTimeout: options.pingTimeout || 5000 // 5 seconds
185
- }
186
- },
187
- name: options.name || `WebSocket: ${Array.isArray(domains) ? domains.join(', ') : domains} -> ${Array.isArray(target.host) ? target.host.join(', ') : target.host}:${target.port}`,
188
- priority: options.priority || 100 // Higher priority for WebSocket routes
189
- };
190
- return mergeRouteConfigs(baseRoute, wsRoute);
191
- }
192
- /**
193
- * Create a load balancer route pattern
194
- * @param domains Domain(s) to match
195
- * @param backends Array of backend servers
196
- * @param options Additional route options
197
- * @returns Load balancer route configuration
198
- */
199
- export function createLoadBalancerRoute(domains, backends, options = {}) {
200
- // Extract hosts and ensure all backends use the same port
201
- const port = backends[0].port;
202
- const hosts = backends.map(backend => backend.host);
203
- // Create route with multiple hosts for load balancing
204
- const baseRoute = options.useTls
205
- ? createHttpsTerminateRoute(domains, { host: hosts, port }, {
206
- certificate: options.certificate || 'auto'
207
- })
208
- : createHttpRoute(domains, { host: hosts, port });
209
- // Add load balancing specific configurations
210
- const lbRoute = {
211
- action: {
212
- ...baseRoute.action,
213
- loadBalancing: {
214
- algorithm: options.algorithm || 'round-robin',
215
- healthCheck: options.healthCheck
216
- }
217
- },
218
- name: options.name || `Load Balancer: ${Array.isArray(domains) ? domains.join(', ') : domains}`,
219
- priority: options.priority || 50
220
- };
221
- return mergeRouteConfigs(baseRoute, lbRoute);
222
- }
223
- /**
224
- * Create a rate limiting route pattern
225
- * @param baseRoute Base route to add rate limiting to
226
- * @param rateLimit Rate limiting configuration
227
- * @returns Route with rate limiting
228
- */
229
- export function addRateLimiting(baseRoute, rateLimit) {
230
- return mergeRouteConfigs(baseRoute, {
231
- security: {
232
- rateLimit: {
233
- enabled: true,
234
- maxRequests: rateLimit.maxRequests,
235
- window: rateLimit.window,
236
- keyBy: rateLimit.keyBy || 'ip',
237
- headerName: rateLimit.headerName,
238
- errorMessage: rateLimit.errorMessage || 'Rate limit exceeded. Please try again later.'
239
- }
240
- }
241
- });
242
- }
243
- /**
244
- * Create a basic authentication route pattern
245
- * @param baseRoute Base route to add authentication to
246
- * @param auth Authentication configuration
247
- * @returns Route with basic authentication
248
- */
249
- export function addBasicAuth(baseRoute, auth) {
250
- return mergeRouteConfigs(baseRoute, {
251
- security: {
252
- basicAuth: {
253
- enabled: true,
254
- users: auth.users,
255
- realm: auth.realm || 'Restricted Area',
256
- excludePaths: auth.excludePaths || []
257
- }
258
- }
259
- });
260
- }
261
- /**
262
- * Create a JWT authentication route pattern
263
- * @param baseRoute Base route to add JWT authentication to
264
- * @param jwt JWT authentication configuration
265
- * @returns Route with JWT authentication
266
- */
267
- export function addJwtAuth(baseRoute, jwt) {
268
- return mergeRouteConfigs(baseRoute, {
269
- security: {
270
- jwtAuth: {
271
- enabled: true,
272
- secret: jwt.secret,
273
- algorithm: jwt.algorithm || 'HS256',
274
- issuer: jwt.issuer,
275
- audience: jwt.audience,
276
- expiresIn: jwt.expiresIn,
277
- excludePaths: jwt.excludePaths || []
278
- }
279
- }
280
- });
281
- }
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGF0dGVybnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL3NtYXJ0LXByb3h5L3V0aWxzL3JvdXRlLXBhdHRlcm5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBR0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsT0FBMEIsRUFDMUIsTUFBdUYsRUFDdkYsVUFBaUMsRUFBRTtJQUVuQyxNQUFNLEtBQUssR0FBaUI7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxFQUFFO1NBQ1Y7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsU0FBUztZQUNmLE9BQU8sRUFBRSxDQUFDO29CQUNSLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2lCQUNsQixDQUFDO1NBQ0g7UUFDRCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxTQUFTLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtLQUN2RixDQUFDO0lBRUYsT0FBTyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxPQUEwQixFQUMxQixNQUF1RixFQUN2RixVQUdJLEVBQUU7SUFFTixNQUFNLEtBQUssR0FBaUI7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsT0FBTztZQUNQLEtBQUssRUFBRSxHQUFHO1NBQ1g7UUFDRCxNQUFNLEVB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
@@ -1,73 +0,0 @@
1
- /**
2
- * Route Validators
3
- *
4
- * This file provides utility functions for validating route configurations.
5
- * These validators help ensure that route configurations are valid and correctly structured.
6
- */
7
- import type { IRouteConfig, IRouteMatch, IRouteAction } from '../models/route-types.js';
8
- /**
9
- * Validates a port range or port number
10
- * @param port Port number, port range, or port function
11
- * @returns True if valid, false otherwise
12
- */
13
- export declare function isValidPort(port: any): boolean;
14
- /**
15
- * Validates a domain string
16
- * @param domain Domain string to validate
17
- * @returns True if valid, false otherwise
18
- */
19
- export declare function isValidDomain(domain: string): boolean;
20
- /**
21
- * Validates a route match configuration
22
- * @param match Route match configuration to validate
23
- * @returns { valid: boolean, errors: string[] } Validation result
24
- */
25
- export declare function validateRouteMatch(match: IRouteMatch): {
26
- valid: boolean;
27
- errors: string[];
28
- };
29
- /**
30
- * Validates a route action configuration
31
- * @param action Route action configuration to validate
32
- * @returns { valid: boolean, errors: string[] } Validation result
33
- */
34
- export declare function validateRouteAction(action: IRouteAction): {
35
- valid: boolean;
36
- errors: string[];
37
- };
38
- /**
39
- * Validates a complete route configuration
40
- * @param route Route configuration to validate
41
- * @returns { valid: boolean, errors: string[] } Validation result
42
- */
43
- export declare function validateRouteConfig(route: IRouteConfig): {
44
- valid: boolean;
45
- errors: string[];
46
- };
47
- /**
48
- * Validate an array of route configurations
49
- * @param routes Array of route configurations to validate
50
- * @returns { valid: boolean, errors: { index: number, errors: string[] }[] } Validation result
51
- */
52
- export declare function validateRoutes(routes: IRouteConfig[]): {
53
- valid: boolean;
54
- errors: {
55
- index: number;
56
- errors: string[];
57
- }[];
58
- };
59
- /**
60
- * Check if a route configuration has the required properties for a specific action type
61
- * @param route Route configuration to check
62
- * @param actionType Expected action type
63
- * @returns True if the route has the necessary properties, false otherwise
64
- */
65
- export declare function hasRequiredPropertiesForAction(route: IRouteConfig, actionType: string): boolean;
66
- /**
67
- * Throws an error if the route config is invalid, returns the config if valid
68
- * Useful for immediate validation when creating routes
69
- * @param route Route configuration to validate
70
- * @returns The validated route configuration
71
- * @throws Error if the route configuration is invalid
72
- */
73
- export declare function assertValidRoute(route: IRouteConfig): IRouteConfig;