@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,117 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- import { HttpStatus as ProtocolHttpStatus } from '../../../protocols/http/index.js';
3
- /**
4
- * HTTP-specific event types
5
- */
6
- export declare enum HttpEvents {
7
- REQUEST_RECEIVED = "request-received",
8
- REQUEST_FORWARDED = "request-forwarded",
9
- REQUEST_HANDLED = "request-handled",
10
- REQUEST_ERROR = "request-error"
11
- }
12
- export declare const HttpStatus: {
13
- readonly OK: ProtocolHttpStatus.OK;
14
- readonly MOVED_PERMANENTLY: ProtocolHttpStatus.MOVED_PERMANENTLY;
15
- readonly FOUND: ProtocolHttpStatus.FOUND;
16
- readonly TEMPORARY_REDIRECT: ProtocolHttpStatus.TEMPORARY_REDIRECT;
17
- readonly PERMANENT_REDIRECT: ProtocolHttpStatus.PERMANENT_REDIRECT;
18
- readonly BAD_REQUEST: ProtocolHttpStatus.BAD_REQUEST;
19
- readonly UNAUTHORIZED: ProtocolHttpStatus.UNAUTHORIZED;
20
- readonly FORBIDDEN: ProtocolHttpStatus.FORBIDDEN;
21
- readonly NOT_FOUND: ProtocolHttpStatus.NOT_FOUND;
22
- readonly METHOD_NOT_ALLOWED: ProtocolHttpStatus.METHOD_NOT_ALLOWED;
23
- readonly REQUEST_TIMEOUT: ProtocolHttpStatus.REQUEST_TIMEOUT;
24
- readonly TOO_MANY_REQUESTS: ProtocolHttpStatus.TOO_MANY_REQUESTS;
25
- readonly INTERNAL_SERVER_ERROR: ProtocolHttpStatus.INTERNAL_SERVER_ERROR;
26
- readonly NOT_IMPLEMENTED: ProtocolHttpStatus.NOT_IMPLEMENTED;
27
- readonly BAD_GATEWAY: ProtocolHttpStatus.BAD_GATEWAY;
28
- readonly SERVICE_UNAVAILABLE: ProtocolHttpStatus.SERVICE_UNAVAILABLE;
29
- readonly GATEWAY_TIMEOUT: ProtocolHttpStatus.GATEWAY_TIMEOUT;
30
- };
31
- /**
32
- * Base error class for HTTP-related errors
33
- */
34
- export declare class HttpError extends Error {
35
- readonly statusCode: number;
36
- constructor(message: string, statusCode?: number);
37
- }
38
- /**
39
- * Error related to certificate operations
40
- */
41
- export declare class CertificateError extends HttpError {
42
- readonly domain: string;
43
- readonly isRenewal: boolean;
44
- constructor(message: string, domain: string, isRenewal?: boolean);
45
- }
46
- /**
47
- * Error related to server operations
48
- */
49
- export declare class ServerError extends HttpError {
50
- readonly code?: string;
51
- constructor(message: string, code?: string, statusCode?: number);
52
- }
53
- /**
54
- * Error for bad requests
55
- */
56
- export declare class BadRequestError extends HttpError {
57
- constructor(message: string);
58
- }
59
- /**
60
- * Error for not found resources
61
- */
62
- export declare class NotFoundError extends HttpError {
63
- constructor(message?: string);
64
- }
65
- /**
66
- * Redirect configuration for HTTP requests
67
- */
68
- export interface IRedirectConfig {
69
- source: string;
70
- destination: string;
71
- type: number;
72
- preserveQuery?: boolean;
73
- }
74
- /**
75
- * HTTP router configuration
76
- */
77
- export interface IRouterConfig {
78
- routes: Array<{
79
- path: string;
80
- method?: string;
81
- handler: (req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse) => void | Promise<void>;
82
- }>;
83
- notFoundHandler?: (req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse) => void;
84
- errorHandler?: (error: Error, req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse) => void;
85
- }
86
- /**
87
- * HTTP request method types
88
- */
89
- export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE';
90
- /**
91
- * Helper function to get HTTP status text
92
- */
93
- export declare function getStatusText(status: number): string;
94
- export interface IDomainOptions {
95
- domainName: string;
96
- sslRedirect: boolean;
97
- acmeMaintenance: boolean;
98
- forward?: {
99
- ip: string;
100
- port: number;
101
- };
102
- acmeForward?: {
103
- ip: string;
104
- port: number;
105
- };
106
- }
107
- export interface IDomainCertificate {
108
- options: IDomainOptions;
109
- certObtained: boolean;
110
- obtainingInProgress: boolean;
111
- certificate?: string;
112
- privateKey?: string;
113
- expiryDate?: Date;
114
- lastRenewalAttempt?: Date;
115
- }
116
- export { HttpError as Port80HandlerError };
117
- export { CertificateError as CertError };
@@ -1,92 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- // Import from protocols for consistent status codes
3
- import { HttpStatus as ProtocolHttpStatus, getStatusText as getProtocolStatusText } from '../../../protocols/http/index.js';
4
- /**
5
- * HTTP-specific event types
6
- */
7
- export var HttpEvents;
8
- (function (HttpEvents) {
9
- HttpEvents["REQUEST_RECEIVED"] = "request-received";
10
- HttpEvents["REQUEST_FORWARDED"] = "request-forwarded";
11
- HttpEvents["REQUEST_HANDLED"] = "request-handled";
12
- HttpEvents["REQUEST_ERROR"] = "request-error";
13
- })(HttpEvents || (HttpEvents = {}));
14
- // Re-export for backward compatibility with subset of commonly used codes
15
- export const HttpStatus = {
16
- OK: ProtocolHttpStatus.OK,
17
- MOVED_PERMANENTLY: ProtocolHttpStatus.MOVED_PERMANENTLY,
18
- FOUND: ProtocolHttpStatus.FOUND,
19
- TEMPORARY_REDIRECT: ProtocolHttpStatus.TEMPORARY_REDIRECT,
20
- PERMANENT_REDIRECT: ProtocolHttpStatus.PERMANENT_REDIRECT,
21
- BAD_REQUEST: ProtocolHttpStatus.BAD_REQUEST,
22
- UNAUTHORIZED: ProtocolHttpStatus.UNAUTHORIZED,
23
- FORBIDDEN: ProtocolHttpStatus.FORBIDDEN,
24
- NOT_FOUND: ProtocolHttpStatus.NOT_FOUND,
25
- METHOD_NOT_ALLOWED: ProtocolHttpStatus.METHOD_NOT_ALLOWED,
26
- REQUEST_TIMEOUT: ProtocolHttpStatus.REQUEST_TIMEOUT,
27
- TOO_MANY_REQUESTS: ProtocolHttpStatus.TOO_MANY_REQUESTS,
28
- INTERNAL_SERVER_ERROR: ProtocolHttpStatus.INTERNAL_SERVER_ERROR,
29
- NOT_IMPLEMENTED: ProtocolHttpStatus.NOT_IMPLEMENTED,
30
- BAD_GATEWAY: ProtocolHttpStatus.BAD_GATEWAY,
31
- SERVICE_UNAVAILABLE: ProtocolHttpStatus.SERVICE_UNAVAILABLE,
32
- GATEWAY_TIMEOUT: ProtocolHttpStatus.GATEWAY_TIMEOUT,
33
- };
34
- /**
35
- * Base error class for HTTP-related errors
36
- */
37
- export class HttpError extends Error {
38
- constructor(message, statusCode = HttpStatus.INTERNAL_SERVER_ERROR) {
39
- super(message);
40
- this.statusCode = statusCode;
41
- this.name = 'HttpError';
42
- }
43
- }
44
- /**
45
- * Error related to certificate operations
46
- */
47
- export class CertificateError extends HttpError {
48
- constructor(message, domain, isRenewal = false) {
49
- super(`${message} for domain ${domain}${isRenewal ? ' (renewal)' : ''}`, HttpStatus.INTERNAL_SERVER_ERROR);
50
- this.domain = domain;
51
- this.isRenewal = isRenewal;
52
- this.name = 'CertificateError';
53
- }
54
- }
55
- /**
56
- * Error related to server operations
57
- */
58
- export class ServerError extends HttpError {
59
- constructor(message, code, statusCode = HttpStatus.INTERNAL_SERVER_ERROR) {
60
- super(message, statusCode);
61
- this.code = code;
62
- this.name = 'ServerError';
63
- }
64
- }
65
- /**
66
- * Error for bad requests
67
- */
68
- export class BadRequestError extends HttpError {
69
- constructor(message) {
70
- super(message, HttpStatus.BAD_REQUEST);
71
- this.name = 'BadRequestError';
72
- }
73
- }
74
- /**
75
- * Error for not found resources
76
- */
77
- export class NotFoundError extends HttpError {
78
- constructor(message = 'Resource not found') {
79
- super(message, HttpStatus.NOT_FOUND);
80
- this.name = 'NotFoundError';
81
- }
82
- }
83
- /**
84
- * Helper function to get HTTP status text
85
- */
86
- export function getStatusText(status) {
87
- return getProtocolStatusText(status);
88
- }
89
- // Backward compatibility exports
90
- export { HttpError as Port80HandlerError };
91
- export { CertificateError as CertError };
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC10eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RzL3Byb3hpZXMvaHR0cC1wcm94eS9tb2RlbHMvaHR0cC10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsVUFBVSxJQUFJLGtCQUFrQixFQUFFLGFBQWEsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTVIOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQixtREFBcUMsQ0FBQTtJQUNyQyxxREFBdUMsQ0FBQTtJQUN2QyxpREFBbUMsQ0FBQTtJQUNuQyw2Q0FBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBTFcsVUFBVSxLQUFWLFVBQVUsUUFLckI7QUFHRCwwRUFBMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFO0lBQ3pCLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLGlCQUFpQjtJQUN2RCxLQUFLLEVBQUUsa0JBQWtCLENBQUMsS0FBSztJQUMvQixrQkFBa0IsRUFBRSxrQkFBa0IsQ0FBQyxrQkFBa0I7SUFDekQsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsa0JBQWtCO0lBQ3pELFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxXQUFXO0lBQzNDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxZQUFZO0lBQzdDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTO0lBQ3ZDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxTQUFTO0lBQ3ZDLGtCQUFrQixFQUFFLGtCQUFrQixDQUFDLGtCQUFrQjtJQUN6RCxlQUFlLEVBQUUsa0JBQWtCLENBQUMsZUFBZTtJQUNuRCxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxpQkFBaUI7SUFDdkQscUJBQXFCLEVBQUUsa0JBQWtCLENBQUMscUJBQXFCO0lBQy9ELGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxlQUFlO0lBQ25ELFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxXQUFXO0lBQzNDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLG1CQUFtQjtJQUMzRCxlQUFlLEVBQUUsa0JBQWtCLENBQUMsZUFBZTtDQUMzQyxDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLEtBQUs7SUFDbEMsWUFBWSxPQUFlLEVBQWtCLGFBQXFCLFVBQVUsQ0FBQyxxQkFBcUI7UUFDaEcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDRCLGVBQVUsR0FBVixVQUFVLENBQTJDO1FBRWhHLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFNBQVM7SUFDN0MsWUFDRSxPQUFlLEVBQ0MsTUFBYyxFQUNkLFlBQXFCLEtBQUs7UUFFMUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxlQUFlLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFIM0YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBRzFDLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFDeEMsWUFBWSxPQUFlLEVBQWtCLElBQWEsRUFBRSxhQUFxQixVQUFVLENBQUMscUJBQXFCO1FBQy9HLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFEZ0IsU0FBSSxHQUFKLElBQUksQ0FBUztRQUV4RCxJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFnQixTQUFRLFNBQVM7SUFDNUMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFNBQVM7SUFDMUMsWUFBWSxVQUFrQixvQkFBb0I7UUFDaEQsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBK0JEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxNQUFjO0lBQzFDLE9BQU8scUJBQXFCLENBQUMsTUFBNEIsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFxQkQsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLElBQUksa0JBQWtCLEVBQUUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksU0FBUyxFQUFFLENBQUMifQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * HttpProxy models
3
- */
4
- export * from './types.js';
5
- export * from './http-types.js';
@@ -1,6 +0,0 @@
1
- /**
2
- * HttpProxy models
3
- */
4
- export * from './types.js';
5
- export * from './http-types.js';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL2h0dHAtcHJveHkvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxpQkFBaUIsQ0FBQyJ9
@@ -1,75 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- export interface IAcmeOptions {
3
- enabled: boolean;
4
- email?: string;
5
- accountEmail?: string;
6
- port?: number;
7
- certificateStore?: string;
8
- environment?: 'production' | 'staging';
9
- useProduction?: boolean;
10
- renewThresholdDays?: number;
11
- autoRenew?: boolean;
12
- skipConfiguredCerts?: boolean;
13
- }
14
- import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
15
- /**
16
- * Configuration options for HttpProxy
17
- */
18
- export interface IHttpProxyOptions {
19
- port: number;
20
- maxConnections?: number;
21
- keepAliveTimeout?: number;
22
- headersTimeout?: number;
23
- logLevel?: 'error' | 'warn' | 'info' | 'debug';
24
- cors?: {
25
- allowOrigin?: string;
26
- allowMethods?: string;
27
- allowHeaders?: string;
28
- maxAge?: number;
29
- };
30
- connectionPoolSize?: number;
31
- portProxyIntegration?: boolean;
32
- backendProtocol?: 'http1' | 'http2';
33
- functionCacheSize?: number;
34
- functionCacheTtl?: number;
35
- acme?: IAcmeOptions;
36
- routes?: IRouteConfig[];
37
- maxConnectionsPerIP?: number;
38
- connectionRateLimitPerMinute?: number;
39
- }
40
- /**
41
- * Interface for a certificate entry in the cache
42
- */
43
- export interface ICertificateEntry {
44
- key: string;
45
- cert: string;
46
- expires?: Date;
47
- }
48
- /**
49
- * Interface for connection tracking in the pool
50
- */
51
- export interface IConnectionEntry {
52
- socket: plugins.net.Socket;
53
- lastUsed: number;
54
- isIdle: boolean;
55
- }
56
- /**
57
- * WebSocket with heartbeat interface
58
- */
59
- export interface IWebSocketWithHeartbeat extends plugins.wsDefault {
60
- lastPong: number;
61
- isAlive: boolean;
62
- }
63
- /**
64
- * Logger interface for consistent logging across components
65
- */
66
- export interface ILogger {
67
- debug(message: string, data?: any): void;
68
- info(message: string, data?: any): void;
69
- warn(message: string, data?: any): void;
70
- error(message: string, data?: any): void;
71
- }
72
- /**
73
- * Creates a logger based on the specified log level
74
- */
75
- export declare function createLogger(logLevel?: string): ILogger;
@@ -1,35 +0,0 @@
1
- import * as plugins from '../../../plugins.js';
2
- /**
3
- * Creates a logger based on the specified log level
4
- */
5
- export function createLogger(logLevel = 'info') {
6
- const logLevels = {
7
- error: 0,
8
- warn: 1,
9
- info: 2,
10
- debug: 3
11
- };
12
- return {
13
- debug: (message, data) => {
14
- if (logLevels[logLevel] >= logLevels.debug) {
15
- console.log(`[DEBUG] ${message}`, data || '');
16
- }
17
- },
18
- info: (message, data) => {
19
- if (logLevels[logLevel] >= logLevels.info) {
20
- console.log(`[INFO] ${message}`, data || '');
21
- }
22
- },
23
- warn: (message, data) => {
24
- if (logLevels[logLevel] >= logLevels.warn) {
25
- console.warn(`[WARN] ${message}`, data || '');
26
- }
27
- },
28
- error: (message, data) => {
29
- if (logLevels[logLevel] >= logLevels.error) {
30
- console.error(`[ERROR] ${message}`, data || '');
31
- }
32
- }
33
- };
34
- }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90cy9wcm94aWVzL2h0dHAtcHJveHkvbW9kZWxzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0scUJBQXFCLENBQUM7QUEyRi9DOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxXQUFtQixNQUFNO0lBQ3BELE1BQU0sU0FBUyxHQUFHO1FBQ2hCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssRUFBRSxDQUFDO0tBQ1QsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxFQUFFLENBQUMsT0FBZSxFQUFFLElBQVUsRUFBRSxFQUFFO1lBQ3BDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLE9BQWUsRUFBRSxJQUFVLEVBQUUsRUFBRTtZQUNwQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLEVBQUUsQ0FBQyxPQUFlLEVBQUUsSUFBVSxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsT0FBTyxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
@@ -1,97 +0,0 @@
1
- import * as plugins from '../../plugins.js';
2
- import '../../core/models/socket-augmentation.js';
3
- import { type IHttpProxyOptions } from './models/types.js';
4
- import { SharedRouteManager as RouteManager } from '../../core/routing/route-manager.js';
5
- import { ConnectionPool } from './connection-pool.js';
6
- import { SecurityManager } from './security-manager.js';
7
- /**
8
- * Interface for tracking metrics
9
- */
10
- export interface IMetricsTracker {
11
- incrementRequestsServed(): void;
12
- incrementFailedRequests(): void;
13
- }
14
- export type MetricsTracker = IMetricsTracker;
15
- /**
16
- * Handles HTTP request processing and proxying
17
- */
18
- export declare class RequestHandler {
19
- private options;
20
- private connectionPool;
21
- private routeManager?;
22
- private functionCache?;
23
- private router?;
24
- private defaultHeaders;
25
- private logger;
26
- private metricsTracker;
27
- private h2Sessions;
28
- private contextCreator;
29
- securityManager: SecurityManager;
30
- private rateLimitCleanupInterval;
31
- constructor(options: IHttpProxyOptions, connectionPool: ConnectionPool, routeManager?: RouteManager, functionCache?: any, // FunctionCache - using any to avoid circular dependency
32
- router?: any);
33
- /**
34
- * Set the route manager instance
35
- */
36
- setRouteManager(routeManager: RouteManager): void;
37
- /**
38
- * Set the metrics tracker instance
39
- */
40
- setMetricsTracker(tracker: IMetricsTracker): void;
41
- /**
42
- * Set default headers to be included in all responses
43
- */
44
- setDefaultHeaders(headers: {
45
- [key: string]: string;
46
- }): void;
47
- /**
48
- * Get all default headers
49
- */
50
- getDefaultHeaders(): {
51
- [key: string]: string;
52
- };
53
- /**
54
- * Select the appropriate target from the targets array based on sub-matching criteria
55
- */
56
- private selectTarget;
57
- /**
58
- * Apply CORS headers to response if configured
59
- * Implements Phase 5.5: Context-aware CORS handling
60
- *
61
- * @param res The server response to apply headers to
62
- * @param req The incoming request
63
- * @param route Optional route config with CORS settings
64
- */
65
- private applyCorsHeaders;
66
- /**
67
- * Apply default headers to response
68
- */
69
- private applyDefaultHeaders;
70
- /**
71
- * Apply URL rewriting based on route configuration
72
- * Implements Phase 5.2: URL rewriting using route context
73
- *
74
- * @param req The request with the URL to rewrite
75
- * @param route The route configuration containing rewrite rules
76
- * @param routeContext Context for template variable resolution
77
- * @returns True if URL was rewritten, false otherwise
78
- */
79
- private applyUrlRewriting;
80
- /**
81
- * Apply header modifications from route configuration
82
- * Implements Phase 5.1: Route-based header manipulation
83
- */
84
- private applyRouteHeaderModifications;
85
- /**
86
- * Handle an HTTP request
87
- */
88
- handleRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse): Promise<void>;
89
- /**
90
- * Handle HTTP/2 stream requests with function-based target support
91
- */
92
- handleHttp2(stream: plugins.http2.ServerHttp2Stream, headers: plugins.http2.IncomingHttpHeaders): Promise<void>;
93
- /**
94
- * Cleanup resources and stop intervals
95
- */
96
- destroy(): void;
97
- }