@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,79 +1,11 @@
1
1
  import type * as plugins from '../../plugins.js';
2
2
  /**
3
+ * @deprecated The legacy forwarding types are being replaced by the route-based configuration system.
4
+ * See /ts/proxies/smart-proxy/models/route-types.ts for the new route-based configuration.
5
+ *
3
6
  * The primary forwarding types supported by SmartProxy
4
7
  */
5
8
  export type TForwardingType = 'http-only' | 'https-passthrough' | 'https-terminate-to-http' | 'https-terminate-to-https';
6
- /**
7
- * Target configuration for forwarding
8
- */
9
- export interface ITargetConfig {
10
- host: string | string[];
11
- port: number;
12
- }
13
- /**
14
- * HTTP-specific options for forwarding
15
- */
16
- export interface IHttpOptions {
17
- enabled?: boolean;
18
- redirectToHttps?: boolean;
19
- headers?: Record<string, string>;
20
- }
21
- /**
22
- * HTTPS-specific options for forwarding
23
- */
24
- export interface IHttpsOptions {
25
- customCert?: {
26
- key: string;
27
- cert: string;
28
- };
29
- forwardSni?: boolean;
30
- }
31
- /**
32
- * ACME certificate handling options
33
- */
34
- export interface IAcmeForwardingOptions {
35
- enabled?: boolean;
36
- maintenance?: boolean;
37
- production?: boolean;
38
- forwardChallenges?: {
39
- host: string;
40
- port: number;
41
- useTls?: boolean;
42
- };
43
- }
44
- /**
45
- * Security options for forwarding
46
- */
47
- export interface ISecurityOptions {
48
- allowedIps?: string[];
49
- blockedIps?: string[];
50
- maxConnections?: number;
51
- }
52
- /**
53
- * Advanced options for forwarding
54
- */
55
- export interface IAdvancedOptions {
56
- portRanges?: Array<{
57
- from: number;
58
- to: number;
59
- }>;
60
- networkProxyPort?: number;
61
- keepAlive?: boolean;
62
- timeout?: number;
63
- headers?: Record<string, string>;
64
- }
65
- /**
66
- * Unified forwarding configuration interface
67
- */
68
- export interface IForwardConfig {
69
- type: TForwardingType;
70
- target: ITargetConfig;
71
- http?: IHttpOptions;
72
- https?: IHttpsOptions;
73
- acme?: IAcmeForwardingOptions;
74
- security?: ISecurityOptions;
75
- advanced?: IAdvancedOptions;
76
- }
77
9
  /**
78
10
  * Event types emitted by forwarding handlers
79
11
  */
@@ -95,10 +27,42 @@ export interface IForwardingHandler extends plugins.EventEmitter {
95
27
  handleConnection(socket: plugins.net.Socket): void;
96
28
  handleHttpRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): void;
97
29
  }
30
+ import { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute } from '../../proxies/smart-proxy/utils/route-helpers.js';
31
+ export { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute };
32
+ export interface IForwardConfig {
33
+ type: TForwardingType;
34
+ target: {
35
+ host: string | string[];
36
+ port: number;
37
+ };
38
+ http?: any;
39
+ https?: any;
40
+ acme?: any;
41
+ security?: any;
42
+ advanced?: any;
43
+ [key: string]: any;
44
+ }
45
+ export interface IDeprecatedForwardConfig {
46
+ type: TForwardingType;
47
+ target: {
48
+ host: string | string[];
49
+ port: number;
50
+ };
51
+ [key: string]: any;
52
+ }
53
+ /**
54
+ * @deprecated Use createHttpRoute instead
55
+ */
56
+ export declare const httpOnly: (partialConfig: Partial<IDeprecatedForwardConfig> & Pick<IDeprecatedForwardConfig, "target">) => IDeprecatedForwardConfig;
57
+ /**
58
+ * @deprecated Use createHttpsTerminateRoute instead
59
+ */
60
+ export declare const tlsTerminateToHttp: (partialConfig: Partial<IDeprecatedForwardConfig> & Pick<IDeprecatedForwardConfig, "target">) => IDeprecatedForwardConfig;
61
+ /**
62
+ * @deprecated Use createHttpsTerminateRoute with reencrypt option instead
63
+ */
64
+ export declare const tlsTerminateToHttps: (partialConfig: Partial<IDeprecatedForwardConfig> & Pick<IDeprecatedForwardConfig, "target">) => IDeprecatedForwardConfig;
98
65
  /**
99
- * Helper function types for common forwarding patterns
66
+ * @deprecated Use createHttpsPassthroughRoute instead
100
67
  */
