@api-client/core 0.18.12 → 0.18.13

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 (259) hide show
  1. package/build/src/browser.d.ts +0 -3
  2. package/build/src/browser.d.ts.map +1 -1
  3. package/build/src/browser.js +0 -3
  4. package/build/src/browser.js.map +1 -1
  5. package/build/src/index.d.ts +2 -5
  6. package/build/src/index.d.ts.map +1 -1
  7. package/build/src/index.js +2 -5
  8. package/build/src/index.js.map +1 -1
  9. package/build/src/lib/logging/DefaultLogger.d.ts +14 -0
  10. package/build/src/lib/logging/DefaultLogger.d.ts.map +1 -1
  11. package/build/src/lib/logging/DefaultLogger.js +27 -0
  12. package/build/src/lib/logging/DefaultLogger.js.map +1 -1
  13. package/build/src/lib/logging/index.d.ts +4 -0
  14. package/build/src/lib/logging/index.d.ts.map +1 -0
  15. package/build/src/lib/logging/index.js +10 -0
  16. package/build/src/lib/logging/index.js.map +1 -0
  17. package/build/src/models/ClientCertificate.d.ts +1 -1
  18. package/build/src/models/ClientCertificate.js.map +1 -1
  19. package/build/src/models/RequestConfig.d.ts +1 -1
  20. package/build/src/models/RequestConfig.js.map +1 -1
  21. package/build/src/models/SerializableError.d.ts +1 -1
  22. package/build/src/models/SerializableError.d.ts.map +1 -1
  23. package/build/src/models/SerializableError.js.map +1 -1
  24. package/build/src/proxy/RequestProxy.d.ts.map +1 -1
  25. package/build/src/proxy/RequestProxy.js +2 -2
  26. package/build/src/proxy/RequestProxy.js.map +1 -1
  27. package/build/src/runtime/http-engine/CoreEngine.d.ts +218 -139
  28. package/build/src/runtime/http-engine/CoreEngine.d.ts.map +1 -1
  29. package/build/src/runtime/http-engine/CoreEngine.js +716 -870
  30. package/build/src/runtime/http-engine/CoreEngine.js.map +1 -1
  31. package/build/src/runtime/http-engine/PayloadSupport.d.ts.map +1 -1
  32. package/build/src/runtime/http-engine/PayloadSupport.js +2 -1
  33. package/build/src/runtime/http-engine/PayloadSupport.js.map +1 -1
  34. package/build/src/runtime/http-engine/auth/AuthManager.d.ts +73 -0
  35. package/build/src/runtime/http-engine/auth/AuthManager.d.ts.map +1 -0
  36. package/build/src/runtime/http-engine/auth/AuthManager.js +186 -0
  37. package/build/src/runtime/http-engine/auth/AuthManager.js.map +1 -0
  38. package/build/src/runtime/http-engine/auth/index.d.ts +2 -0
  39. package/build/src/runtime/http-engine/auth/index.d.ts.map +1 -0
  40. package/build/src/runtime/http-engine/auth/index.js +2 -0
  41. package/build/src/runtime/http-engine/auth/index.js.map +1 -0
  42. package/build/src/runtime/http-engine/certificates/CertificateManager.d.ts +11 -0
  43. package/build/src/runtime/http-engine/certificates/CertificateManager.d.ts.map +1 -0
  44. package/build/src/runtime/http-engine/certificates/CertificateManager.js +76 -0
  45. package/build/src/runtime/http-engine/certificates/CertificateManager.js.map +1 -0
  46. package/build/src/runtime/http-engine/certificates/index.d.ts +2 -0
  47. package/build/src/runtime/http-engine/certificates/index.d.ts.map +1 -0
  48. package/build/src/runtime/http-engine/certificates/index.js +2 -0
  49. package/build/src/runtime/http-engine/certificates/index.js.map +1 -0
  50. package/build/src/runtime/http-engine/compression/CompressionManager.d.ts +25 -0
  51. package/build/src/runtime/http-engine/compression/CompressionManager.d.ts.map +1 -0
  52. package/build/src/runtime/http-engine/compression/CompressionManager.js +89 -0
  53. package/build/src/runtime/http-engine/compression/CompressionManager.js.map +1 -0
  54. package/build/src/runtime/http-engine/compression/index.d.ts +2 -0
  55. package/build/src/runtime/http-engine/compression/index.d.ts.map +1 -0
  56. package/build/src/runtime/http-engine/compression/index.js +2 -0
  57. package/build/src/runtime/http-engine/compression/index.js.map +1 -0
  58. package/build/src/runtime/http-engine/connections/ConnectionManager.d.ts +57 -0
  59. package/build/src/runtime/http-engine/connections/ConnectionManager.d.ts.map +1 -0
  60. package/build/src/runtime/http-engine/connections/ConnectionManager.js +78 -0
  61. package/build/src/runtime/http-engine/connections/ConnectionManager.js.map +1 -0
  62. package/build/src/runtime/http-engine/connections/DigestAuthHandler.d.ts +70 -0
  63. package/build/src/runtime/http-engine/connections/DigestAuthHandler.d.ts.map +1 -0
  64. package/build/src/runtime/http-engine/connections/DigestAuthHandler.js +184 -0
  65. package/build/src/runtime/http-engine/connections/DigestAuthHandler.js.map +1 -0
  66. package/build/src/runtime/http-engine/connections/DirectConnection.d.ts +22 -0
  67. package/build/src/runtime/http-engine/connections/DirectConnection.d.ts.map +1 -0
  68. package/build/src/runtime/http-engine/connections/DirectConnection.js +105 -0
  69. package/build/src/runtime/http-engine/connections/DirectConnection.js.map +1 -0
  70. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.d.ts +60 -0
  71. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.d.ts.map +1 -0
  72. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.js +138 -0
  73. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.js.map +1 -0
  74. package/build/src/runtime/http-engine/connections/ProxyConnection.d.ts +14 -0
  75. package/build/src/runtime/http-engine/connections/ProxyConnection.d.ts.map +1 -0
  76. package/build/src/runtime/http-engine/connections/ProxyConnection.js +47 -0
  77. package/build/src/runtime/http-engine/connections/ProxyConnection.js.map +1 -0
  78. package/build/src/runtime/http-engine/connections/TunnelConnection.d.ts +13 -0
  79. package/build/src/runtime/http-engine/connections/TunnelConnection.d.ts.map +1 -0
  80. package/build/src/runtime/http-engine/connections/TunnelConnection.js +175 -0
  81. package/build/src/runtime/http-engine/connections/TunnelConnection.js.map +1 -0
  82. package/build/src/runtime/http-engine/connections/index.d.ts +7 -0
  83. package/build/src/runtime/http-engine/connections/index.d.ts.map +1 -0
  84. package/build/src/runtime/http-engine/connections/index.js +7 -0
  85. package/build/src/runtime/http-engine/connections/index.js.map +1 -0
  86. package/build/src/runtime/http-engine/constants.d.ts +69 -0
  87. package/build/src/runtime/http-engine/constants.d.ts.map +1 -0
  88. package/build/src/runtime/http-engine/constants.js +90 -0
  89. package/build/src/runtime/http-engine/constants.js.map +1 -0
  90. package/build/src/runtime/http-engine/cookies/CookieProcessor.d.ts +5 -0
  91. package/build/src/runtime/http-engine/cookies/CookieProcessor.d.ts.map +1 -0
  92. package/build/src/runtime/http-engine/cookies/CookieProcessor.js +20 -0
  93. package/build/src/runtime/http-engine/cookies/CookieProcessor.js.map +1 -0
  94. package/build/src/runtime/http-engine/cookies/index.d.ts +2 -0
  95. package/build/src/runtime/http-engine/cookies/index.d.ts.map +1 -0
  96. package/build/src/runtime/http-engine/cookies/index.js +2 -0
  97. package/build/src/runtime/http-engine/cookies/index.js.map +1 -0
  98. package/build/src/runtime/http-engine/errors/HttpEngineErrors.d.ts +156 -0
  99. package/build/src/runtime/http-engine/errors/HttpEngineErrors.d.ts.map +1 -0
  100. package/build/src/runtime/http-engine/errors/HttpEngineErrors.js +227 -0
  101. package/build/src/runtime/http-engine/errors/HttpEngineErrors.js.map +1 -0
  102. package/build/src/runtime/http-engine/errors/index.d.ts +2 -0
  103. package/build/src/runtime/http-engine/errors/index.d.ts.map +1 -0
  104. package/build/src/runtime/http-engine/errors/index.js +2 -0
  105. package/build/src/runtime/http-engine/errors/index.js.map +1 -0
  106. package/build/src/runtime/http-engine/message/MessageBuilder.d.ts +66 -0
  107. package/build/src/runtime/http-engine/message/MessageBuilder.d.ts.map +1 -0
  108. package/build/src/runtime/http-engine/message/MessageBuilder.js +161 -0
  109. package/build/src/runtime/http-engine/message/MessageBuilder.js.map +1 -0
  110. package/build/src/runtime/http-engine/message/MessageProcessor.d.ts +27 -0
  111. package/build/src/runtime/http-engine/message/MessageProcessor.d.ts.map +1 -0
  112. package/build/src/runtime/http-engine/message/MessageProcessor.js +51 -0
  113. package/build/src/runtime/http-engine/message/MessageProcessor.js.map +1 -0
  114. package/build/src/runtime/http-engine/message/index.d.ts +3 -0
  115. package/build/src/runtime/http-engine/message/index.d.ts.map +1 -0
  116. package/build/src/runtime/http-engine/message/index.js +3 -0
  117. package/build/src/runtime/http-engine/message/index.js.map +1 -0
  118. package/build/src/runtime/http-engine/ntlm/NtlmAuth.d.ts +2 -8
  119. package/build/src/runtime/http-engine/ntlm/NtlmAuth.d.ts.map +1 -1
  120. package/build/src/runtime/http-engine/ntlm/NtlmAuth.js +11 -5
  121. package/build/src/runtime/http-engine/ntlm/NtlmAuth.js.map +1 -1
  122. package/build/src/runtime/http-engine/ntlm/NtlmMessage.js +6 -6
  123. package/build/src/runtime/http-engine/ntlm/NtlmMessage.js.map +1 -1
  124. package/build/src/runtime/http-engine/parsers/BodyParser.d.ts +39 -0
  125. package/build/src/runtime/http-engine/parsers/BodyParser.d.ts.map +1 -0
  126. package/build/src/runtime/http-engine/parsers/BodyParser.js +145 -0
  127. package/build/src/runtime/http-engine/parsers/BodyParser.js.map +1 -0
  128. package/build/src/runtime/http-engine/parsers/HeadersParser.d.ts +29 -0
  129. package/build/src/runtime/http-engine/parsers/HeadersParser.d.ts.map +1 -0
  130. package/build/src/runtime/http-engine/parsers/HeadersParser.js +88 -0
  131. package/build/src/runtime/http-engine/parsers/HeadersParser.js.map +1 -0
  132. package/build/src/runtime/http-engine/parsers/HttpResponseParser.d.ts +91 -0
  133. package/build/src/runtime/http-engine/parsers/HttpResponseParser.d.ts.map +1 -0
  134. package/build/src/runtime/http-engine/parsers/HttpResponseParser.js +236 -0
  135. package/build/src/runtime/http-engine/parsers/HttpResponseParser.js.map +1 -0
  136. package/build/src/runtime/http-engine/parsers/StatusParser.d.ts +20 -0
  137. package/build/src/runtime/http-engine/parsers/StatusParser.d.ts.map +1 -0
  138. package/build/src/runtime/http-engine/parsers/StatusParser.js +51 -0
  139. package/build/src/runtime/http-engine/parsers/StatusParser.js.map +1 -0
  140. package/build/src/runtime/http-engine/parsers/index.d.ts +5 -0
  141. package/build/src/runtime/http-engine/parsers/index.d.ts.map +1 -0
  142. package/build/src/runtime/http-engine/parsers/index.js +5 -0
  143. package/build/src/runtime/http-engine/parsers/index.js.map +1 -0
  144. package/build/src/runtime/http-engine/response/ResponseProcessor.d.ts +22 -0
  145. package/build/src/runtime/http-engine/response/ResponseProcessor.d.ts.map +1 -0
  146. package/build/src/runtime/http-engine/response/ResponseProcessor.js +25 -0
  147. package/build/src/runtime/http-engine/response/ResponseProcessor.js.map +1 -0
  148. package/build/src/runtime/http-engine/response/index.d.ts +2 -0
  149. package/build/src/runtime/http-engine/response/index.d.ts.map +1 -0
  150. package/build/src/runtime/http-engine/response/index.js +2 -0
  151. package/build/src/runtime/http-engine/response/index.js.map +1 -0
  152. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.d.ts +7 -0
  153. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.d.ts.map +1 -0
  154. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.js +40 -0
  155. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.js.map +1 -0
  156. package/build/src/runtime/http-engine/statistics/index.d.ts +2 -0
  157. package/build/src/runtime/http-engine/statistics/index.d.ts.map +1 -0
  158. package/build/src/runtime/http-engine/statistics/index.js +2 -0
  159. package/build/src/runtime/http-engine/statistics/index.js.map +1 -0
  160. package/build/src/runtime/http-engine/url/UrlProcessor.d.ts +24 -0
  161. package/build/src/runtime/http-engine/url/UrlProcessor.d.ts.map +1 -0
  162. package/build/src/runtime/http-engine/url/UrlProcessor.js +50 -0
  163. package/build/src/runtime/http-engine/url/UrlProcessor.js.map +1 -0
  164. package/build/src/runtime/http-engine/url/index.d.ts +2 -0
  165. package/build/src/runtime/http-engine/url/index.d.ts.map +1 -0
  166. package/build/src/runtime/http-engine/url/index.js +2 -0
  167. package/build/src/runtime/http-engine/url/index.js.map +1 -0
  168. package/build/src/runtime/http-runner/HttpRequestRunner.d.ts +3 -3
  169. package/build/src/runtime/http-runner/HttpRequestRunner.d.ts.map +1 -1
  170. package/build/src/runtime/http-runner/HttpRequestRunner.js.map +1 -1
  171. package/build/src/runtime/node/InteropInterfaces.d.ts +3 -3
  172. package/build/src/runtime/node/InteropInterfaces.d.ts.map +1 -1
  173. package/build/src/runtime/node/InteropInterfaces.js.map +1 -1
  174. package/build/src/runtime/node/ProjectRequestRunner.d.ts +2 -2
  175. package/build/src/runtime/node/ProjectRequestRunner.d.ts.map +1 -1
  176. package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
  177. package/build/src/runtime/node/ProjectRunner.d.ts.map +1 -1
  178. package/build/src/runtime/node/ProjectRunner.js +2 -2
  179. package/build/src/runtime/node/ProjectRunner.js.map +1 -1
  180. package/build/tsconfig.tsbuildinfo +1 -1
  181. package/data/models/example-generator-api.json +6 -6
  182. package/package.json +2 -2
  183. package/src/lib/logging/DefaultLogger.ts +32 -0
  184. package/src/models/ClientCertificate.ts +1 -1
  185. package/src/models/RequestConfig.ts +1 -1
  186. package/src/models/SerializableError.ts +1 -1
  187. package/src/proxy/RequestProxy.ts +2 -2
  188. package/src/runtime/http-engine/CoreEngine.ts +858 -893
  189. package/src/runtime/http-engine/PayloadSupport.ts +2 -1
  190. package/src/runtime/http-engine/auth/AuthManager.ts +242 -0
  191. package/src/runtime/http-engine/certificates/CertificateManager.ts +74 -0
  192. package/src/runtime/http-engine/compression/CompressionManager.ts +99 -0
  193. package/src/runtime/http-engine/connections/ConnectionManager.ts +123 -0
  194. package/src/runtime/http-engine/connections/DigestAuthHandler.ts +238 -0
  195. package/src/runtime/http-engine/connections/DirectConnection.ts +134 -0
  196. package/src/runtime/http-engine/connections/ProxyAuthHandler.ts +179 -0
  197. package/src/runtime/http-engine/connections/ProxyConnection.ts +55 -0
  198. package/src/runtime/http-engine/connections/TunnelConnection.ts +192 -0
  199. package/src/runtime/http-engine/constants.ts +103 -0
  200. package/src/runtime/http-engine/cookies/CookieProcessor.ts +25 -0
  201. package/src/runtime/http-engine/errors/HttpEngineErrors.ts +319 -0
  202. package/src/runtime/http-engine/message/MessageBuilder.ts +201 -0
  203. package/src/runtime/http-engine/message/MessageProcessor.ts +73 -0
  204. package/src/runtime/http-engine/ntlm/NtlmAuth.ts +16 -13
  205. package/src/runtime/http-engine/ntlm/NtlmMessage.ts +6 -6
  206. package/src/runtime/http-engine/parsers/BodyParser.ts +171 -0
  207. package/src/runtime/http-engine/parsers/HeadersParser.ts +103 -0
  208. package/src/runtime/http-engine/parsers/HttpResponseParser.ts +280 -0
  209. package/src/runtime/http-engine/parsers/StatusParser.ts +69 -0
  210. package/src/runtime/http-engine/response/ResponseProcessor.ts +46 -0
  211. package/src/runtime/http-engine/statistics/StatisticsProcessor.ts +52 -0
  212. package/src/runtime/http-engine/url/UrlProcessor.ts +55 -0
  213. package/src/runtime/http-runner/HttpRequestRunner.ts +3 -3
  214. package/src/runtime/node/InteropInterfaces.ts +3 -3
  215. package/src/runtime/node/ProjectRequestRunner.ts +2 -2
  216. package/src/runtime/node/ProjectRunner.ts +2 -2
  217. package/tests/servers/ProxyServer.ts +32 -19
  218. package/tests/servers/express-routes/ApiEndpoint.ts +24 -0
  219. package/tests/servers/express-routes/BasicAuthRoute.ts +36 -0
  220. package/tests/servers/express-routes/BearerAuthRoute.ts +35 -0
  221. package/tests/servers/express-routes/NTLMRoute.ts +2 -3
  222. package/tests/servers/express-routes/PostApi.ts +15 -2
  223. package/tests/servers/express-routes/RedirectsApi.ts +12 -1
  224. package/tests/servers/express-routes/ResponsesApi.ts +1 -1
  225. package/tests/servers/express-routes/StreamApi.ts +19 -0
  226. package/tests/servers/oauth2mock/ServerMock.js +1 -1
  227. package/tests/unit/runtime/http-engine/HttpResponseParser.spec.ts +337 -0
  228. package/tests/unit/runtime/http-engine/abort.spec.ts +4 -5
  229. package/tests/unit/runtime/http-engine/auth.spec.ts +7 -58
  230. package/tests/unit/runtime/http-engine/certificates/CertificateManager.spec.ts +482 -0
  231. package/tests/unit/runtime/http-engine/certificates.spec.ts +2 -2
  232. package/tests/unit/runtime/http-engine/compression/CompressionManager.spec.ts +498 -0
  233. package/tests/unit/runtime/http-engine/compression.spec.ts +3 -72
  234. package/tests/unit/runtime/http-engine/connections/ConnectionManager.spec.ts +379 -0
  235. package/tests/unit/runtime/http-engine/connections/DigestAuthHandler.spec.ts +164 -0
  236. package/tests/unit/runtime/http-engine/core_engine.spec.ts +561 -0
  237. package/tests/unit/runtime/http-engine/engine_statuses.spec.ts +2 -2
  238. package/tests/unit/runtime/http-engine/events.spec.ts +2 -2
  239. package/tests/unit/runtime/http-engine/headers.spec.ts +2 -88
  240. package/tests/unit/runtime/http-engine/hosts.spec.ts +2 -2
  241. package/tests/unit/runtime/http-engine/http-get.spec.ts +2 -2
  242. package/tests/unit/runtime/http-engine/http-post.spec.ts +2 -2
  243. package/tests/unit/runtime/http-engine/logger.spec.ts +0 -8
  244. package/tests/unit/runtime/http-engine/message.spec.ts +2 -194
  245. package/tests/unit/runtime/http-engine/params.spec.ts +4 -4
  246. package/tests/unit/runtime/http-engine/proxy.spec.ts +15 -14
  247. package/tests/unit/runtime/http-engine/redirects.spec.ts +2 -2
  248. package/tests/unit/runtime/http-engine/responses.spec.ts +170 -277
  249. package/tests/unit/runtime/http-engine/timeout.spec.ts +3 -3
  250. package/tests/unit/runtime/http-engine/timings.spec.ts +2 -2
  251. package/tests/unit/runtime/proxy/HttpProjectProxy.spec.ts +25 -28
  252. package/tests/unit/runtime/runners/project_runner.spec.ts +2 -2
  253. package/tests/unit/runtime/runners/request_runner.spec.ts +2 -2
  254. package/build/src/runtime/http-engine/HttpEngine.d.ts +0 -311
  255. package/build/src/runtime/http-engine/HttpEngine.d.ts.map +0 -1
  256. package/build/src/runtime/http-engine/HttpEngine.js +0 -802
  257. package/build/src/runtime/http-engine/HttpEngine.js.map +0 -1
  258. package/src/runtime/http-engine/HttpEngine.ts +0 -952
  259. package/tests/unit/runtime/http-engine/connecting.spec.ts +0 -140
