oxygen-cli 1.40.2-beta.1 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +1755 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +1 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -1
  19. package/build/lib/cli.js +1 -1
  20. package/build/lib/debugger.js +1 -1
  21. package/build/lib/img-merge.js +1 -1
  22. package/build/lib/launcher.js +1 -1
  23. package/build/lib/logger.js +43 -43
  24. package/build/lib/moduleRequire.js +1 -1
  25. package/build/lib/parallel-launcher.js +1 -1
  26. package/build/lib/param-manager.js +1 -1
  27. package/build/lib/param-reader-csv.js +1 -1
  28. package/build/lib/param-reader-excel.js +1 -1
  29. package/build/lib/param-reader-json.js +1 -1
  30. package/build/lib/text-to-image.js +1 -1
  31. package/build/lib/util.js +1 -1
  32. package/build/model/case-result.js +1 -1
  33. package/build/model/failure.js +1 -1
  34. package/build/model/status.js +1 -1
  35. package/build/model/step-result.js +1 -1
  36. package/build/model/suite-result.js +1 -1
  37. package/build/model/test-result.js +1 -1
  38. package/build/model/testcase.js +1 -1
  39. package/build/model/testsuite.js +1 -1
  40. package/build/ox_modules/index.js +1 -1
  41. package/build/ox_modules/module-assert.js +37 -37
  42. package/build/ox_modules/module-date.js +24 -24
  43. package/build/ox_modules/module-db.js +52 -52
  44. package/build/ox_modules/module-email.js +59 -59
  45. package/build/ox_modules/module-eyes.js +34 -34
  46. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  47. package/build/ox_modules/module-http/ntlm.js +15 -15
  48. package/build/ox_modules/module-http.js +132 -132
  49. package/build/ox_modules/module-log.js +27 -27
  50. package/build/ox_modules/module-mailinator.js +87 -87
  51. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  52. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  53. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  54. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  55. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  56. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  57. package/build/ox_modules/module-mob/commands/back.js +16 -16
  58. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  59. package/build/ox_modules/module-mob/commands/click.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  61. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  62. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  63. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  64. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  65. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  66. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  67. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  68. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  69. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  70. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  71. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  73. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  75. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  77. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  78. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  79. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  80. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  81. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  82. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  83. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  84. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  85. package/build/ox_modules/module-mob/commands/index.js +1 -1
  86. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  88. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  91. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  92. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  93. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  94. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  95. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  96. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  97. package/build/ox_modules/module-mob/commands/open.js +17 -17
  98. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  99. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  100. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  101. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  102. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  103. package/build/ox_modules/module-mob/commands/select.js +24 -24
  104. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  105. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  106. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  107. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  108. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  109. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  110. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  111. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  112. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  113. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  116. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  117. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  118. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  119. package/build/ox_modules/module-mob/commands/type.js +20 -20
  120. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  121. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  122. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  123. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  124. package/build/ox_modules/module-mob.js +74 -74
  125. package/build/ox_modules/module-mongo.js +82 -82
  126. package/build/ox_modules/module-pdf.js +35 -35
  127. package/build/ox_modules/module-proxy.js +77 -77
  128. package/build/ox_modules/module-serial.js +55 -55
  129. package/build/ox_modules/module-shell.js +52 -33
  130. package/build/ox_modules/module-soap.js +72 -72
  131. package/build/ox_modules/module-twilio.js +41 -41
  132. package/build/ox_modules/module-utils.js +91 -91
  133. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  134. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  135. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  136. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  137. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  140. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  142. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  143. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  144. package/build/ox_modules/module-web/commands/back.js +16 -16
  145. package/build/ox_modules/module-web/commands/clear.js +18 -18
  146. package/build/ox_modules/module-web/commands/click.js +25 -25
  147. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  148. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  149. package/build/ox_modules/module-web/commands/debug.js +15 -15
  150. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  151. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  152. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  153. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  154. package/build/ox_modules/module-web/commands/execute.js +24 -24
  155. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  156. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  157. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  158. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  159. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  160. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  161. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  162. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  163. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  164. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  165. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  166. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  167. package/build/ox_modules/module-web/commands/getText.js +18 -18
  168. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  169. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  170. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  171. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  172. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  173. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  174. package/build/ox_modules/module-web/commands/index.js +1 -1
  175. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  176. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  177. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  178. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  179. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  180. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  181. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  182. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  184. package/build/ox_modules/module-web/commands/mock.js +20 -20
  185. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  187. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  188. package/build/ox_modules/module-web/commands/open.js +16 -16
  189. package/build/ox_modules/module-web/commands/pause.js +15 -15
  190. package/build/ox_modules/module-web/commands/point.js +21 -21
  191. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  192. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  193. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  194. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  195. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  196. package/build/ox_modules/module-web/commands/select.js +23 -23
  197. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  198. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  199. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  200. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  201. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  202. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  203. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  204. package/build/ox_modules/module-web/commands/type.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  206. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  207. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  210. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  212. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  213. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  214. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  215. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  218. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  222. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  223. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  224. package/build/ox_modules/module-web.js +94 -94
  225. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  226. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  227. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  228. package/build/ox_modules/module-win/commands/back.js +11 -11
  229. package/build/ox_modules/module-win/commands/clear.js +13 -13
  230. package/build/ox_modules/module-win/commands/click.js +13 -13
  231. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  232. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  233. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  234. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  235. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  236. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  237. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  238. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  239. package/build/ox_modules/module-win/commands/getText.js +14 -14
  240. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  241. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  242. package/build/ox_modules/module-win/commands/index.js +1 -1
  243. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  244. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  245. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  246. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  247. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  248. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  249. package/build/ox_modules/module-win/commands/open.js +13 -13
  250. package/build/ox_modules/module-win/commands/pause.js +12 -12
  251. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  252. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  253. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  254. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  255. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  256. package/build/ox_modules/module-win/commands/tap.js +13 -13
  257. package/build/ox_modules/module-win/commands/type.js +16 -16
  258. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  259. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  260. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  261. package/build/ox_modules/module-win.js +47 -47
  262. package/build/ox_modules/utils.js +8 -8
  263. package/build/ox_reporters/excel/template.json +48 -48
  264. package/build/ox_reporters/html/index.ejs +163 -163
  265. package/build/ox_reporters/html/summary.ejs +77 -77
  266. package/build/ox_reporters/html/tests-details.ejs +134 -134
  267. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  268. package/build/ox_reporters/reporter-excel.js +1 -1
  269. package/build/ox_reporters/reporter-html.js +1 -1
  270. package/build/ox_reporters/reporter-json.js +1 -1
  271. package/build/ox_reporters/reporter-junit.js +1 -1
  272. package/build/ox_reporters/reporter-pdf.js +1 -1
  273. package/build/ox_reporters/reporter-rp.js +73 -42
  274. package/build/ox_reporters/reporter-xml.js +1 -1
  275. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  276. package/build/ox_services/service-devtools.js +1 -1
  277. package/build/reporter/FileReporterBase.js +1 -1
  278. package/build/reporter/ReportAggregator.js +1 -1
  279. package/build/reporter/ReporterBase.js +1 -1
  280. package/build/reporter/WebSocketReporter.js +1 -1
  281. package/build/runners/WorkerProcess.js +1 -1
  282. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  283. package/build/runners/cucumber/CucumberReporter.js +1 -1
  284. package/build/runners/cucumber/CucumberWorker.js +1 -1
  285. package/build/runners/cucumber/index.js +1 -1
  286. package/build/runners/cucumber/worker.js +1 -1
  287. package/build/runners/index.js +1 -1
  288. package/build/runners/oxygen/OxygenWorker.js +1 -1
  289. package/build/runners/oxygen/index.js +1 -1
  290. package/build/runners/oxygen/worker.js +1 -1
  291. package/config/default.json +6 -6
  292. package/package.json +139 -139
  293. package/types/index.d.ts +70 -70
  294. package/types/module-eyes.d.ts +39 -39
  295. package/types/module-http.d.ts +163 -163
  296. package/types/module-log.d.ts +34 -34
  297. package/types/module-mob.d.ts +966 -966
  298. package/types/module-pdf.d.ts +40 -40
  299. package/types/module-proxy.d.ts +100 -100
  300. package/types/module-shell.d.ts +24 -24
  301. package/types/module-utils.d.ts +99 -99
  302. package/types/module-web.d.ts +1053 -1053
  303. package/types/module-win.d.ts +352 -352
  304. package/types/oxygen.d.ts +53 -53
  305. package/log.txt +0 -1614
  306. package/reports/2025-06-08_231627/report.html +0 -440
  307. package/reports/2025-06-09_223615/report.html +0 -440
  308. package/transpiled/mongodb/etc/prepare.js +0 -18
  309. package/transpiled/mongodb/lib/admin.js +0 -182
  310. package/transpiled/mongodb/lib/beta.js +0 -26
  311. package/transpiled/mongodb/lib/bson.js +0 -220
  312. package/transpiled/mongodb/lib/bulk/common.js +0 -1041
  313. package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
  314. package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
  315. package/transpiled/mongodb/lib/change_stream.js +0 -517
  316. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
  317. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
  318. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
  319. package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
  320. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
  321. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
  322. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
  323. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
  324. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
  325. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
  326. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
  327. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
  328. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
  329. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
  330. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
  331. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
  332. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
  333. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
  334. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
  335. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
  336. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
  337. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
  338. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
  339. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
  340. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
  341. package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
  342. package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
  343. package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
  344. package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
  345. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
  346. package/transpiled/mongodb/lib/cmap/commands.js +0 -605
  347. package/transpiled/mongodb/lib/cmap/connect.js +0 -418
  348. package/transpiled/mongodb/lib/cmap/connection.js +0 -673
  349. package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
  350. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
  351. package/transpiled/mongodb/lib/cmap/errors.js +0 -128
  352. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
  353. package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
  354. package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
  355. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
  356. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
  357. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
  358. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
  359. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
  360. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
  361. package/transpiled/mongodb/lib/collection.js +0 -852
  362. package/transpiled/mongodb/lib/connection_string.js +0 -1452
  363. package/transpiled/mongodb/lib/constants.js +0 -162
  364. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
  365. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
  366. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
  367. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
  368. package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
  369. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
  370. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
  371. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
  372. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
  373. package/transpiled/mongodb/lib/db.js +0 -467
  374. package/transpiled/mongodb/lib/deps.js +0 -174
  375. package/transpiled/mongodb/lib/encrypter.js +0 -129
  376. package/transpiled/mongodb/lib/error.js +0 -1550
  377. package/transpiled/mongodb/lib/explain.js +0 -122
  378. package/transpiled/mongodb/lib/gridfs/download.js +0 -369
  379. package/transpiled/mongodb/lib/gridfs/index.js +0 -240
  380. package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
  381. package/transpiled/mongodb/lib/index.js +0 -975
  382. package/transpiled/mongodb/lib/mongo_client.js +0 -626
  383. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
  384. package/transpiled/mongodb/lib/mongo_logger.js +0 -812
  385. package/transpiled/mongodb/lib/mongo_types.js +0 -71
  386. package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
  387. package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
  388. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
  389. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
  390. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
  391. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
  392. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
  393. package/transpiled/mongodb/lib/operations/collections.js +0 -49
  394. package/transpiled/mongodb/lib/operations/command.js +0 -102
  395. package/transpiled/mongodb/lib/operations/count.js +0 -60
  396. package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
  397. package/transpiled/mongodb/lib/operations/delete.js +0 -134
  398. package/transpiled/mongodb/lib/operations/distinct.js +0 -77
  399. package/transpiled/mongodb/lib/operations/drop.js +0 -102
  400. package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
  401. package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
  402. package/transpiled/mongodb/lib/operations/find.js +0 -197
  403. package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
  404. package/transpiled/mongodb/lib/operations/get_more.js +0 -84
  405. package/transpiled/mongodb/lib/operations/indexes.js +0 -197
  406. package/transpiled/mongodb/lib/operations/insert.js +0 -138
  407. package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
  408. package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
  409. package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
  410. package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
  411. package/transpiled/mongodb/lib/operations/operation.js +0 -88
  412. package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
  413. package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
  414. package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
  415. package/transpiled/mongodb/lib/operations/rename.js +0 -48
  416. package/transpiled/mongodb/lib/operations/run_command.js +0 -64
  417. package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
  418. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
  419. package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
  420. package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
  421. package/transpiled/mongodb/lib/operations/stats.js +0 -39
  422. package/transpiled/mongodb/lib/operations/update.js +0 -218
  423. package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
  424. package/transpiled/mongodb/lib/read_concern.js +0 -92
  425. package/transpiled/mongodb/lib/read_preference.js +0 -215
  426. package/transpiled/mongodb/lib/resource_management.js +0 -74
  427. package/transpiled/mongodb/lib/sdam/common.js +0 -53
  428. package/transpiled/mongodb/lib/sdam/events.js +0 -177
  429. package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
  430. package/transpiled/mongodb/lib/sdam/server.js +0 -463
  431. package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
  432. package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
  433. package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
  434. package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
  435. package/transpiled/mongodb/lib/sdam/topology.js +0 -833
  436. package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
  437. package/transpiled/mongodb/lib/sessions.js +0 -988
  438. package/transpiled/mongodb/lib/sort.js +0 -123
  439. package/transpiled/mongodb/lib/timeout.js +0 -349
  440. package/transpiled/mongodb/lib/transactions.js +0 -149
  441. package/transpiled/mongodb/lib/utils.js +0 -1502
  442. package/transpiled/mongodb/lib/write_concern.js +0 -115