101
- export declare const httpOnly: (partialConfig: Partial<IForwardConfig> & Pick<IForwardConfig, "target">) => IForwardConfig;
102
- export declare const tlsTerminateToHttp: (partialConfig: Partial<IForwardConfig> & Pick<IForwardConfig, "target">) => IForwardConfig;
103
- export declare const tlsTerminateToHttps: (partialConfig: Partial<IForwardConfig> & Pick<IForwardConfig, "target">) => IForwardConfig;
104
- export declare const httpsPassthrough: (partialConfig: Partial<IForwardConfig> & Pick<IForwardConfig, "target">) => IForwardConfig;
68
+ export declare const httpsPassthrough: (partialConfig: Partial<IDeprecatedForwardConfig> & Pick<IDeprecatedForwardConfig, "target">) => IDeprecatedForwardConfig;
@@ -12,39 +12,40 @@ export var ForwardingHandlerEvents;
12
12
  ForwardingHandlerEvents["CERTIFICATE_NEEDED"] = "certificate-needed";
13
13
  ForwardingHandlerEvents["CERTIFICATE_LOADED"] = "certificate-loaded";
14
14
  })(ForwardingHandlerEvents || (ForwardingHandlerEvents = {}));
15
+ // Import and re-export the route-based helpers for seamless transition
16
+ import { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute } from '../../proxies/smart-proxy/utils/route-helpers.js';
17
+ export { createHttpRoute, createHttpsTerminateRoute, createHttpsPassthroughRoute, createHttpToHttpsRedirect, createCompleteHttpsServer, createLoadBalancerRoute };
18
+ import { domainConfigToRouteConfig } from '../../proxies/smart-proxy/utils/route-migration-utils.js';
15
19
  /**
16
- * Helper function types for common forwarding patterns
20
+ * @deprecated Use createHttpRoute instead
17
21
  */
18
22
  export const httpOnly = (partialConfig) => ({
19
23
  type: 'http-only',
20
24
  target: partialConfig.target,
21
- http: { enabled: true, ...(partialConfig.http || {}) },
22
- ...(partialConfig.security ? { security: partialConfig.security } : {}),
23
- ...(partialConfig.advanced ? { advanced: partialConfig.advanced } : {})
25
+ ...(partialConfig)
24
26
  });
27
+ /**
28
+ * @deprecated Use createHttpsTerminateRoute instead
29
+ */
25
30
  export const tlsTerminateToHttp = (partialConfig) => ({
26
31
  type: 'https-terminate-to-http',
27
32
  target: partialConfig.target,
28
- https: { ...(partialConfig.https || {}) },
29
- acme: { enabled: true, maintenance: true, ...(partialConfig.acme || {}) },
30
- http: { enabled: true, redirectToHttps: true, ...(partialConfig.http || {}) },
31
- ...(partialConfig.security ? { security: partialConfig.security } : {}),
32
- ...(partialConfig.advanced ? { advanced: partialConfig.advanced } : {})
33
+ ...(partialConfig)
33
34
  });
35
+ /**
36
+ * @deprecated Use createHttpsTerminateRoute with reencrypt option instead
37
+ */
34
38
  export const tlsTerminateToHttps = (partialConfig) => ({
35
39
  type: 'https-terminate-to-https',
36
40
  target: partialConfig.target,
37
- https: { ...(partialConfig.https || {}) },
38
- acme: { enabled: true, maintenance: true, ...(partialConfig.acme || {}) },
39
- http: { enabled: true, redirectToHttps: true, ...(partialConfig.http || {}) },
40
- ...(partialConfig.security ? { security: partialConfig.security } : {}),
41
- ...(partialConfig.advanced ? { advanced: partialConfig.advanced } : {})
41
+ ...(partialConfig)
42
42
  });
