@push.rocks/smartproxy 15.0.2 → 16.0.3

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 (160) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/certificate/index.d.ts +10 -4
  3. package/dist_ts/certificate/index.js +5 -7
  4. package/dist_ts/certificate/models/certificate-types.d.ts +35 -15
  5. package/dist_ts/certificate/providers/cert-provisioner.d.ts +41 -15
  6. package/dist_ts/certificate/providers/cert-provisioner.js +201 -41
  7. package/dist_ts/core/models/index.d.ts +2 -0
  8. package/dist_ts/core/models/index.js +3 -1
  9. package/dist_ts/core/models/route-context.d.ts +62 -0
  10. package/dist_ts/core/models/route-context.js +43 -0
  11. package/dist_ts/core/models/socket-augmentation.d.ts +12 -0
  12. package/dist_ts/core/models/socket-augmentation.js +18 -0
  13. package/dist_ts/core/utils/event-system.d.ts +200 -0
  14. package/dist_ts/core/utils/event-system.js +224 -0
  15. package/dist_ts/core/utils/index.d.ts +7 -0
  16. package/dist_ts/core/utils/index.js +8 -1
  17. package/dist_ts/core/utils/route-manager.d.ts +118 -0
  18. package/dist_ts/core/utils/route-manager.js +383 -0
  19. package/dist_ts/core/utils/route-utils.d.ts +94 -0
  20. package/dist_ts/core/utils/route-utils.js +264 -0
  21. package/dist_ts/core/utils/security-utils.d.ts +111 -0
  22. package/dist_ts/core/utils/security-utils.js +212 -0
  23. package/dist_ts/core/utils/shared-security-manager.d.ts +110 -0
  24. package/dist_ts/core/utils/shared-security-manager.js +252 -0
  25. package/dist_ts/core/utils/template-utils.d.ts +37 -0
  26. package/dist_ts/core/utils/template-utils.js +104 -0
  27. package/dist_ts/core/utils/websocket-utils.d.ts +23 -0
  28. package/dist_ts/core/utils/websocket-utils.js +86 -0
  29. package/dist_ts/forwarding/config/forwarding-types.d.ts +40 -76
  30. package/dist_ts/forwarding/config/forwarding-types.js +19 -18
  31. package/dist_ts/forwarding/config/index.d.ts +4 -2
  32. package/dist_ts/forwarding/config/index.js +5 -3
  33. package/dist_ts/forwarding/handlers/base-handler.js +3 -1
  34. package/dist_ts/forwarding/index.d.ts +5 -6
  35. package/dist_ts/forwarding/index.js +3 -3
  36. package/dist_ts/http/models/http-types.js +1 -1
  37. package/dist_ts/http/port80/acme-interfaces.d.ts +30 -0
  38. package/dist_ts/http/port80/acme-interfaces.js +46 -1
  39. package/dist_ts/http/port80/port80-handler.d.ts +17 -2
  40. package/dist_ts/http/port80/port80-handler.js +49 -11
  41. package/dist_ts/http/router/index.d.ts +5 -1
  42. package/dist_ts/http/router/index.js +4 -2
  43. package/dist_ts/http/router/route-router.d.ts +108 -0
  44. package/dist_ts/http/router/route-router.js +393 -0
  45. package/dist_ts/index.d.ts +8 -2
  46. package/dist_ts/index.js +10 -3
  47. package/dist_ts/proxies/index.d.ts +7 -2
  48. package/dist_ts/proxies/index.js +10 -4
  49. package/dist_ts/proxies/network-proxy/certificate-manager.d.ts +21 -0
  50. package/dist_ts/proxies/network-proxy/certificate-manager.js +92 -1
  51. package/dist_ts/proxies/network-proxy/context-creator.d.ts +34 -0
  52. package/dist_ts/proxies/network-proxy/context-creator.js +108 -0
  53. package/dist_ts/proxies/network-proxy/function-cache.d.ts +90 -0
  54. package/dist_ts/proxies/network-proxy/function-cache.js +198 -0
  55. package/dist_ts/proxies/network-proxy/http-request-handler.d.ts +40 -0
  56. package/dist_ts/proxies/network-proxy/http-request-handler.js +256 -0
  57. package/dist_ts/proxies/network-proxy/http2-request-handler.d.ts +24 -0
  58. package/dist_ts/proxies/network-proxy/http2-request-handler.js +201 -0
  59. package/dist_ts/proxies/network-proxy/models/types.d.ts +73 -1
  60. package/dist_ts/proxies/network-proxy/models/types.js +242 -1
  61. package/dist_ts/proxies/network-proxy/network-proxy.d.ts +23 -20
  62. package/dist_ts/proxies/network-proxy/network-proxy.js +147 -60
  63. package/dist_ts/proxies/network-proxy/request-handler.d.ts +38 -5
  64. package/dist_ts/proxies/network-proxy/request-handler.js +584 -198
  65. package/dist_ts/proxies/network-proxy/security-manager.d.ts +65 -0
  66. package/dist_ts/proxies/network-proxy/security-manager.js +255 -0
  67. package/dist_ts/proxies/network-proxy/websocket-handler.d.ts +13 -2
  68. package/dist_ts/proxies/network-proxy/websocket-handler.js +238 -20
  69. package/dist_ts/proxies/smart-proxy/index.d.ts +1 -1
  70. package/dist_ts/proxies/smart-proxy/index.js +3 -3
  71. package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +5 -66
  72. package/dist_ts/proxies/smart-proxy/models/interfaces.js +5 -4
  73. package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +173 -6
  74. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +20 -7
  75. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +49 -108
  76. package/dist_ts/proxies/smart-proxy/port-manager.d.ts +81 -0
  77. package/dist_ts/proxies/smart-proxy/port-manager.js +166 -0
  78. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +7 -5
  79. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +155 -160
  80. package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +9 -0
  81. package/dist_ts/proxies/smart-proxy/route-helpers/index.js +11 -0
  82. package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +5 -125
  83. package/dist_ts/proxies/smart-proxy/route-helpers.js +8 -195
  84. package/dist_ts/proxies/smart-proxy/route-manager.d.ts +14 -11
  85. package/dist_ts/proxies/smart-proxy/route-manager.js +81 -124
  86. package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +101 -12
  87. package/dist_ts/proxies/smart-proxy/smart-proxy.js +178 -306
  88. package/dist_ts/proxies/smart-proxy/timeout-manager.js +3 -3
  89. package/dist_ts/proxies/smart-proxy/utils/index.d.ts +12 -0
  90. package/dist_ts/proxies/smart-proxy/utils/index.js +19 -0
  91. package/dist_ts/proxies/smart-proxy/utils/route-helpers.d.ts +240 -0
  92. package/dist_ts/proxies/smart-proxy/utils/route-helpers.js +451 -0
  93. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +51 -0
  94. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +124 -0
  95. package/dist_ts/proxies/smart-proxy/utils/route-patterns.d.ts +131 -0
  96. package/dist_ts/proxies/smart-proxy/utils/route-patterns.js +217 -0
  97. package/dist_ts/proxies/smart-proxy/utils/route-utils.d.ts +79 -0
  98. package/dist_ts/proxies/smart-proxy/utils/route-utils.js +266 -0
  99. package/dist_ts/proxies/smart-proxy/utils/route-validators.d.ts +73 -0
  100. package/dist_ts/proxies/smart-proxy/utils/route-validators.js +264 -0
  101. package/package.json +1 -1
  102. package/readme.md +241 -125
  103. package/readme.plan.md +73 -286
  104. package/ts/00_commitinfo_data.ts +1 -1
  105. package/ts/certificate/index.ts +17 -9
  106. package/ts/certificate/models/certificate-types.ts +37 -16
  107. package/ts/certificate/providers/cert-provisioner.ts +247 -54
  108. package/ts/core/models/index.ts +2 -0
  109. package/ts/core/models/route-context.ts +113 -0
  110. package/ts/core/models/socket-augmentation.ts +33 -0
  111. package/ts/core/utils/event-system.ts +376 -0
  112. package/ts/core/utils/index.ts +7 -0
  113. package/ts/core/utils/route-manager.ts +489 -0
  114. package/ts/core/utils/route-utils.ts +312 -0
  115. package/ts/core/utils/security-utils.ts +309 -0
  116. package/ts/core/utils/shared-security-manager.ts +333 -0
  117. package/ts/core/utils/template-utils.ts +124 -0
  118. package/ts/core/utils/websocket-utils.ts +81 -0
  119. package/ts/forwarding/config/forwarding-types.ts +79 -107
  120. package/ts/forwarding/config/index.ts +4 -2
  121. package/ts/forwarding/handlers/base-handler.ts +4 -2
  122. package/ts/forwarding/index.ts +3 -2
  123. package/ts/http/models/http-types.ts +0 -1
  124. package/ts/http/port80/acme-interfaces.ts +84 -0
  125. package/ts/http/port80/port80-handler.ts +61 -15
  126. package/ts/http/router/index.ts +8 -1
  127. package/ts/http/router/route-router.ts +482 -0
  128. package/ts/index.ts +14 -2
  129. package/ts/proxies/index.ts +12 -3
  130. package/ts/proxies/network-proxy/certificate-manager.ts +114 -10
  131. package/ts/proxies/network-proxy/context-creator.ts +145 -0
  132. package/ts/proxies/network-proxy/function-cache.ts +259 -0
  133. package/ts/proxies/network-proxy/http-request-handler.ts +330 -0
  134. package/ts/proxies/network-proxy/http2-request-handler.ts +255 -0
  135. package/ts/proxies/network-proxy/models/types.ts +312 -1
  136. package/ts/proxies/network-proxy/network-proxy.ts +195 -86
  137. package/ts/proxies/network-proxy/request-handler.ts +698 -246
  138. package/ts/proxies/network-proxy/security-manager.ts +298 -0
  139. package/ts/proxies/network-proxy/websocket-handler.ts +276 -33
  140. package/ts/proxies/smart-proxy/index.ts +2 -12
  141. package/ts/proxies/smart-proxy/models/interfaces.ts +13 -67
  142. package/ts/proxies/smart-proxy/models/route-types.ts +223 -25
  143. package/ts/proxies/smart-proxy/network-proxy-bridge.ts +57 -123
  144. package/ts/proxies/smart-proxy/port-manager.ts +195 -0
  145. package/ts/proxies/smart-proxy/route-connection-handler.ts +191 -225
  146. package/ts/proxies/smart-proxy/route-manager.ts +101 -144
  147. package/ts/proxies/smart-proxy/smart-proxy.ts +206 -377
  148. package/ts/proxies/smart-proxy/timeout-manager.ts +2 -2
  149. package/ts/proxies/smart-proxy/utils/index.ts +40 -0
  150. package/ts/proxies/smart-proxy/utils/route-helpers.ts +621 -0
  151. package/ts/proxies/smart-proxy/utils/route-migration-utils.ts +165 -0
  152. package/ts/proxies/smart-proxy/utils/route-patterns.ts +309 -0
  153. package/ts/proxies/smart-proxy/utils/route-utils.ts +330 -0
  154. package/ts/proxies/smart-proxy/utils/route-validators.ts +288 -0
  155. package/ts/forwarding/config/domain-config.ts +0 -28
  156. package/ts/forwarding/config/domain-manager.ts +0 -283
  157. package/ts/proxies/smart-proxy/connection-handler.ts +0 -1240
  158. package/ts/proxies/smart-proxy/domain-config-manager.ts +0 -441
  159. package/ts/proxies/smart-proxy/port-range-manager.ts +0 -211
  160. package/ts/proxies/smart-proxy/route-helpers.ts +0 -344