@@ -1,673 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CryptoConnection = exports.SizedMessageTransform = exports.Connection = void 0;
7
- exports.hasSessionSupport = hasSessionSupport;
8
-
9
- const stream_1 = require("stream");
10
-
11
- const timers_1 = require("timers");
12
-
13
- const bson_1 = require("../bson");
14
-
15
- const constants_1 = require("../constants");
16
-
17
- const error_1 = require("../error");
18
-
19
- const mongo_logger_1 = require("../mongo_logger");
20
-
21
- const mongo_types_1 = require("../mongo_types");
22
-
23
- const read_preference_1 = require("../read_preference");
24
-
25
- const common_1 = require("../sdam/common");
26
-
27
- const sessions_1 = require("../sessions");
28
-
29
- const timeout_1 = require("../timeout");
30
-
31
- const utils_1 = require("../utils");
32
-
33
- const command_monitoring_events_1 = require("./command_monitoring_events");
34
-
35
- const commands_1 = require("./commands");
36
-
37
- const stream_description_1 = require("./stream_description");
38
-
39
- const compression_1 = require("./wire_protocol/compression");
40
-
41
- const on_data_1 = require("./wire_protocol/on_data");
42
-
43
- const responses_1 = require("./wire_protocol/responses");
44
-
45
- const shared_1 = require("./wire_protocol/shared");
46
- /** @internal */
47
-
48
-
49
- function hasSessionSupport(conn) {
50
- const description = conn.description;
51
- return description.logicalSessionTimeoutMinutes != null;
52
- }
53
-
54
- function streamIdentifier(stream, options) {
55
- if (options.proxyHost) {
56
- // If proxy options are specified, the properties of `stream` itself
57
- // will not accurately reflect what endpoint this is connected to.
58
- return options.hostAddress.toString();
59
- }
60
-
61
- const {
62
- remoteAddress,
63
- remotePort
64
- } = stream;
65
-
66
- if (typeof remoteAddress === 'string' && typeof remotePort === 'number') {
67
- return utils_1.HostAddress.fromHostPort(remoteAddress, remotePort).toString();
68
- }
69
-
70
- return (0, utils_1.uuidV4)().toString('hex');
71
- }
72
- /** @internal */
73
-
74
-
75
- class Connection extends mongo_types_1.TypedEventEmitter {
76
- constructor(stream, options) {
77
- super();
78
- this.lastHelloMS = -1;
79
- this.helloOk = false;
80
- this.delayedTimeoutId = null;
81
- /** Indicates that the connection (including underlying TCP socket) has been closed. */
82
-
83
- this.closed = false;
84
- this.clusterTime = null;
85
- this.error = null;
86
- this.dataEvents = null;
87
- this.on('error', utils_1.noop);
88
- this.socket = stream;
89
- this.id = options.id;
90
- this.address = streamIdentifier(stream, options);
91
- this.socketTimeoutMS = options.socketTimeoutMS ?? 0;
92
- this.monitorCommands = options.monitorCommands;
93
- this.serverApi = options.serverApi;
94
- this.mongoLogger = options.mongoLogger;
95
- this.established = false;
96
- this.description = new stream_description_1.StreamDescription(this.address, options);
97
- this.generation = options.generation;
98
- this.lastUseTime = (0, utils_1.now)();
99
- this.messageStream = this.socket.on('error', this.onSocketError.bind(this)).pipe(new SizedMessageTransform({
100
- connection: this
101
- })).on('error', this.onTransformError.bind(this));
102
- this.socket.on('close', this.onClose.bind(this));
103
- this.socket.on('timeout', this.onTimeout.bind(this));
104
- this.messageStream.pause();
105
- }
106
-
107
- get hello() {
108
- return this.description.hello;
109
- } // the `connect` method stores the result of the handshake hello on the connection
110
-
111
-
112
- set hello(response) {
113
- this.description.receiveResponse(response);
114
- Object.freeze(this.description);
115
- }
116
-
117
- get serviceId() {
118
- return this.hello?.serviceId;
119
- }
120
-
121
- get loadBalanced() {
122
- return this.description.loadBalanced;
123
- }
124
-
125
- get idleTime() {
126
- return (0, utils_1.calculateDurationInMs)(this.lastUseTime);
127
- }
128
-
129
- get hasSessionSupport() {
130
- return this.description.logicalSessionTimeoutMinutes != null;
131
- }
132
-
133
- get supportsOpMsg() {
134
- return this.description != null && (0, utils_1.maxWireVersion)(this) >= 6 && !this.description.__nodejs_mock_server__;
135
- }
136
-
137
- get shouldEmitAndLogCommand() {
138
- return (this.monitorCommands || this.established && !this.authContext?.reauthenticating && this.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.COMMAND, mongo_logger_1.SeverityLevel.DEBUG)) ?? false;
139
- }
140
-
141
- markAvailable() {
142
- this.lastUseTime = (0, utils_1.now)();
143
- }
144
-
145
- onSocketError(cause) {
146
- this.onError(new error_1.MongoNetworkError(cause.message, {
147
- cause
148
- }));
149
- }
150
-
151
- onTransformError(error) {
152
- this.onError(error);
153
- }
154
-
155
- onError(error) {
156
- this.cleanup(error);
157
- }
158
-
159
- onClose() {
160
- const message = `connection ${this.id} to ${this.address} closed`;
161
- this.cleanup(new error_1.MongoNetworkError(message));
162
- }
163
-
164
- onTimeout() {
165
- this.delayedTimeoutId = (0, timers_1.setTimeout)(() => {
166
- const message = `connection ${this.id} to ${this.address} timed out`;
167
- const beforeHandshake = this.hello == null;
168
- this.cleanup(new error_1.MongoNetworkTimeoutError(message, {
169
- beforeHandshake
170
- }));
171
- }, 1).unref(); // No need for this timer to hold the event loop open
172
- }
173
-
174
- destroy() {
175
- if (this.closed) {
176
- return;
177
- } // load balanced mode requires that these listeners remain on the connection
178
- // after cleanup on timeouts, errors or close so we remove them before calling
179
- // cleanup.
180
-
181
-
182
- this.removeAllListeners(Connection.PINNED);
183
- this.removeAllListeners(Connection.UNPINNED);
184
- const message = `connection ${this.id} to ${this.address} closed`;
185
- this.cleanup(new error_1.MongoNetworkError(message));
186
- }
187
- /**
188
- * A method that cleans up the connection. When `force` is true, this method
189
- * forcibly destroys the socket.
190
- *
191
- * If an error is provided, any in-flight operations will be closed with the error.
192
- *
193
- * This method does nothing if the connection is already closed.
194
- */
195
-
196
-
197
- cleanup(error) {
198
- if (this.closed) {
199
- return;
200
- }
201
-
202
- this.socket.destroy();
203
- this.error = error;
204
- this.dataEvents?.throw(error).then(undefined, utils_1.squashError);
205
- this.closed = true;
206
- this.emit(Connection.CLOSE);
207
- }
208
-
209
- prepareCommand(db, command, options) {
210
- let cmd = { ...command
211
- };
212
- const readPreference = (0, shared_1.getReadPreference)(options);
213
- const session = options?.session;
214
- let clusterTime = this.clusterTime;
215
-
216
- if (this.serverApi) {
217
- const {
218
- version,
219
- strict,
220
- deprecationErrors
221
- } = this.serverApi;
222
- cmd.apiVersion = version;
223
- if (strict != null) cmd.apiStrict = strict;
224
- if (deprecationErrors != null) cmd.apiDeprecationErrors = deprecationErrors;
225
- }
226
-
227
- if (this.hasSessionSupport && session) {
228
- if (session.clusterTime && clusterTime && session.clusterTime.clusterTime.greaterThan(clusterTime.clusterTime)) {
229
- clusterTime = session.clusterTime;
230
- }
231
-
232
- const sessionError = (0, sessions_1.applySession)(session, cmd, options);
233
- if (sessionError) throw sessionError;
234
- } else if (session?.explicit) {
235
- throw new error_1.MongoCompatibilityError('Current topology does not support sessions');
236
- } // if we have a known cluster time, gossip it
237
-
238
-
239
- if (clusterTime) {
240
- cmd.$clusterTime = clusterTime;
241
- } // For standalone, drivers MUST NOT set $readPreference.
242
-
243
-
244
- if (this.description.type !== common_1.ServerType.Standalone) {
245
- if (!(0, shared_1.isSharded)(this) && !this.description.loadBalanced && this.supportsOpMsg && options.directConnection === true && readPreference?.mode === 'primary') {
246
- // For mongos and load balancers with 'primary' mode, drivers MUST NOT set $readPreference.
247
- // For all other types with a direct connection, if the read preference is 'primary'
248
- // (driver sets 'primary' as default if no read preference is configured),
249
- // the $readPreference MUST be set to 'primaryPreferred'
250
- // to ensure that any server type can handle the request.
251
- cmd.$readPreference = read_preference_1.ReadPreference.primaryPreferred.toJSON();
252
- } else if ((0, shared_1.isSharded)(this) && !this.supportsOpMsg && readPreference?.mode !== 'primary') {
253
- // When sending a read operation via OP_QUERY and the $readPreference modifier,
254
- // the query MUST be provided using the $query modifier.
255
- cmd = {
256
- $query: cmd,
257
- $readPreference: readPreference.toJSON()
258
- };
259
- } else if (readPreference?.mode !== 'primary') {
260
- // For mode 'primary', drivers MUST NOT set $readPreference.
261
- // For all other read preference modes (i.e. 'secondary', 'primaryPreferred', ...),
262
- // drivers MUST set $readPreference
263
- cmd.$readPreference = readPreference.toJSON();
264
- }
265
- }
266
-
267
- const commandOptions = {
268
- numberToSkip: 0,
269
- numberToReturn: -1,
270
- checkKeys: false,
271
- // This value is not overridable
272
- secondaryOk: readPreference.secondaryOk(),
273
- ...options
274
- };
275
- options.timeoutContext?.addMaxTimeMSToCommand(cmd, options);
276
- const message = this.supportsOpMsg ? new commands_1.OpMsgRequest(db, cmd, commandOptions) : new commands_1.OpQueryRequest(db, cmd, commandOptions);
277
- return message;
278
- }
279
-
280
- async *sendWire(message, options, responseType) {
281
- this.throwIfAborted();
282
- const timeout = options.socketTimeoutMS ?? options?.timeoutContext?.getSocketTimeoutMS() ?? this.socketTimeoutMS;
283
- this.socket.setTimeout(timeout);
284
-
285
- try {
286
- await this.writeCommand(message, {
287
- agreedCompressor: this.description.compressor ?? 'none',
288
- zlibCompressionLevel: this.description.zlibCompressionLevel,
289
- timeoutContext: options.timeoutContext,
290
- signal: options.signal
291
- });
292
-
293
- if (options.noResponse || message.moreToCome) {
294
- yield responses_1.MongoDBResponse.empty;
295
- return;
296
- }
297
-
298
- this.throwIfAborted();
299
-
300
- if (options.timeoutContext?.csotEnabled() && options.timeoutContext.minRoundTripTime != null && options.timeoutContext.remainingTimeMS < options.timeoutContext.minRoundTripTime) {
301
- throw new error_1.MongoOperationTimeoutError('Server roundtrip time is greater than the time remaining');
302
- }
303
-
304
- for await (const response of this.readMany(options)) {
305
- this.socket.setTimeout(0);
306
- const bson = response.parse();
307
- const document = (responseType ?? responses_1.MongoDBResponse).make(bson);
308
- yield document;
309
- this.throwIfAborted();
310
- this.socket.setTimeout(timeout);
311
- }
312
- } finally {
313
- this.socket.setTimeout(0);
314
- }
315
- }
316
-
317
- async *sendCommand(ns, command, options, responseType) {
318
- options?.signal?.throwIfAborted();
319
- const message = this.prepareCommand(ns.db, command, options);
320
- let started = 0;
321
-
322
- if (this.shouldEmitAndLogCommand) {
323
- started = (0, utils_1.now)();
324
- this.emitAndLogCommand(this.monitorCommands, Connection.COMMAND_STARTED, message.databaseName, this.established, new command_monitoring_events_1.CommandStartedEvent(this, message, this.description.serverConnectionId));
325
- } // If `documentsReturnedIn` not set or raw is not enabled, use input bson options
326
- // Otherwise, support raw flag. Raw only works for cursors that hardcode firstBatch/nextBatch fields
327
-
328
-
329
- const bsonOptions = options.documentsReturnedIn == null || !options.raw ? options : { ...options,
330
- raw: false,
331
- fieldsAsRaw: {
332
- [options.documentsReturnedIn]: true
333
- }
334
- };
335
- /** MongoDBResponse instance or subclass */
336
-
337
- let document = undefined;
338
- /** Cached result of a toObject call */
339
-
340
- let object = undefined;
341
-
342
- try {
343
- this.throwIfAborted();
344
-
345
- for await (document of this.sendWire(message, options, responseType)) {
346
- object = undefined;
347
-
348
- if (options.session != null) {
349
- (0, sessions_1.updateSessionFromResponse)(options.session, document);
350
- }
351
-
352
- if (document.$clusterTime) {
353
- this.clusterTime = document.$clusterTime;
354
- this.emit(Connection.CLUSTER_TIME_RECEIVED, document.$clusterTime);
355
- }
356
-
357
- if (document.ok === 0) {
358
- if (options.timeoutContext?.csotEnabled() && document.isMaxTimeExpiredError) {
359
- throw new error_1.MongoOperationTimeoutError('Server reported a timeout error', {
360
- cause: new error_1.MongoServerError(object ??= document.toObject(bsonOptions))
361
- });
362
- }
363
-
364
- throw new error_1.MongoServerError(object ??= document.toObject(bsonOptions));
365
- }
366
-
367
- if (this.shouldEmitAndLogCommand) {
368
- this.emitAndLogCommand(this.monitorCommands, Connection.COMMAND_SUCCEEDED, message.databaseName, this.established, new command_monitoring_events_1.CommandSucceededEvent(this, message, options.noResponse ? undefined : message.moreToCome ? {
369
- ok: 1
370
- } : object ??= document.toObject(bsonOptions), started, this.description.serverConnectionId));
371
- }
372
-
373
- if (responseType == null) {
374
- yield object ??= document.toObject(bsonOptions);
375
- } else {
376
- yield document;
377
- }
378
-
379
- this.throwIfAborted();
380
- }
381
- } catch (error) {
382
- if (this.shouldEmitAndLogCommand) {
383
- this.emitAndLogCommand(this.monitorCommands, Connection.COMMAND_FAILED, message.databaseName, this.established, new command_monitoring_events_1.CommandFailedEvent(this, message, error, started, this.description.serverConnectionId));
384
- }
385
-
386
- throw error;
387
- }
388
- }
389
-
390
- async command(ns, command, options = {}, responseType) {
391
- this.throwIfAborted();
392
- options.signal?.throwIfAborted();
393
-
394
- for await (const document of this.sendCommand(ns, command, options, responseType)) {
395
- if (options.timeoutContext?.csotEnabled()) {
396
- if (responses_1.MongoDBResponse.is(document)) {
397
- if (document.isMaxTimeExpiredError) {
398
- throw new error_1.MongoOperationTimeoutError('Server reported a timeout error', {
399
- cause: new error_1.MongoServerError(document.toObject())
400
- });
401
- }
402
- } else {
403
- if (Array.isArray(document?.writeErrors) && document.writeErrors.some(error => error?.code === error_1.MONGODB_ERROR_CODES.MaxTimeMSExpired) || document?.writeConcernError?.code === error_1.MONGODB_ERROR_CODES.MaxTimeMSExpired) {
404
- throw new error_1.MongoOperationTimeoutError('Server reported a timeout error', {
405
- cause: new error_1.MongoServerError(document)
406
- });
407
- }
408
- }
409
- }
410
-
411
- return document;
412
- }
413
-
414
- throw new error_1.MongoUnexpectedServerResponseError('Unable to get response from server');
415
- }
416
-
417
- exhaustCommand(ns, command, options, replyListener) {
418
- const exhaustLoop = async () => {
419
- this.throwIfAborted();
420
-
421
- for await (const reply of this.sendCommand(ns, command, options)) {
422
- replyListener(undefined, reply);
423
- this.throwIfAborted();
424
- }
425
-
426
- throw new error_1.MongoUnexpectedServerResponseError('Server ended moreToCome unexpectedly');
427
- };
428
-
429
- exhaustLoop().then(undefined, replyListener);
430
- }
431
-
432
- throwIfAborted() {
433
- if (this.error) throw this.error;
434
- }
435
- /**
436
- * @internal
437
- *
438
- * Writes an OP_MSG or OP_QUERY request to the socket, optionally compressing the command. This method
439
- * waits until the socket's buffer has emptied (the Nodejs socket `drain` event has fired).
440
- */
441
-
442
-
443
- async writeCommand(command, options) {
444
- const finalCommand = options.agreedCompressor === 'none' || !commands_1.OpCompressedRequest.canCompress(command) ? command : new commands_1.OpCompressedRequest(command, {
445
- agreedCompressor: options.agreedCompressor ?? 'none',
446
- zlibCompressionLevel: options.zlibCompressionLevel ?? 0
447
- });
448
- const buffer = Buffer.concat(await finalCommand.toBin());
449
-
450
- if (options.timeoutContext?.csotEnabled()) {
451
- if (options.timeoutContext.minRoundTripTime != null && options.timeoutContext.remainingTimeMS < options.timeoutContext.minRoundTripTime) {
452
- throw new error_1.MongoOperationTimeoutError('Server roundtrip time is greater than the time remaining');
453
- }
454
- }
455
-
456
- if (this.socket.write(buffer)) return;
457
- const drainEvent = (0, utils_1.once)(this.socket, 'drain', options);
458
- const timeout = options?.timeoutContext?.timeoutForSocketWrite;
459
- const drained = timeout ? Promise.race([drainEvent, timeout]) : drainEvent;
460
-
461
- try {
462
- return await drained;
463
- } catch (writeError) {
464
- if (timeout_1.TimeoutError.is(writeError)) {
465
- const timeoutError = new error_1.MongoOperationTimeoutError('Timed out at socket write');
466
- this.onError(timeoutError);
467
- throw timeoutError;
468
- } else if (writeError === options.signal?.reason) {
469
- this.onError(writeError);
470
- }
471
-
472
- throw writeError;
473
- } finally {
474
- timeout?.clear();
475
- }
476
- }
477
- /**
478
- * @internal
479
- *
480
- * Returns an async generator that yields full wire protocol messages from the underlying socket. This function
481
- * yields messages until `moreToCome` is false or not present in a response, or the caller cancels the request
482
- * by calling `return` on the generator.
483
- *
484
- * Note that `for-await` loops call `return` automatically when the loop is exited.
485
- */
486
-
487
-
488
- async *readMany(options) {
489
- try {
490
- this.dataEvents = (0, on_data_1.onData)(this.messageStream, options);
491
- this.messageStream.resume();
492
-
493
- for await (const message of this.dataEvents) {
494
- const response = await (0, compression_1.decompressResponse)(message);
495
- yield response;
496
-
497
- if (!response.moreToCome) {
498
- return;
499
- }
500
- }
501
- } catch (readError) {
502
- if (timeout_1.TimeoutError.is(readError)) {
503
- const timeoutError = new error_1.MongoOperationTimeoutError(`Timed out during socket read (${readError.duration}ms)`);
504
- this.dataEvents = null;
505
- this.onError(timeoutError);
506
- throw timeoutError;
507
- } else if (readError === options.signal?.reason) {
508
- this.onError(readError);
509
- }
510
-
511
- throw readError;
512
- } finally {
513
- this.dataEvents = null;
514
- this.messageStream.pause();
515
- }
516
- }
517
-
518
- }
519
-
520
- exports.Connection = Connection;
521
- /** @event */
522
-
523
- Connection.COMMAND_STARTED = constants_1.COMMAND_STARTED;
524
- /** @event */
525
-
526
- Connection.COMMAND_SUCCEEDED = constants_1.COMMAND_SUCCEEDED;
527
- /** @event */
528
-
529
- Connection.COMMAND_FAILED = constants_1.COMMAND_FAILED;
530
- /** @event */
531
-
532
- Connection.CLUSTER_TIME_RECEIVED = constants_1.CLUSTER_TIME_RECEIVED;
533
- /** @event */
534
-
535
- Connection.CLOSE = constants_1.CLOSE;
536
- /** @event */
537
-
538
- Connection.PINNED = constants_1.PINNED;
539
- /** @event */
540
-
541
- Connection.UNPINNED = constants_1.UNPINNED;
542
- /** @internal */
543
-
544
- class SizedMessageTransform extends stream_1.Transform {
545
- constructor({
546
- connection
547
- }) {
548
- super({
549
- writableObjectMode: false,
550
- readableObjectMode: true
551
- });
552
- this.bufferPool = new utils_1.BufferPool();
553
- this.connection = connection;
554
- }
555
-
556
- _transform(chunk, encoding, callback) {
557
- if (this.connection.delayedTimeoutId != null) {
558
- (0, timers_1.clearTimeout)(this.connection.delayedTimeoutId);
559
- this.connection.delayedTimeoutId = null;
560
- }
561
-
562
- this.bufferPool.append(chunk);
563
-
564
- while (this.bufferPool.length) {
565
- // While there are any bytes in the buffer
566
- // Try to fetch a size from the top 4 bytes
567
- const sizeOfMessage = this.bufferPool.getInt32();
568
-
569
- if (sizeOfMessage == null) {
570
- // Not even an int32 worth of data. Stop the loop, we need more chunks.
571
- break;
572
- }
573
-
574
- if (sizeOfMessage < 0) {
575
- // The size in the message has a negative value, this is probably corruption, throw:
576
- return callback(new error_1.MongoParseError(`Message size cannot be negative: ${sizeOfMessage}`));
577
- }
578
-
579
- if (sizeOfMessage > this.bufferPool.length) {
580
- // We do not have enough bytes to make a sizeOfMessage chunk
581
- break;
582
- } // Add a message to the stream
583
-
584
-
585
- const message = this.bufferPool.read(sizeOfMessage);
586
-
587
- if (!this.push(message)) {
588
- // We only subscribe to data events so we should never get backpressure
589
- // if we do, we do not have the handling for it.
590
- return callback(new error_1.MongoRuntimeError(`SizedMessageTransform does not support backpressure`));
591
- }
592
- }
593
-
594
- callback();
595
- }
596
-
597
- }
598
-
599
- exports.SizedMessageTransform = SizedMessageTransform;
600
- /** @internal */
601
-
602
- class CryptoConnection extends Connection {
603
- constructor(stream, options) {
604
- super(stream, options);
605
- this.autoEncrypter = options.autoEncrypter;
606
- }
607
-
608
- async command(ns, cmd, options, responseType) {
609
- const {
610
- autoEncrypter
611
- } = this;
612
-
613
- if (!autoEncrypter) {
614
- // TODO(NODE-6065): throw a MongoRuntimeError in Node V7
615
- // @ts-expect-error No cause provided because there is no underlying error.
616
- throw new error_1.MongoMissingDependencyError('No AutoEncrypter available for encryption', {
617
- dependencyName: 'n/a'
618
- });
619
- }
620
-
621
- const serverWireVersion = (0, utils_1.maxWireVersion)(this);
622
-
623
- if (serverWireVersion === 0) {
624
- // This means the initial handshake hasn't happened yet
625
- return await super.command(ns, cmd, options, responseType);
626
- }
627
-
628
- if (serverWireVersion < 8) {
629
- throw new error_1.MongoCompatibilityError('Auto-encryption requires a minimum MongoDB version of 4.2');
630
- } // Save sort or indexKeys based on the command being run
631
- // the encrypt API serializes our JS objects to BSON to pass to the native code layer
632
- // and then deserializes the encrypted result, the protocol level components
633
- // of the command (ex. sort) are then converted to JS objects potentially losing
634
- // import key order information. These fields are never encrypted so we can save the values
635
- // from before the encryption and replace them after encryption has been performed
636
-
637
-
638
- const sort = cmd.find || cmd.findAndModify ? cmd.sort : null;
639
- const indexKeys = cmd.createIndexes ? cmd.indexes.map(index => index.key) : null;
640
- const encrypted = await autoEncrypter.encrypt(ns.toString(), cmd, options); // Replace the saved values
641
-
642
- if (sort != null && (cmd.find || cmd.findAndModify)) {
643
- encrypted.sort = sort;
644
- }
645
-
646
- if (indexKeys != null && cmd.createIndexes) {
647
- for (const [offset, index] of indexKeys.entries()) {
648
- // @ts-expect-error `encrypted` is a generic "command", but we've narrowed for only `createIndexes` commands here
649
- encrypted.indexes[offset].key = index;
650
- }
651
- }
652
-
653
- const encryptedResponse = await super.command(ns, encrypted, options, // Eventually we want to require `responseType` which means we would satisfy `T` as the return type.
654
- // In the meantime, we want encryptedResponse to always be _at least_ a MongoDBResponse if not a more specific subclass
655
- // So that we can ensure we have access to the on-demand APIs for decorate response
656
- responseType ?? responses_1.MongoDBResponse);
657
- const result = await autoEncrypter.decrypt(encryptedResponse.toBytes(), options);
658
- const decryptedResponse = responseType?.make(result) ?? (0, bson_1.deserialize)(result, options);
659
-
660
- if (autoEncrypter[constants_1.kDecorateResult]) {
661
- if (responseType == null) {
662
- (0, utils_1.decorateDecryptionResult)(decryptedResponse, encryptedResponse.toObject(), true);
663
- } else if (decryptedResponse instanceof responses_1.CursorResponse) {
664
- decryptedResponse.encryptedResponse = encryptedResponse;
665
- }
666
- }
667
-
668
- return decryptedResponse;
669
- }
670
-
671
- }
672
-
673
- exports.CryptoConnection = CryptoConnection;