43
+ /**
44
+ * @deprecated Use createHttpsPassthroughRoute instead
45
+ */
43
46
  export const httpsPassthrough = (partialConfig) => ({
44
47
  type: 'https-passthrough',
45
48
  target: partialConfig.target,
46
- https: { forwardSni: true, ...(partialConfig.https || {}) },
47
- ...(partialConfig.security ? { security: partialConfig.security } : {}),
48
- ...(partialConfig.advanced ? { advanced: partialConfig.advanced } : {})
49
+ ...(partialConfig)
49
50
  });
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ZvcndhcmRpbmcvY29uZmlnL2ZvcndhcmRpbmctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkZBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksdUJBU1g7QUFURCxXQUFZLHVCQUF1QjtJQUNqQyxrREFBdUIsQ0FBQTtJQUN2Qix3REFBNkIsQ0FBQTtJQUM3QiwwQ0FBZSxDQUFBO0lBQ2YsNERBQWlDLENBQUE7SUFDakMsd0RBQTZCLENBQUE7SUFDN0IsMERBQStCLENBQUE7SUFDL0Isb0VBQXlDLENBQUE7SUFDekMsb0VBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQVRXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFTbEM7QUFXRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUN0QixhQUF1RSxFQUN2RCxFQUFFLENBQUMsQ0FBQztJQUNwQixJQUFJLEVBQUUsV0FBVztJQUNqQixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07SUFDNUIsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN0RCxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0NBQ3hFLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLGFBQXVFLEVBQ3ZELEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLElBQUks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
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yd2FyZGluZy10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2ZvcndhcmRpbmcvY29uZmlnL2ZvcndhcmRpbmctdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0E7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSx1QkFTWDtBQVRELFdBQVksdUJBQXVCO0lBQ2pDLGtEQUF1QixDQUFBO0lBQ3ZCLHdEQUE2QixDQUFBO0lBQzdCLDBDQUFlLENBQUE7SUFDZiw0REFBaUMsQ0FBQTtJQUNqQyx3REFBNkIsQ0FBQTtJQUM3QiwwREFBK0IsQ0FBQTtJQUMvQixvRUFBeUMsQ0FBQTtJQUN6QyxvRUFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBVFcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQVNsQztBQVdELHVFQUF1RTtBQUN2RSxPQUFPLEVBQ0wsZUFBZSxFQUNmLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDeEIsTUFBTSxrREFBa0QsQ0FBQztBQUUxRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6Qix1QkFBdUIsRUFDeEIsQ0FBQztBQVdGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBMEJyRzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUN0QixhQUEyRixFQUNqRSxFQUFFLENBQUMsQ0FBQztJQUM5QixJQUFJLEVBQUUsV0FBVztJQUNqQixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07SUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQztDQUNuQixDQUFDLENBQUM7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLENBQ2hDLGFBQTJGLEVBQ2pFLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLElBQUksRUFBRSx5QkFBeUI7SUFDL0IsTUFBTSxFQUFFLGFBQWEsQ0FBQyxNQUFNO0lBQzVCLEdBQUcsQ0FBQyxhQUFhLENBQUM7Q0FDbkIsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUNqQyxhQUEyRixFQUNqRSxFQUFFLENBQUMsQ0FBQztJQUM5QixJQUFJLEVBQUUsMEJBQTBCO0lBQ2hDLE1BQU0sRUFBRSxhQUFhLENBQUMsTUFBTTtJQUM1QixHQUFHLENBQUMsYUFBYSxDQUFDO0NBQ25CLENBQUMsQ0FBQztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsYUFBMkYsRUFDakUsRUFBRSxDQUFDLENBQUM7SUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU07SUFDNUIsR0FBRyxDQUFDLGFBQWEsQ0FBQztDQUNuQixDQUFDLENBQUMifQ==
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * Forwarding configuration exports
3
+ *
4
+ * Note: The legacy domain-based configuration has been replaced by route-based configuration.
5
+ * See /ts/proxies/smart-proxy/models/route-types.ts for the new route-based configuration.
3
6
  */