@@ -1,344 +0,0 @@
1
- import type {
2
- IRouteConfig,
3
- IRouteMatch,
4
- IRouteAction,
5
- IRouteTarget,
6
- IRouteTls,
7
- IRouteRedirect,
8
- IRouteSecurity,
9
- IRouteAdvanced
10
- } from './models/route-types.js';
11
-
12
- /**
13
- * Basic helper function to create a route configuration
14
- */
15
- export function createRoute(
16
- match: IRouteMatch,
17
- action: IRouteAction,
18
- metadata?: {
19
- name?: string;
20
- description?: string;
21
- priority?: number;
22
- tags?: string[];
23
- }
24
- ): IRouteConfig {
25
- return {
26
- match,
27
- action,
28
- ...metadata
29
- };
30
- }
31
-
32
- /**
33
- * Create a basic HTTP route configuration
34
- */
35
- export function createHttpRoute(
36
- options: {
37
- ports?: number | number[]; // Default: 80
38
- domains?: string | string[];
39
- path?: string;
40
- target: IRouteTarget;
41
- headers?: Record<string, string>;
42
- security?: IRouteSecurity;
43
- name?: string;
44
- description?: string;
45
- priority?: number;
46
- tags?: string[];
47
- }
48
- ): IRouteConfig {
49
- return createRoute(
50
- {
51
- ports: options.ports || 80,
52
- ...(options.domains ? { domains: options.domains } : {}),
53
- ...(options.path ? { path: options.path } : {})
54
- },
55
- {
56
- type: 'forward',
57
- target: options.target,
58
- ...(options.headers || options.security ? {
59
- advanced: {
60
- ...(options.headers ? { headers: options.headers } : {})
61
- },
62
- ...(options.security ? { security: options.security } : {})
63
- } : {})
64
- },
65
- {
66
- name: options.name || 'HTTP Route',
67
- description: options.description,
68
- priority: options.priority,
69
- tags: options.tags
70
- }
71
- );
72
- }
73
-
74
- /**
75
- * Create an HTTPS route configuration with TLS termination
76
- */
77
- export function createHttpsRoute(
78
- options: {
79
- ports?: number | number[]; // Default: 443
80
- domains: string | string[];
81
- path?: string;
82
- target: IRouteTarget;
83
- tlsMode?: 'terminate' | 'terminate-and-reencrypt';
84
- certificate?: 'auto' | { key: string; cert: string };
85
- headers?: Record<string, string>;
86
- security?: IRouteSecurity;
87
- name?: string;
88
- description?: string;
89
- priority?: number;
90
- tags?: string[];
91
- }
92
- ): IRouteConfig {
93
- return createRoute(
94
- {
95
- ports: options.ports || 443,
96
- domains: options.domains,
97
- ...(options.path ? { path: options.path } : {})
98
- },
99
- {
100
- type: 'forward',
101
- target: options.target,
102
- tls: {
103
- mode: options.tlsMode || 'terminate',
104
- certificate: options.certificate || 'auto'
105
- },
106
- ...(options.headers || options.security ? {
107
- advanced: {
108
- ...(options.headers ? { headers: options.headers } : {})
109
- },
110
- ...(options.security ? { security: options.security } : {})
111
- } : {})
112
- },
113
- {
114
- name: options.name || 'HTTPS Route',
115
- description: options.description,
116
- priority: options.priority,
117
- tags: options.tags
118
- }
119
- );
120
- }
121
-
122
- /**
123
- * Create an HTTPS passthrough route configuration
124
- */
125
- export function createPassthroughRoute(
126
- options: {
127
- ports?: number | number[]; // Default: 443
128
- domains?: string | string[];
129
- target: IRouteTarget;
130
- security?: IRouteSecurity;
131
- name?: string;
132
- description?: string;
133
- priority?: number;
134
- tags?: string[];
135
- }
136
- ): IRouteConfig {
137
- return createRoute(
138
- {
139
- ports: options.ports || 443,
140
- ...(options.domains ? { domains: options.domains } : {})
141
- },
142
- {
143
- type: 'forward',
144
- target: options.target,
145
- tls: {
146
- mode: 'passthrough'
147
- },
148
- ...(options.security ? { security: options.security } : {})
149
- },
150
- {
151
- name: options.name || 'HTTPS Passthrough Route',
152
- description: options.description,
153
- priority: options.priority,
154
- tags: options.tags
155
- }
156
- );
157
- }
158
-
159
- /**
160
- * Create a redirect route configuration
161
- */
162
- export function createRedirectRoute(
163
- options: {
164
- ports?: number | number[]; // Default: 80
165
- domains?: string | string[];
166
- path?: string;
167
- redirectTo: string;
168
- statusCode?: 301 | 302 | 307 | 308;
169
- name?: string;
170
- description?: string;
171
- priority?: number;
172
- tags?: string[];
173
- }
174
- ): IRouteConfig {
175
- return createRoute(
176
- {
177
- ports: options.ports || 80,
178
- ...(options.domains ? { domains: options.domains } : {}),
179
- ...(options.path ? { path: options.path } : {})
180
- },
181
- {
182
- type: 'redirect',
183
- redirect: {
184
- to: options.redirectTo,
185
- status: options.statusCode || 301
186
- }
187
- },
188
- {
189
- name: options.name || 'Redirect Route',
190
- description: options.description,
191
- priority: options.priority,
192
- tags: options.tags
193
- }
194
- );
195
- }
196
-
197
- /**
198
- * Create an HTTP to HTTPS redirect route configuration
199
- */
200
- export function createHttpToHttpsRedirect(
201
- options: {
202
- domains: string | string[];
203
- statusCode?: 301 | 302 | 307 | 308;
204
- name?: string;
205
- priority?: number;
206
- }
207
- ): IRouteConfig {
208
- const domainArray = Array.isArray(options.domains) ? options.domains : [options.domains];
209
-
210
- return createRedirectRoute({
211
- ports: 80,
212
- domains: options.domains,
213
- redirectTo: 'https://{domain}{path}',
214
- statusCode: options.statusCode || 301,
215
- name: options.name || `HTTP to HTTPS Redirect for ${domainArray.join(', ')}`,
216
- priority: options.priority || 100 // High priority for redirects
217
- });
218
- }
219
-
220
- /**
221
- * Create a block route configuration
222
- */
223
- export function createBlockRoute(
224
- options: {
225
- ports: number | number[];
226
- domains?: string | string[];
227
- clientIp?: string[];
228
- name?: string;
229
- description?: string;
230
- priority?: number;
231
- tags?: string[];
232
- }
233
- ): IRouteConfig {
234
- return createRoute(
235
- {
236
- ports: options.ports,
237
- ...(options.domains ? { domains: options.domains } : {}),
238
- ...(options.clientIp ? { clientIp: options.clientIp } : {})
239
- },
240
- {
241
- type: 'block'
242
- },
243
- {
244
- name: options.name || 'Block Route',
245
- description: options.description,
246
- priority: options.priority || 1000, // Very high priority for blocks
247
- tags: options.tags
248
- }
249
- );
250
- }
251
-
252
- /**
253
- * Create a load balancer route configuration
254
- */
255
- export function createLoadBalancerRoute(
256
- options: {
257
- ports?: number | number[]; // Default: 443
258
- domains: string | string[];
259
- path?: string;
260
- targets: string[]; // Array of host names/IPs for load balancing
261
- targetPort: number;
262
- tlsMode?: 'passthrough' | 'terminate' | 'terminate-and-reencrypt';
263
- certificate?: 'auto' | { key: string; cert: string };
264
- headers?: Record<string, string>;
265
- security?: IRouteSecurity;
266
- name?: string;
267
- description?: string;
268
- tags?: string[];
269
- }
270
- ): IRouteConfig {
271
- const useTls = options.tlsMode !== undefined;
272
- const defaultPort = useTls ? 443 : 80;
273
-
274
- return createRoute(
275
- {
276
- ports: options.ports || defaultPort,
277
- domains: options.domains,
278
- ...(options.path ? { path: options.path } : {})
279
- },
280
- {
281
- type: 'forward',
282
- target: {
283
- host: options.targets,
284
- port: options.targetPort
285
- },
286
- ...(useTls ? {
287
- tls: {
288
- mode: options.tlsMode!,
289
- ...(options.tlsMode !== 'passthrough' && options.certificate ? {
290
- certificate: options.certificate
291
- } : {})
292
- }
293
- } : {}),
294
- ...(options.headers || options.security ? {
295
- advanced: {
296
- ...(options.headers ? { headers: options.headers } : {})
297
- },
298
- ...(options.security ? { security: options.security } : {})
299
- } : {})
300
- },
301
- {
302
- name: options.name || 'Load Balanced Route',
303
- description: options.description || `Load balancing across ${options.targets.length} backends`,
304
- tags: options.tags
305
- }
306
- );
307
- }
308
-
309
- /**
310
- * Create a complete HTTPS server configuration with HTTP redirect
311
- */
312
- export function createHttpsServer(
313
- options: {
314
- domains: string | string[];
315
- target: IRouteTarget;
316
- certificate?: 'auto' | { key: string; cert: string };
317
- security?: IRouteSecurity;
318
- addHttpRedirect?: boolean;
319
- name?: string;
320
- }
321
- ): IRouteConfig[] {
322
- const routes: IRouteConfig[] = [];
323
- const domainArray = Array.isArray(options.domains) ? options.domains : [options.domains];
324
-
325
- // Add HTTPS route
326
- routes.push(createHttpsRoute({
327
- domains: options.domains,
328
- target: options.target,
329
- certificate: options.certificate || 'auto',
330
- security: options.security,
331
- name: options.name || `HTTPS Server for ${domainArray.join(', ')}`
332
- }));
333
-
334
- // Add HTTP to HTTPS redirect if requested
335
- if (options.addHttpRedirect !== false) {
336
- routes.push(createHttpToHttpsRedirect({
337
- domains: options.domains,
338
- name: `HTTP to HTTPS Redirect for ${domainArray.join(', ')}`,
339
- priority: 100
340
- }));
341
- }
342
-
343
- return routes;
344
- }