oxygen-cli 1.40.2-beta.1 → 1.40.2

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 +1750 -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 -2
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -5
  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 -9
  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-pdf.js +35 -35
  126. package/build/ox_modules/module-proxy.js +77 -77
  127. package/build/ox_modules/module-serial.js +55 -55
  128. package/build/ox_modules/module-shell.js +52 -33
  129. package/build/ox_modules/module-soap.js +72 -72
  130. package/build/ox_modules/module-twilio.js +41 -41
  131. package/build/ox_modules/module-utils.js +91 -91
  132. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  133. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  134. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  135. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  136. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  137. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  140. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  142. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  143. package/build/ox_modules/module-web/commands/back.js +16 -16
  144. package/build/ox_modules/module-web/commands/clear.js +18 -18
  145. package/build/ox_modules/module-web/commands/click.js +25 -25
  146. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  147. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  148. package/build/ox_modules/module-web/commands/debug.js +15 -15
  149. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  150. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  151. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  152. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  153. package/build/ox_modules/module-web/commands/execute.js +24 -24
  154. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  155. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  156. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  157. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  158. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  159. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  160. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  161. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  162. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  163. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  164. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  165. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  166. package/build/ox_modules/module-web/commands/getText.js +18 -18
  167. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  168. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  169. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  170. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  171. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  172. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  173. package/build/ox_modules/module-web/commands/index.js +1 -1
  174. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  175. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  176. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  177. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  178. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  179. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  180. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  181. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  182. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/mock.js +20 -20
  184. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  185. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  187. package/build/ox_modules/module-web/commands/open.js +16 -16
  188. package/build/ox_modules/module-web/commands/pause.js +15 -15
  189. package/build/ox_modules/module-web/commands/point.js +21 -21
  190. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  191. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  192. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  193. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  194. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  195. package/build/ox_modules/module-web/commands/select.js +23 -23
  196. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  197. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  198. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  199. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  200. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  201. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  202. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  203. package/build/ox_modules/module-web/commands/type.js +20 -20
  204. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  206. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  207. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  210. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  212. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  213. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  214. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  215. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  218. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  222. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  223. package/build/ox_modules/module-web.js +94 -94
  224. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  225. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  226. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  227. package/build/ox_modules/module-win/commands/back.js +11 -11
  228. package/build/ox_modules/module-win/commands/clear.js +13 -13
  229. package/build/ox_modules/module-win/commands/click.js +13 -13
  230. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  231. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  232. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  233. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  234. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  235. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  236. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  237. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  238. package/build/ox_modules/module-win/commands/getText.js +14 -14
  239. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  240. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  241. package/build/ox_modules/module-win/commands/index.js +1 -1
  242. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  243. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  244. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  245. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  246. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  247. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  248. package/build/ox_modules/module-win/commands/open.js +13 -13
  249. package/build/ox_modules/module-win/commands/pause.js +12 -12
  250. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  251. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  252. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  253. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  254. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  255. package/build/ox_modules/module-win/commands/tap.js +13 -13
  256. package/build/ox_modules/module-win/commands/type.js +16 -16
  257. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  258. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  259. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  260. package/build/ox_modules/module-win.js +47 -47
  261. package/build/ox_modules/utils.js +8 -8
  262. package/build/ox_reporters/excel/template.json +48 -48
  263. package/build/ox_reporters/html/index.ejs +163 -163
  264. package/build/ox_reporters/html/summary.ejs +77 -77
  265. package/build/ox_reporters/html/tests-details.ejs +134 -134
  266. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  267. package/build/ox_reporters/reporter-excel.js +1 -1
  268. package/build/ox_reporters/reporter-html.js +1 -1
  269. package/build/ox_reporters/reporter-json.js +1 -1
  270. package/build/ox_reporters/reporter-junit.js +1 -1
  271. package/build/ox_reporters/reporter-pdf.js +1 -1
  272. package/build/ox_reporters/reporter-rp.js +73 -42
  273. package/build/ox_reporters/reporter-xml.js +1 -1
  274. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  275. package/build/ox_services/service-devtools.js +1 -1
  276. package/build/reporter/FileReporterBase.js +1 -1
  277. package/build/reporter/ReportAggregator.js +5 -13
  278. package/build/reporter/ReporterBase.js +1 -1
  279. package/build/reporter/WebSocketReporter.js +1 -1
  280. package/build/runners/WorkerProcess.js +1 -1
  281. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  282. package/build/runners/cucumber/CucumberReporter.js +1 -1
  283. package/build/runners/cucumber/CucumberWorker.js +1 -1
  284. package/build/runners/cucumber/index.js +1 -1
  285. package/build/runners/cucumber/worker.js +1 -1
  286. package/build/runners/index.js +1 -1
  287. package/build/runners/oxygen/OxygenWorker.js +1 -1
  288. package/build/runners/oxygen/index.js +1 -1
  289. package/build/runners/oxygen/worker.js +1 -1
  290. package/config/default.json +6 -6
  291. package/package.json +137 -139
  292. package/types/index.d.ts +70 -70
  293. package/types/module-eyes.d.ts +39 -39
  294. package/types/module-http.d.ts +163 -163
  295. package/types/module-log.d.ts +34 -34
  296. package/types/module-mob.d.ts +966 -966
  297. package/types/module-pdf.d.ts +40 -40
  298. package/types/module-proxy.d.ts +100 -100
  299. package/types/module-shell.d.ts +24 -24
  300. package/types/module-utils.d.ts +99 -99
  301. package/types/module-web.d.ts +1053 -1053
  302. package/types/module-win.d.ts +352 -352
  303. package/types/oxygen.d.ts +53 -53
  304. package/build/ox_modules/module-mongo.js +0 -302
  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,1082 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CursorTimeoutContext = exports.AbstractCursor = exports.CursorTimeoutMode = exports.CURSOR_FLAGS = void 0;