4
7
  export * from './forwarding-types.js';
5
- export * from './domain-config.js';
6
- export * from './domain-manager.js';
8
+ export * from '../../proxies/smart-proxy/utils/route-helpers.js';
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * Forwarding configuration exports
3
+ *
4
+ * Note: The legacy domain-based configuration has been replaced by route-based configuration.
5
+ * See /ts/proxies/smart-proxy/models/route-types.ts for the new route-based configuration.
3
6
  */
4
7
  export * from './forwarding-types.js';
5
- export * from './domain-config.js';
6
- export * from './domain-manager.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3J3YXJkaW5nL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFCQUFxQixDQUFDIn0=
8
+ export * from '../../proxies/smart-proxy/utils/route-helpers.js';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9mb3J3YXJkaW5nL2NvbmZpZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxrREFBa0QsQ0FBQyJ9
@@ -74,6 +74,8 @@ export class ForwardingHandler extends plugins.EventEmitter {
74
74
  const result = { ...headers };
75
75
  // Apply custom headers with variable substitution
76
76
  for (const [key, value] of Object.entries(customHeaders)) {
77
+ if (typeof value !== 'string')
78
+ continue;
77
79
  let processedValue = value;
78
80
  // Replace variables in the header value
79
81
  for (const [varName, varValue] of Object.entries(variables)) {
@@ -91,4 +93,4 @@ export class ForwardingHandler extends plugins.EventEmitter {
91
93
  return this.config.advanced?.timeout || 60000; // Default: 60 seconds
92
94
  }
93
95
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZm9yd2FyZGluZy9oYW5kbGVycy9iYXNlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUs1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsaUJBQWtCLFNBQVEsT0FBTyxDQUFDLFlBQVk7SUFDbEU7OztPQUdHO0lBQ0gsWUFBc0IsTUFBc0I7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFEWSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUU1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsaURBQWlEO0lBQ25ELENBQUM7SUFlRDs7O09BR0c7SUFDTyxtQkFBbUI7UUFDM0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0Isb0NBQW9DO1FBQ3BDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELCtCQUErQjtZQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM5QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7UUFFRCxjQUFjO1FBQ2QsT0FBTztZQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sZUFBZSxDQUFDLEdBQWlDLEVBQUUsR0FBZ0M7UUFDM0YsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQzVCLE1BQU0sV0FBVyxHQUFHLFdBQVcsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO1FBRTdDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLGVBQWUsRUFBRSxVQUFVO1NBQzVCLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUU7WUFDL0MsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO1lBQ3BDLElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sa0JBQWtCLENBQzFCLE9BQXNELEVBQ3RELFNBQWlDO1FBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRTlCLGtEQUFrRDtRQUNsRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3pELElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztZQUUzQix3Q0FBd0M7WUFDeEMsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVU7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsc0JBQXNCO0lBQ3ZFLENBQUM7Q0FDRiJ9
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZm9yd2FyZGluZy9oYW5kbGVycy9iYXNlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUs1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RTs7R0FFRztBQUNILE1BQU0sT0FBZ0IsaUJBQWtCLFNBQVEsT0FBTyxDQUFDLFlBQVk7SUFDbEU7OztPQUdHO0lBQ0gsWUFBc0IsTUFBc0I7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFEWSxXQUFNLEdBQU4sTUFBTSxDQUFnQjtJQUU1QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksS0FBSyxDQUFDLFVBQVU7UUFDckIsaURBQWlEO0lBQ25ELENBQUM7SUFlRDs7O09BR0c7SUFDTyxtQkFBbUI7UUFDM0IsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0Isb0NBQW9DO1FBQ3BDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDL0MsQ0FBQztZQUVELCtCQUErQjtZQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUM5QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7YUFDbEIsQ0FBQztRQUNKLENBQUM7UUFFRCxjQUFjO1FBQ2QsT0FBTztZQUNMLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sZUFBZSxDQUFDLEdBQWlDLEVBQUUsR0FBZ0M7UUFDM0YsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQzVCLE1BQU0sV0FBVyxHQUFHLFdBQVcsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO1FBRTdDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pCLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLGVBQWUsRUFBRSxVQUFVO1NBQzVCLENBQUMsQ0FBQztRQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUU7WUFDL0MsVUFBVSxFQUFFLEdBQUc7WUFDZixPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFO1lBQ3BDLElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sa0JBQWtCLENBQzFCLE9BQXNELEVBQ3RELFNBQWlDO1FBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBRTlCLGtEQUFrRDtRQUNsRCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3pELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtnQkFBRSxTQUFTO1lBRXhDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQztZQUUzQix3Q0FBd0M7WUFDeEMsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGNBQWMsQ0FBQztRQUMvQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNPLFVBQVU7UUFDbEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsc0JBQXNCO0lBQ3ZFLENBQUM7Q0FDRiJ9
@@ -3,17 +3,16 @@
3
3
  * Provides a flexible and type-safe way to configure and manage various forwarding strategies
4
4
  */
5
5
  export * from './config/forwarding-types.js';
6
- export * from './config/domain-config.js';
7
- export * from './config/domain-manager.js';
8
6
  export { ForwardingHandler } from './handlers/base-handler.js';
9
7
  export * from './handlers/http-handler.js';
10
8
  export * from './handlers/https-passthrough-handler.js';
11
9
  export * from './handlers/https-terminate-to-http-handler.js';
12
10
  export * from './handlers/https-terminate-to-https-handler.js';
13
11
  export * from './factory/forwarding-factory.js';
12
+ export * from '../proxies/smart-proxy/utils/route-helpers.js';
14
13
  export declare const helpers: {
15
- httpOnly: (partialConfig: Partial<import("./config/forwarding-types.js").IForwardConfig> & Pick<import("./config/forwarding-types.js").IForwardConfig, "target">) => import("./config/forwarding-types.js").IForwardConfig;
16
- tlsTerminateToHttp: (partialConfig: Partial<import("./config/forwarding-types.js").IForwardConfig> & Pick<import("./config/forwarding-types.js").IForwardConfig, "target">) => import("./config/forwarding-types.js").IForwardConfig;
17
- tlsTerminateToHttps: (partialConfig: Partial<import("./config/forwarding-types.js").IForwardConfig> & Pick<import("./config/forwarding-types.js").IForwardConfig, "target">) => import("./config/forwarding-types.js").IForwardConfig;
18
- httpsPassthrough: (partialConfig: Partial<import("./config/forwarding-types.js").IForwardConfig> & Pick<import("./config/forwarding-types.js").IForwardConfig, "target">) => import("./config/forwarding-types.js").IForwardConfig;
14
+ httpOnly: (partialConfig: Partial<import("./config/forwarding-types.js").IDeprecatedForwardConfig> & Pick<import("./config/forwarding-types.js").IDeprecatedForwardConfig, "target">) => import("./config/forwarding-types.js").IDeprecatedForwardConfig;
15
+ tlsTerminateToHttp: (partialConfig: Partial<import("./config/forwarding-types.js").IDeprecatedForwardConfig> & Pick<import("./config/forwarding-types.js").IDeprecatedForwardConfig, "target">) => import("./config/forwarding-types.js").IDeprecatedForwardConfig;
16
+ tlsTerminateToHttps: (partialConfig: Partial<import("./config/forwarding-types.js").IDeprecatedForwardConfig> & Pick<import("./config/forwarding-types.js").IDeprecatedForwardConfig, "target">) => import("./config/forwarding-types.js").IDeprecatedForwardConfig;
17
+ httpsPassthrough: (partialConfig: Partial<import("./config/forwarding-types.js").IDeprecatedForwardConfig> & Pick<import("./config/forwarding-types.js").IDeprecatedForwardConfig, "target">) => import("./config/forwarding-types.js").IDeprecatedForwardConfig;
19
18
  };
@@ -4,8 +4,6 @@
4
4
  */
5
5
  // Export types and configuration
6
6
  export * from './config/forwarding-types.js';
7
- export * from './config/domain-config.js';
8
- export * from './config/domain-manager.js';
9
7
  // Export handlers
10
8
  export { ForwardingHandler } from './handlers/base-handler.js';
11
9
  export * from './handlers/http-handler.js';
@@ -16,10 +14,12 @@ export * from './handlers/https-terminate-to-https-handler.js';
16
14
  export * from './factory/forwarding-factory.js';
17
15
  // Helper functions as a convenience object
18
16
  import { httpOnly, tlsTerminateToHttp, tlsTerminateToHttps, httpsPassthrough } from './config/forwarding-types.js';
17
+ // Export route-based helpers from smart-proxy
18
+ export * from '../proxies/smart-proxy/utils/route-helpers.js';
19
19
  export const helpers = {
20
20
  httpOnly,
21
21
  tlsTerminateToHttp,
22
22
  tlsTerminateToHttps,
23
23
  httpsPassthrough
24
24
  };
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9mb3J3YXJkaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILGlDQUFpQztBQUNqQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw0QkFBNEIsQ0FBQztBQUUzQyxrQkFBa0I7QUFDbEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxpQkFBaUI7QUFDakIsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCwyQ0FBMkM7QUFDM0MsT0FBTyxFQUNMLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLDhCQUE4QixDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixRQUFRO0lBQ1Isa0JBQWtCO0lBQ2xCLG1CQUFtQjtJQUNuQixnQkFBZ0I7Q0FDakIsQ0FBQyJ9
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9mb3J3YXJkaW5nL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILGlDQUFpQztBQUNqQyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGtCQUFrQjtBQUNsQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGdEQUFnRCxDQUFDO0FBRS9ELGlCQUFpQjtBQUNqQixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELDJDQUEyQztBQUMzQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2pCLE1BQU0sOEJBQThCLENBQUM7QUFFdEMsOENBQThDO0FBQzlDLGNBQWMsK0NBQStDLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHO0lBQ3JCLFFBQVE7SUFDUixrQkFBa0I7SUFDbEIsbUJBQW1CO0lBQ25CLGdCQUFnQjtDQUNqQixDQUFDIn0=
@@ -59,4 +59,4 @@ export class ServerError extends HttpError {
59
59
  // Backward compatibility interfaces
60
60
  export { HttpError as Port80HandlerError };
61
61
  export { CertificateError as CertError };
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2h0dHAvbW9kZWxzL2h0dHAtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQU81Qzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDcEIsbURBQXFDLENBQUE7SUFDckMscURBQXVDLENBQUE7SUFDdkMsaURBQW1DLENBQUE7SUFDbkMsNkNBQStCLENBQUE7QUFDakMsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQVlYO0FBWkQsV0FBWSxVQUFVO0lBQ3BCLHlDQUFRLENBQUE7SUFDUix1RUFBdUIsQ0FBQTtJQUN2QiwrQ0FBVyxDQUFBO0lBQ1gseUVBQXdCLENBQUE7SUFDeEIseUVBQXdCLENBQUE7SUFDeEIsMkRBQWlCLENBQUE7SUFDakIsdURBQWUsQ0FBQTtJQUNmLHlFQUF3QixDQUFBO0lBQ3hCLCtFQUEyQixDQUFBO0lBQzNCLG1FQUFxQixDQUFBO0lBQ3JCLDJFQUF5QixDQUFBO0FBQzNCLENBQUMsRUFaVyxVQUFVLEtBQVYsVUFBVSxRQVlyQjtBQWVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLFlBQ0UsT0FBZSxFQUNDLE1BQWMsRUFDZCxZQUFxQixLQUFLO1FBRTFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sZUFBZSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFIekQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBRzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFDeEMsWUFBWSxPQUFlLEVBQWtCLElBQWE7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDRCLFNBQUksR0FBSixJQUFJLENBQVM7UUFFeEQsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBdUJELG9DQUFvQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxJQUFJLGtCQUFrQixFQUFFLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixJQUFJLFNBQVMsRUFBRSxDQUFDIn0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2h0dHAvbW9kZWxzL2h0dHAtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQU01Qzs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDcEIsbURBQXFDLENBQUE7SUFDckMscURBQXVDLENBQUE7SUFDdkMsaURBQW1DLENBQUE7SUFDbkMsNkNBQStCLENBQUE7QUFDakMsQ0FBQyxFQUxXLFVBQVUsS0FBVixVQUFVLFFBS3JCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxVQVlYO0FBWkQsV0FBWSxVQUFVO0lBQ3BCLHlDQUFRLENBQUE7SUFDUix1RUFBdUIsQ0FBQTtJQUN2QiwrQ0FBVyxDQUFBO0lBQ1gseUVBQXdCLENBQUE7SUFDeEIseUVBQXdCLENBQUE7SUFDeEIsMkRBQWlCLENBQUE7SUFDakIsdURBQWUsQ0FBQTtJQUNmLHlFQUF3QixDQUFBO0lBQ3hCLCtFQUEyQixDQUFBO0lBQzNCLG1FQUFxQixDQUFBO0lBQ3JCLDJFQUF5QixDQUFBO0FBQzNCLENBQUMsRUFaVyxVQUFVLEtBQVYsVUFBVSxRQVlyQjtBQWVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBQ2xDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxTQUFTO0lBQzdDLFlBQ0UsT0FBZSxFQUNDLE1BQWMsRUFDZCxZQUFxQixLQUFLO1FBRTFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sZUFBZSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFIekQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBRzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFDeEMsWUFBWSxPQUFlLEVBQWtCLElBQWE7UUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDRCLFNBQUksR0FBSixJQUFJLENBQVM7UUFFeEQsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBdUJELG9DQUFvQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxJQUFJLGtCQUFrQixFQUFFLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixJQUFJLFNBQVMsRUFBRSxDQUFDIn0=
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * Type definitions for SmartAcme interfaces used by ChallengeResponder
3
3
  * These reflect the actual SmartAcme API based on the documentation
4
+ *
5
+ * Also includes route-based interfaces for Port80Handler to extract domains
6
+ * that need certificate management from route configurations.
4
7
  */
5
8
  import * as plugins from '../../plugins.js';
9
+ import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
6
10
  /**
7
11
  * Structure for SmartAcme certificate result
8
12
  */
@@ -76,3 +80,29 @@ export interface ISmartAcme {
76
80
  on?(event: string, listener: (data: any) => void): void;
77
81
  eventEmitter?: plugins.EventEmitter;
78
82
  }
83
+ /**
84
+ * Port80Handler route options
85
+ */
86
+ export interface IPort80RouteOptions {
87
+ domain: string;
88
+ sslRedirect: boolean;
89
+ acmeMaintenance: boolean;
90
+ forward?: {
91
+ ip: string;
92
+ port: number;
93
+ };
94
+ acmeForward?: {
95
+ ip: string;
96
+ port: number;
97
+ };
98
+ routeReference?: {
99
+ routeId?: string;
100
+ routeName?: string;
101
+ };
102
+ }
103
+ /**
104
+ * Extract domains that need certificate management from routes
105
+ * @param routes Route configurations to extract domains from
106
+ * @returns Array of Port80RouteOptions for each domain
107
+ */
108
+ export declare function extractPort80RoutesFromRoutes(routes: IRouteConfig[]): IPort80RouteOptions[];
@@ -1,6 +1,51 @@
1
1
  /**
2
2
  * Type definitions for SmartAcme interfaces used by ChallengeResponder
3
3
  * These reflect the actual SmartAcme API based on the documentation
4
+ *
5
+ * Also includes route-based interfaces for Port80Handler to extract domains
6
+ * that need certificate management from route configurations.
4
7
  */
5
8
  import * as plugins from '../../plugins.js';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNtZS1pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaHR0cC9wb3J0ODAvYWNtZS1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUMifQ==
9
+ /**
10
+ * Extract domains that need certificate management from routes
11
+ * @param routes Route configurations to extract domains from
12
+ * @returns Array of Port80RouteOptions for each domain
13
+ */
14
+ export function extractPort80RoutesFromRoutes(routes) {
15
+ const result = [];
16
+ for (const route of routes) {
17
+ // Skip routes that don't have domains or TLS configuration
18
+ if (!route.match.domains || !route.action.tls)
19
+ continue;
20
+ // Skip routes that don't terminate TLS
21
+ if (route.action.tls.mode !== 'terminate' && route.action.tls.mode !== 'terminate-and-reencrypt')
22
+ continue;
23
+ // Only routes with automatic certificates need ACME
24
+ if (route.action.tls.certificate !== 'auto')
25
+ continue;
26
+ // Get domains from route
27
+ const domains = Array.isArray(route.match.domains)
28
+ ? route.match.domains
29
+ : [route.match.domains];
30
+ // Create Port80RouteOptions for each domain
31
+ for (const domain of domains) {
32
+ // Skip wildcards (we can't get certificates for them)
33
+ if (domain.includes('*'))
34
+ continue;
35
+ // Create Port80RouteOptions
36
+ const options = {
37
+ domain,
38
+ sslRedirect: true, // Default to true for HTTPS routes
39
+ acmeMaintenance: true, // Default to true for auto certificates
40
+ // Add route reference
41
+ routeReference: {
42
+ routeName: route.name
43
+ }
44
+ };
45
+ // Add domain to result
46
+ result.push(options);
47
+ }
48
+ }
49
+ return result;
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNtZS1pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvaHR0cC9wb3J0ODAvYWNtZS1pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFtSDVDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsTUFBc0I7SUFDbEUsTUFBTSxNQUFNLEdBQTBCLEVBQUUsQ0FBQztJQUV6QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFBRSxTQUFTO1FBRXhELHVDQUF1QztRQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLHlCQUF5QjtZQUFFLFNBQVM7UUFFM0csb0RBQW9EO1FBQ3BELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLE1BQU07WUFBRSxTQUFTO1FBRXRELHlCQUF5QjtRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDckIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQiw0Q0FBNEM7UUFDNUMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixzREFBc0Q7WUFDdEQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFTO1lBRW5DLDRCQUE0QjtZQUM1QixNQUFNLE9BQU8sR0FBd0I7Z0JBQ25DLE1BQU07Z0JBQ04sV0FBVyxFQUFFLElBQUksRUFBRSxtQ0FBbUM7Z0JBQ3RELGVBQWUsRUFBRSxJQUFJLEVBQUUsd0NBQXdDO2dCQUUvRCxzQkFBc0I7Z0JBQ3RCLGNBQWMsRUFBRTtvQkFDZCxTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ3RCO2FBQ0YsQ0FBQztZQUVGLHVCQUF1QjtZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyJ9
@@ -1,7 +1,10 @@
1
1
  import * as plugins from '../../plugins.js';
2
2
  import { CertificateEvents } from '../../certificate/events/certificate-events.js';
3
- import type { IDomainOptions, ICertificateData, IAcmeOptions } from '../../certificate/models/certificate-types.js';
3
+ import type { IDomainOptions, // Kept for backward compatibility
4
+ ICertificateData, IAcmeOptions } from '../../certificate/models/certificate-types.js';
4
5
  import { HttpError, CertificateError, ServerError } from '../models/http-types.js';
6
+ import type { IPort80RouteOptions } from './acme-interfaces.js';
7
+ import type { IRouteConfig } from '../../proxies/smart-proxy/models/route-types.js';
5
8
  export { HttpError as Port80HandlerError, CertificateError, ServerError };
6
9
  export declare const Port80HandlerEvents: typeof CertificateEvents;
7
10
  /**
@@ -34,7 +37,19 @@ export declare class Port80Handler extends plugins.EventEmitter {
34
37
  * Adds a domain with configuration options
35
38
  * @param options Domain configuration options
36
39
  */
37
- addDomain(options: IDomainOptions): void;
40
+ addDomain(options: IDomainOptions | IPort80RouteOptions): void;
41
+ /**
42
+ * Add domains from route configurations
43
+ * @param routes Array of route configurations
44
+ */
45
+ addDomainsFromRoutes(routes: IRouteConfig[]): void;
46
+ /**
47
+ * Normalize options from either IDomainOptions or IPort80RouteOptions
48
+ * @param options Options to normalize
49
+ * @returns Normalized IDomainOptions
50
+ * @private
51
+ */
52
+ private normalizeOptions;
38
53
  /**
39
54
  * Removes a domain from management
40
55
  * @param domain The domain to remove