@api-client/core 0.3.11 → 0.4.1

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 (356) hide show
  1. package/build/browser.d.ts +10 -8
  2. package/build/browser.js +11 -7
  3. package/build/browser.js.map +1 -1
  4. package/build/index.d.ts +12 -11
  5. package/build/index.js +9 -9
  6. package/build/index.js.map +1 -1
  7. package/build/src/data/JmesparthReader.d.ts +1 -1
  8. package/build/src/data/JmesparthReader.js +1 -1
  9. package/build/src/events/models/ProjectEvents.d.ts +1 -1
  10. package/build/src/events/models/ProjectEvents.js +1 -2
  11. package/build/src/events/models/ProjectEvents.js.map +1 -1
  12. package/build/src/lib/transformers/PayloadSerializer.d.ts +2 -2
  13. package/build/src/lib/transformers/PayloadSerializer.js +3 -3
  14. package/build/src/lib/transformers/PayloadSerializer.js.map +1 -1
  15. package/build/src/mocking/ProjectMock.d.ts +7 -1
  16. package/build/src/mocking/ProjectMock.js +6 -0
  17. package/build/src/mocking/ProjectMock.js.map +1 -1
  18. package/build/src/mocking/lib/History.d.ts +70 -0
  19. package/build/src/mocking/lib/History.js +120 -0
  20. package/build/src/mocking/lib/History.js.map +1 -0
  21. package/build/src/mocking/lib/Request.d.ts +2 -2
  22. package/build/src/mocking/lib/Request.js +3 -2
  23. package/build/src/mocking/lib/Request.js.map +1 -1
  24. package/build/src/mocking/lib/Response.d.ts +6 -6
  25. package/build/src/mocking/lib/Response.js +6 -6
  26. package/build/src/mocking/lib/Response.js.map +1 -1
  27. package/build/src/mocking/lib/User.d.ts +20 -0
  28. package/build/src/mocking/lib/User.js +54 -0
  29. package/build/src/mocking/lib/User.js.map +1 -0
  30. package/build/src/models/AuthorizationData.d.ts +2 -2
  31. package/build/src/models/AuthorizationData.js +2 -2
  32. package/build/src/models/Backend.d.ts +85 -0
  33. package/build/src/models/ClientCertificate.d.ts +1 -1
  34. package/build/src/models/Environment.d.ts +3 -3
  35. package/build/src/models/Environment.js +3 -3
  36. package/build/src/models/Environment.js.map +1 -1
  37. package/build/src/models/ErrorResponse.d.ts +1 -1
  38. package/build/src/models/ErrorResponse.js +1 -1
  39. package/build/src/models/HostRule.d.ts +4 -4
  40. package/build/src/models/HostRule.js +4 -4
  41. package/build/src/models/HostRule.js.map +1 -1
  42. package/build/src/models/HttpHistory.d.ts +64 -18
  43. package/build/src/models/HttpHistory.js +43 -19
  44. package/build/src/models/HttpHistory.js.map +1 -1
  45. package/build/src/models/HttpProject.d.ts +4 -5
  46. package/build/src/models/HttpProject.js +3 -3
  47. package/build/src/models/HttpProject.js.map +1 -1
  48. package/build/src/models/HttpProjectListItem.d.ts +1 -1
  49. package/build/src/models/HttpProjectListItem.js +1 -1
  50. package/build/src/models/HttpProjectListItem.js.map +1 -1
  51. package/build/src/models/HttpRequest.d.ts +2 -2
  52. package/build/src/models/HttpRequest.js +2 -2
  53. package/build/src/models/HttpRequest.js.map +1 -1
  54. package/build/src/models/HttpResponse.d.ts +2 -2
  55. package/build/src/models/HttpResponse.js +3 -3
  56. package/build/src/models/HttpResponse.js.map +1 -1
  57. package/build/src/models/License.d.ts +3 -3
  58. package/build/src/models/License.js +3 -3
  59. package/build/src/models/License.js.map +1 -1
  60. package/build/src/models/ProjectFolder.d.ts +2 -2
  61. package/build/src/models/ProjectFolder.js +3 -3
  62. package/build/src/models/ProjectFolder.js.map +1 -1
  63. package/build/src/models/ProjectItem.d.ts +1 -1
  64. package/build/src/models/ProjectItem.js +2 -2
  65. package/build/src/models/ProjectItem.js.map +1 -1
  66. package/build/src/models/ProjectRequest.d.ts +2 -2
  67. package/build/src/models/ProjectRequest.js +1 -1
  68. package/build/src/models/ProjectRequest.js.map +1 -1
  69. package/build/src/models/ProjectSchema.d.ts +2 -2
  70. package/build/src/models/ProjectSchema.js +1 -1
  71. package/build/src/models/ProjectSchema.js.map +1 -1
  72. package/build/src/models/Property.d.ts +4 -4
  73. package/build/src/models/Property.js +4 -4
  74. package/build/src/models/Property.js.map +1 -1
  75. package/build/src/models/Provider.d.ts +3 -3
  76. package/build/src/models/Provider.js +3 -3
  77. package/build/src/models/Provider.js.map +1 -1
  78. package/build/src/models/Request.d.ts +2 -2
  79. package/build/src/models/Request.js +3 -3
  80. package/build/src/models/Request.js.map +1 -1
  81. package/build/src/models/RequestActions.d.ts +2 -4
  82. package/build/src/models/RequestActions.js +2 -4
  83. package/build/src/models/RequestActions.js.map +1 -1
  84. package/build/src/models/RequestAuthorization.d.ts +3 -5
  85. package/build/src/models/RequestAuthorization.js +2 -4
  86. package/build/src/models/RequestAuthorization.js.map +1 -1
  87. package/build/src/models/RequestConfig.d.ts +3 -5
  88. package/build/src/models/RequestConfig.js +1 -3
  89. package/build/src/models/RequestConfig.js.map +1 -1
  90. package/build/src/models/RequestLog.d.ts +14 -8
  91. package/build/src/models/RequestLog.js +18 -7
  92. package/build/src/models/RequestLog.js.map +1 -1
  93. package/build/src/models/RequestTime.d.ts +4 -6
  94. package/build/src/models/RequestTime.js +2 -4
  95. package/build/src/models/RequestTime.js.map +1 -1
  96. package/build/src/models/RequestUiMeta.d.ts +5 -5
  97. package/build/src/models/RequestUiMeta.js +2 -2
  98. package/build/src/models/RequestUiMeta.js.map +1 -1
  99. package/build/src/models/RequestsSize.d.ts +1 -3
  100. package/build/src/models/RequestsSize.js +1 -3
  101. package/build/src/models/RequestsSize.js.map +1 -1
  102. package/build/src/models/{ArcResponse.d.ts → Response.d.ts} +7 -9
  103. package/build/src/models/{ArcResponse.js → Response.js} +4 -6
  104. package/build/src/models/Response.js.map +1 -0
  105. package/build/src/models/ResponseAuthorization.d.ts +3 -3
  106. package/build/src/models/ResponseAuthorization.js +3 -3
  107. package/build/src/models/ResponseAuthorization.js.map +1 -1
  108. package/build/src/models/ResponseRedirect.d.ts +3 -5
  109. package/build/src/models/ResponseRedirect.js +1 -3
  110. package/build/src/models/ResponseRedirect.js.map +1 -1
  111. package/build/src/models/RevisionInfo.d.ts +1 -1
  112. package/build/src/models/RevisionInfo.js +1 -1
  113. package/build/src/models/RevisionInfo.js.map +1 -1
  114. package/build/src/models/SentRequest.d.ts +2 -4
  115. package/build/src/models/SentRequest.js +1 -3
  116. package/build/src/models/SentRequest.js.map +1 -1
  117. package/build/src/models/Server.d.ts +3 -3
  118. package/build/src/models/Server.js +3 -3
  119. package/build/src/models/Server.js.map +1 -1
  120. package/build/src/models/Thing.d.ts +3 -3
  121. package/build/src/models/Thing.js +3 -3
  122. package/build/src/models/Thing.js.map +1 -1
  123. package/build/src/models/Url.d.ts +2 -4
  124. package/build/src/models/Url.js +2 -4
  125. package/build/src/models/Url.js.map +1 -1
  126. package/build/src/models/User.d.ts +2 -1
  127. package/build/src/models/User.js +1 -1
  128. package/build/src/models/User.js.map +1 -1
  129. package/build/src/models/WebApi.d.ts +1 -1
  130. package/build/src/models/WebApi.js +1 -1
  131. package/build/src/models/WebApi.js.map +1 -1
  132. package/build/src/models/WebApiIndex.d.ts +1 -1
  133. package/build/src/models/WebApiIndex.js +1 -1
  134. package/build/src/models/WebApiIndex.js.map +1 -1
  135. package/build/src/models/Workspace.d.ts +4 -4
  136. package/build/src/models/Workspace.js +4 -4
  137. package/build/src/models/Workspace.js.map +1 -1
  138. package/build/src/models/actions/Action.d.ts +2 -2
  139. package/build/src/models/actions/Action.js +1 -1
  140. package/build/src/models/actions/Action.js.map +1 -1
  141. package/build/src/models/actions/Condition.d.ts +2 -2
  142. package/build/src/models/actions/Condition.js +1 -1
  143. package/build/src/models/actions/Condition.js.map +1 -1
  144. package/build/src/models/actions/RunnableAction.d.ts +1 -1
  145. package/build/src/models/actions/RunnableAction.js +1 -1
  146. package/build/src/models/actions/RunnableAction.js.map +1 -1
  147. package/build/src/models/actions/runnable/DeleteCookieAction.d.ts +2 -2
  148. package/build/src/models/actions/runnable/DeleteCookieAction.js +1 -1
  149. package/build/src/models/actions/runnable/DeleteCookieAction.js.map +1 -1
  150. package/build/src/models/actions/runnable/SetCookieAction.d.ts +2 -2
  151. package/build/src/models/actions/runnable/SetCookieAction.js +1 -1
  152. package/build/src/models/actions/runnable/SetCookieAction.js.map +1 -1
  153. package/build/src/models/actions/runnable/SetVariableAction.d.ts +2 -2
  154. package/build/src/models/actions/runnable/SetVariableAction.js +1 -1
  155. package/build/src/models/actions/runnable/SetVariableAction.js.map +1 -1
  156. package/build/src/models/transformers/ImportUtils.d.ts +1 -1
  157. package/build/src/models/transformers/ImportUtils.js +1 -1
  158. package/build/src/models/transformers/PostmanBackupTransformer.js +2 -1
  159. package/build/src/models/transformers/PostmanBackupTransformer.js.map +1 -1
  160. package/build/src/models/transformers/PostmanV21Transformer.js +2 -1
  161. package/build/src/models/transformers/PostmanV21Transformer.js.map +1 -1
  162. package/build/src/models/transformers/PostmanV2Transformer.js +2 -1
  163. package/build/src/models/transformers/PostmanV2Transformer.js.map +1 -1
  164. package/build/src/runtime/actions/RunnableCondition.d.ts +6 -7
  165. package/build/src/runtime/actions/RunnableCondition.js +4 -5
  166. package/build/src/runtime/actions/RunnableCondition.js.map +1 -1
  167. package/build/src/runtime/http-engine/{ArcEngine.d.ts → CoreEngine.d.ts} +3 -3
  168. package/build/src/runtime/http-engine/{ArcEngine.js → CoreEngine.js} +8 -8
  169. package/build/src/runtime/http-engine/CoreEngine.js.map +1 -0
  170. package/build/src/runtime/http-engine/HttpEngine.d.ts +3 -3
  171. package/build/src/runtime/http-engine/HttpEngine.js +3 -20
  172. package/build/src/runtime/http-engine/HttpEngine.js.map +1 -1
  173. package/build/src/runtime/modules/BasicAuthCache.js +2 -5
  174. package/build/src/runtime/modules/BasicAuthCache.js.map +1 -1
  175. package/build/src/runtime/modules/RequestCookies.d.ts +1 -1
  176. package/build/src/runtime/modules/RequestCookies.js +3 -2
  177. package/build/src/runtime/modules/RequestCookies.js.map +1 -1
  178. package/build/src/runtime/node/InteropInterfaces.d.ts +115 -0
  179. package/build/src/runtime/node/InteropInterfaces.js +2 -0
  180. package/build/src/runtime/node/InteropInterfaces.js.map +1 -0
  181. package/build/src/runtime/node/ProjectParallelRunner.d.ts +2 -7
  182. package/build/src/runtime/node/ProjectParallelRunner.js.map +1 -1
  183. package/build/src/runtime/node/ProjectRequestRunner.d.ts +17 -49
  184. package/build/src/runtime/node/ProjectRequestRunner.js +39 -10
  185. package/build/src/runtime/node/ProjectRequestRunner.js.map +1 -1
  186. package/build/src/runtime/node/ProjectRunner.d.ts +1 -59
  187. package/build/src/runtime/node/ProjectRunner.js.map +1 -1
  188. package/build/src/runtime/node/ProjectRunnerWorker.js.map +1 -1
  189. package/build/src/runtime/node/RequestFactory.d.ts +1 -1
  190. package/build/src/runtime/node/RequestFactory.js +3 -3
  191. package/build/src/runtime/node/RequestFactory.js.map +1 -1
  192. package/build/src/runtime/reporters/ProjectRunCliReporter.js.map +1 -1
  193. package/build/src/runtime/reporters/Reporter.js.map +1 -1
  194. package/build/src/runtime/store/AuthSdk.d.ts +28 -0
  195. package/build/src/runtime/store/AuthSdk.js +123 -0
  196. package/build/src/runtime/store/AuthSdk.js.map +1 -0
  197. package/build/src/runtime/store/BackendSdk.d.ts +8 -0
  198. package/build/src/runtime/store/BackendSdk.js +25 -0
  199. package/build/src/runtime/store/BackendSdk.js.map +1 -0
  200. package/build/src/runtime/store/HistorySdk.d.ts +48 -0
  201. package/build/src/runtime/store/HistorySdk.js +142 -0
  202. package/build/src/runtime/store/HistorySdk.js.map +1 -0
  203. package/build/src/runtime/store/Http.d.ts +14 -0
  204. package/build/src/runtime/store/Http.js +4 -0
  205. package/build/src/runtime/store/Http.js.map +1 -0
  206. package/build/src/runtime/store/HttpNode.d.ts +16 -0
  207. package/build/src/runtime/store/HttpNode.js +95 -0
  208. package/build/src/runtime/store/HttpNode.js.map +1 -0
  209. package/build/src/runtime/store/HttpWeb.d.ts +15 -0
  210. package/build/src/runtime/store/HttpWeb.js +83 -0
  211. package/build/src/runtime/store/HttpWeb.js.map +1 -0
  212. package/build/src/runtime/store/ProjectsSdk.d.ts +43 -0
  213. package/build/src/runtime/store/ProjectsSdk.js +144 -0
  214. package/build/src/runtime/store/ProjectsSdk.js.map +1 -0
  215. package/build/src/runtime/store/RouteBuilder.d.ts +42 -0
  216. package/build/src/runtime/store/RouteBuilder.js +75 -0
  217. package/build/src/runtime/store/RouteBuilder.js.map +1 -0
  218. package/build/src/runtime/store/Sdk.d.ts +79 -0
  219. package/build/src/runtime/store/Sdk.js +117 -0
  220. package/build/src/runtime/store/Sdk.js.map +1 -0
  221. package/build/src/runtime/store/SdkBase.d.ts +45 -0
  222. package/build/src/runtime/store/SdkBase.js +40 -0
  223. package/build/src/runtime/store/SdkBase.js.map +1 -0
  224. package/build/src/runtime/store/SpacesSdk.d.ts +50 -0
  225. package/build/src/runtime/store/SpacesSdk.js +185 -0
  226. package/build/src/runtime/store/SpacesSdk.js.map +1 -0
  227. package/build/src/runtime/store/StoreSdkNode.d.ts +10 -0
  228. package/build/src/runtime/store/StoreSdkNode.js +11 -0
  229. package/build/src/runtime/store/StoreSdkNode.js.map +1 -0
  230. package/build/src/runtime/store/StoreSdkWeb.d.ts +10 -0
  231. package/build/src/runtime/store/StoreSdkWeb.js +11 -0
  232. package/build/src/runtime/store/StoreSdkWeb.js.map +1 -0
  233. package/build/src/runtime/store/UsersSdk.d.ts +18 -0
  234. package/build/src/runtime/store/UsersSdk.js +88 -0
  235. package/build/src/runtime/store/UsersSdk.js.map +1 -0
  236. package/build/src/runtime/store/WsClient.d.ts +24 -0
  237. package/build/src/runtime/store/WsClient.js +4 -0
  238. package/build/src/runtime/store/WsClient.js.map +1 -0
  239. package/build/src/runtime/store/WsClientNode.d.ts +24 -0
  240. package/build/src/runtime/store/WsClientNode.js +66 -0
  241. package/build/src/runtime/store/WsClientNode.js.map +1 -0
  242. package/build/src/runtime/store/WsClientWeb.d.ts +23 -0
  243. package/build/src/runtime/store/WsClientWeb.js +73 -0
  244. package/build/src/runtime/store/WsClientWeb.js.map +1 -0
  245. package/package.json +6 -8
  246. package/readme.md +5 -5
  247. package/src/data/JmesparthReader.ts +1 -1
  248. package/src/events/models/ProjectEvents.ts +2 -2
  249. package/src/events/readme.md +1 -1
  250. package/src/lib/transformers/PayloadSerializer.ts +3 -3
  251. package/src/mocking/ProjectMock.ts +9 -1
  252. package/src/mocking/lib/History.ts +179 -0
  253. package/src/mocking/lib/Request.ts +5 -5
  254. package/src/mocking/lib/Response.ts +10 -10
  255. package/src/mocking/lib/User.ts +68 -0
  256. package/src/models/AuthorizationData.ts +2 -2
  257. package/src/models/Backend.ts +93 -0
  258. package/src/models/ClientCertificate.ts +1 -1
  259. package/src/models/Environment.ts +4 -4
  260. package/src/models/ErrorResponse.ts +1 -1
  261. package/src/models/HostRule.ts +5 -5
  262. package/src/models/HttpHistory.ts +89 -27
  263. package/src/models/HttpProject.ts +5 -6
  264. package/src/models/HttpProjectListItem.ts +1 -1
  265. package/src/models/HttpRequest.ts +2 -2
  266. package/src/models/HttpResponse.ts +3 -3
  267. package/src/models/License.ts +4 -4
  268. package/src/models/ProjectFolder.ts +3 -3
  269. package/src/models/ProjectItem.ts +2 -2
  270. package/src/models/ProjectRequest.ts +2 -2
  271. package/src/models/ProjectSchema.ts +2 -2
  272. package/src/models/Property.ts +5 -5
  273. package/src/models/Provider.ts +4 -4
  274. package/src/models/README.md +2 -2
  275. package/src/models/Request.ts +4 -4
  276. package/src/models/RequestActions.ts +2 -4
  277. package/src/models/RequestAuthorization.ts +3 -5
  278. package/src/models/RequestConfig.ts +3 -5
  279. package/src/models/RequestLog.ts +25 -11
  280. package/src/models/RequestTime.ts +4 -6
  281. package/src/models/RequestUiMeta.ts +5 -5
  282. package/src/models/RequestsSize.ts +1 -3
  283. package/src/models/{ArcResponse.ts → Response.ts} +12 -14
  284. package/src/models/ResponseAuthorization.ts +4 -4
  285. package/src/models/ResponseRedirect.ts +3 -5
  286. package/src/models/RevisionInfo.ts +1 -1
  287. package/src/models/SentRequest.ts +2 -4
  288. package/src/models/Server.ts +4 -4
  289. package/src/models/Thing.ts +4 -4
  290. package/src/models/Url.ts +2 -4
  291. package/src/models/User.ts +2 -1
  292. package/src/models/WebApi.ts +1 -1
  293. package/src/models/WebApiIndex.ts +1 -1
  294. package/src/models/Workspace.ts +5 -5
  295. package/src/models/actions/Action.ts +2 -2
  296. package/src/models/actions/Condition.ts +2 -2
  297. package/src/models/actions/RunnableAction.ts +1 -1
  298. package/src/models/actions/runnable/DeleteCookieAction.ts +2 -2
  299. package/src/models/actions/runnable/SetCookieAction.ts +2 -2
  300. package/src/models/actions/runnable/SetVariableAction.ts +2 -2
  301. package/src/models/transformers/ImportUtils.ts +1 -1
  302. package/src/models/transformers/PostmanBackupTransformer.ts +2 -1
  303. package/src/models/transformers/PostmanV21Transformer.ts +2 -1
  304. package/src/models/transformers/PostmanV2Transformer.ts +2 -1
  305. package/src/runtime/actions/RunnableCondition.ts +6 -7
  306. package/src/runtime/http-engine/{ArcEngine.ts → CoreEngine.ts} +7 -7
  307. package/src/runtime/http-engine/HttpEngine.ts +5 -24
  308. package/src/runtime/modules/BasicAuthCache.ts +2 -6
  309. package/src/runtime/modules/RequestCookies.ts +6 -5
  310. package/src/runtime/node/InteropInterfaces.ts +121 -0
  311. package/src/runtime/node/ProjectParallelRunner.ts +2 -9
  312. package/src/runtime/node/ProjectRequestRunner.ts +42 -61
  313. package/src/runtime/node/ProjectRunner.ts +1 -60
  314. package/src/runtime/node/ProjectRunnerWorker.ts +2 -1
  315. package/src/runtime/node/RequestFactory.ts +3 -3
  316. package/src/runtime/reporters/ProjectRunCliReporter.ts +2 -2
  317. package/src/runtime/reporters/Reporter.ts +4 -4
  318. package/src/runtime/store/AuthSdk.ts +126 -0
  319. package/src/runtime/store/BackendSdk.ts +25 -0
  320. package/src/runtime/store/HistorySdk.ts +157 -0
  321. package/src/runtime/store/Http.ts +18 -0
  322. package/src/runtime/store/HttpNode.ts +100 -0
  323. package/src/runtime/store/HttpWeb.ts +89 -0
  324. package/src/runtime/store/ProjectsSdk.ts +147 -0
  325. package/src/runtime/store/RouteBuilder.ts +89 -0
  326. package/src/runtime/store/Sdk.ts +131 -0
  327. package/src/runtime/store/SdkBase.ts +72 -0
  328. package/src/runtime/store/SpacesSdk.ts +190 -0
  329. package/src/runtime/store/StoreSdkNode.ts +13 -0
  330. package/src/runtime/store/StoreSdkWeb.ts +13 -0
  331. package/src/runtime/store/UsersSdk.ts +89 -0
  332. package/src/runtime/store/WsClient.ts +28 -0
  333. package/src/runtime/store/WsClientNode.ts +68 -0
  334. package/src/runtime/store/WsClientWeb.ts +75 -0
  335. package/build/src/models/ArcResponse.js.map +0 -1
  336. package/build/src/models/HistoryIndex.d.ts +0 -43
  337. package/build/src/models/HistoryIndex.js +0 -53
  338. package/build/src/models/HistoryIndex.js.map +0 -1
  339. package/build/src/models/HistoryRequest.d.ts +0 -13
  340. package/build/src/models/HistoryRequest.js +0 -25
  341. package/build/src/models/HistoryRequest.js.map +0 -1
  342. package/build/src/runtime/http-engine/ArcEngine.js.map +0 -1
  343. package/build/src/runtime/http-engine/NodeEngine.d.ts +0 -154
  344. package/build/src/runtime/http-engine/NodeEngine.js +0 -766
  345. package/build/src/runtime/http-engine/NodeEngine.js.map +0 -1
  346. package/build/src/runtime/http-engine/NodeEngineDirect.d.ts +0 -113
  347. package/build/src/runtime/http-engine/NodeEngineDirect.js +0 -449
  348. package/build/src/runtime/http-engine/NodeEngineDirect.js.map +0 -1
  349. package/build/src/runtime/store/StoreSdk.d.ts +0 -279
  350. package/build/src/runtime/store/StoreSdk.js +0 -840
  351. package/build/src/runtime/store/StoreSdk.js.map +0 -1
  352. package/src/models/HistoryIndex.ts +0 -76
  353. package/src/models/HistoryRequest.ts +0 -28
  354. package/src/runtime/http-engine/NodeEngine.ts +0 -792
  355. package/src/runtime/http-engine/NodeEngineDirect.ts +0 -482
  356. package/src/runtime/store/StoreSdk.ts +0 -895
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeEngine.js","sourceRoot":"","sources":["../../../../src/runtime/http-engine/NodeEngine.ts"],"names":[],"mappings":"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"}
@@ -1,113 +0,0 @@
1
- /// <reference types="node" />
2
- import { URL, UrlWithStringQuery } from 'url';
3
- import http from 'http';
4
- import https from 'https';
5
- import net from 'net';
6
- import { HttpEngine, HttpEngineOptions, ResponseErrorInit } from './HttpEngine.js';
7
- import { IRequestLog } from 'src/models/RequestLog.js';
8
- import { IHttpRequest } from '../../models/HttpRequest.js';
9
- import { Headers } from '../../lib/headers/Headers.js';
10
- interface IHttpOutputData {
11
- data: string | Buffer;
12
- encoding?: string;
13
- callback?: Function;
14
- }
15
- /**
16
- * A class that makes HTTP requests using Node's HTTP libraries without a proxy.
17
- */
18
- export declare class NodeEngineDirect extends HttpEngine {
19
- responseReported: boolean;
20
- _sentHttpMessage?: string | IHttpOutputData[];
21
- client?: http.ClientRequest;
22
- receivingResponse: boolean;
23
- /**
24
- * The agent used to manage the connection.
25
- * Note, the agent may change, especially when redirecting between protocols.
26
- */
27
- agent: http.Agent | https.Agent;
28
- /**
29
- * Prepared to be send payload part of the HTTP message.
30
- */
31
- httpMessage?: Buffer;
32
- constructor(request: IHttpRequest, opts?: HttpEngineOptions);
33
- /**
34
- * Sends the request
35
- */
36
- send(): Promise<IRequestLog>;
37
- private sendRequest;
38
- /**
39
- * Prepares the request body (the payload) and the headers.
40
- *
41
- * @return Resolved promise to a `Buffer`. Undefined when no message.
42
- */
43
- _prepareMessage(headers: Headers): Promise<Buffer | undefined>;
44
- /**
45
- * Connects to the remote machine.
46
- */
47
- _connect(message?: Buffer): http.ClientRequest;
48
- /**
49
- * Creates a connection using regular transport.
50
- */
51
- _connectHttp(uri: URL, message?: Buffer): http.ClientRequest;
52
- /**
53
- * Creates a connection using SSL transport.
54
- */
55
- _connectHttps(uri: URL, message?: Buffer): http.ClientRequest;
56
- /**
57
- * Sets listeners on a socket
58
- * @param request The request object
59
- */
60
- _setListeners(request: http.ClientRequest): void;
61
- /**
62
- * Handler for connection error.
63
- */
64
- _errorHandler(e: ResponseErrorInit): void;
65
- /**
66
- * Handler for DNS lookup.
67
- */
68
- _lookupHandler(): void;
69
- /**
70
- * Handler for connected event.
71
- */
72
- _secureConnectHandler(): void;
73
- /**
74
- * Handler for connecting event.
75
- */
76
- _connectHandler(): void;
77
- /**
78
- * Handler for sending finished event
79
- */
80
- _sendEndHandler(): void;
81
- /**
82
- * Handler for timeout event
83
- */
84
- _timeoutHandler(): void;
85
- /**
86
- * A handler for response data event
87
- */
88
- _responseHandler(res: http.IncomingMessage): void;
89
- /**
90
- * Handler for connection close event
91
- */
92
- _closeHandler(): void;
93
- _socketHandler(socket: net.Socket): void;
94
- /**
95
- * Creates and publishes a response.
96
- */
97
- _reportResponse(): void;
98
- /**
99
- * Transforms a message from the client to a string.
100
- * It uses `opts.sentMessageLimit` to limit number of data returned
101
- * by the client.
102
- */
103
- _readSentMessage(messages: string | IHttpOutputData[]): string;
104
- httpAgent(uri: URL | UrlWithStringQuery): http.Agent;
105
- httpsAgent(uri: URL | UrlWithStringQuery): https.Agent;
106
- /**
107
- * Appends the list of headers on the request options.
108
- *
109
- * @param options The request options to alter.
110
- */
111
- appendHeaders(options: http.RequestOptions | https.RequestOptions): void;
112
- }
113
- export {};
@@ -1,449 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable @typescript-eslint/ban-ts-comment */
3
- import { URL } from 'url';
4
- import http from 'http';
5
- import https from 'https';
6
- import { HttpEngine } from './HttpEngine.js';
7
- import { ArcResponse } from '../../models/ArcResponse.js';
8
- import { Headers } from '../../lib/headers/Headers.js';
9
- import { SerializableError } from '../../models/SerializableError.js';
10
- import { PayloadSupport } from './PayloadSupport.js';
11
- import { addContentLength, getPort } from './RequestUtils.js';
12
- /**
13
- * A class that makes HTTP requests using Node's HTTP libraries without a proxy.
14
- */
15
- export class NodeEngineDirect extends HttpEngine {
16
- responseReported = false;
17
- _sentHttpMessage;
18
- client;
19
- receivingResponse = false;
20
- /**
21
- * The agent used to manage the connection.
22
- * Note, the agent may change, especially when redirecting between protocols.
23
- */
24
- agent;
25
- /**
26
- * Prepared to be send payload part of the HTTP message.
27
- */
28
- httpMessage;
29
- constructor(request, opts = {}) {
30
- super(request, opts);
31
- const port = getPort(this.uri.port, this.uri.protocol);
32
- if (port === 443 || this.uri.protocol === 'https:') {
33
- this.agent = this.httpsAgent(this.uri);
34
- }
35
- else {
36
- this.agent = this.httpAgent(this.uri);
37
- }
38
- this._connectHandler = this._connectHandler.bind(this);
39
- this._secureConnectHandler = this._secureConnectHandler.bind(this);
40
- this._responseHandler = this._responseHandler.bind(this);
41
- this._timeoutHandler = this._timeoutHandler.bind(this);
42
- this._errorHandler = this._errorHandler.bind(this);
43
- this._lookupHandler = this._lookupHandler.bind(this);
44
- this._closeHandler = this._closeHandler.bind(this);
45
- this._socketHandler = this._socketHandler.bind(this);
46
- this._sendEndHandler = this._sendEndHandler.bind(this);
47
- }
48
- /**
49
- * Sends the request
50
- */
51
- async send() {
52
- const promise = this.wrapExecution();
53
- this.sendRequest();
54
- return promise;
55
- }
56
- async sendRequest() {
57
- try {
58
- const headers = new Headers(this.request.headers);
59
- this.prepareHeaders(headers);
60
- const message = await this._prepareMessage(headers);
61
- if (message) {
62
- this.httpMessage = message;
63
- }
64
- this.sentRequest.headers = headers.toString();
65
- const request = this._connect(message);
66
- this.client = request;
67
- const { timeout } = this;
68
- if (timeout > 0) {
69
- request.setTimeout(timeout);
70
- }
71
- }
72
- catch (cause) {
73
- console.warn(cause);
74
- const e = cause;
75
- const err = new SerializableError(e.message, { cause: e });
76
- if (e.code || e.code === 0) {
77
- err.code = e.code;
78
- }
79
- this.finalizeRequest(e);
80
- }
81
- }
82
- /**
83
- * Prepares the request body (the payload) and the headers.
84
- *
85
- * @return Resolved promise to a `Buffer`. Undefined when no message.
86
- */
87
- async _prepareMessage(headers) {
88
- const { method = 'GET' } = this.request;
89
- let { payload } = this.request;
90
- if (['get', 'head'].includes(method.toLowerCase())) {
91
- payload = undefined;
92
- }
93
- let buffer;
94
- if (payload) {
95
- buffer = await PayloadSupport.payloadToBuffer(payload, headers);
96
- if (buffer) {
97
- addContentLength(this.request.method || 'GET', buffer, headers);
98
- }
99
- }
100
- return buffer;
101
- }
102
- /**
103
- * Connects to the remote machine.
104
- */
105
- _connect(message) {
106
- const uri = new URL(this.request.url);
107
- const port = getPort(uri.port, uri.protocol);
108
- if (port === 443 || uri.protocol === 'https:') {
109
- return this._connectHttps(uri, message);
110
- }
111
- return this._connectHttp(uri, message);
112
- }
113
- /**
114
- * Creates a connection using regular transport.
115
- */
116
- _connectHttp(uri, message) {
117
- if (!uri.port) {
118
- uri.port = '80';
119
- }
120
- const options = {
121
- agent: this.agent,
122
- protocol: uri.protocol,
123
- host: uri.hostname,
124
- method: this.request.method.toUpperCase(),
125
- path: `${uri.pathname}${uri.search}`,
126
- headers: {},
127
- };
128
- if (uri.port) {
129
- options.port = uri.port;
130
- }
131
- this.appendHeaders(options);
132
- const startTime = Date.now();
133
- this.stats.startTime = startTime;
134
- this.sentRequest.startTime = startTime;
135
- const request = http.request(options);
136
- this._setListeners(request);
137
- if (message) {
138
- request.write(message);
139
- }
140
- this.stats.messageStart = Date.now();
141
- request.end();
142
- // This is a hack to read sent data.
143
- // In the https://github.com/nodejs/node/blob/0a62026f32d513a8a5d9ed857481df5f5fa18e8b/lib/_http_outgoing.js#L960
144
- // library it hold the data until it is flushed.
145
- // @ts-ignore
146
- const pending = request.outputData;
147
- if (Array.isArray(pending)) {
148
- this._sentHttpMessage = pending;
149
- }
150
- try {
151
- this.emit('loadstart');
152
- }
153
- catch (_) {
154
- //
155
- }
156
- return request;
157
- }
158
- /**
159
- * Creates a connection using SSL transport.
160
- */
161
- _connectHttps(uri, message) {
162
- if (!uri.port) {
163
- uri.port = '443';
164
- }
165
- // const options = this._createGenericOptions(uri);
166
- // this._addSslOptions(options);
167
- const options = {
168
- agent: this.agent,
169
- protocol: uri.protocol,
170
- host: uri.hostname,
171
- method: this.request.method.toUpperCase(),
172
- path: `${uri.pathname}${uri.search}`,
173
- headers: {},
174
- };
175
- if (uri.port) {
176
- options.port = uri.port;
177
- }
178
- this.appendHeaders(options);
179
- const startTime = Date.now();
180
- this.stats.startTime = startTime;
181
- this.sentRequest.startTime = startTime;
182
- const request = https.request(options);
183
- this._setListeners(request);
184
- if (message) {
185
- request.write(message);
186
- }
187
- this.stats.messageStart = Date.now();
188
- this.stats.sentTime = this.stats.messageStart + 1;
189
- request.end();
190
- // This is a hack to read sent data.
191
- // In the https://github.com/nodejs/node/blob/0a62026f32d513a8a5d9ed857481df5f5fa18e8b/lib/_http_outgoing.js#L960
192
- // library it hold the data until it is flushed.
193
- // @ts-ignore
194
- const pending = request.outputData;
195
- if (Array.isArray(pending)) {
196
- this._sentHttpMessage = pending;
197
- }
198
- try {
199
- this.emit('loadstart');
200
- }
201
- catch (_) {
202
- //
203
- }
204
- return request;
205
- }
206
- /**
207
- * Sets listeners on a socket
208
- * @param request The request object
209
- */
210
- _setListeners(request) {
211
- request.once('socket', this._socketHandler);
212
- request.once('error', this._errorHandler);
213
- request.once('response', this._responseHandler);
214
- request.once('close', this._closeHandler);
215
- }
216
- /**
217
- * Handler for connection error.
218
- */
219
- _errorHandler(e) {
220
- if (this.aborted) {
221
- return;
222
- }
223
- this._errorRequest({
224
- code: e.code,
225
- message: e.message,
226
- });
227
- }
228
- /**
229
- * Handler for DNS lookup.
230
- */
231
- _lookupHandler() {
232
- this.stats.lookupTime = Date.now();
233
- }
234
- /**
235
- * Handler for connected event.
236
- */
237
- _secureConnectHandler() {
238
- this.stats.secureConnectedTime = Date.now();
239
- }
240
- /**
241
- * Handler for connecting event.
242
- */
243
- _connectHandler() {
244
- this.stats.connectedTime = Date.now();
245
- this.stats.secureStartTime = Date.now();
246
- }
247
- /**
248
- * Handler for sending finished event
249
- */
250
- _sendEndHandler() {
251
- if (!this.stats.sentTime) {
252
- this.stats.sentTime = Date.now();
253
- }
254
- }
255
- /**
256
- * Handler for timeout event
257
- */
258
- _timeoutHandler() {
259
- this._errorRequest({
260
- code: 7,
261
- });
262
- this.abort();
263
- }
264
- /**
265
- * A handler for response data event
266
- */
267
- _responseHandler(res) {
268
- this.receivingResponse = true;
269
- this.emit('firstbyte');
270
- this.stats.firstReceiveTime = Date.now();
271
- this.stats.responseTime = Date.now();
272
- if (this._sentHttpMessage) {
273
- this.sentRequest.httpMessage = this._readSentMessage(this._sentHttpMessage);
274
- }
275
- else {
276
- this.sentRequest.httpMessage = '';
277
- }
278
- const status = res.statusCode;
279
- if (!status) {
280
- this._errorRequest({
281
- message: 'The response has no status.',
282
- });
283
- return;
284
- }
285
- const headers = this.computeResponseHeaders(res);
286
- const rawHeaders = headers.toString();
287
- const response = ArcResponse.fromValues(status, res.statusMessage, rawHeaders);
288
- this.currentResponse = response;
289
- this.currentHeaders = headers;
290
- const detail = {
291
- returnValue: true,
292
- value: rawHeaders,
293
- };
294
- this.emit('headersreceived', detail);
295
- if (!detail.returnValue) {
296
- this.abort();
297
- return;
298
- }
299
- res.on('data', (chunk) => {
300
- if (!this._rawBody) {
301
- this._rawBody = chunk;
302
- }
303
- else {
304
- const endTime = Date.now();
305
- this.stats.lastReceivedTime = endTime;
306
- this._rawBody = Buffer.concat([this._rawBody, chunk]);
307
- }
308
- });
309
- res.once('end', () => {
310
- const endTime = Date.now();
311
- this.sentRequest.endTime = endTime;
312
- this.stats.receivingTime = endTime;
313
- this._reportResponse();
314
- });
315
- }
316
- /**
317
- * Handler for connection close event
318
- */
319
- _closeHandler() {
320
- if (this.responseReported || this.receivingResponse || this.aborted || this.redirecting) {
321
- return;
322
- }
323
- if (!this.currentResponse) {
324
- const e = new Error('Connection closed unexpectedly.');
325
- this._errorRequest(e);
326
- }
327
- else {
328
- // There is an issue with the response. Size mismatch? Anyway,
329
- // it tries to create a response from current data.
330
- this.emit('loadend');
331
- this._publishResponse();
332
- }
333
- }
334
- _socketHandler(socket) {
335
- this.socket = socket;
336
- socket.once('lookup', this._lookupHandler);
337
- socket.once('connect', this._connectHandler);
338
- socket.once('timeout', this._timeoutHandler);
339
- socket.once('end', this._sendEndHandler);
340
- socket.once('secureConnect', this._secureConnectHandler);
341
- this.stats.connectionTime = Date.now();
342
- }
343
- /**
344
- * Creates and publishes a response.
345
- */
346
- _reportResponse() {
347
- const { aborted, currentResponse } = this;
348
- if (aborted || !currentResponse) {
349
- return;
350
- }
351
- const { status } = currentResponse;
352
- if (status >= 300 && status < 400) {
353
- if (this.followRedirects !== false && this._reportRedirect(status)) {
354
- return;
355
- }
356
- }
357
- if (this.responseReported) {
358
- return;
359
- }
360
- this.responseReported = true;
361
- this.emit('loadend');
362
- this._publishResponse();
363
- }
364
- /**
365
- * Transforms a message from the client to a string.
366
- * It uses `opts.sentMessageLimit` to limit number of data returned
367
- * by the client.
368
- */
369
- _readSentMessage(messages) {
370
- let result = '';
371
- if (typeof messages === 'string') {
372
- result = messages;
373
- }
374
- else {
375
- for (let i = 0, len = messages.length; i < len; i++) {
376
- const chunk = messages[i].data;
377
- if (!chunk) {
378
- continue;
379
- }
380
- if (typeof chunk === 'string') {
381
- result += chunk;
382
- }
383
- else if (chunk instanceof Uint8Array) {
384
- result += chunk.toString();
385
- }
386
- }
387
- }
388
- const limit = this.opts.sentMessageLimit;
389
- if (limit && limit > 0 && result.length >= limit) {
390
- result = result.substr(0, limit);
391
- result += ' ...';
392
- }
393
- return result;
394
- }
395
- httpAgent(uri) {
396
- const init = {
397
- // keepAlive: true,
398
- host: uri.hostname || undefined,
399
- };
400
- if (uri.port) {
401
- init.port = Number(uri.port);
402
- }
403
- const agent = new http.Agent(init);
404
- return agent;
405
- }
406
- httpsAgent(uri) {
407
- const init = {
408
- // keepAlive: true,
409
- host: uri.hostname || undefined,
410
- path: `${uri.pathname}${uri.search}`,
411
- };
412
- if (uri.port) {
413
- init.port = Number(uri.port);
414
- }
415
- if (this.opts.validateCertificates) {
416
- init.checkServerIdentity = this._checkServerIdentity.bind(this);
417
- }
418
- else {
419
- init.rejectUnauthorized = false;
420
- // init.requestOCSP = false;
421
- }
422
- const certs = this.opts.certificates;
423
- if (Array.isArray(certs)) {
424
- certs.forEach(cert => this._addClientCertificate(cert, init));
425
- }
426
- const agent = new https.Agent(init);
427
- return agent;
428
- }
429
- /**
430
- * Appends the list of headers on the request options.
431
- *
432
- * @param options The request options to alter.
433
- */
434
- appendHeaders(options) {
435
- // Note, the final headers are set on the `sentRequest` object.
436
- // The `request` object is not changed.
437
- const headers = new Headers(this.sentRequest.headers);
438
- if (!headers.has('host') && this.hostHeader) {
439
- headers.set('host', this.hostHeader);
440
- }
441
- if (!options.headers) {
442
- options.headers = {};
443
- }
444
- for (const [key, value] of headers.entries()) {
445
- options.headers[key] = value;
446
- }
447
- }
448
- }
449
- //# sourceMappingURL=NodeEngineDirect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeEngineDirect.js","sourceRoot":"","sources":["../../../../src/runtime/http-engine/NodeEngineDirect.ts"],"names":[],"mappings":"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"}