@@ -0,0 +1,156 @@
1
+ import type { IncomingMessage } from 'http';
2
+ import { SerializableError } from '../../../models/SerializableError.js';
3
+ /**
4
+ * Base class for all HTTP engine errors
5
+ */
6
+ export declare class HttpEngineError extends SerializableError {
7
+ readonly category: string;
8
+ constructor(message: string, code?: number | string, category?: string);
9
+ }
10
+ /**
11
+ * Connection-related errors
12
+ */
13
+ export declare class ConnectionError extends HttpEngineError {
14
+ readonly connectionType: 'direct' | 'proxy' | 'tunnel';
15
+ constructor(message: string, code?: number | string, connectionType?: 'direct' | 'proxy' | 'tunnel');
16
+ }
17
+ /**
18
+ * Authentication-related errors
19
+ */
20
+ export declare class AuthenticationError extends HttpEngineError {
21
+ readonly authType: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm';
22
+ constructor(message: string, code?: number | string, authType?: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm');
23
+ }
24
+ /**
25
+ * Message building errors
26
+ */
27
+ export declare class MessageBuilderError extends HttpEngineError {
28
+ readonly component: 'status' | 'headers' | 'body' | 'host';
29
+ constructor(message: string, code?: number | string, component?: 'status' | 'headers' | 'body' | 'host');
30
+ }
31
+ /**
32
+ * Response parsing errors
33
+ */
34
+ export declare class ResponseParsingError extends HttpEngineError {
35
+ readonly parsingStage: 'status' | 'headers' | 'body' | 'chunked';
36
+ constructor(message: string, code?: number | string, parsingStage?: 'status' | 'headers' | 'body' | 'chunked');
37
+ }
38
+ /**
39
+ * Timeout errors
40
+ */
41
+ export declare class TimeoutError extends HttpEngineError {
42
+ readonly timeoutType: 'connection' | 'request' | 'response';
43
+ constructor(message: string, code?: number | string, timeoutType?: 'connection' | 'request' | 'response');
44
+ }
45
+ /**
46
+ * Proxy-related errors
47
+ */
48
+ export declare class ProxyError extends HttpEngineError {
49
+ readonly proxyStage: 'connection' | 'authentication' | 'tunneling' | 'configuration';
50
+ name: string;
51
+ constructor(message: string, code?: number | string, proxyStage?: 'connection' | 'authentication' | 'tunneling' | 'configuration');
52
+ }
53
+ /**
54
+ * Proxy authentication error
55
+ */
56
+ export declare class ProxyAuthenticationError extends HttpEngineError {
57
+ readonly response: IncomingMessage;
58
+ readonly head: Buffer;
59
+ name: string;
60
+ constructor(message: string, code: number | string, response: IncomingMessage, head: Buffer);
61
+ }
62
+ /**
63
+ * Payload-related errors
64
+ */
65
+ export declare class PayloadError extends HttpEngineError {
66
+ readonly payloadType: 'serialization' | 'validation' | 'unsupported';
67
+ constructor(message: string, code?: number | string, payloadType?: 'serialization' | 'validation' | 'unsupported');
68
+ }
69
+ /**
70
+ * URL parsing errors
71
+ */
72
+ export declare class UrlParsingError extends HttpEngineError {
73
+ readonly url: string;
74
+ constructor(message: string, url: string, code?: number | string);
75
+ }
76
+ /**
77
+ * Configuration errors
78
+ */
79
+ export declare class ConfigurationError extends HttpEngineError {
80
+ readonly configType: 'request' | 'proxy' | 'auth' | 'timeout';
81
+ constructor(message: string, code?: number | string, configType?: 'request' | 'proxy' | 'auth' | 'timeout');
82
+ }
83
+ /**
84
+ * Error factory for creating specific error types
85
+ */
86
+ export declare class HttpEngineErrorFactory {
87
+ /**
88
+ * Create a connection error
89
+ */
90
+ static connectionError(message: string, code?: number | string, connectionType?: 'direct' | 'proxy' | 'tunnel'): ConnectionError;
91
+ /**
92
+ * Create an authentication error
93
+ */
94
+ static authenticationError(message: string, code?: number | string, authType?: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm'): AuthenticationError;
95
+ /**
96
+ * Create a message builder error
97
+ */
98
+ static messageBuilderError(message: string, code?: number | string, component?: 'status' | 'headers' | 'body' | 'host'): MessageBuilderError;
99
+ /**
100
+ * Create a response parsing error
101
+ */
102
+ static responseParsingError(message: string, code?: number | string, parsingStage?: 'status' | 'headers' | 'body' | 'chunked'): ResponseParsingError;
103
+ /**
104
+ * Create a timeout error
105
+ */
106
+ static timeoutError(message: string, code?: number | string, timeoutType?: 'connection' | 'request' | 'response'): TimeoutError;
107
+ /**
108
+ * Create a proxy error
109
+ */
110
+ static proxyError(message: string, code?: number | string, proxyStage?: 'connection' | 'authentication' | 'tunneling' | 'configuration'): ProxyError;
111
+ /**
112
+ * Create a payload error
113
+ */
114
+ static payloadError(message: string, code?: number | string, payloadType?: 'serialization' | 'validation' | 'unsupported'): PayloadError;
115
+ /**
116
+ * Create a URL parsing error
117
+ */
118
+ static urlParsingError(message: string, url: string, code?: number | string): UrlParsingError;
119
+ /**
120
+ * Create a configuration error
121
+ */
122
+ static configurationError(message: string, code?: number | string, configType?: 'request' | 'proxy' | 'auth' | 'timeout'): ConfigurationError;
123
+ /**
124
+ * Convert a generic error to an HTTP engine error
125
+ */
126
+ static fromError(error: Error, category?: string): HttpEngineError;
127
+ /**
128
+ * Create a connection timeout error
129
+ */
130
+ static connectionTimeout(timeoutMs: number): TimeoutError;
131
+ /**
132
+ * Create a request timeout error
133
+ */
134
+ static requestTimeout(timeoutMs: number): TimeoutError;
135
+ /**
136
+ * Create a proxy authentication error
137
+ */
138
+ static proxyAuthRequired(res: IncomingMessage, head: Buffer): ProxyAuthenticationError;
139
+ /**
140
+ * Create a proxy authentication failed error
141
+ */
142
+ static proxyAuthFailed(): AuthenticationError;
143
+ /**
144
+ * Create a proxy configuration error
145
+ */
146
+ static proxyConfigError(message: string): ProxyError;
147
+ /**
148
+ * Create a payload serialization error
149
+ */
150
+ static payloadSerializationError(message: string): PayloadError;
151
+ /**
152
+ * Create an unsupported payload error
153
+ */
154
+ static unsupportedPayload(payloadType: string): PayloadError;
155
+ }
156
+ //# sourceMappingURL=HttpEngineErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpEngineErrors.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/HttpEngineErrors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ import { SerializableError } from '../../../models/SerializableError.js';
2
+ /**
3
+ * Base class for all HTTP engine errors
4
+ */
5
+ export class HttpEngineError extends SerializableError {
6
+ category;
7
+ constructor(message, code, category = 'general') {
8
+ super(message, code);
9
+ this.category = category;
10
+ }
11
+ }
12
+ /**
13
+ * Connection-related errors
14
+ */
15
+ export class ConnectionError extends HttpEngineError {
16
+ connectionType;
17
+ constructor(message, code, connectionType = 'direct') {
18
+ super(message, code, 'connection');
19
+ this.connectionType = connectionType;
20
+ }
21
+ }
22
+ /**
23
+ * Authentication-related errors
24
+ */
25
+ export class AuthenticationError extends HttpEngineError {
26
+ authType;
27
+ constructor(message, code, authType = 'request') {
28
+ super(message, code, 'authentication');
29
+ this.authType = authType;
30
+ }
31
+ }
32
+ /**
33
+ * Message building errors
34
+ */
35
+ export class MessageBuilderError extends HttpEngineError {
36
+ component;
37
+ constructor(message, code, component = 'headers') {
38
+ super(message, code, 'message');
39
+ this.component = component;
40
+ }
41
+ }
42
+ /**
43
+ * Response parsing errors
44
+ */
45
+ export class ResponseParsingError extends HttpEngineError {
46
+ parsingStage;
47
+ constructor(message, code, parsingStage = 'headers') {
48
+ super(message, code, 'parsing');
49
+ this.parsingStage = parsingStage;
50
+ }
51
+ }
52
+ /**
53
+ * Timeout errors
54
+ */
55
+ export class TimeoutError extends HttpEngineError {
56
+ timeoutType;
57
+ constructor(message, code, timeoutType = 'request') {
58
+ super(message, code, 'timeout');
59
+ this.timeoutType = timeoutType;
60
+ }
61
+ }
62
+ /**
63
+ * Proxy-related errors
64
+ */
65
+ export class ProxyError extends HttpEngineError {
66
+ proxyStage;
67
+ name = 'ProxyError';
68
+ constructor(message, code, proxyStage = 'connection') {
69
+ super(message, code, 'proxy');
70
+ this.proxyStage = proxyStage;
71
+ }
72
+ }
73
+ /**
74
+ * Proxy authentication error
75
+ */
76
+ export class ProxyAuthenticationError extends HttpEngineError {
77
+ response;
78
+ head;
79
+ name = 'ProxyAuthenticationError';
80
+ constructor(message, code, response, head) {
81
+ super(message, code, 'proxy');
82
+ this.response = response;
83
+ this.head = head;
84
+ }
85
+ }
86
+ /**
87
+ * Payload-related errors
88
+ */
89
+ export class PayloadError extends HttpEngineError {
90
+ payloadType;
91
+ constructor(message, code, payloadType = 'validation') {
92
+ super(message, code, 'payload');
93
+ this.payloadType = payloadType;
94
+ }
95
+ }
96
+ /**
97
+ * URL parsing errors
98
+ */
99
+ export class UrlParsingError extends HttpEngineError {
100
+ url;
101
+ constructor(message, url, code) {
102
+ super(message, code, 'url');
103
+ this.url = url;
104
+ }
105
+ }
106
+ /**
107
+ * Configuration errors
108
+ */
109
+ export class ConfigurationError extends HttpEngineError {
110
+ configType;
111
+ constructor(message, code, configType = 'request') {
112
+ super(message, code, 'configuration');
113
+ this.configType = configType;
114
+ }
115
+ }
116
+ /**
117
+ * Error factory for creating specific error types
118
+ */
119
+ // eslint-disable-next-line @typescript-eslint/no-extraneous-class
120
+ export class HttpEngineErrorFactory {
121
+ /**
122
+ * Create a connection error
123
+ */
124
+ static connectionError(message, code, connectionType) {
125
+ return new ConnectionError(message, code, connectionType);
126
+ }
127
+ /**
128
+ * Create an authentication error
129
+ */
130
+ static authenticationError(message, code, authType) {
131
+ return new AuthenticationError(message, code, authType);
132
+ }
133
+ /**
134
+ * Create a message builder error
135
+ */
136
+ static messageBuilderError(message, code, component) {
137
+ return new MessageBuilderError(message, code, component);
138
+ }
139
+ /**
140
+ * Create a response parsing error
141
+ */
142
+ static responseParsingError(message, code, parsingStage) {
143
+ return new ResponseParsingError(message, code, parsingStage);
144
+ }
145
+ /**
146
+ * Create a timeout error
147
+ */
148
+ static timeoutError(message, code, timeoutType) {
149
+ return new TimeoutError(message, code, timeoutType);
150
+ }
151
+ /**
152
+ * Create a proxy error
153
+ */
154
+ static proxyError(message, code, proxyStage) {
155
+ return new ProxyError(message, code, proxyStage);
156
+ }
157
+ /**
158
+ * Create a payload error
159
+ */
160
+ static payloadError(message, code, payloadType) {
161
+ return new PayloadError(message, code, payloadType);
162
+ }
163
+ /**
164
+ * Create a URL parsing error
165
+ */
166
+ static urlParsingError(message, url, code) {
167
+ return new UrlParsingError(message, url, code);
168
+ }
169
+ /**
170
+ * Create a configuration error
171
+ */
172
+ static configurationError(message, code, configType) {
173
+ return new ConfigurationError(message, code, configType);
174
+ }
175
+ /**
176
+ * Convert a generic error to an HTTP engine error
177
+ */
178
+ static fromError(error, category = 'general') {
179
+ if (error instanceof HttpEngineError) {
180
+ return error;
181
+ }
182
+ return new HttpEngineError(error.message, undefined, category);
183
+ }
184
+ /**
185
+ * Create a connection timeout error
186
+ */
187
+ static connectionTimeout(timeoutMs) {
188
+ return new TimeoutError(`Connection timeout after ${timeoutMs}ms`, 408, 'connection');
189
+ }
190
+ /**
191
+ * Create a request timeout error
192
+ */
193
+ static requestTimeout(timeoutMs) {
194
+ return new TimeoutError(`Request timeout after ${timeoutMs}ms`, 408, 'request');
195
+ }
196
+ /**
197
+ * Create a proxy authentication error
198
+ */
199
+ static proxyAuthRequired(res, head) {
200
+ return new ProxyAuthenticationError('Proxy authentication required', 407, res, head);
201
+ }
202
+ /**
203
+ * Create a proxy authentication failed error
204
+ */
205
+ static proxyAuthFailed() {
206
+ return new AuthenticationError('Proxy authentication failed', 407, 'proxy');
207
+ }
208
+ /**
209
+ * Create a proxy configuration error
210
+ */
211
+ static proxyConfigError(message) {
212
+ return new ProxyError(message, 400, 'configuration');
213
+ }
214
+ /**
215
+ * Create a payload serialization error
216
+ */
217
+ static payloadSerializationError(message) {
218
+ return new PayloadError(message, 400, 'serialization');
219
+ }
220
+ /**
221
+ * Create an unsupported payload error
222
+ */
223
+ static unsupportedPayload(payloadType) {
224
+ return new PayloadError(`Unsupported payload type: ${payloadType}`, 400, 'unsupported');
225
+ }
226
+ }
227
+ //# sourceMappingURL=HttpEngineErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpEngineErrors.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/HttpEngineErrors.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IncomingMessage } from 'http'\nimport { SerializableError } from '../../../models/SerializableError.js'\n\n/**\n * Base class for all HTTP engine errors\n */\nexport class HttpEngineError extends SerializableError {\n readonly category: string\n\n constructor(message: string, code?: number | string, category = 'general') {\n super(message, code)\n this.category = category\n }\n}\n\n/**\n * Connection-related errors\n */\nexport class ConnectionError extends HttpEngineError {\n readonly connectionType: 'direct' | 'proxy' | 'tunnel'\n\n constructor(message: string, code?: number | string, connectionType: 'direct' | 'proxy' | 'tunnel' = 'direct') {\n super(message, code, 'connection')\n this.connectionType = connectionType\n }\n}\n\n/**\n * Authentication-related errors\n */\nexport class AuthenticationError extends HttpEngineError {\n readonly authType: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm'\n\n constructor(\n message: string,\n code?: number | string,\n authType: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm' = 'request'\n ) {\n super(message, code, 'authentication')\n this.authType = authType\n }\n}\n\n/**\n * Message building errors\n */\nexport class MessageBuilderError extends HttpEngineError {\n readonly component: 'status' | 'headers' | 'body' | 'host'\n\n constructor(message: string, code?: number | string, component: 'status' | 'headers' | 'body' | 'host' = 'headers') {\n super(message, code, 'message')\n this.component = component\n }\n}\n\n/**\n * Response parsing errors\n */\nexport class ResponseParsingError extends HttpEngineError {\n readonly parsingStage: 'status' | 'headers' | 'body' | 'chunked'\n\n constructor(\n message: string,\n code?: number | string,\n parsingStage: 'status' | 'headers' | 'body' | 'chunked' = 'headers'\n ) {\n super(message, code, 'parsing')\n this.parsingStage = parsingStage\n }\n}\n\n/**\n * Timeout errors\n */\nexport class TimeoutError extends HttpEngineError {\n readonly timeoutType: 'connection' | 'request' | 'response'\n\n constructor(message: string, code?: number | string, timeoutType: 'connection' | 'request' | 'response' = 'request') {\n super(message, code, 'timeout')\n this.timeoutType = timeoutType\n }\n}\n\n/**\n * Proxy-related errors\n */\nexport class ProxyError extends HttpEngineError {\n readonly proxyStage: 'connection' | 'authentication' | 'tunneling' | 'configuration'\n override name = 'ProxyError'\n\n constructor(\n message: string,\n code?: number | string,\n proxyStage: 'connection' | 'authentication' | 'tunneling' | 'configuration' = 'connection'\n ) {\n super(message, code, 'proxy')\n this.proxyStage = proxyStage\n }\n}\n\n/**\n * Proxy authentication error\n */\nexport class ProxyAuthenticationError extends HttpEngineError {\n override name = 'ProxyAuthenticationError'\n\n constructor(\n message: string,\n code: number | string,\n readonly response: IncomingMessage,\n readonly head: Buffer\n ) {\n super(message, code, 'proxy')\n }\n}\n\n/**\n * Payload-related errors\n */\nexport class PayloadError extends HttpEngineError {\n readonly payloadType: 'serialization' | 'validation' | 'unsupported'\n\n constructor(\n message: string,\n code?: number | string,\n payloadType: 'serialization' | 'validation' | 'unsupported' = 'validation'\n ) {\n super(message, code, 'payload')\n this.payloadType = payloadType\n }\n}\n\n/**\n * URL parsing errors\n */\nexport class UrlParsingError extends HttpEngineError {\n readonly url: string\n\n constructor(message: string, url: string, code?: number | string) {\n super(message, code, 'url')\n this.url = url\n }\n}\n\n/**\n * Configuration errors\n */\nexport class ConfigurationError extends HttpEngineError {\n readonly configType: 'request' | 'proxy' | 'auth' | 'timeout'\n\n constructor(\n message: string,\n code?: number | string,\n configType: 'request' | 'proxy' | 'auth' | 'timeout' = 'request'\n ) {\n super(message, code, 'configuration')\n this.configType = configType\n }\n}\n\n/**\n * Error factory for creating specific error types\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class HttpEngineErrorFactory {\n /**\n * Create a connection error\n */\n static connectionError(\n message: string,\n code?: number | string,\n connectionType?: 'direct' | 'proxy' | 'tunnel'\n ): ConnectionError {\n return new ConnectionError(message, code, connectionType)\n }\n\n /**\n * Create an authentication error\n */\n static authenticationError(\n message: string,\n code?: number | string,\n authType?: 'request' | 'proxy' | 'digest' | 'basic' | 'ntlm'\n ): AuthenticationError {\n return new AuthenticationError(message, code, authType)\n }\n\n /**\n * Create a message builder error\n */\n static messageBuilderError(\n message: string,\n code?: number | string,\n component?: 'status' | 'headers' | 'body' | 'host'\n ): MessageBuilderError {\n return new MessageBuilderError(message, code, component)\n }\n\n /**\n * Create a response parsing error\n */\n static responseParsingError(\n message: string,\n code?: number | string,\n parsingStage?: 'status' | 'headers' | 'body' | 'chunked'\n ): ResponseParsingError {\n return new ResponseParsingError(message, code, parsingStage)\n }\n\n /**\n * Create a timeout error\n */\n static timeoutError(\n message: string,\n code?: number | string,\n timeoutType?: 'connection' | 'request' | 'response'\n ): TimeoutError {\n return new TimeoutError(message, code, timeoutType)\n }\n\n /**\n * Create a proxy error\n */\n static proxyError(\n message: string,\n code?: number | string,\n proxyStage?: 'connection' | 'authentication' | 'tunneling' | 'configuration'\n ): ProxyError {\n return new ProxyError(message, code, proxyStage)\n }\n\n /**\n * Create a payload error\n */\n static payloadError(\n message: string,\n code?: number | string,\n payloadType?: 'serialization' | 'validation' | 'unsupported'\n ): PayloadError {\n return new PayloadError(message, code, payloadType)\n }\n\n /**\n * Create a URL parsing error\n */\n static urlParsingError(message: string, url: string, code?: number | string): UrlParsingError {\n return new UrlParsingError(message, url, code)\n }\n\n /**\n * Create a configuration error\n */\n static configurationError(\n message: string,\n code?: number | string,\n configType?: 'request' | 'proxy' | 'auth' | 'timeout'\n ): ConfigurationError {\n return new ConfigurationError(message, code, configType)\n }\n\n /**\n * Convert a generic error to an HTTP engine error\n */\n static fromError(error: Error, category = 'general'): HttpEngineError {\n if (error instanceof HttpEngineError) {\n return error\n }\n return new HttpEngineError(error.message, undefined, category)\n }\n\n /**\n * Create a connection timeout error\n */\n static connectionTimeout(timeoutMs: number): TimeoutError {\n return new TimeoutError(`Connection timeout after ${timeoutMs}ms`, 408, 'connection')\n }\n\n /**\n * Create a request timeout error\n */\n static requestTimeout(timeoutMs: number): TimeoutError {\n return new TimeoutError(`Request timeout after ${timeoutMs}ms`, 408, 'request')\n }\n\n /**\n * Create a proxy authentication error\n */\n static proxyAuthRequired(res: IncomingMessage, head: Buffer): ProxyAuthenticationError {\n return new ProxyAuthenticationError('Proxy authentication required', 407, res, head)\n }\n\n /**\n * Create a proxy authentication failed error\n */\n static proxyAuthFailed(): AuthenticationError {\n return new AuthenticationError('Proxy authentication failed', 407, 'proxy')\n }\n\n /**\n * Create a proxy configuration error\n */\n static proxyConfigError(message: string): ProxyError {\n return new ProxyError(message, 400, 'configuration')\n }\n\n /**\n * Create a payload serialization error\n */\n static payloadSerializationError(message: string): PayloadError {\n return new PayloadError(message, 400, 'serialization')\n }\n\n /**\n * Create an unsupported payload error\n */\n static unsupportedPayload(payloadType: string): PayloadError {\n return new PayloadError(`Unsupported payload type: ${payloadType}`, 400, 'unsupported')\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { HttpEngineError, ConnectionError, AuthenticationError, MessageBuilderError, ResponseParsingError, TimeoutError, ProxyError, PayloadError, UrlParsingError, ConfigurationError, HttpEngineErrorFactory, } from './HttpEngineErrors.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { HttpEngineError, ConnectionError, AuthenticationError, MessageBuilderError, ResponseParsingError, TimeoutError, ProxyError, PayloadError, UrlParsingError, ConfigurationError, HttpEngineErrorFactory, } from './HttpEngineErrors.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,uBAAuB,CAAA","sourcesContent":["export {\n HttpEngineError,\n ConnectionError,\n AuthenticationError,\n MessageBuilderError,\n ResponseParsingError,\n TimeoutError,\n ProxyError,\n PayloadError,\n UrlParsingError,\n ConfigurationError,\n HttpEngineErrorFactory,\n} from './HttpEngineErrors.js'\n"]}
@@ -0,0 +1,66 @@
1
+ import { Headers } from '../../../lib/headers/Headers.js';
2
+ import { IHttpRequest } from '../../../models/HttpRequest.js';
3
+ import { type Logger, type ILogObj } from '../../../lib/logging/index.js';
4
+ export interface MessageBuilderOptions {
5
+ logger: Logger<ILogObj>;
6
+ request: IHttpRequest;
7
+ hasProxy: boolean;
8
+ isProxyTunnel: boolean;
9
+ hostHeader?: string;
10
+ }
11
+ export interface MessageBuilderContext {
12
+ headers: Headers;
13
+ buffer?: Buffer;
14
+ statusLine: string;
15
+ hostHeader?: string;
16
+ }
17
+ /**
18
+ * Builds HTTP messages for requests
19
+ */
20
+ export declare class MessageBuilder {
21
+ private logger;
22
+ private request;
23
+ private hasProxy;
24
+ private isProxyTunnel;
25
+ private hostHeader?;
26
+ private hostTestReg;
27
+ constructor(options: MessageBuilderOptions);
28
+ /**
29
+ * Builds a complete HTTP message
30
+ */
31
+ buildMessage(headers: Headers, buffer?: Buffer): Buffer;
32
+ /**
33
+ * Creates the message context with all components
34
+ */
35
+ private createMessageContext;
36
+ /**
37
+ * Assembles the complete HTTP message from components
38
+ */
39
+ private assembleMessage;
40
+ /**
41
+ * Creates the HTTP status line
42
+ */
43
+ private createStatusLine;
44
+ /**
45
+ * Determines if a host header is required and returns it
46
+ */
47
+ private getHostHeader;
48
+ /**
49
+ * Tests if current connection is required to add `host` header.
50
+ * It returns `false` only if `host` header has been already provided.
51
+ */
52
+ private hostRequired;
53
+ /**
54
+ * Updates the host header for the message builder
55
+ */
56
+ updateHostHeader(hostHeader: string): void;
57
+ /**
58
+ * Creates a status line for a specific request
59
+ */
60
+ createStatusLineForRequest(request: IHttpRequest, hasProxy: boolean, isProxyTunnel: boolean): string;
61
+ /**
62
+ * Validates if a request needs a host header
63
+ */
64
+ static hostRequiredForRequest(request: IHttpRequest): boolean;
65
+ }
66
+ //# sourceMappingURL=MessageBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBuilder.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/MessageBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAG7D,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAEzE,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IACvB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAAmB;gBAE1B,OAAO,EAAE,qBAAqB;IAQ1C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAUvD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,eAAe;IAuCvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM;IAkBpG;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;CAQ9D"}
@@ -0,0 +1,161 @@
1
+ import * as PayloadSupport from '../PayloadSupport.js';
2
+ import { HTTP_VERSION, CRLF_BUFFER } from '../constants.js';
3
+ /**
4
+ * Builds HTTP messages for requests
5
+ */
6
+ export class MessageBuilder {
7
+ logger;
8
+ request;
9
+ hasProxy;
10
+ isProxyTunnel;
11
+ hostHeader;
12
+ hostTestReg = /^\s*host\s*:/im;
13
+ constructor(options) {
14
+ this.logger = options.logger;
15
+ this.request = options.request;
16
+ this.hasProxy = options.hasProxy;
17
+ this.isProxyTunnel = options.isProxyTunnel;
18
+ this.hostHeader = options.hostHeader;
19
+ }
20
+ /**
21
+ * Builds a complete HTTP message
22
+ */
23
+ buildMessage(headers, buffer) {
24
+ this.logger.debug('Preparing HTTP message...');
25
+ const context = this.createMessageContext(headers, buffer);
26
+ const messageBuffer = this.assembleMessage(context);
27
+ this.logger.debug('The message is ready.');
28
+ return messageBuffer;
29
+ }
30
+ /**
31
+ * Creates the message context with all components
32
+ */
33
+ createMessageContext(headers, buffer) {
34
+ const statusLine = this.createStatusLine();
35
+ this.logger.debug(`Created message status: ${statusLine}`);
36
+ const hostHeader = this.getHostHeader();
37
+ if (hostHeader) {
38
+ this.logger.debug(`Adding the "host" header: ${hostHeader}`);
39
+ }
40
+ return {
41
+ headers,
42
+ buffer,
43
+ statusLine,
44
+ hostHeader,
45
+ };
46
+ }
47
+ /**
48
+ * Assembles the complete HTTP message from components
49
+ */
50
+ assembleMessage(context) {
51
+ const { headers, buffer, statusLine, hostHeader } = context;
52
+ // Build the header lines
53
+ const headerLines = [statusLine];
54
+ if (hostHeader) {
55
+ headerLines.push(`Host: ${hostHeader}`);
56
+ }
57
+ // Add custom headers
58
+ const customHeaders = headers.toString();
59
+ if (customHeaders) {
60
+ this.logger.debug('Adding headers to the request...');
61
+ this.logger.silly('Headers:', [...headers.keys()]);
62
+ headerLines.push(PayloadSupport.normalizeString(customHeaders));
63
+ }
64
+ // Join all header lines
65
+ const headerString = headerLines.join('\r\n');
66
+ // Create buffers
67
+ const startBuffer = Buffer.from(headerString, 'utf8');
68
+ const endBuffer = CRLF_BUFFER;
69
+ // Calculate total size
70
+ let totalSize = startBuffer.length + endBuffer.length;
71
+ if (buffer) {
72
+ totalSize += buffer.length;
73
+ }
74
+ // Assemble the final message
75
+ if (buffer) {
76
+ return Buffer.concat([startBuffer, endBuffer, buffer], totalSize);
77
+ }
78
+ else {
79
+ return Buffer.concat([startBuffer, endBuffer], totalSize);
80
+ }
81
+ }
82
+ /**
83
+ * Creates the HTTP status line
84
+ */
85
+ createStatusLine() {
86
+ const { request, hasProxy, isProxyTunnel } = this;
87
+ const parts = [request.method];
88
+ if (hasProxy && !isProxyTunnel) {
89
+ // For proxy requests, use the full URL
90
+ parts.push(request.url);
91
+ }
92
+ else {
93
+ // For direct requests, use the path
94
+ const uri = new URL(request.url);
95
+ let path = uri.pathname;
96
+ if (uri.search) {
97
+ path += uri.search;
98
+ }
99
+ parts.push(path);
100
+ }
101
+ parts.push(HTTP_VERSION);
102
+ return parts.join(' ');
103
+ }
104
+ /**
105
+ * Determines if a host header is required and returns it
106
+ */
107
+ getHostHeader() {
108
+ if (!this.hostRequired()) {
109
+ return undefined;
110
+ }
111
+ return this.hostHeader;
112
+ }
113
+ /**
114
+ * Tests if current connection is required to add `host` header.
115
+ * It returns `false` only if `host` header has been already provided.
116
+ */
117
+ hostRequired() {
118
+ const headers = this.request.headers;
119
+ if (typeof headers !== 'string') {
120
+ return true;
121
+ }
122
+ return !this.hostTestReg.test(headers);
123
+ }
124
+ /**
125
+ * Updates the host header for the message builder
126
+ */
127
+ updateHostHeader(hostHeader) {
128
+ this.hostHeader = hostHeader;
129
+ }
130
+ /**
131
+ * Creates a status line for a specific request
132
+ */
133
+ createStatusLineForRequest(request, hasProxy, isProxyTunnel) {
134
+ const parts = [request.method];
135
+ if (hasProxy && !isProxyTunnel) {
136
+ parts.push(request.url);
137
+ }
138
+ else {
139
+ const uri = new URL(request.url);
140
+ let path = uri.pathname;
141
+ if (uri.search) {
142
+ path += uri.search;
143
+ }
144
+ parts.push(path);
145
+ }
146
+ parts.push(HTTP_VERSION);
147
+ return parts.join(' ');
148
+ }
149
+ /**
150
+ * Validates if a request needs a host header
151
+ */
152
+ static hostRequiredForRequest(request) {
153
+ const hostTestReg = /^\s*host\s*:/im;
154
+ const headers = request.headers;
155
+ if (typeof headers !== 'string') {
156
+ return true;
157
+ }
158
+ return !hostTestReg.test(headers);
159
+ }
160
+ }
161
+ //# sourceMappingURL=MessageBuilder.js.map