@api-client/core 0.18.11 → 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 (264) 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/modeling/DomainModel.d.ts.map +1 -1
  18. package/build/src/modeling/DomainModel.js +11 -4
  19. package/build/src/modeling/DomainModel.js.map +1 -1
  20. package/build/src/models/ClientCertificate.d.ts +1 -1
  21. package/build/src/models/ClientCertificate.js.map +1 -1
  22. package/build/src/models/RequestConfig.d.ts +1 -1
  23. package/build/src/models/RequestConfig.js.map +1 -1
  24. package/build/src/models/SerializableError.d.ts +1 -1
  25. package/build/src/models/SerializableError.d.ts.map +1 -1
  26. package/build/src/models/SerializableError.js.map +1 -1
  27. package/build/src/proxy/RequestProxy.d.ts.map +1 -1
  28. package/build/src/proxy/RequestProxy.js +2 -2
  29. package/build/src/proxy/RequestProxy.js.map +1 -1
  30. package/build/src/runtime/http-engine/CoreEngine.d.ts +218 -139
  31. package/build/src/runtime/http-engine/CoreEngine.d.ts.map +1 -1
  32. package/build/src/runtime/http-engine/CoreEngine.js +716 -870
  33. package/build/src/runtime/http-engine/CoreEngine.js.map +1 -1
  34. package/build/src/runtime/http-engine/PayloadSupport.d.ts.map +1 -1
  35. package/build/src/runtime/http-engine/PayloadSupport.js +2 -1
  36. package/build/src/runtime/http-engine/PayloadSupport.js.map +1 -1
  37. package/build/src/runtime/http-engine/auth/AuthManager.d.ts +73 -0
  38. package/build/src/runtime/http-engine/auth/AuthManager.d.ts.map +1 -0
  39. package/build/src/runtime/http-engine/auth/AuthManager.js +186 -0
  40. package/build/src/runtime/http-engine/auth/AuthManager.js.map +1 -0
  41. package/build/src/runtime/http-engine/auth/index.d.ts +2 -0
  42. package/build/src/runtime/http-engine/auth/index.d.ts.map +1 -0
  43. package/build/src/runtime/http-engine/auth/index.js +2 -0
  44. package/build/src/runtime/http-engine/auth/index.js.map +1 -0
  45. package/build/src/runtime/http-engine/certificates/CertificateManager.d.ts +11 -0
  46. package/build/src/runtime/http-engine/certificates/CertificateManager.d.ts.map +1 -0
  47. package/build/src/runtime/http-engine/certificates/CertificateManager.js +76 -0
  48. package/build/src/runtime/http-engine/certificates/CertificateManager.js.map +1 -0
  49. package/build/src/runtime/http-engine/certificates/index.d.ts +2 -0
  50. package/build/src/runtime/http-engine/certificates/index.d.ts.map +1 -0
  51. package/build/src/runtime/http-engine/certificates/index.js +2 -0
  52. package/build/src/runtime/http-engine/certificates/index.js.map +1 -0
  53. package/build/src/runtime/http-engine/compression/CompressionManager.d.ts +25 -0
  54. package/build/src/runtime/http-engine/compression/CompressionManager.d.ts.map +1 -0
  55. package/build/src/runtime/http-engine/compression/CompressionManager.js +89 -0
  56. package/build/src/runtime/http-engine/compression/CompressionManager.js.map +1 -0
  57. package/build/src/runtime/http-engine/compression/index.d.ts +2 -0
  58. package/build/src/runtime/http-engine/compression/index.d.ts.map +1 -0
  59. package/build/src/runtime/http-engine/compression/index.js +2 -0
  60. package/build/src/runtime/http-engine/compression/index.js.map +1 -0
  61. package/build/src/runtime/http-engine/connections/ConnectionManager.d.ts +57 -0
  62. package/build/src/runtime/http-engine/connections/ConnectionManager.d.ts.map +1 -0
  63. package/build/src/runtime/http-engine/connections/ConnectionManager.js +78 -0
  64. package/build/src/runtime/http-engine/connections/ConnectionManager.js.map +1 -0
  65. package/build/src/runtime/http-engine/connections/DigestAuthHandler.d.ts +70 -0
  66. package/build/src/runtime/http-engine/connections/DigestAuthHandler.d.ts.map +1 -0
  67. package/build/src/runtime/http-engine/connections/DigestAuthHandler.js +184 -0
  68. package/build/src/runtime/http-engine/connections/DigestAuthHandler.js.map +1 -0
  69. package/build/src/runtime/http-engine/connections/DirectConnection.d.ts +22 -0
  70. package/build/src/runtime/http-engine/connections/DirectConnection.d.ts.map +1 -0
  71. package/build/src/runtime/http-engine/connections/DirectConnection.js +105 -0
  72. package/build/src/runtime/http-engine/connections/DirectConnection.js.map +1 -0
  73. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.d.ts +60 -0
  74. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.d.ts.map +1 -0
  75. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.js +138 -0
  76. package/build/src/runtime/http-engine/connections/ProxyAuthHandler.js.map +1 -0
  77. package/build/src/runtime/http-engine/connections/ProxyConnection.d.ts +14 -0
  78. package/build/src/runtime/http-engine/connections/ProxyConnection.d.ts.map +1 -0
  79. package/build/src/runtime/http-engine/connections/ProxyConnection.js +47 -0
  80. package/build/src/runtime/http-engine/connections/ProxyConnection.js.map +1 -0
  81. package/build/src/runtime/http-engine/connections/TunnelConnection.d.ts +13 -0
  82. package/build/src/runtime/http-engine/connections/TunnelConnection.d.ts.map +1 -0
  83. package/build/src/runtime/http-engine/connections/TunnelConnection.js +175 -0
  84. package/build/src/runtime/http-engine/connections/TunnelConnection.js.map +1 -0
  85. package/build/src/runtime/http-engine/connections/index.d.ts +7 -0
  86. package/build/src/runtime/http-engine/connections/index.d.ts.map +1 -0
  87. package/build/src/runtime/http-engine/connections/index.js +7 -0
  88. package/build/src/runtime/http-engine/connections/index.js.map +1 -0
  89. package/build/src/runtime/http-engine/constants.d.ts +69 -0
  90. package/build/src/runtime/http-engine/constants.d.ts.map +1 -0
  91. package/build/src/runtime/http-engine/constants.js +90 -0
  92. package/build/src/runtime/http-engine/constants.js.map +1 -0
  93. package/build/src/runtime/http-engine/cookies/CookieProcessor.d.ts +5 -0
  94. package/build/src/runtime/http-engine/cookies/CookieProcessor.d.ts.map +1 -0
  95. package/build/src/runtime/http-engine/cookies/CookieProcessor.js +20 -0
  96. package/build/src/runtime/http-engine/cookies/CookieProcessor.js.map +1 -0
  97. package/build/src/runtime/http-engine/cookies/index.d.ts +2 -0
  98. package/build/src/runtime/http-engine/cookies/index.d.ts.map +1 -0
  99. package/build/src/runtime/http-engine/cookies/index.js +2 -0
  100. package/build/src/runtime/http-engine/cookies/index.js.map +1 -0
  101. package/build/src/runtime/http-engine/errors/HttpEngineErrors.d.ts +156 -0
  102. package/build/src/runtime/http-engine/errors/HttpEngineErrors.d.ts.map +1 -0
  103. package/build/src/runtime/http-engine/errors/HttpEngineErrors.js +227 -0
  104. package/build/src/runtime/http-engine/errors/HttpEngineErrors.js.map +1 -0
  105. package/build/src/runtime/http-engine/errors/index.d.ts +2 -0
  106. package/build/src/runtime/http-engine/errors/index.d.ts.map +1 -0
  107. package/build/src/runtime/http-engine/errors/index.js +2 -0
  108. package/build/src/runtime/http-engine/errors/index.js.map +1 -0
  109. package/build/src/runtime/http-engine/message/MessageBuilder.d.ts +66 -0
  110. package/build/src/runtime/http-engine/message/MessageBuilder.d.ts.map +1 -0
  111. package/build/src/runtime/http-engine/message/MessageBuilder.js +161 -0
  112. package/build/src/runtime/http-engine/message/MessageBuilder.js.map +1 -0
  113. package/build/src/runtime/http-engine/message/MessageProcessor.d.ts +27 -0
  114. package/build/src/runtime/http-engine/message/MessageProcessor.d.ts.map +1 -0
  115. package/build/src/runtime/http-engine/message/MessageProcessor.js +51 -0
  116. package/build/src/runtime/http-engine/message/MessageProcessor.js.map +1 -0
  117. package/build/src/runtime/http-engine/message/index.d.ts +3 -0
  118. package/build/src/runtime/http-engine/message/index.d.ts.map +1 -0
  119. package/build/src/runtime/http-engine/message/index.js +3 -0
  120. package/build/src/runtime/http-engine/message/index.js.map +1 -0
  121. package/build/src/runtime/http-engine/ntlm/NtlmAuth.d.ts +2 -8
  122. package/build/src/runtime/http-engine/ntlm/NtlmAuth.d.ts.map +1 -1
  123. package/build/src/runtime/http-engine/ntlm/NtlmAuth.js +11 -5
  124. package/build/src/runtime/http-engine/ntlm/NtlmAuth.js.map +1 -1
  125. package/build/src/runtime/http-engine/ntlm/NtlmMessage.js +6 -6
  126. package/build/src/runtime/http-engine/ntlm/NtlmMessage.js.map +1 -1
  127. package/build/src/runtime/http-engine/parsers/BodyParser.d.ts +39 -0
  128. package/build/src/runtime/http-engine/parsers/BodyParser.d.ts.map +1 -0
  129. package/build/src/runtime/http-engine/parsers/BodyParser.js +145 -0
  130. package/build/src/runtime/http-engine/parsers/BodyParser.js.map +1 -0
  131. package/build/src/runtime/http-engine/parsers/HeadersParser.d.ts +29 -0
  132. package/build/src/runtime/http-engine/parsers/HeadersParser.d.ts.map +1 -0
  133. package/build/src/runtime/http-engine/parsers/HeadersParser.js +88 -0
  134. package/build/src/runtime/http-engine/parsers/HeadersParser.js.map +1 -0
  135. package/build/src/runtime/http-engine/parsers/HttpResponseParser.d.ts +91 -0
  136. package/build/src/runtime/http-engine/parsers/HttpResponseParser.d.ts.map +1 -0
  137. package/build/src/runtime/http-engine/parsers/HttpResponseParser.js +236 -0
  138. package/build/src/runtime/http-engine/parsers/HttpResponseParser.js.map +1 -0
  139. package/build/src/runtime/http-engine/parsers/StatusParser.d.ts +20 -0
  140. package/build/src/runtime/http-engine/parsers/StatusParser.d.ts.map +1 -0
  141. package/build/src/runtime/http-engine/parsers/StatusParser.js +51 -0
  142. package/build/src/runtime/http-engine/parsers/StatusParser.js.map +1 -0
  143. package/build/src/runtime/http-engine/parsers/index.d.ts +5 -0
  144. package/build/src/runtime/http-engine/parsers/index.d.ts.map +1 -0
  145. package/build/src/runtime/http-engine/parsers/index.js +5 -0
  146. package/build/src/runtime/http-engine/parsers/index.js.map +1 -0
  147. package/build/src/runtime/http-engine/response/ResponseProcessor.d.ts +22 -0
  148. package/build/src/runtime/http-engine/response/ResponseProcessor.d.ts.map +1 -0
  149. package/build/src/runtime/http-engine/response/ResponseProcessor.js +25 -0
  150. package/build/src/runtime/http-engine/response/ResponseProcessor.js.map +1 -0
  151. package/build/src/runtime/http-engine/response/index.d.ts +2 -0
  152. package/build/src/runtime/http-engine/response/index.d.ts.map +1 -0
  153. package/build/src/runtime/http-engine/response/index.js +2 -0
  154. package/build/src/runtime/http-engine/response/index.js.map +1 -0
  155. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.d.ts +7 -0
  156. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.d.ts.map +1 -0
  157. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.js +40 -0
  158. package/build/src/runtime/http-engine/statistics/StatisticsProcessor.js.map +1 -0
  159. package/build/src/runtime/http-engine/statistics/index.d.ts +2 -0
  160. package/build/src/runtime/http-engine/statistics/index.d.ts.map +1 -0
  161. package/build/src/runtime/http-engine/statistics/index.js +2 -0
  162. package/build/src/runtime/http-engine/statistics/index.js.map +1 -0
  163. package/build/src/runtime/http-engine/url/UrlProcessor.d.ts +24 -0
  164. package/build/src/runtime/http-engine/url/UrlProcessor.d.ts.map +1 -0
  165. package/build/src/runtime/http-engine/url/UrlProcessor.js +50 -0
  166. package/build/src/runtime/http-engine/url/UrlProcessor.js.map +1 -0
  167. package/build/src/runtime/http-engine/url/index.d.ts +2 -0
  168. package/build/src/runtime/http-engine/url/index.d.ts.map +1 -0
  169. package/build/src/runtime/http-engine/url/index.js +2 -0
  170. package/build/src/runtime/http-engine/url/index.js.map +1 -0
  171. package/build/src/runtime/http-runner/HttpRequestRunner.d.ts +3 -3
  172. package/build/src/runtime/http-runner/HttpRequestRunner.d.ts.map +1 -1
  173. package/build/src/runtime/http-runner/HttpRequestRunner.js.map +1 -1
  174. package/build/src/runtime/node/InteropInterfaces.d.ts +3 -3
  175. package/build/src/runtime/node/InteropInterfaces.d.ts.map +1 -1
  176. package/build/src/runtime/node/InteropInterfaces.js.map +1 -1
  177. package/build/src/runtime/node/ProjectRequestRunner.d.ts +2 -2
  178. package/build/src/runtime/node/ProjectRequestRunner.d.ts.map +1 -1
  179. package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
  180. package/build/src/runtime/node/ProjectRunner.d.ts.map +1 -1
  181. package/build/src/runtime/node/ProjectRunner.js +2 -2
  182. package/build/src/runtime/node/ProjectRunner.js.map +1 -1
  183. package/build/tsconfig.tsbuildinfo +1 -1
  184. package/data/models/example-generator-api.json +24 -24
  185. package/package.json +2 -2
  186. package/src/lib/logging/DefaultLogger.ts +32 -0
  187. package/src/modeling/DomainModel.ts +11 -4
  188. package/src/models/ClientCertificate.ts +1 -1
  189. package/src/models/RequestConfig.ts +1 -1
  190. package/src/models/SerializableError.ts +1 -1
  191. package/src/proxy/RequestProxy.ts +2 -2
  192. package/src/runtime/http-engine/CoreEngine.ts +858 -893
  193. package/src/runtime/http-engine/PayloadSupport.ts +2 -1
  194. package/src/runtime/http-engine/auth/AuthManager.ts +242 -0
  195. package/src/runtime/http-engine/certificates/CertificateManager.ts +74 -0
  196. package/src/runtime/http-engine/compression/CompressionManager.ts +99 -0
  197. package/src/runtime/http-engine/connections/ConnectionManager.ts +123 -0
  198. package/src/runtime/http-engine/connections/DigestAuthHandler.ts +238 -0
  199. package/src/runtime/http-engine/connections/DirectConnection.ts +134 -0
  200. package/src/runtime/http-engine/connections/ProxyAuthHandler.ts +179 -0
  201. package/src/runtime/http-engine/connections/ProxyConnection.ts +55 -0
  202. package/src/runtime/http-engine/connections/TunnelConnection.ts +192 -0
  203. package/src/runtime/http-engine/constants.ts +103 -0
  204. package/src/runtime/http-engine/cookies/CookieProcessor.ts +25 -0
  205. package/src/runtime/http-engine/errors/HttpEngineErrors.ts +319 -0
  206. package/src/runtime/http-engine/message/MessageBuilder.ts +201 -0
  207. package/src/runtime/http-engine/message/MessageProcessor.ts +73 -0
  208. package/src/runtime/http-engine/ntlm/NtlmAuth.ts +16 -13
  209. package/src/runtime/http-engine/ntlm/NtlmMessage.ts +6 -6
  210. package/src/runtime/http-engine/parsers/BodyParser.ts +171 -0
  211. package/src/runtime/http-engine/parsers/HeadersParser.ts +103 -0
  212. package/src/runtime/http-engine/parsers/HttpResponseParser.ts +280 -0
  213. package/src/runtime/http-engine/parsers/StatusParser.ts +69 -0
  214. package/src/runtime/http-engine/response/ResponseProcessor.ts +46 -0
  215. package/src/runtime/http-engine/statistics/StatisticsProcessor.ts +52 -0
  216. package/src/runtime/http-engine/url/UrlProcessor.ts +55 -0
  217. package/src/runtime/http-runner/HttpRequestRunner.ts +3 -3
  218. package/src/runtime/node/InteropInterfaces.ts +3 -3
  219. package/src/runtime/node/ProjectRequestRunner.ts +2 -2
  220. package/src/runtime/node/ProjectRunner.ts +2 -2
  221. package/tests/servers/ProxyServer.ts +32 -19
  222. package/tests/servers/express-routes/ApiEndpoint.ts +24 -0
  223. package/tests/servers/express-routes/BasicAuthRoute.ts +36 -0
  224. package/tests/servers/express-routes/BearerAuthRoute.ts +35 -0
  225. package/tests/servers/express-routes/NTLMRoute.ts +2 -3
  226. package/tests/servers/express-routes/PostApi.ts +15 -2
  227. package/tests/servers/express-routes/RedirectsApi.ts +12 -1
  228. package/tests/servers/express-routes/ResponsesApi.ts +1 -1
  229. package/tests/servers/express-routes/StreamApi.ts +19 -0
  230. package/tests/servers/oauth2mock/ServerMock.js +1 -1
  231. package/tests/unit/modeling/domain_model_entities.spec.ts +306 -1
  232. package/tests/unit/runtime/http-engine/HttpResponseParser.spec.ts +337 -0
  233. package/tests/unit/runtime/http-engine/abort.spec.ts +4 -5
  234. package/tests/unit/runtime/http-engine/auth.spec.ts +7 -58
  235. package/tests/unit/runtime/http-engine/certificates/CertificateManager.spec.ts +482 -0
  236. package/tests/unit/runtime/http-engine/certificates.spec.ts +2 -2
  237. package/tests/unit/runtime/http-engine/compression/CompressionManager.spec.ts +498 -0
  238. package/tests/unit/runtime/http-engine/compression.spec.ts +3 -72
  239. package/tests/unit/runtime/http-engine/connections/ConnectionManager.spec.ts +379 -0
  240. package/tests/unit/runtime/http-engine/connections/DigestAuthHandler.spec.ts +164 -0
  241. package/tests/unit/runtime/http-engine/core_engine.spec.ts +561 -0
  242. package/tests/unit/runtime/http-engine/engine_statuses.spec.ts +2 -2
  243. package/tests/unit/runtime/http-engine/events.spec.ts +2 -2
  244. package/tests/unit/runtime/http-engine/headers.spec.ts +2 -88
  245. package/tests/unit/runtime/http-engine/hosts.spec.ts +2 -2
  246. package/tests/unit/runtime/http-engine/http-get.spec.ts +2 -2
  247. package/tests/unit/runtime/http-engine/http-post.spec.ts +2 -2
  248. package/tests/unit/runtime/http-engine/logger.spec.ts +0 -8
  249. package/tests/unit/runtime/http-engine/message.spec.ts +2 -194
  250. package/tests/unit/runtime/http-engine/params.spec.ts +4 -4
  251. package/tests/unit/runtime/http-engine/proxy.spec.ts +15 -14
  252. package/tests/unit/runtime/http-engine/redirects.spec.ts +2 -2
  253. package/tests/unit/runtime/http-engine/responses.spec.ts +170 -277
  254. package/tests/unit/runtime/http-engine/timeout.spec.ts +3 -3
  255. package/tests/unit/runtime/http-engine/timings.spec.ts +2 -2
  256. package/tests/unit/runtime/proxy/HttpProjectProxy.spec.ts +25 -28
  257. package/tests/unit/runtime/runners/project_runner.spec.ts +2 -2
  258. package/tests/unit/runtime/runners/request_runner.spec.ts +2 -2
  259. package/build/src/runtime/http-engine/HttpEngine.d.ts +0 -311
  260. package/build/src/runtime/http-engine/HttpEngine.d.ts.map +0 -1
  261. package/build/src/runtime/http-engine/HttpEngine.js +0 -802
  262. package/build/src/runtime/http-engine/HttpEngine.js.map +0 -1
  263. package/src/runtime/http-engine/HttpEngine.ts +0 -952
  264. package/tests/unit/runtime/http-engine/connecting.spec.ts +0 -140
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageBuilder.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/MessageBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Headers } from '../../../lib/headers/Headers.js'\nimport { IHttpRequest } from '../../../models/HttpRequest.js'\nimport * as PayloadSupport from '../PayloadSupport.js'\nimport { HTTP_VERSION, CRLF_BUFFER } from '../constants.js'\nimport { type Logger, type ILogObj } from '../../../lib/logging/index.js'\n\nexport interface MessageBuilderOptions {\n logger: Logger<ILogObj>\n request: IHttpRequest\n hasProxy: boolean\n isProxyTunnel: boolean\n hostHeader?: string\n}\n\nexport interface MessageBuilderContext {\n headers: Headers\n buffer?: Buffer\n statusLine: string\n hostHeader?: string\n}\n\n/**\n * Builds HTTP messages for requests\n */\nexport class MessageBuilder {\n private logger: Logger<ILogObj>\n private request: IHttpRequest\n private hasProxy: boolean\n private isProxyTunnel: boolean\n private hostHeader?: string\n private hostTestReg = /^\\s*host\\s*:/im\n\n constructor(options: MessageBuilderOptions) {\n this.logger = options.logger\n this.request = options.request\n this.hasProxy = options.hasProxy\n this.isProxyTunnel = options.isProxyTunnel\n this.hostHeader = options.hostHeader\n }\n\n /**\n * Builds a complete HTTP message\n */\n buildMessage(headers: Headers, buffer?: Buffer): Buffer {\n this.logger.debug('Preparing HTTP message...')\n\n const context = this.createMessageContext(headers, buffer)\n const messageBuffer = this.assembleMessage(context)\n\n this.logger.debug('The message is ready.')\n return messageBuffer\n }\n\n /**\n * Creates the message context with all components\n */\n private createMessageContext(headers: Headers, buffer?: Buffer): MessageBuilderContext {\n const statusLine = this.createStatusLine()\n this.logger.debug(`Created message status: ${statusLine}`)\n\n const hostHeader = this.getHostHeader()\n if (hostHeader) {\n this.logger.debug(`Adding the \"host\" header: ${hostHeader}`)\n }\n\n return {\n headers,\n buffer,\n statusLine,\n hostHeader,\n }\n }\n\n /**\n * Assembles the complete HTTP message from components\n */\n private assembleMessage(context: MessageBuilderContext): Buffer {\n const { headers, buffer, statusLine, hostHeader } = context\n\n // Build the header lines\n const headerLines = [statusLine]\n\n if (hostHeader) {\n headerLines.push(`Host: ${hostHeader}`)\n }\n\n // Add custom headers\n const customHeaders = headers.toString()\n if (customHeaders) {\n this.logger.debug('Adding headers to the request...')\n this.logger.silly('Headers:', [...headers.keys()])\n headerLines.push(PayloadSupport.normalizeString(customHeaders))\n }\n\n // Join all header lines\n const headerString = headerLines.join('\\r\\n')\n\n // Create buffers\n const startBuffer = Buffer.from(headerString, 'utf8')\n const endBuffer = CRLF_BUFFER\n\n // Calculate total size\n let totalSize = startBuffer.length + endBuffer.length\n if (buffer) {\n totalSize += buffer.length\n }\n\n // Assemble the final message\n if (buffer) {\n return Buffer.concat([startBuffer, endBuffer, buffer], totalSize)\n } else {\n return Buffer.concat([startBuffer, endBuffer], totalSize)\n }\n }\n\n /**\n * Creates the HTTP status line\n */\n private createStatusLine(): string {\n const { request, hasProxy, isProxyTunnel } = this\n const parts = [request.method]\n\n if (hasProxy && !isProxyTunnel) {\n // For proxy requests, use the full URL\n parts.push(request.url)\n } else {\n // For direct requests, use the path\n const uri = new URL(request.url)\n let path = uri.pathname\n if (uri.search) {\n path += uri.search\n }\n parts.push(path)\n }\n\n parts.push(HTTP_VERSION)\n return parts.join(' ')\n }\n\n /**\n * Determines if a host header is required and returns it\n */\n private getHostHeader(): string | undefined {\n if (!this.hostRequired()) {\n return undefined\n }\n return this.hostHeader\n }\n\n /**\n * Tests if current connection is required to add `host` header.\n * It returns `false` only if `host` header has been already provided.\n */\n private hostRequired(): boolean {\n const headers = this.request.headers\n if (typeof headers !== 'string') {\n return true\n }\n return !this.hostTestReg.test(headers)\n }\n\n /**\n * Updates the host header for the message builder\n */\n updateHostHeader(hostHeader: string): void {\n this.hostHeader = hostHeader\n }\n\n /**\n * Creates a status line for a specific request\n */\n createStatusLineForRequest(request: IHttpRequest, hasProxy: boolean, isProxyTunnel: boolean): string {\n const parts = [request.method]\n\n if (hasProxy && !isProxyTunnel) {\n parts.push(request.url)\n } else {\n const uri = new URL(request.url)\n let path = uri.pathname\n if (uri.search) {\n path += uri.search\n }\n parts.push(path)\n }\n\n parts.push(HTTP_VERSION)\n return parts.join(' ')\n }\n\n /**\n * Validates if a request needs a host header\n */\n static hostRequiredForRequest(request: IHttpRequest): boolean {\n const hostTestReg = /^\\s*host\\s*:/im\n const headers = request.headers\n if (typeof headers !== 'string') {\n return true\n }\n return !hostTestReg.test(headers)\n }\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import { Headers } from '../../../lib/headers/Headers.js';
2
+ import { HttpRequest } from '../../../models/HttpRequest.js';
3
+ import { IRequestAuthorization } from '../../../models/RequestAuthorization.js';
4
+ export interface MessagePreparationContext {
5
+ request: HttpRequest;
6
+ hasProxy: boolean;
7
+ isProxyTunnel: boolean;
8
+ hostHeader?: string;
9
+ defaultHeaders?: boolean;
10
+ defaultUserAgent?: string;
11
+ defaultAccept?: string;
12
+ proxyUsername?: string;
13
+ proxyPassword?: string;
14
+ proxyAuthorization?: string;
15
+ authorization?: IRequestAuthorization[];
16
+ }
17
+ /**
18
+ * Prepares headers list to be sent to the remote machine.
19
+ * If `defaultHeaders` option is set then it adds `user-agent` and `accept`
20
+ * headers.
21
+ */
22
+ export declare function prepareHeaders(headers: Headers, context: MessagePreparationContext, withPayload?: boolean): void;
23
+ /**
24
+ * Generate proxy authorization header
25
+ */
26
+ export declare function generateProxyAuthHeader(context: MessagePreparationContext): string | undefined;
27
+ //# sourceMappingURL=MessageProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/MessageProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AAE/E,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,OAAO,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,qBAAqB,EAAE,CAAA;CACxC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,WAAW,UAAQ,GAAG,IAAI,CA2B9G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,GAAG,SAAS,CAiB9F"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Prepares headers list to be sent to the remote machine.
3
+ * If `defaultHeaders` option is set then it adds `user-agent` and `accept`
4
+ * headers.
5
+ */
6
+ export function prepareHeaders(headers, context, withPayload = false) {
7
+ const { defaultHeaders, defaultUserAgent, defaultAccept, request } = context;
8
+ if (defaultHeaders) {
9
+ if (!headers.has('user-agent')) {
10
+ if (defaultUserAgent) {
11
+ headers.set('user-agent', defaultUserAgent);
12
+ }
13
+ else {
14
+ headers.set('user-agent', 'api client');
15
+ }
16
+ }
17
+ if (!headers.has('accept')) {
18
+ if (defaultAccept) {
19
+ headers.set('accept', defaultAccept);
20
+ }
21
+ else {
22
+ headers.set('accept', '*/*');
23
+ }
24
+ }
25
+ }
26
+ if (withPayload) {
27
+ if (!headers.has('content-type') && request.payloadOptions) {
28
+ if (request.payloadOptions.mime) {
29
+ headers.set('content-type', request.payloadOptions.mime);
30
+ }
31
+ }
32
+ }
33
+ }
34
+ /**
35
+ * Generate proxy authorization header
36
+ */
37
+ export function generateProxyAuthHeader(context) {
38
+ const { hasProxy, isProxyTunnel, proxyUsername, proxyPassword, proxyAuthorization } = context;
39
+ if (!hasProxy || isProxyTunnel) {
40
+ return undefined;
41
+ }
42
+ if (proxyAuthorization) {
43
+ return proxyAuthorization;
44
+ }
45
+ if (proxyUsername && proxyPassword) {
46
+ const auth = `${proxyUsername}:${proxyPassword}`;
47
+ return `Basic ${Buffer.from(auth).toString('base64')}`;
48
+ }
49
+ return undefined;
50
+ }
51
+ //# sourceMappingURL=MessageProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageProcessor.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/MessageProcessor.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,OAAkC,EAAE,WAAW,GAAG,KAAK;IACtG,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IAE5E,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,IAAI,gBAAgB,EAAE,CAAC;gBACrB,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAA;YAC7C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAkC;IACxE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAA;IAE7F,IAAI,CAAC,QAAQ,IAAI,aAAa,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAED,IAAI,aAAa,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,aAAa,IAAI,aAAa,EAAE,CAAA;QAChD,OAAO,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAA;IACxD,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC","sourcesContent":["import { Headers } from '../../../lib/headers/Headers.js'\nimport { HttpRequest } from '../../../models/HttpRequest.js'\nimport { IRequestAuthorization } from '../../../models/RequestAuthorization.js'\n\nexport interface MessagePreparationContext {\n request: HttpRequest\n hasProxy: boolean\n isProxyTunnel: boolean\n hostHeader?: string\n defaultHeaders?: boolean\n defaultUserAgent?: string\n defaultAccept?: string\n proxyUsername?: string\n proxyPassword?: string\n proxyAuthorization?: string\n authorization?: IRequestAuthorization[]\n}\n\n/**\n * Prepares headers list to be sent to the remote machine.\n * If `defaultHeaders` option is set then it adds `user-agent` and `accept`\n * headers.\n */\nexport function prepareHeaders(headers: Headers, context: MessagePreparationContext, withPayload = false): void {\n const { defaultHeaders, defaultUserAgent, defaultAccept, request } = context\n\n if (defaultHeaders) {\n if (!headers.has('user-agent')) {\n if (defaultUserAgent) {\n headers.set('user-agent', defaultUserAgent)\n } else {\n headers.set('user-agent', 'api client')\n }\n }\n if (!headers.has('accept')) {\n if (defaultAccept) {\n headers.set('accept', defaultAccept)\n } else {\n headers.set('accept', '*/*')\n }\n }\n }\n\n if (withPayload) {\n if (!headers.has('content-type') && request.payloadOptions) {\n if (request.payloadOptions.mime) {\n headers.set('content-type', request.payloadOptions.mime)\n }\n }\n }\n}\n\n/**\n * Generate proxy authorization header\n */\nexport function generateProxyAuthHeader(context: MessagePreparationContext): string | undefined {\n const { hasProxy, isProxyTunnel, proxyUsername, proxyPassword, proxyAuthorization } = context\n\n if (!hasProxy || isProxyTunnel) {\n return undefined\n }\n\n if (proxyAuthorization) {\n return proxyAuthorization\n }\n\n if (proxyUsername && proxyPassword) {\n const auth = `${proxyUsername}:${proxyPassword}`\n return `Basic ${Buffer.from(auth).toString('base64')}`\n }\n\n return undefined\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export { MessageBuilder, type MessageBuilderOptions, type MessageBuilderContext } from './MessageBuilder.js';
2
+ export { prepareHeaders, generateProxyAuthHeader, type MessagePreparationContext } from './MessageProcessor.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { MessageBuilder } from './MessageBuilder.js';
2
+ export { prepareHeaders, generateProxyAuthHeader } from './MessageProcessor.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/message/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA0D,MAAM,qBAAqB,CAAA;AAC5G,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAkC,MAAM,uBAAuB,CAAA","sourcesContent":["export { MessageBuilder, type MessageBuilderOptions, type MessageBuilderContext } from './MessageBuilder.js'\nexport { prepareHeaders, generateProxyAuthHeader, type MessagePreparationContext } from './MessageProcessor.js'\n"]}
@@ -1,10 +1,5 @@
1
1
  import { NtlmMessage } from './NtlmMessage.js';
2
- export interface INtlmAuthConfig {
3
- domain?: string;
4
- username: string;
5
- password: string;
6
- url: string;
7
- }
2
+ import type { INtlmAuthorization } from '../../../models/Authorization.js';
8
3
  /**
9
4
  * A base class for auth methods used in the library.
10
5
  * On the base of https://github.com/erlandranvinge/ntlm.js/blob/master/ntlm.js
@@ -13,10 +8,9 @@ export declare class NtlmAuth {
13
8
  domain: string;
14
9
  uid: string;
15
10
  passwd: string;
16
- url: string;
17
11
  lmHashedPassword?: string;
18
12
  ntHashedPassword?: string;
19
- constructor(opts: INtlmAuthConfig);
13
+ constructor(opts: INtlmAuthorization);
20
14
  createMessage1(hostname: string): NtlmMessage;
21
15
  getChallenge(data: string): string;
22
16
  createMessage3(challenge: string, hostname: string): NtlmMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"NtlmAuth.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/NtlmAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;;GAGG;AACH,qBAAa,QAAQ;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;gBAEb,IAAI,EAAE,eAAe;IASjC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAoB7C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAYlC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAmDhE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAmC9B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAWhD,cAAc,IAAI,IAAI;CAsBvB"}
1
+ {"version":3,"file":"NtlmAuth.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/NtlmAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAE1E;;;GAGG;AACH,qBAAa,QAAQ;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;gBAEb,IAAI,EAAE,kBAAkB;IAQpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAoB7C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAuBlC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAmDhE,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAmC9B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAWhD,cAAc,IAAI,IAAI;CAsBvB"}
@@ -9,14 +9,12 @@ export class NtlmAuth {
9
9
  domain;
10
10
  uid;
11
11
  passwd;
12
- url;
13
12
  lmHashedPassword;
14
13
  ntHashedPassword;
15
14
  constructor(opts) {
16
15
  this.domain = opts.domain || '';
17
- this.uid = opts.username;
18
- this.passwd = opts.password;
19
- this.url = opts.url;
16
+ this.uid = opts.username || '';
17
+ this.passwd = opts.password || '';
20
18
  this.setCredentials();
21
19
  }
22
20
  createMessage1(hostname) {
@@ -39,7 +37,15 @@ export class NtlmAuth {
39
37
  return msg1;
40
38
  }
41
39
  getChallenge(data) {
42
- const msg2 = new NtlmMessage(data);
40
+ if (!data || typeof data !== 'string') {
41
+ throw new Error('Invalid NTLM challenge data: data is required and must be a string.');
42
+ }
43
+ // Remove "NTLM " prefix if present (for robustness)
44
+ const cleanData = data.replace(/^NTLM\s+/i, '');
45
+ if (!cleanData) {
46
+ throw new Error('Invalid NTLM challenge data: empty or invalid format.');
47
+ }
48
+ const msg2 = new NtlmMessage(cleanData);
43
49
  if (msg2.getString(0, 8) !== 'NTLMSSP\0') {
44
50
  throw new Error('Invalid NTLM response header.');
45
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NtlmAuth.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/NtlmAuth.ts"],"names":[],"mappings":"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","sourcesContent":["import { Des } from './Des.js'\nimport { MD4 } from './MD4.js'\nimport { NtlmMessage } from './NtlmMessage.js'\n\nexport interface INtlmAuthConfig {\n domain?: string\n username: string\n password: string\n url: string\n}\n\n/**\n * A base class for auth methods used in the library.\n * On the base of https://github.com/erlandranvinge/ntlm.js/blob/master/ntlm.js\n */\nexport class NtlmAuth {\n domain: string\n uid: string\n passwd: string\n url: string\n lmHashedPassword?: string\n ntHashedPassword?: string\n\n constructor(opts: INtlmAuthConfig) {\n this.domain = opts.domain || ''\n this.uid = opts.username\n this.passwd = opts.password\n this.url = opts.url\n\n this.setCredentials()\n }\n\n createMessage1(hostname: string): NtlmMessage {\n const msg1 = new NtlmMessage()\n msg1.addString('NTLMSSP\\0')\n msg1.addByte(1)\n msg1.addString('\\0\\0\\0')\n msg1.addShort(0xb203)\n msg1.addString('\\0\\0')\n msg1.addShort(this.domain.length)\n msg1.addShort(this.domain.length)\n msg1.addShort(32 + hostname.length)\n msg1.addString('\\0\\0')\n msg1.addShort(hostname.length)\n msg1.addShort(hostname.length)\n msg1.addShort(32)\n msg1.addString('\\0\\0')\n msg1.addString(hostname.toUpperCase())\n msg1.addString(this.domain.toUpperCase())\n return msg1\n }\n\n getChallenge(data: string): string {\n const msg2 = new NtlmMessage(data)\n if (msg2.getString(0, 8) !== 'NTLMSSP\\0') {\n throw new Error('Invalid NTLM response header.')\n }\n if (msg2.getByte(8) !== 2) {\n throw new Error('Invalid NTLM response type.')\n }\n const challenge = msg2.getString(24, 8)\n return challenge\n }\n\n createMessage3(challenge: string, hostname: string): NtlmMessage {\n const lmResponse = this.buildResponse(this.lmHashedPassword as string, challenge)\n const ntResponse = this.buildResponse(this.ntHashedPassword as string, challenge)\n const username = this.uid\n const domain = this.domain\n const msg3 = new NtlmMessage()\n\n msg3.addString('NTLMSSP\\0')\n msg3.addByte(3)\n msg3.addString('\\0\\0\\0')\n\n msg3.addShort(24) // lmResponse\n msg3.addShort(24)\n msg3.addShort(64 + (domain.length + username.length + hostname.length) * 2)\n msg3.addString('\\0\\0')\n\n msg3.addShort(24) // ntResponse\n msg3.addShort(24)\n msg3.addShort(88 + (domain.length + username.length + hostname.length) * 2)\n msg3.addString('\\0\\0')\n\n msg3.addShort(domain.length * 2) // Domain.\n msg3.addShort(domain.length * 2)\n msg3.addShort(64)\n msg3.addString('\\0\\0')\n\n msg3.addShort(username.length * 2) // Username.\n msg3.addShort(username.length * 2)\n msg3.addShort(64 + domain.length * 2)\n msg3.addShort('\\0\\0')\n\n msg3.addShort(hostname.length * 2) // Hostname.\n msg3.addShort(hostname.length * 2)\n msg3.addShort(64 + (domain.length + username.length) * 2)\n msg3.addString('\\0\\0')\n\n msg3.addString('\\0\\0\\0\\0')\n msg3.addShort(112 + (domain.length + username.length + hostname.length) * 2)\n msg3.addString('\\0\\0')\n msg3.addShort(0x8201)\n msg3.addString('\\0\\0')\n\n msg3.addString(domain.toUpperCase(), true) // \"Some\" string are passed as UTF-16.\n msg3.addString(username, true)\n msg3.addString(hostname.toUpperCase(), true)\n msg3.addString(lmResponse)\n msg3.addString(ntResponse)\n\n return msg3\n }\n\n createKey(str: string): string {\n const key56: number[] = []\n while (str.length < 7) {\n str += '\\0'\n }\n str = str.substr(0, 7)\n str.split('').map((c) => {\n key56.push(c.charCodeAt(0))\n })\n const key = [0, 0, 0, 0, 0, 0, 0, 0]\n key[0] = key56[0] // Convert 56 bit key to 64 bit.\n key[1] = ((key56[0] << 7) & 0xff) | (key56[1] >> 1)\n key[2] = ((key56[1] << 6) & 0xff) | (key56[2] >> 2)\n key[3] = ((key56[2] << 5) & 0xff) | (key56[3] >> 3)\n key[4] = ((key56[3] << 4) & 0xff) | (key56[4] >> 4)\n key[5] = ((key56[4] << 3) & 0xff) | (key56[5] >> 5)\n key[6] = ((key56[5] << 2) & 0xff) | (key56[6] >> 6)\n key[7] = (key56[6] << 1) & 0xff\n for (let i = 0; i < key.length; i++) {\n // Fix DES key parity bits.\n let bit = 0\n for (let k = 0; k < 7; k++) {\n const t = key[i] >> k\n bit = (t ^ bit) & 0x1\n }\n key[i] = (key[i] & 0xfe) | bit\n }\n\n let result = ''\n key.forEach((i) => {\n result += String.fromCharCode(i)\n })\n return result\n }\n\n buildResponse(key: string, text: string): string {\n while (key.length < 21) {\n key += '\\0'\n }\n const key1 = this.createKey(key.substr(0, 7))\n const key2 = this.createKey(key.substr(7, 7))\n const key3 = this.createKey(key.substr(14, 7))\n return Des.des(key1, text, 1, 0) + Des.des(key2, text, 1, 0) + Des.des(key3, text, 1, 0)\n }\n\n // to be called by constructor\n setCredentials(): void {\n const domain = this.domain\n const password = this.passwd\n const magic = 'KGS!@#$%' // Create LM password hash.\n let lmPassword = password.toUpperCase().substr(0, 14)\n while (lmPassword.length < 14) {\n lmPassword += '\\0'\n }\n const key1 = this.createKey(lmPassword)\n const key2 = this.createKey(lmPassword.substr(7))\n const lmHashedPassword = Des.des(key1, magic, 1, 0) + Des.des(key2, magic, 1, 0)\n\n let ntPassword = '' // Create NT password hash.\n for (let i = 0; i < password.length; i++) {\n ntPassword += password.charAt(i) + '\\0'\n }\n const ntHashedPassword = MD4.str(ntPassword)\n\n this.domain = domain\n this.lmHashedPassword = lmHashedPassword\n this.ntHashedPassword = ntHashedPassword\n }\n}\n"]}
1
+ {"version":3,"file":"NtlmAuth.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/NtlmAuth.ts"],"names":[],"mappings":"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","sourcesContent":["import { Des } from './Des.js'\nimport { MD4 } from './MD4.js'\nimport { NtlmMessage } from './NtlmMessage.js'\nimport type { INtlmAuthorization } from '../../../models/Authorization.js'\n\n/**\n * A base class for auth methods used in the library.\n * On the base of https://github.com/erlandranvinge/ntlm.js/blob/master/ntlm.js\n */\nexport class NtlmAuth {\n domain: string\n uid: string\n passwd: string\n lmHashedPassword?: string\n ntHashedPassword?: string\n\n constructor(opts: INtlmAuthorization) {\n this.domain = opts.domain || ''\n this.uid = opts.username || ''\n this.passwd = opts.password || ''\n\n this.setCredentials()\n }\n\n createMessage1(hostname: string): NtlmMessage {\n const msg1 = new NtlmMessage()\n msg1.addString('NTLMSSP\\0')\n msg1.addByte(1)\n msg1.addString('\\0\\0\\0')\n msg1.addShort(0xb203)\n msg1.addString('\\0\\0')\n msg1.addShort(this.domain.length)\n msg1.addShort(this.domain.length)\n msg1.addShort(32 + hostname.length)\n msg1.addString('\\0\\0')\n msg1.addShort(hostname.length)\n msg1.addShort(hostname.length)\n msg1.addShort(32)\n msg1.addString('\\0\\0')\n msg1.addString(hostname.toUpperCase())\n msg1.addString(this.domain.toUpperCase())\n return msg1\n }\n\n getChallenge(data: string): string {\n if (!data || typeof data !== 'string') {\n throw new Error('Invalid NTLM challenge data: data is required and must be a string.')\n }\n\n // Remove \"NTLM \" prefix if present (for robustness)\n const cleanData = data.replace(/^NTLM\\s+/i, '')\n\n if (!cleanData) {\n throw new Error('Invalid NTLM challenge data: empty or invalid format.')\n }\n\n const msg2 = new NtlmMessage(cleanData)\n if (msg2.getString(0, 8) !== 'NTLMSSP\\0') {\n throw new Error('Invalid NTLM response header.')\n }\n if (msg2.getByte(8) !== 2) {\n throw new Error('Invalid NTLM response type.')\n }\n const challenge = msg2.getString(24, 8)\n return challenge\n }\n\n createMessage3(challenge: string, hostname: string): NtlmMessage {\n const lmResponse = this.buildResponse(this.lmHashedPassword as string, challenge)\n const ntResponse = this.buildResponse(this.ntHashedPassword as string, challenge)\n const username = this.uid\n const domain = this.domain\n const msg3 = new NtlmMessage()\n\n msg3.addString('NTLMSSP\\0')\n msg3.addByte(3)\n msg3.addString('\\0\\0\\0')\n\n msg3.addShort(24) // lmResponse\n msg3.addShort(24)\n msg3.addShort(64 + (domain.length + username.length + hostname.length) * 2)\n msg3.addString('\\0\\0')\n\n msg3.addShort(24) // ntResponse\n msg3.addShort(24)\n msg3.addShort(88 + (domain.length + username.length + hostname.length) * 2)\n msg3.addString('\\0\\0')\n\n msg3.addShort(domain.length * 2) // Domain.\n msg3.addShort(domain.length * 2)\n msg3.addShort(64)\n msg3.addString('\\0\\0')\n\n msg3.addShort(username.length * 2) // Username.\n msg3.addShort(username.length * 2)\n msg3.addShort(64 + domain.length * 2)\n msg3.addShort('\\0\\0')\n\n msg3.addShort(hostname.length * 2) // Hostname.\n msg3.addShort(hostname.length * 2)\n msg3.addShort(64 + (domain.length + username.length) * 2)\n msg3.addString('\\0\\0')\n\n msg3.addString('\\0\\0\\0\\0')\n msg3.addShort(112 + (domain.length + username.length + hostname.length) * 2)\n msg3.addString('\\0\\0')\n msg3.addShort(0x8201)\n msg3.addString('\\0\\0')\n\n msg3.addString(domain.toUpperCase(), true) // \"Some\" string are passed as UTF-16.\n msg3.addString(username, true)\n msg3.addString(hostname.toUpperCase(), true)\n msg3.addString(lmResponse)\n msg3.addString(ntResponse)\n\n return msg3\n }\n\n createKey(str: string): string {\n const key56: number[] = []\n while (str.length < 7) {\n str += '\\0'\n }\n str = str.substr(0, 7)\n str.split('').map((c) => {\n key56.push(c.charCodeAt(0))\n })\n const key = [0, 0, 0, 0, 0, 0, 0, 0]\n key[0] = key56[0] // Convert 56 bit key to 64 bit.\n key[1] = ((key56[0] << 7) & 0xff) | (key56[1] >> 1)\n key[2] = ((key56[1] << 6) & 0xff) | (key56[2] >> 2)\n key[3] = ((key56[2] << 5) & 0xff) | (key56[3] >> 3)\n key[4] = ((key56[3] << 4) & 0xff) | (key56[4] >> 4)\n key[5] = ((key56[4] << 3) & 0xff) | (key56[5] >> 5)\n key[6] = ((key56[5] << 2) & 0xff) | (key56[6] >> 6)\n key[7] = (key56[6] << 1) & 0xff\n for (let i = 0; i < key.length; i++) {\n // Fix DES key parity bits.\n let bit = 0\n for (let k = 0; k < 7; k++) {\n const t = key[i] >> k\n bit = (t ^ bit) & 0x1\n }\n key[i] = (key[i] & 0xfe) | bit\n }\n\n let result = ''\n key.forEach((i) => {\n result += String.fromCharCode(i)\n })\n return result\n }\n\n buildResponse(key: string, text: string): string {\n while (key.length < 21) {\n key += '\\0'\n }\n const key1 = this.createKey(key.substr(0, 7))\n const key2 = this.createKey(key.substr(7, 7))\n const key3 = this.createKey(key.substr(14, 7))\n return Des.des(key1, text, 1, 0) + Des.des(key2, text, 1, 0) + Des.des(key3, text, 1, 0)\n }\n\n // to be called by constructor\n setCredentials(): void {\n const domain = this.domain\n const password = this.passwd\n const magic = 'KGS!@#$%' // Create LM password hash.\n let lmPassword = password.toUpperCase().substr(0, 14)\n while (lmPassword.length < 14) {\n lmPassword += '\\0'\n }\n const key1 = this.createKey(lmPassword)\n const key2 = this.createKey(lmPassword.substr(7))\n const lmHashedPassword = Des.des(key1, magic, 1, 0) + Des.des(key2, magic, 1, 0)\n\n let ntPassword = '' // Create NT password hash.\n for (let i = 0; i < password.length; i++) {\n ntPassword += password.charAt(i) + '\\0'\n }\n const ntHashedPassword = MD4.str(ntPassword)\n\n this.domain = domain\n this.lmHashedPassword = lmHashedPassword\n this.ntHashedPassword = ntHashedPassword\n }\n}\n"]}
@@ -5,13 +5,13 @@ export class NtlmMessage {
5
5
  return;
6
6
  }
7
7
  if (data.indexOf('NTLM ') === 0) {
8
- data = data.substr(5);
8
+ data = data.substring(5);
9
+ }
10
+ // Use Buffer instead of atob for Node.js compatibility
11
+ const buffer = Buffer.from(data, 'base64');
12
+ for (const byte of buffer) {
13
+ this.data.push(byte);
9
14
  }
10
- atob(data)
11
- .split('')
12
- .map((c) => {
13
- this.data.push(c.charCodeAt(0));
14
- });
15
15
  }
16
16
  addByte(b) {
17
17
  this.data.push(b);
@@ -1 +1 @@
1
- {"version":3,"file":"NtlmMessage.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/NtlmMessage.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACtB,IAAI,GAAa,EAAE,CAAA;IAEnB,YAAY,IAAa;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC;aACP,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,CAAC,CAAS;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,QAAQ,CAAC,CAAkB;QACzB,MAAM,KAAK,GAAG,CAAW,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAe;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,kDAAkD;YAClD,GAAG,GAAG,GAAG;iBACN,KAAK,CAAC,EAAE,CAAC;iBACT,GAAG,CAAC,UAAU,CAAC;gBACd,OAAO,CAAC,GAAG,IAAI,CAAA;YACjB,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACb,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,MAAc;QACtC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnC,OAAO,EAAE,CAAA;YACX,CAAC;YACD,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,QAAQ,CAAC,QAAQ,CAAC;aAClB,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;CACF","sourcesContent":["export class NtlmMessage {\n data: number[] = []\n\n constructor(data?: string) {\n if (!data) {\n return\n }\n if (data.indexOf('NTLM ') === 0) {\n data = data.substr(5)\n }\n atob(data)\n .split('')\n .map((c) => {\n this.data.push(c.charCodeAt(0))\n })\n }\n\n addByte(b: number): void {\n this.data.push(b)\n }\n\n addShort(s: number | string): void {\n const typed = s as number\n this.data.push(typed & 0xff)\n this.data.push((typed >> 8) & 0xff)\n }\n\n addString(str: string, utf16?: boolean): void {\n if (utf16) {\n // Fake UTF16 by padding each character in string.\n str = str\n .split('')\n .map(function (c) {\n return c + '\\0'\n })\n .join('')\n }\n for (let i = 0; i < str.length; i++) {\n this.data.push(str.charCodeAt(i))\n }\n }\n\n getString(offset: number, length: number): string {\n let result = ''\n for (let i = 0; i < length; i++) {\n if (offset + i >= this.data.length) {\n return ''\n }\n result += String.fromCharCode(this.data[offset + i])\n }\n return result\n }\n\n getByte(offset: number): number {\n return this.data[offset]\n }\n\n toBase64(): string {\n const str = String.fromCharCode.apply(null, this.data)\n return Buffer.from(str)\n .toString('base64')\n .replace(/.{76}(?=.)/g, '$&')\n }\n}\n"]}
1
+ {"version":3,"file":"NtlmMessage.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/ntlm/NtlmMessage.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACtB,IAAI,GAAa,EAAE,CAAA;IAEnB,YAAY,IAAa;QACvB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAC1B,CAAC;QACD,uDAAuD;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,CAAC,CAAS;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IAED,QAAQ,CAAC,CAAkB;QACzB,MAAM,KAAK,GAAG,CAAW,CAAA;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,KAAe;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,kDAAkD;YAClD,GAAG,GAAG,GAAG;iBACN,KAAK,CAAC,EAAE,CAAC;iBACT,GAAG,CAAC,UAAU,CAAC;gBACd,OAAO,CAAC,GAAG,IAAI,CAAA;YACjB,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAA;QACb,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,MAAc;QACtC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnC,OAAO,EAAE,CAAA;YACX,CAAC;YACD,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,QAAQ,CAAC,QAAQ,CAAC;aAClB,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;CACF","sourcesContent":["export class NtlmMessage {\n data: number[] = []\n\n constructor(data?: string) {\n if (!data) {\n return\n }\n if (data.indexOf('NTLM ') === 0) {\n data = data.substring(5)\n }\n // Use Buffer instead of atob for Node.js compatibility\n const buffer = Buffer.from(data, 'base64')\n for (const byte of buffer) {\n this.data.push(byte)\n }\n }\n\n addByte(b: number): void {\n this.data.push(b)\n }\n\n addShort(s: number | string): void {\n const typed = s as number\n this.data.push(typed & 0xff)\n this.data.push((typed >> 8) & 0xff)\n }\n\n addString(str: string, utf16?: boolean): void {\n if (utf16) {\n // Fake UTF16 by padding each character in string.\n str = str\n .split('')\n .map(function (c) {\n return c + '\\0'\n })\n .join('')\n }\n for (let i = 0; i < str.length; i++) {\n this.data.push(str.charCodeAt(i))\n }\n }\n\n getString(offset: number, length: number): string {\n let result = ''\n for (let i = 0; i < length; i++) {\n if (offset + i >= this.data.length) {\n return ''\n }\n result += String.fromCharCode(this.data[offset + i])\n }\n return result\n }\n\n getByte(offset: number): number {\n return this.data[offset]\n }\n\n toBase64(): string {\n const str = String.fromCharCode.apply(null, this.data)\n return Buffer.from(str)\n .toString('base64')\n .replace(/.{76}(?=.)/g, '$&')\n }\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { type Logger, type ILogObj } from '../../../lib/logging/index.js';
2
+ import { ResponseInfo } from './HttpResponseParser.js';
3
+ export type BodyCompleteCallback = (body: Buffer) => void;
4
+ /**
5
+ * Parser for HTTP body data
6
+ */
7
+ export declare class BodyParser {
8
+ private logger;
9
+ private responseInfo;
10
+ private rawBody?;
11
+ constructor(logger: Logger<ILogObj>, responseInfo: ResponseInfo);
12
+ /**
13
+ * Process body with content-length encoding
14
+ * @param data Buffer containing body data
15
+ * @param onComplete Callback when body is complete
16
+ */
17
+ processContentLength(data: Buffer, onComplete: BodyCompleteCallback): void;
18
+ /**
19
+ * Process body with chunked transfer encoding
20
+ * @param data Buffer containing chunked body data
21
+ * @param onComplete Callback when body is complete
22
+ */
23
+ processChunked(data: Buffer, onComplete: BodyCompleteCallback): void;
24
+ /**
25
+ * Read chunk size from chunked transfer encoding
26
+ * @param array Buffer containing chunk data
27
+ * @returns Remaining data after reading chunk size
28
+ */
29
+ readChunkSize(array: Buffer): Buffer | undefined;
30
+ /**
31
+ * Get the raw body buffer
32
+ */
33
+ getRawBody(): Buffer | undefined;
34
+ /**
35
+ * Reset the parser state
36
+ */
37
+ reset(): void;
38
+ }
39
+ //# sourceMappingURL=BodyParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyParser.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/parsers/BodyParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAKtD,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAEzD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,OAAO,CAAC,CAAQ;gBAEZ,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,YAAY;IAK/D;;;;OAIG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI;IA2B1E;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI;IA2DpE;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAgChD;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
@@ -0,0 +1,145 @@
1
+ const nlNlBuffer = Buffer.from([13, 10, 13, 10]);
2
+ const nlBuffer = Buffer.from([13, 10]);
3
+ /**
4
+ * Parser for HTTP body data
5
+ */
6
+ export class BodyParser {
7
+ logger;
8
+ responseInfo;
9
+ rawBody;
10
+ constructor(logger, responseInfo) {
11
+ this.logger = logger;
12
+ this.responseInfo = responseInfo;
13
+ }
14
+ /**
15
+ * Process body with content-length encoding
16
+ * @param data Buffer containing body data
17
+ * @param onComplete Callback when body is complete
18
+ */
19
+ processContentLength(data, onComplete) {
20
+ if (typeof this.responseInfo.contentLength === 'undefined') {
21
+ throw new Error('The content-length header of the response is missing.');
22
+ }
23
+ if (!this.responseInfo.body) {
24
+ this.responseInfo.body = data;
25
+ if (data.length >= this.responseInfo.contentLength) {
26
+ const body = this.responseInfo.body.slice(0, this.responseInfo.contentLength);
27
+ this.rawBody = body;
28
+ onComplete(body);
29
+ return;
30
+ }
31
+ return;
32
+ }
33
+ const sum = this.responseInfo.body.length + data.length;
34
+ this.responseInfo.body = Buffer.concat([this.responseInfo.body, data], sum);
35
+ if (this.responseInfo.body.length >= this.responseInfo.contentLength) {
36
+ const body = this.responseInfo.body.slice(0, this.responseInfo.contentLength);
37
+ this.rawBody = body;
38
+ onComplete(body);
39
+ return;
40
+ }
41
+ }
42
+ /**
43
+ * Process body with chunked transfer encoding
44
+ * @param data Buffer containing chunked body data
45
+ * @param onComplete Callback when body is complete
46
+ */
47
+ processChunked(data, onComplete) {
48
+ if (!data) {
49
+ return;
50
+ }
51
+ if (this.responseInfo.chunk) {
52
+ data = Buffer.concat([this.responseInfo.chunk, data], this.responseInfo.chunk.length + data.length);
53
+ this.responseInfo.chunk = undefined;
54
+ }
55
+ while (true) {
56
+ if (this.responseInfo.chunkSize === 0 && data.indexOf(nlNlBuffer) === 0) {
57
+ onComplete(this.rawBody || Buffer.alloc(0));
58
+ return;
59
+ }
60
+ if (!this.responseInfo.chunkSize) {
61
+ const tmp = this.readChunkSize(data);
62
+ if (!tmp) {
63
+ return;
64
+ }
65
+ data = tmp;
66
+ if (!this.responseInfo.chunkSize && this.responseInfo.chunkSize !== 0) {
67
+ // It may happen that node's buffer cuts the data
68
+ // just before the chunk size.
69
+ // It should proceed it in next portion of the data.
70
+ this.responseInfo.chunk = data;
71
+ return;
72
+ }
73
+ if (!this.responseInfo.chunkSize) {
74
+ onComplete(this.rawBody || Buffer.alloc(0));
75
+ return;
76
+ }
77
+ }
78
+ const size = Math.min(this.responseInfo.chunkSize, data.length);
79
+ const sliced = data.slice(0, size);
80
+ if (!this.rawBody) {
81
+ this.rawBody = sliced;
82
+ }
83
+ else {
84
+ const sum = size + this.rawBody.length;
85
+ this.rawBody = Buffer.concat([this.rawBody, sliced], sum);
86
+ }
87
+ this.responseInfo.chunkSize -= size;
88
+ if (data.length === 0) {
89
+ return;
90
+ }
91
+ data = data.slice(size + 2); // + CR
92
+ if (data.length === 0) {
93
+ return;
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * Read chunk size from chunked transfer encoding
99
+ * @param array Buffer containing chunk data
100
+ * @returns Remaining data after reading chunk size
101
+ */
102
+ readChunkSize(array) {
103
+ let index = array.indexOf(nlBuffer);
104
+ if (index === -1) {
105
+ // not found in this portion of data.
106
+ return array;
107
+ }
108
+ if (index === 0) {
109
+ // Node's buffer cuts CRLF after the end of chunk data, without last CLCR,
110
+ // here's to fix it.
111
+ // It can be either new line from the last chunk or end of
112
+ // the message where
113
+ // the rest of the array is [13, 10, 48, 13, 10, 13, 10]
114
+ if (array.indexOf(nlNlBuffer) === 0) {
115
+ this.responseInfo.chunkSize = 0;
116
+ return Buffer.alloc(0);
117
+ }
118
+ array = array.subarray(index + 2);
119
+ index = array.indexOf(nlBuffer);
120
+ }
121
+ const chunkSize = parseInt(array.slice(0, index).toString(), 16);
122
+ if (Number.isNaN(chunkSize)) {
123
+ this.responseInfo.chunkSize = undefined;
124
+ return array.slice(index + 2);
125
+ }
126
+ this.responseInfo.chunkSize = chunkSize;
127
+ return array.slice(index + 2);
128
+ }
129
+ /**
130
+ * Get the raw body buffer
131
+ */
132
+ getRawBody() {
133
+ return this.rawBody;
134
+ }
135
+ /**
136
+ * Reset the parser state
137
+ */
138
+ reset() {
139
+ this.rawBody = undefined;
140
+ this.responseInfo.body = undefined;
141
+ this.responseInfo.chunk = undefined;
142
+ this.responseInfo.chunkSize = undefined;
143
+ }
144
+ }
145
+ //# sourceMappingURL=BodyParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BodyParser.js","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/parsers/BodyParser.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AAItC;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAiB;IACvB,YAAY,CAAc;IAC1B,OAAO,CAAS;IAExB,YAAY,MAAuB,EAAE,YAA0B;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,IAAY,EAAE,UAAgC;QACjE,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAA;YAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;gBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;gBAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;gBACnB,UAAU,CAAC,IAAI,CAAC,CAAA;gBAChB,OAAM;YACR,CAAC;YACD,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACvD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;QAE3E,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;YACrE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;YAC7E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,UAAU,CAAC,IAAI,CAAC,CAAA;YAChB,OAAM;QACR,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,IAAY,EAAE,UAAgC;QAC3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;YACnG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAA;QACrC,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxE,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC3C,OAAM;YACR,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBACpC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAM;gBACR,CAAC;gBACD,IAAI,GAAG,GAAG,CAAA;gBACV,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;oBACtE,iDAAiD;oBACjD,8BAA8B;oBAC9B,oDAAoD;oBACpD,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAA;oBAC9B,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;oBACjC,UAAU,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC3C,OAAM;gBACR,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAElC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;gBACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAA;YAC3D,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,IAAI,CAAA;YAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAM;YACR,CAAC;YAED,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA,CAAC,OAAO;YAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAEnC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,qCAAqC;YACrC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,0EAA0E;YAC1E,oBAAoB;YACpB,0DAA0D;YAC1D,oBAAoB;YACpB,wDAAwD;YACxD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAA;gBAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACxB,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACjC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;QAChE,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,SAAS,CAAA;YACvC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,SAAS,CAAA;QACvC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAC/B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,SAAS,CAAA;QAClC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAA;QACnC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,SAAS,CAAA;IACzC,CAAC;CACF","sourcesContent":["import { type Logger, type ILogObj } from '../../../lib/logging/index.js'\nimport { ResponseInfo } from './HttpResponseParser.js'\n\nconst nlNlBuffer = Buffer.from([13, 10, 13, 10])\nconst nlBuffer = Buffer.from([13, 10])\n\nexport type BodyCompleteCallback = (body: Buffer) => void\n\n/**\n * Parser for HTTP body data\n */\nexport class BodyParser {\n private logger: Logger<ILogObj>\n private responseInfo: ResponseInfo\n private rawBody?: Buffer\n\n constructor(logger: Logger<ILogObj>, responseInfo: ResponseInfo) {\n this.logger = logger\n this.responseInfo = responseInfo\n }\n\n /**\n * Process body with content-length encoding\n * @param data Buffer containing body data\n * @param onComplete Callback when body is complete\n */\n processContentLength(data: Buffer, onComplete: BodyCompleteCallback): void {\n if (typeof this.responseInfo.contentLength === 'undefined') {\n throw new Error('The content-length header of the response is missing.')\n }\n\n if (!this.responseInfo.body) {\n this.responseInfo.body = data\n if (data.length >= this.responseInfo.contentLength) {\n const body = this.responseInfo.body.slice(0, this.responseInfo.contentLength)\n this.rawBody = body\n onComplete(body)\n return\n }\n return\n }\n\n const sum = this.responseInfo.body.length + data.length\n this.responseInfo.body = Buffer.concat([this.responseInfo.body, data], sum)\n\n if (this.responseInfo.body.length >= this.responseInfo.contentLength) {\n const body = this.responseInfo.body.slice(0, this.responseInfo.contentLength)\n this.rawBody = body\n onComplete(body)\n return\n }\n }\n\n /**\n * Process body with chunked transfer encoding\n * @param data Buffer containing chunked body data\n * @param onComplete Callback when body is complete\n */\n processChunked(data: Buffer, onComplete: BodyCompleteCallback): void {\n if (!data) {\n return\n }\n\n if (this.responseInfo.chunk) {\n data = Buffer.concat([this.responseInfo.chunk, data], this.responseInfo.chunk.length + data.length)\n this.responseInfo.chunk = undefined\n }\n\n while (true) {\n if (this.responseInfo.chunkSize === 0 && data.indexOf(nlNlBuffer) === 0) {\n onComplete(this.rawBody || Buffer.alloc(0))\n return\n }\n\n if (!this.responseInfo.chunkSize) {\n const tmp = this.readChunkSize(data)\n if (!tmp) {\n return\n }\n data = tmp\n if (!this.responseInfo.chunkSize && this.responseInfo.chunkSize !== 0) {\n // It may happen that node's buffer cuts the data\n // just before the chunk size.\n // It should proceed it in next portion of the data.\n this.responseInfo.chunk = data\n return\n }\n if (!this.responseInfo.chunkSize) {\n onComplete(this.rawBody || Buffer.alloc(0))\n return\n }\n }\n\n const size = Math.min(this.responseInfo.chunkSize, data.length)\n const sliced = data.slice(0, size)\n\n if (!this.rawBody) {\n this.rawBody = sliced\n } else {\n const sum = size + this.rawBody.length\n this.rawBody = Buffer.concat([this.rawBody, sliced], sum)\n }\n\n this.responseInfo.chunkSize -= size\n\n if (data.length === 0) {\n return\n }\n\n data = data.slice(size + 2) // + CR\n\n if (data.length === 0) {\n return\n }\n }\n }\n\n /**\n * Read chunk size from chunked transfer encoding\n * @param array Buffer containing chunk data\n * @returns Remaining data after reading chunk size\n */\n readChunkSize(array: Buffer): Buffer | undefined {\n let index = array.indexOf(nlBuffer)\n\n if (index === -1) {\n // not found in this portion of data.\n return array\n }\n\n if (index === 0) {\n // Node's buffer cuts CRLF after the end of chunk data, without last CLCR,\n // here's to fix it.\n // It can be either new line from the last chunk or end of\n // the message where\n // the rest of the array is [13, 10, 48, 13, 10, 13, 10]\n if (array.indexOf(nlNlBuffer) === 0) {\n this.responseInfo.chunkSize = 0\n return Buffer.alloc(0)\n }\n array = array.subarray(index + 2)\n index = array.indexOf(nlBuffer)\n }\n\n const chunkSize = parseInt(array.slice(0, index).toString(), 16)\n if (Number.isNaN(chunkSize)) {\n this.responseInfo.chunkSize = undefined\n return array.slice(index + 2)\n }\n\n this.responseInfo.chunkSize = chunkSize\n return array.slice(index + 2)\n }\n\n /**\n * Get the raw body buffer\n */\n getRawBody(): Buffer | undefined {\n return this.rawBody\n }\n\n /**\n * Reset the parser state\n */\n reset(): void {\n this.rawBody = undefined\n this.responseInfo.body = undefined\n this.responseInfo.chunk = undefined\n this.responseInfo.chunkSize = undefined\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import { type Logger, type ILogObj } from '../../../lib/logging/index.js';
2
+ export interface HeadersParseResult {
3
+ complete: boolean;
4
+ headers?: Buffer;
5
+ remaining?: Buffer;
6
+ }
7
+ /**
8
+ * Parser for HTTP headers
9
+ */
10
+ export declare class HeadersParser {
11
+ private logger;
12
+ constructor(logger: Logger<ILogObj>);
13
+ /**
14
+ * Parse HTTP headers from buffer
15
+ * @param data Buffer containing header data
16
+ * @param existingHeaders Previously accumulated headers
17
+ * @returns Headers parse result
18
+ */
19
+ parse(data: Buffer, existingHeaders?: Buffer): HeadersParseResult;
20
+ /**
21
+ * Extract remaining data after headers
22
+ * @param data Original data buffer
23
+ * @param index Index where headers end
24
+ * @param padding Padding to skip
25
+ * @returns Remaining data
26
+ */
27
+ private extractRemaining;
28
+ }
29
+ //# sourceMappingURL=HeadersParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeadersParser.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/http-engine/parsers/HeadersParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,+BAA+B,CAAA;AAKzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC;IAInC;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,kBAAkB;IA8DjE;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAMzB"}