7
-
8
- const stream_1 = require("stream");
9
-
10
- const bson_1 = require("../bson");
11
-
12
- const error_1 = require("../error");
13
-
14
- const mongo_types_1 = require("../mongo_types");
15
-
16
- const execute_operation_1 = require("../operations/execute_operation");
17
-
18
- const get_more_1 = require("../operations/get_more");
19
-
20
- const kill_cursors_1 = require("../operations/kill_cursors");
21
-
22
- const read_concern_1 = require("../read_concern");
23
-
24
- const read_preference_1 = require("../read_preference");
25
-
26
- const resource_management_1 = require("../resource_management");
27
-
28
- const sessions_1 = require("../sessions");
29
-
30
- const timeout_1 = require("../timeout");
31
-
32
- const utils_1 = require("../utils");
33
- /** @public */
34
-
35
-
36
- exports.CURSOR_FLAGS = ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'exhaust', 'partial'];
37
-
38
- function removeActiveCursor() {
39
- this.client.s.activeCursors.delete(this);
40
- }
41
- /**
42
- * @public
43
- * @experimental
44
- * Specifies how `timeoutMS` is applied to the cursor. Can be either `'cursorLifeTime'` or `'iteration'`
45
- * When set to `'iteration'`, the deadline specified by `timeoutMS` applies to each call of
46
- * `cursor.next()`.
47
- * When set to `'cursorLifetime'`, the deadline applies to the life of the entire cursor.
48
- *
49
- * Depending on the type of cursor being used, this option has different default values.
50
- * For non-tailable cursors, this value defaults to `'cursorLifetime'`
51
- * For tailable cursors, this value defaults to `'iteration'` since tailable cursors, by
52
- * definition can have an arbitrarily long lifetime.
53
- *
54
- * @example
55
- * ```ts
56
- * const cursor = collection.find({}, {timeoutMS: 100, timeoutMode: 'iteration'});
57
- * for await (const doc of cursor) {
58
- * // process doc
59
- * // This will throw a timeout error if any of the iterator's `next()` calls takes more than 100ms, but
60
- * // will continue to iterate successfully otherwise, regardless of the number of batches.
61
- * }
62
- * ```
63
- *
64
- * @example
65
- * ```ts
66
- * const cursor = collection.find({}, { timeoutMS: 1000, timeoutMode: 'cursorLifetime' });
67
- * const docs = await cursor.toArray(); // This entire line will throw a timeout error if all batches are not fetched and returned within 1000ms.
68
- * ```
69
- */
70
-
71
-
72
- exports.CursorTimeoutMode = Object.freeze({
73
- ITERATION: 'iteration',
74
- LIFETIME: 'cursorLifetime'
75
- });
76
- /** @public */
77
-
78
- class AbstractCursor extends mongo_types_1.TypedEventEmitter {
79
- /** @internal */
80
- constructor(client, namespace, options = {}) {
81
- super();
82
- /** @internal */
83
-
84
- this.documents = null;
85
- /** @internal */
86
-
87
- this.hasEmittedClose = false;
88
- this.on('error', utils_1.noop);
89
-
90
- if (!client.s.isMongoClient) {
91
- throw new error_1.MongoRuntimeError('Cursor must be constructed with MongoClient');
92
- }
93
-
94
- this.cursorClient = client;
95
- this.cursorNamespace = namespace;
96
- this.cursorId = null;
97
- this.initialized = false;
98
- this.isClosed = false;
99
- this.isKilled = false;
100
- this.cursorOptions = {
101
- readPreference: options.readPreference && options.readPreference instanceof read_preference_1.ReadPreference ? options.readPreference : read_preference_1.ReadPreference.primary,
102
- ...(0, bson_1.pluckBSONSerializeOptions)(options),
103
- timeoutMS: options?.timeoutContext?.csotEnabled() ? options.timeoutContext.timeoutMS : options.timeoutMS,
104
- tailable: options.tailable,
105
- awaitData: options.awaitData
106
- };
107
-
108
- if (this.cursorOptions.timeoutMS != null) {
109
- if (options.timeoutMode == null) {
110
- if (options.tailable) {
111
- if (options.awaitData) {
112
- if (options.maxAwaitTimeMS != null && options.maxAwaitTimeMS >= this.cursorOptions.timeoutMS) throw new error_1.MongoInvalidArgumentError('Cannot specify maxAwaitTimeMS >= timeoutMS for a tailable awaitData cursor');
113
- }
114
-
115
- this.cursorOptions.timeoutMode = exports.CursorTimeoutMode.ITERATION;
116
- } else {
117
- this.cursorOptions.timeoutMode = exports.CursorTimeoutMode.LIFETIME;
118
- }
119
- } else {
120
- if (options.tailable && options.timeoutMode === exports.CursorTimeoutMode.LIFETIME) {
121
- throw new error_1.MongoInvalidArgumentError("Cannot set tailable cursor's timeoutMode to LIFETIME");
122
- }
123
-
124
- this.cursorOptions.timeoutMode = options.timeoutMode;
125
- }
126
- } else {
127
- if (options.timeoutMode != null) throw new error_1.MongoInvalidArgumentError('Cannot set timeoutMode without setting timeoutMS');
128
- } // Set for initial command
129
-
130
-
131
- this.cursorOptions.omitMaxTimeMS = this.cursorOptions.timeoutMS != null && (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION && !this.cursorOptions.tailable || this.cursorOptions.tailable && !this.cursorOptions.awaitData);
132
- const readConcern = read_concern_1.ReadConcern.fromOptions(options);
133
-
134
- if (readConcern) {
135
- this.cursorOptions.readConcern = readConcern;
136
- }
137
-
138
- if (typeof options.batchSize === 'number') {
139
- this.cursorOptions.batchSize = options.batchSize;
140
- } // we check for undefined specifically here to allow falsy values
141
- // eslint-disable-next-line no-restricted-syntax
142
-
143
-
144
- if (options.comment !== undefined) {
145
- this.cursorOptions.comment = options.comment;
146
- }
147
-
148
- if (typeof options.maxTimeMS === 'number') {
149
- this.cursorOptions.maxTimeMS = options.maxTimeMS;
150
- }
151
-
152
- if (typeof options.maxAwaitTimeMS === 'number') {
153
- this.cursorOptions.maxAwaitTimeMS = options.maxAwaitTimeMS;
154
- }
155
-
156
- if (options.session instanceof sessions_1.ClientSession) {
157
- this.cursorSession = options.session;
158
- } else {
159
- this.cursorSession = this.cursorClient.startSession({
160
- owner: this,
161
- explicit: false
162
- });
163
- }
164
-
165
- this.deserializationOptions = { ...this.cursorOptions,
166
- validation: {
167
- utf8: options?.enableUtf8Validation === false ? false : true
168
- }
169
- };
170
- this.timeoutContext = options.timeoutContext;
171
- this.signal = options.signal;
172
- this.abortListener = (0, utils_1.addAbortListener)(this.signal, () => void this.close().then(undefined, utils_1.squashError));
173
- this.trackCursor();
174
- }
175
- /**
176
- * The cursor has no id until it receives a response from the initial cursor creating command.
177
- *
178
- * It is non-zero for as long as the database has an open cursor.
179
- *
180
- * The initiating command may receive a zero id if the entire result is in the `firstBatch`.
181
- */
182
-
183
-
184
- get id() {
185
- return this.cursorId ?? undefined;
186
- }
187
- /** @internal */
188
-
189
-
190
- get isDead() {
191
- return (this.cursorId?.isZero() ?? false) || this.isClosed || this.isKilled;
192
- }
193
- /** @internal */
194
-
195
-
196
- get client() {
197
- return this.cursorClient;
198
- }
199
- /** @internal */
200
-
201
-
202
- get server() {
203
- return this.selectedServer;
204
- }
205
-
206
- get namespace() {
207
- return this.cursorNamespace;
208
- }
209
-
210
- get readPreference() {
211
- return this.cursorOptions.readPreference;
212
- }
213
-
214
- get readConcern() {
215
- return this.cursorOptions.readConcern;
216
- }
217
- /** @internal */
218
-
219
-
220
- get session() {
221
- return this.cursorSession;
222
- }
223
-
224
- set session(clientSession) {
225
- this.cursorSession = clientSession;
226
- }
227
- /**
228
- * The cursor is closed and all remaining locally buffered documents have been iterated.
229
- */
230
-
231
-
232
- get closed() {
233
- return this.isClosed && (this.documents?.length ?? 0) === 0;
234
- }
235
- /**
236
- * A `killCursors` command was attempted on this cursor.
237
- * This is performed if the cursor id is non zero.
238
- */
239
-
240
-
241
- get killed() {
242
- return this.isKilled;
243
- }
244
-
245
- get loadBalanced() {
246
- return !!this.cursorClient.topology?.loadBalanced;
247
- }
248
- /** @internal */
249
-
250
-
251
- async asyncDispose() {
252
- await this.close();
253
- }
254
- /** Adds cursor to client's tracking so it will be closed by MongoClient.close() */
255
-
256
-
257
- trackCursor() {
258
- this.cursorClient.s.activeCursors.add(this);
259
-
260
- if (!this.listeners('close').includes(removeActiveCursor)) {
261
- this.once('close', removeActiveCursor);
262
- }
263
- }
264
- /** Returns current buffered documents length */
265
-
266
-
267
- bufferedCount() {
268
- return this.documents?.length ?? 0;
269
- }
270
- /** Returns current buffered documents */
271
-
272
-
273
- readBufferedDocuments(number) {
274
- const bufferedDocs = [];
275
- const documentsToRead = Math.min(number ?? this.documents?.length ?? 0, this.documents?.length ?? 0);
276
-
277
- for (let count = 0; count < documentsToRead; count++) {
278
- const document = this.documents?.shift(this.deserializationOptions);
279
-
280
- if (document != null) {
281
- bufferedDocs.push(document);
282
- }
283
- }
284
-
285
- return bufferedDocs;
286
- }
287
-
288
- async *[Symbol.asyncIterator]() {
289
- this.signal?.throwIfAborted();
290
-
291
- if (this.closed) {
292
- return;
293
- }
294
-
295
- try {
296
- while (true) {
297
- if (this.isKilled) {
298
- return;
299
- }
300
-
301
- if (this.closed) {
302
- return;
303
- }
304
-
305
- if (this.cursorId != null && this.isDead && (this.documents?.length ?? 0) === 0) {
306
- return;
307
- }
308
-
309
- const document = await this.next(); // eslint-disable-next-line no-restricted-syntax
310
-
311
- if (document === null) {
312
- return;
313
- }
314
-
315
- yield document;
316
- this.signal?.throwIfAborted();
317
- }
318
- } finally {
319
- // Only close the cursor if it has not already been closed. This finally clause handles
320
- // the case when a user would break out of a for await of loop early.
321
- if (!this.isClosed) {
322
- try {
323
- await this.close();
324
- } catch (error) {
325
- (0, utils_1.squashError)(error);
326
- }
327
- }
328
- }
329
- }
330
-
331
- stream(options) {
332
- const readable = new ReadableCursorStream(this);
333
- const abortListener = (0, utils_1.addAbortListener)(this.signal, function () {
334
- readable.destroy(this.reason);
335
- });
336
- readable.once('end', () => {
337
- abortListener?.[utils_1.kDispose]();
338
- });
339
-
340
- if (options?.transform) {
341
- const transform = options.transform;
342
- const transformedStream = readable.pipe(new stream_1.Transform({
343
- objectMode: true,
344
- highWaterMark: 1,
345
-
346
- transform(chunk, _, callback) {
347
- try {
348
- const transformed = transform(chunk);
349
- callback(undefined, transformed);
350
- } catch (err) {
351
- callback(err);
352
- }
353
- }
354
-
355
- })); // Bubble errors to transformed stream, because otherwise no way
356
- // to handle this error.
357
-
358
- readable.on('error', err => transformedStream.emit('error', err));
359
- return transformedStream;
360
- }
361
-
362
- return readable;
363
- }
364
-
365
- async hasNext() {
366
- this.signal?.throwIfAborted();
367
-
368
- if (this.cursorId === bson_1.Long.ZERO) {
369
- return false;
370
- }
371
-
372
- if (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION && this.cursorId != null) {
373
- this.timeoutContext?.refresh();
374
- }
375
-
376
- try {
377
- do {
378
- if ((this.documents?.length ?? 0) !== 0) {
379
- return true;
380
- }
381
-
382
- await this.fetchBatch();
383
- } while (!this.isDead || (this.documents?.length ?? 0) !== 0);
384
- } finally {
385
- if (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION) {
386
- this.timeoutContext?.clear();
387
- }
388
- }
389
-
390
- return false;
391
- }
392
- /** Get the next available document from the cursor, returns null if no more documents are available. */
393
-
394
-
395
- async next() {
396
- this.signal?.throwIfAborted();
397
-
398
- if (this.cursorId === bson_1.Long.ZERO) {
399
- throw new error_1.MongoCursorExhaustedError();
400
- }
401
-
402
- if (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION && this.cursorId != null) {
403
- this.timeoutContext?.refresh();
404
- }
405
-
406
- try {
407
- do {
408
- const doc = this.documents?.shift(this.deserializationOptions);
409
-
410
- if (doc != null) {
411
- if (this.transform != null) return await this.transformDocument(doc);
412
- return doc;
413
- }
414
-
415
- await this.fetchBatch();
416
- } while (!this.isDead || (this.documents?.length ?? 0) !== 0);
417
- } finally {
418
- if (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION) {
419
- this.timeoutContext?.clear();
420
- }
421
- }
422
-
423
- return null;
424
- }
425
- /**
426
- * Try to get the next available document from the cursor or `null` if an empty batch is returned
427
- */
428
-
429
-
430
- async tryNext() {
431
- this.signal?.throwIfAborted();
432
-
433
- if (this.cursorId === bson_1.Long.ZERO) {
434
- throw new error_1.MongoCursorExhaustedError();
435
- }
436
-
437
- if (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION && this.cursorId != null) {
438
- this.timeoutContext?.refresh();
439
- }
440
-
441
- try {
442
- let doc = this.documents?.shift(this.deserializationOptions);
443
-
444
- if (doc != null) {
445
- if (this.transform != null) return await this.transformDocument(doc);
446
- return doc;
447
- }
448
-
449
- await this.fetchBatch();
450
- doc = this.documents?.shift(this.deserializationOptions);
451
-
452
- if (doc != null) {
453
- if (this.transform != null) return await this.transformDocument(doc);
454
- return doc;
455
- }
456
- } finally {
457
- if (this.cursorOptions.timeoutMode === exports.CursorTimeoutMode.ITERATION) {
458
- this.timeoutContext?.clear();
459
- }
460
- }
461
-
462
- return null;
463
- }
464
- /**
465
- * Iterates over all the documents for this cursor using the iterator, callback pattern.
466
- *
467
- * If the iterator returns `false`, iteration will stop.
468
- *
469
- * @param iterator - The iteration callback.
470
- * @deprecated - Will be removed in a future release. Use for await...of instead.
471
- */
472
-
473
-
474
- async forEach(iterator) {
475
- this.signal?.throwIfAborted();
476
-
477
- if (typeof iterator !== 'function') {
478
- throw new error_1.MongoInvalidArgumentError('Argument "iterator" must be a function');
479
- }
480
-
481
- for await (const document of this) {
482
- const result = iterator(document);
483
-
484
- if (result === false) {
485
- break;
486
- }
487
- }
488
- }
489
- /**
490
- * Frees any client-side resources used by the cursor.
491
- */
492
-
493
-
494
- async close(options) {
495
- await this.cleanup(options?.timeoutMS);
496
- }
497
- /**
498
- * Returns an array of documents. The caller is responsible for making sure that there
499
- * is enough memory to store the results. Note that the array only contains partial
500
- * results when this cursor had been previously accessed. In that case,
501
- * cursor.rewind() can be used to reset the cursor.
502
- */
503
-
504
-
505
- async toArray() {
506
- this.signal?.throwIfAborted();
507
- const array = []; // at the end of the loop (since readBufferedDocuments is called) the buffer will be empty
508
- // then, the 'await of' syntax will run a getMore call
509
-
510
- for await (const document of this) {
511
- array.push(document);
512
- const docs = this.readBufferedDocuments();
513
-
514
- if (this.transform != null) {
515
- for (const doc of docs) {
516
- array.push(await this.transformDocument(doc));
517
- }
518
- } else {
519
- array.push(...docs);
520
- }
521
- }
522
-
523
- return array;
524
- }
525
- /**
526
- * Add a cursor flag to the cursor
527
- *
528
- * @param flag - The flag to set, must be one of following ['tailable', 'oplogReplay', 'noCursorTimeout', 'awaitData', 'partial' -.
529
- * @param value - The flag boolean value.
530
- */
531
-
532
-
533
- addCursorFlag(flag, value) {
534
- this.throwIfInitialized();
535
-
536
- if (!exports.CURSOR_FLAGS.includes(flag)) {
537
- throw new error_1.MongoInvalidArgumentError(`Flag ${flag} is not one of ${exports.CURSOR_FLAGS}`);
538
- }
539
-
540
- if (typeof value !== 'boolean') {
541
- throw new error_1.MongoInvalidArgumentError(`Flag ${flag} must be a boolean value`);
542
- }
543
-
544
- this.cursorOptions[flag] = value;
545
- return this;
546
- }
547
- /**
548
- * Map all documents using the provided function
549
- * If there is a transform set on the cursor, that will be called first and the result passed to
550
- * this function's transform.
551
- *
552
- * @remarks
553
- *
554
- * **Note** Cursors use `null` internally to indicate that there are no more documents in the cursor. Providing a mapping
555
- * function that maps values to `null` will result in the cursor closing itself before it has finished iterating
556
- * all documents. This will **not** result in a memory leak, just surprising behavior. For example:
557
- *
558
- * ```typescript
559
- * const cursor = collection.find({});
560
- * cursor.map(() => null);
561
- *
562
- * const documents = await cursor.toArray();
563
- * // documents is always [], regardless of how many documents are in the collection.
564
- * ```
565
- *
566
- * Other falsey values are allowed:
567
- *
568
- * ```typescript
569
- * const cursor = collection.find({});
570
- * cursor.map(() => '');
571
- *
572
- * const documents = await cursor.toArray();
573
- * // documents is now an array of empty strings
574
- * ```
575
- *
576
- * **Note for Typescript Users:** adding a transform changes the return type of the iteration of this cursor,
577
- * it **does not** return a new instance of a cursor. This means when calling map,
578
- * you should always assign the result to a new variable in order to get a correctly typed cursor variable.
579
- * Take note of the following example:
580
- *
581
- * @example
582
- * ```typescript
583
- * const cursor: FindCursor<Document> = coll.find();
584
- * const mappedCursor: FindCursor<number> = cursor.map(doc => Object.keys(doc).length);
585
- * const keyCounts: number[] = await mappedCursor.toArray(); // cursor.toArray() still returns Document[]
586
- * ```
587
- * @param transform - The mapping transformation method.
588
- */
589
-
590
-
591
- map(transform) {
592
- this.throwIfInitialized();
593
- const oldTransform = this.transform;
594
-
595
- if (oldTransform) {
596
- this.transform = doc => {
597
- return transform(oldTransform(doc));
598
- };
599
- } else {
600
- this.transform = transform;
601
- }
602
-
603
- return this;
604
- }
605
- /**
606
- * Set the ReadPreference for the cursor.
607
- *
608
- * @param readPreference - The new read preference for the cursor.
609
- */
610
-
611
-
612
- withReadPreference(readPreference) {
613
- this.throwIfInitialized();
614
-
615
- if (readPreference instanceof read_preference_1.ReadPreference) {
616
- this.cursorOptions.readPreference = readPreference;
617
- } else if (typeof readPreference === 'string') {
618
- this.cursorOptions.readPreference = read_preference_1.ReadPreference.fromString(readPreference);
619
- } else {
620
- throw new error_1.MongoInvalidArgumentError(`Invalid read preference: ${readPreference}`);
621
- }
622
-
623
- return this;
624
- }
625
- /**
626
- * Set the ReadPreference for the cursor.
627
- *
628
- * @param readPreference - The new read preference for the cursor.
629
- */
630
-
631
-
632
- withReadConcern(readConcern) {
633
- this.throwIfInitialized();
634
- const resolvedReadConcern = read_concern_1.ReadConcern.fromOptions({
635
- readConcern
636
- });
637
-
638
- if (resolvedReadConcern) {
639
- this.cursorOptions.readConcern = resolvedReadConcern;
640
- }
641
-
642
- return this;
643
- }
644
- /**
645
- * Set a maxTimeMS on the cursor query, allowing for hard timeout limits on queries (Only supported on MongoDB 2.6 or higher)
646
- *
647
- * @param value - Number of milliseconds to wait before aborting the query.
648
- */
649
-
650
-
651
- maxTimeMS(value) {
652
- this.throwIfInitialized();
653
-
654
- if (typeof value !== 'number') {
655
- throw new error_1.MongoInvalidArgumentError('Argument for maxTimeMS must be a number');
656
- }
657
-
658
- this.cursorOptions.maxTimeMS = value;
659
- return this;
660
- }
661
- /**
662
- * Set the batch size for the cursor.
663
- *
664
- * @param value - The number of documents to return per batch. See {@link https://www.mongodb.com/docs/manual/reference/command/find/|find command documentation}.
665
- */
666
-
667
-
668
- batchSize(value) {
669
- this.throwIfInitialized();
670
-
671
- if (this.cursorOptions.tailable) {
672
- throw new error_1.MongoTailableCursorError('Tailable cursor does not support batchSize');
673
- }
674
-
675
- if (typeof value !== 'number') {
676
- throw new error_1.MongoInvalidArgumentError('Operation "batchSize" requires an integer');
677
- }
678
-
679
- this.cursorOptions.batchSize = value;
680
- return this;
681
- }
682
- /**
683
- * Rewind this cursor to its uninitialized state. Any options that are present on the cursor will
684
- * remain in effect. Iterating this cursor will cause new queries to be sent to the server, even
685
- * if the resultant data has already been retrieved by this cursor.
686
- */
687
-
688
-
689
- rewind() {
690
- if (this.timeoutContext && this.timeoutContext.owner !== this) {
691
- throw new error_1.MongoAPIError(`Cannot rewind cursor that does not own its timeout context.`);
692
- }
693
-
694
- if (!this.initialized) {
695
- return;
696
- }
697
-
698
- this.cursorId = null;
699
- this.documents?.clear();
700
- this.timeoutContext?.clear();
701
- this.timeoutContext = undefined;
702
- this.isClosed = false;
703
- this.isKilled = false;
704
- this.initialized = false;
705
- this.hasEmittedClose = false;
706
- this.trackCursor(); // We only want to end this session if we created it, and it hasn't ended yet
707
-
708
- if (this.cursorSession.explicit === false) {
709
- if (!this.cursorSession.hasEnded) {
710
- this.cursorSession.endSession().then(undefined, utils_1.squashError);
711
- }
712
-
713
- this.cursorSession = this.cursorClient.startSession({
714
- owner: this,
715
- explicit: false
716
- });
717
- }
718
- }
719
- /** @internal */
720
-
721
-
722
- async getMore(batchSize) {
723
- if (this.cursorId == null) {
724
- throw new error_1.MongoRuntimeError('Unexpected null cursor id. A cursor creating command should have set this');
725
- }
726
-
727
- if (this.selectedServer == null) {
728
- throw new error_1.MongoRuntimeError('Unexpected null selectedServer. A cursor creating command should have set this');
729
- }
730
-
731
- const getMoreOptions = { ...this.cursorOptions,
732
- session: this.cursorSession,
733
- batchSize
734
- };
735
- const getMoreOperation = new get_more_1.GetMoreOperation(this.cursorNamespace, this.cursorId, this.selectedServer, getMoreOptions);
736
- return await (0, execute_operation_1.executeOperation)(this.cursorClient, getMoreOperation, this.timeoutContext);
737
- }
738
- /**
739
- * @internal
740
- *
741
- * This function is exposed for the unified test runner's createChangeStream
742
- * operation. We cannot refactor to use the abstract _initialize method without
743
- * a significant refactor.
744
- */
745
-
746
-
747
- async cursorInit() {
748
- if (this.cursorOptions.timeoutMS != null) {
749
- this.timeoutContext ??= new CursorTimeoutContext(timeout_1.TimeoutContext.create({
750
- serverSelectionTimeoutMS: this.client.s.options.serverSelectionTimeoutMS,
751
- timeoutMS: this.cursorOptions.timeoutMS
752
- }), this);
753
- }
754
-
755
- try {
756
- const state = await this._initialize(this.cursorSession); // Set omitMaxTimeMS to the value needed for subsequent getMore calls
757
-
758
- this.cursorOptions.omitMaxTimeMS = this.cursorOptions.timeoutMS != null;
759
- const response = state.response;
760
- this.selectedServer = state.server;
761
- this.cursorId = response.id;
762
- this.cursorNamespace = response.ns ?? this.namespace;
763
- this.documents = response;
764
- this.initialized = true; // the cursor is now initialized, even if it is dead
765
- } catch (error) {
766
- // the cursor is now initialized, even if an error occurred
767
- this.initialized = true;
768
- await this.cleanup(undefined, error);
769
- throw error;
770
- }
771
-
772
- if (this.isDead) {
773
- await this.cleanup();
774
- }
775
-
776
- return;
777
- }
778
- /** @internal Attempt to obtain more documents */
779
-
780
-
781
- async fetchBatch() {
782
- if (this.isClosed) {
783
- return;
784
- }
785
-
786
- if (this.isDead) {
787
- // if the cursor is dead, we clean it up
788
- // cleanupCursor should never throw, but if it does it indicates a bug in the driver
789
- // and we should surface the error
790
- await this.cleanup();
791
- return;
792
- }
793
-
794
- if (this.cursorId == null) {
795
- await this.cursorInit(); // If the cursor died or returned documents, return
796
-
797
- if ((this.documents?.length ?? 0) !== 0 || this.isDead) return; // Otherwise, run a getMore
798
- } // otherwise need to call getMore
799
-
800
-
801
- const batchSize = this.cursorOptions.batchSize || 1000;
802
-
803
- try {
804
- const response = await this.getMore(batchSize);
805
- this.cursorId = response.id;
806
- this.documents = response;
807
- } catch (error) {
808
- try {
809
- await this.cleanup(undefined, error);
810
- } catch (cleanupError) {
811
- // `cleanupCursor` should never throw, squash and throw the original error
812
- (0, utils_1.squashError)(cleanupError);
813
- }
814
-
815
- throw error;
816
- }
817
-
818
- if (this.isDead) {
819
- // If we successfully received a response from a cursor BUT the cursor indicates that it is exhausted,
820
- // we intentionally clean up the cursor to release its session back into the pool before the cursor
821
- // is iterated. This prevents a cursor that is exhausted on the server from holding
822
- // onto a session indefinitely until the AbstractCursor is iterated.
823
- //
824
- // cleanupCursorAsync should never throw, but if it does it indicates a bug in the driver
825
- // and we should surface the error
826
- await this.cleanup();
827
- }
828
- }
829
- /** @internal */
830
-
831
-
832
- async cleanup(timeoutMS, error) {
833
- this.abortListener?.[utils_1.kDispose]();
834
- this.isClosed = true;
835
-
836
- const timeoutContextForKillCursors = () => {
837
- if (timeoutMS != null) {
838
- this.timeoutContext?.clear();
839
- return new CursorTimeoutContext(timeout_1.TimeoutContext.create({
840
- serverSelectionTimeoutMS: this.client.s.options.serverSelectionTimeoutMS,
841
- timeoutMS
842
- }), this);
843
- } else {
844
- return this.timeoutContext?.refreshed();
845
- }
846
- };
847
-
848
- try {
849
- if (!this.isKilled && this.cursorId && !this.cursorId.isZero() && this.cursorNamespace && this.selectedServer && !this.cursorSession.hasEnded) {
850
- this.isKilled = true;
851
- const cursorId = this.cursorId;
852
- this.cursorId = bson_1.Long.ZERO;
853
- await (0, execute_operation_1.executeOperation)(this.cursorClient, new kill_cursors_1.KillCursorsOperation(cursorId, this.cursorNamespace, this.selectedServer, {
854
- session: this.cursorSession
855
- }), timeoutContextForKillCursors());
856
- }
857
- } catch (error) {
858
- (0, utils_1.squashError)(error);
859
- } finally {
860
- try {
861
- if (this.cursorSession?.owner === this) {
862
- await this.cursorSession.endSession({
863
- error
864
- });
865
- }
866
-
867
- if (!this.cursorSession?.inTransaction()) {
868
- (0, sessions_1.maybeClearPinnedConnection)(this.cursorSession, {
869
- error
870
- });
871
- }
872
- } finally {
873
- this.emitClose();
874
- }
875
- }
876
- }
877
- /** @internal */
878
-
879
-
880
- emitClose() {
881
- try {
882
- if (!this.hasEmittedClose && ((this.documents?.length ?? 0) === 0 || this.isClosed)) {
883
- // @ts-expect-error: CursorEvents is generic so Parameters<CursorEvents["close"]> may not be assignable to `[]`. Not sure how to require extenders do not add parameters.
884
- this.emit('close');
885
- }
886
- } finally {
887
- this.hasEmittedClose = true;
888
- }
889
- }
890
- /** @internal */
891
-
892
-
893
- async transformDocument(document) {
894
- if (this.transform == null) return document;
895
-
896
- try {
897
- const transformedDocument = this.transform(document); // eslint-disable-next-line no-restricted-syntax
898
-
899
- if (transformedDocument === null) {
900
- const TRANSFORM_TO_NULL_ERROR = 'Cursor returned a `null` document, but the cursor is not exhausted. Mapping documents to `null` is not supported in the cursor transform.';
901
- throw new error_1.MongoAPIError(TRANSFORM_TO_NULL_ERROR);
902
- }
903
-
904
- return transformedDocument;
905
- } catch (transformError) {
906
- try {
907
- await this.close();
908
- } catch (closeError) {
909
- (0, utils_1.squashError)(closeError);
910
- }
911
-
912
- throw transformError;
913
- }
914
- }
915
- /** @internal */
916
-
917
-
918
- throwIfInitialized() {
919
- if (this.initialized) throw new error_1.MongoCursorInUseError();
920
- }
921
-
922
- }
923
-
924
- exports.AbstractCursor = AbstractCursor;
925
- /** @event */
926
-
927
- AbstractCursor.CLOSE = 'close';
928
-
929
- class ReadableCursorStream extends stream_1.Readable {
930
- constructor(cursor) {
931
- super({
932
- objectMode: true,
933
- autoDestroy: false,
934
- highWaterMark: 1
935
- });
936
- this._readInProgress = false;
937
- this._cursor = cursor;
938
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars
939
-
940
-
941
- _read(size) {
942
- if (!this._readInProgress) {
943
- this._readInProgress = true;
944
-
945
- this._readNext();
946
- }
947
- }
948
-
949
- _destroy(error, callback) {
950
- this._cursor.close().then(() => callback(error), closeError => callback(closeError));
951
- }
952
-
953
- _readNext() {
954
- if (this._cursor.id === bson_1.Long.ZERO) {
955
- this.push(null);
956
- return;
957
- }
958
-
959
- this._cursor.next().then( // result from next()
960
- result => {
961
- if (result == null) {
962
- this.push(null);
963
- } else if (this.destroyed) {
964
- this._cursor.close().then(undefined, utils_1.squashError);
965
- } else {
966
- if (this.push(result)) {
967
- return this._readNext();
968
- }
969
-
970
- this._readInProgress = false;
971
- }
972
- }, // error from next()
973
- err => {
974
- // NOTE: This is questionable, but we have a test backing the behavior. It seems the
975
- // desired behavior is that a stream ends cleanly when a user explicitly closes
976
- // a client during iteration. Alternatively, we could do the "right" thing and
977
- // propagate the error message by removing this special case.
978
- if (err.message.match(/server is closed/)) {
979
- this._cursor.close().then(undefined, utils_1.squashError);
980
-
981
- return this.push(null);
982
- } // NOTE: This is also perhaps questionable. The rationale here is that these errors tend
983
- // to be "operation was interrupted", where a cursor has been closed but there is an
984
- // active getMore in-flight. This used to check if the cursor was killed but once
985
- // that changed to happen in cleanup legitimate errors would not destroy the
986
- // stream. There are change streams test specifically test these cases.
987
-
988
-
989
- if (err.message.match(/operation was interrupted/)) {
990
- return this.push(null);
991
- } // NOTE: The two above checks on the message of the error will cause a null to be pushed
992
- // to the stream, thus closing the stream before the destroy call happens. This means
993
- // that either of those error messages on a change stream will not get a proper
994
- // 'error' event to be emitted (the error passed to destroy). Change stream resumability
995
- // relies on that error event to be emitted to create its new cursor and thus was not
996
- // working on 4.4 servers because the error emitted on failover was "interrupted at
997
- // shutdown" while on 5.0+ it is "The server is in quiesce mode and will shut down".
998
- // See NODE-4475.
999
-
1000
-
1001
- return this.destroy(err);
1002
- }) // if either of the above handlers throw
1003
- .catch(error => {
1004
- this._readInProgress = false;
1005
- this.destroy(error);
1006
- });
1007
- }
1008
-
1009
- }
1010
-
1011
- (0, resource_management_1.configureResourceManagement)(AbstractCursor.prototype);
1012
- /**
1013
- * @internal
1014
- * The cursor timeout context is a wrapper around a timeout context
1015
- * that keeps track of the "owner" of the cursor. For timeout contexts
1016
- * instantiated inside a cursor, the owner will be the cursor.
1017
- *
1018
- * All timeout behavior is exactly the same as the wrapped timeout context's.
1019
- */
1020
-
1021
- class CursorTimeoutContext extends timeout_1.TimeoutContext {
1022
- constructor(timeoutContext, owner) {
1023
- super();
1024
- this.timeoutContext = timeoutContext;
1025
- this.owner = owner;
1026
- }
1027
-
1028
- get serverSelectionTimeout() {
1029
- return this.timeoutContext.serverSelectionTimeout;
1030
- }
1031
-
1032
- get connectionCheckoutTimeout() {
1033
- return this.timeoutContext.connectionCheckoutTimeout;
1034
- }
1035
-
1036
- get clearServerSelectionTimeout() {
1037
- return this.timeoutContext.clearServerSelectionTimeout;
1038
- }
1039
-
1040
- get timeoutForSocketWrite() {
1041
- return this.timeoutContext.timeoutForSocketWrite;
1042
- }
1043
-
1044
- get timeoutForSocketRead() {
1045
- return this.timeoutContext.timeoutForSocketRead;
1046
- }
1047
-
1048
- csotEnabled() {
1049
- return this.timeoutContext.csotEnabled();
1050
- }
1051
-
1052
- refresh() {
1053
- if (typeof this.owner !== 'symbol') return this.timeoutContext.refresh();
1054
- }
1055
-
1056
- clear() {
1057
- if (typeof this.owner !== 'symbol') return this.timeoutContext.clear();
1058
- }
1059
-
1060
- get maxTimeMS() {
1061
- return this.timeoutContext.maxTimeMS;
1062
- }
1063
-
1064
- get timeoutMS() {
1065
- return this.timeoutContext.csotEnabled() ? this.timeoutContext.timeoutMS : null;
1066
- }
1067
-
1068
- refreshed() {
1069
- return new CursorTimeoutContext(this.timeoutContext.refreshed(), this.owner);
1070
- }
1071
-
1072
- addMaxTimeMSToCommand(command, options) {
1073
- this.timeoutContext.addMaxTimeMSToCommand(command, options);
1074
- }
1075
-
1076
- getSocketTimeoutMS() {
1077
- return this.timeoutContext.getSocketTimeoutMS();
1078
- }
1079
-
1080
- }
1081
-
1082
- exports.CursorTimeoutContext = CursorTimeoutContext;