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,76 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.OrderedBulkOperation = void 0;
7
-
8
- const BSON = require("../bson");
9
-
10
- const error_1 = require("../error");
11
-
12
- const common_1 = require("./common");
13
- /** @public */
14
-
15
-
16
- class OrderedBulkOperation extends common_1.BulkOperationBase {
17
- /** @internal */
18
- constructor(collection, options) {
19
- super(collection, options, true);
20
- }
21
-
22
- addToOperationsList(batchType, document) {
23
- // Get the bsonSize
24
- const bsonSize = BSON.calculateObjectSize(document, {
25
- checkKeys: false,
26
- // Since we don't know what the user selected for BSON options here,
27
- // err on the safe side, and check the size with ignoreUndefined: false.
28
- ignoreUndefined: false
29
- }); // Throw error if the doc is bigger than the max BSON size
30
-
31
- if (bsonSize >= this.s.maxBsonObjectSize) // TODO(NODE-3483): Change this to MongoBSONError
32
- throw new error_1.MongoInvalidArgumentError(`Document is larger than the maximum size ${this.s.maxBsonObjectSize}`); // Create a new batch object if we don't have a current one
33
-
34
- if (this.s.currentBatch == null) {
35
- this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
36
- }
37
-
38
- const maxKeySize = this.s.maxKeySize; // Check if we need to create a new batch
39
-
40
- if ( // New batch if we exceed the max batch op size
41
- this.s.currentBatchSize + 1 >= this.s.maxWriteBatchSize || // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
42
- // since we can't sent an empty batch
43
- this.s.currentBatchSize > 0 && this.s.currentBatchSizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes || // New batch if the new op does not have the same op type as the current batch
44
- this.s.currentBatch.batchType !== batchType) {
45
- // Save the batch to the execution stack
46
- this.s.batches.push(this.s.currentBatch); // Create a new batch
47
-
48
- this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex); // Reset the current size trackers
49
-
50
- this.s.currentBatchSize = 0;
51
- this.s.currentBatchSizeBytes = 0;
52
- }
53
-
54
- if (batchType === common_1.BatchType.INSERT) {
55
- this.s.bulkResult.insertedIds.push({
56
- index: this.s.currentIndex,
57
- _id: document._id
58
- });
59
- } // We have an array of documents
60
-
61
-
62
- if (Array.isArray(document)) {
63
- throw new error_1.MongoInvalidArgumentError('Operation passed in cannot be an Array');
64
- }
65
-
66
- this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
67
- this.s.currentBatch.operations.push(document);
68
- this.s.currentBatchSize += 1;
69
- this.s.currentBatchSizeBytes += maxKeySize + bsonSize;
70
- this.s.currentIndex += 1;
71
- return this;
72
- }
73
-
74
- }
75
-
76
- exports.OrderedBulkOperation = OrderedBulkOperation;
@@ -1,102 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.UnorderedBulkOperation = void 0;
7
-
8
- const BSON = require("../bson");
9
-
10
- const error_1 = require("../error");
11
-
12
- const common_1 = require("./common");
13
- /** @public */
14
-
15
-
16
- class UnorderedBulkOperation extends common_1.BulkOperationBase {
17
- /** @internal */
18
- constructor(collection, options) {
19
- super(collection, options, false);
20
- }
21
-
22
- handleWriteError(writeResult) {
23
- if (this.s.batches.length) {
24
- return;
25
- }
26
-
27
- return super.handleWriteError(writeResult);
28
- }
29
-
30
- addToOperationsList(batchType, document) {
31
- // Get the bsonSize
32
- const bsonSize = BSON.calculateObjectSize(document, {
33
- checkKeys: false,
34
- // Since we don't know what the user selected for BSON options here,
35
- // err on the safe side, and check the size with ignoreUndefined: false.
36
- ignoreUndefined: false
37
- }); // Throw error if the doc is bigger than the max BSON size
38
-
39
- if (bsonSize >= this.s.maxBsonObjectSize) {
40
- // TODO(NODE-3483): Change this to MongoBSONError
41
- throw new error_1.MongoInvalidArgumentError(`Document is larger than the maximum size ${this.s.maxBsonObjectSize}`);
42
- } // Holds the current batch
43
-
44
-
45
- this.s.currentBatch = undefined; // Get the right type of batch
46
-
47
- if (batchType === common_1.BatchType.INSERT) {
48
- this.s.currentBatch = this.s.currentInsertBatch;
49
- } else if (batchType === common_1.BatchType.UPDATE) {
50
- this.s.currentBatch = this.s.currentUpdateBatch;
51
- } else if (batchType === common_1.BatchType.DELETE) {
52
- this.s.currentBatch = this.s.currentRemoveBatch;
53
- }
54
-
55
- const maxKeySize = this.s.maxKeySize; // Create a new batch object if we don't have a current one
56
-
57
- if (this.s.currentBatch == null) {
58
- this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
59
- } // Check if we need to create a new batch
60
-
61
-
62
- if ( // New batch if we exceed the max batch op size
63
- this.s.currentBatch.size + 1 >= this.s.maxWriteBatchSize || // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
64
- // since we can't sent an empty batch
65
- this.s.currentBatch.size > 0 && this.s.currentBatch.sizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes || // New batch if the new op does not have the same op type as the current batch
66
- this.s.currentBatch.batchType !== batchType) {
67
- // Save the batch to the execution stack
68
- this.s.batches.push(this.s.currentBatch); // Create a new batch
69
-
70
- this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
71
- } // We have an array of documents
72
-
73
-
74
- if (Array.isArray(document)) {
75
- throw new error_1.MongoInvalidArgumentError('Operation passed in cannot be an Array');
76
- }
77
-
78
- this.s.currentBatch.operations.push(document);
79
- this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
80
- this.s.currentIndex = this.s.currentIndex + 1; // Save back the current Batch to the right type
81
-
82
- if (batchType === common_1.BatchType.INSERT) {
83
- this.s.currentInsertBatch = this.s.currentBatch;
84
- this.s.bulkResult.insertedIds.push({
85
- index: this.s.bulkResult.insertedIds.length,
86
- _id: document._id
87
- });
88
- } else if (batchType === common_1.BatchType.UPDATE) {
89
- this.s.currentUpdateBatch = this.s.currentBatch;
90
- } else if (batchType === common_1.BatchType.DELETE) {
91
- this.s.currentRemoveBatch = this.s.currentBatch;
92
- } // Update current batch size
93
-
94
-
95
- this.s.currentBatch.size += 1;
96
- this.s.currentBatch.sizeBytes += maxKeySize + bsonSize;
97
- return this;
98
- }
99
-
100
- }
101
-
102
- exports.UnorderedBulkOperation = UnorderedBulkOperation;
@@ -1,517 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ChangeStream = void 0;
7
-
8
- const collection_1 = require("./collection");
9
-
10
- const constants_1 = require("./constants");
11
-
12
- const abstract_cursor_1 = require("./cursor/abstract_cursor");
13
-
14
- const change_stream_cursor_1 = require("./cursor/change_stream_cursor");
15
-
16
- const db_1 = require("./db");
17
-
18
- const error_1 = require("./error");
19
-
20
- const mongo_client_1 = require("./mongo_client");
21
-
22
- const mongo_types_1 = require("./mongo_types");
23
-
24
- const resource_management_1 = require("./resource_management");
25
-
26
- const timeout_1 = require("./timeout");
27
-
28
- const utils_1 = require("./utils");
29
-
30
- const CHANGE_STREAM_OPTIONS = ['resumeAfter', 'startAfter', 'startAtOperationTime', 'fullDocument', 'fullDocumentBeforeChange', 'showExpandedEvents'];
31
- const CHANGE_DOMAIN_TYPES = {
32
- COLLECTION: Symbol('Collection'),
33
- DATABASE: Symbol('Database'),
34
- CLUSTER: Symbol('Cluster')
35
- };
36
- const CHANGE_STREAM_EVENTS = [constants_1.RESUME_TOKEN_CHANGED, constants_1.END, constants_1.CLOSE];
37
- const NO_RESUME_TOKEN_ERROR = 'A change stream document has been received that lacks a resume token (_id).';
38
- const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed';
39
- /**
40
- * Creates a new Change Stream instance. Normally created using {@link Collection#watch|Collection.watch()}.
41
- * @public
42
- */
43
-
44
- class ChangeStream extends mongo_types_1.TypedEventEmitter {
45
- /** @internal */
46
- async asyncDispose() {
47
- await this.close();
48
- }
49
- /**
50
- * @internal
51
- *
52
- * @param parent - The parent object that created this change stream
53
- * @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents
54
- */
55
-
56
-
57
- constructor(parent, pipeline = [], options = {}) {
58
- super();
59
- this.pipeline = pipeline;
60
- this.options = { ...options
61
- };
62
- let serverSelectionTimeoutMS;
63
- delete this.options.writeConcern;
64
-
65
- if (parent instanceof collection_1.Collection) {
66
- this.type = CHANGE_DOMAIN_TYPES.COLLECTION;
67
- serverSelectionTimeoutMS = parent.s.db.client.options.serverSelectionTimeoutMS;
68
- } else if (parent instanceof db_1.Db) {
69
- this.type = CHANGE_DOMAIN_TYPES.DATABASE;
70
- serverSelectionTimeoutMS = parent.client.options.serverSelectionTimeoutMS;
71
- } else if (parent instanceof mongo_client_1.MongoClient) {
72
- this.type = CHANGE_DOMAIN_TYPES.CLUSTER;
73
- serverSelectionTimeoutMS = parent.options.serverSelectionTimeoutMS;
74
- } else {
75
- throw new error_1.MongoChangeStreamError('Parent provided to ChangeStream constructor must be an instance of Collection, Db, or MongoClient');
76
- }
77
-
78
- this.contextOwner = Symbol();
79
- this.parent = parent;
80
- this.namespace = parent.s.namespace;
81
-
82
- if (!this.options.readPreference && parent.readPreference) {
83
- this.options.readPreference = parent.readPreference;
84
- } // Create contained Change Stream cursor
85
-
86
-
87
- this.cursor = this._createChangeStreamCursor(options);
88
- this.isClosed = false;
89
- this.mode = false; // Listen for any `change` listeners being added to ChangeStream
90
-
91
- this.on('newListener', eventName => {
92
- if (eventName === 'change' && this.cursor && this.listenerCount('change') === 0) {
93
- this._streamEvents(this.cursor);
94
- }
95
- });
96
- this.on('removeListener', eventName => {
97
- if (eventName === 'change' && this.listenerCount('change') === 0 && this.cursor) {
98
- this.cursorStream?.removeAllListeners('data');
99
- }
100
- });
101
-
102
- if (this.options.timeoutMS != null) {
103
- this.timeoutContext = new timeout_1.CSOTTimeoutContext({
104
- timeoutMS: this.options.timeoutMS,
105
- serverSelectionTimeoutMS
106
- });
107
- }
108
- }
109
- /** The cached resume token that is used to resume after the most recently returned change. */
110
-
111
-
112
- get resumeToken() {
113
- return this.cursor?.resumeToken;
114
- }
115
- /** Check if there is any document still available in the Change Stream */
116
-
117
-
118
- async hasNext() {
119
- this._setIsIterator(); // Change streams must resume indefinitely while each resume event succeeds.
120
- // This loop continues until either a change event is received or until a resume attempt
121
- // fails.
122
-
123
-
124
- this.timeoutContext?.refresh();
125
-
126
- try {
127
- while (true) {
128
- try {
129
- const hasNext = await this.cursor.hasNext();
130
- return hasNext;
131
- } catch (error) {
132
- try {
133
- await this._processErrorIteratorMode(error, this.cursor.id != null);
134
- } catch (error) {
135
- if (error instanceof error_1.MongoOperationTimeoutError && this.cursor.id == null) {
136
- throw error;
137
- }
138
-
139
- try {
140
- await this.close();
141
- } catch (error) {
142
- (0, utils_1.squashError)(error);
143
- }
144
-
145
- throw error;
146
- }
147
- }
148
- }
149
- } finally {
150
- this.timeoutContext?.clear();
151
- }
152
- }
153
- /** Get the next available document from the Change Stream. */
154
-
155
-
156
- async next() {
157
- this._setIsIterator(); // Change streams must resume indefinitely while each resume event succeeds.
158
- // This loop continues until either a change event is received or until a resume attempt
159
- // fails.
160
-
161
-
162
- this.timeoutContext?.refresh();
163
-
164
- try {
165
- while (true) {
166
- try {
167
- const change = await this.cursor.next();
168
-
169
- const processedChange = this._processChange(change ?? null);
170
-
171
- return processedChange;
172
- } catch (error) {
173
- try {
174
- await this._processErrorIteratorMode(error, this.cursor.id != null);
175
- } catch (error) {
176
- if (error instanceof error_1.MongoOperationTimeoutError && this.cursor.id == null) {
177
- throw error;
178
- }
179
-
180
- try {
181
- await this.close();
182
- } catch (error) {
183
- (0, utils_1.squashError)(error);
184
- }
185
-
186
- throw error;
187
- }
188
- }
189
- }
190
- } finally {
191
- this.timeoutContext?.clear();
192
- }
193
- }
194
- /**
195
- * Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned
196
- */
197
-
198
-
199
- async tryNext() {
200
- this._setIsIterator(); // Change streams must resume indefinitely while each resume event succeeds.
201
- // This loop continues until either a change event is received or until a resume attempt
202
- // fails.
203
-
204
-
205
- this.timeoutContext?.refresh();
206
-
207
- try {
208
- while (true) {
209
- try {
210
- const change = await this.cursor.tryNext();
211
- return change ?? null;
212
- } catch (error) {
213
- try {
214
- await this._processErrorIteratorMode(error, this.cursor.id != null);
215
- } catch (error) {
216
- if (error instanceof error_1.MongoOperationTimeoutError && this.cursor.id == null) throw error;
217
-
218
- try {
219
- await this.close();
220
- } catch (error) {
221
- (0, utils_1.squashError)(error);
222
- }
223
-
224
- throw error;
225
- }
226
- }
227
- }
228
- } finally {
229
- this.timeoutContext?.clear();
230
- }
231
- }
232
-
233
- async *[Symbol.asyncIterator]() {
234
- if (this.closed) {
235
- return;
236
- }
237
-
238
- try {
239
- // Change streams run indefinitely as long as errors are resumable
240
- // So the only loop breaking condition is if `next()` throws
241
- while (true) {
242
- yield await this.next();
243
- }
244
- } finally {
245
- try {
246
- await this.close();
247
- } catch (error) {
248
- (0, utils_1.squashError)(error);
249
- }
250
- }
251
- }
252
- /** Is the cursor closed */
253
-
254
-
255
- get closed() {
256
- return this.isClosed || this.cursor.closed;
257
- }
258
- /**
259
- * Frees the internal resources used by the change stream.
260
- */
261
-
262
-
263
- async close() {
264
- this.timeoutContext?.clear();
265
- this.timeoutContext = undefined;
266
- this.isClosed = true;
267
- const cursor = this.cursor;
268
-
269
- try {
270
- await cursor.close();
271
- } finally {
272
- this._endStream();
273
- }
274
- }
275
- /**
276
- * Return a modified Readable stream including a possible transform method.
277
- *
278
- * NOTE: When using a Stream to process change stream events, the stream will
279
- * NOT automatically resume in the case a resumable error is encountered.
280
- *
281
- * @throws MongoChangeStreamError if the underlying cursor or the change stream is closed
282
- */
283
-
284
-
285
- stream(options) {
286
- if (this.closed) {
287
- throw new error_1.MongoChangeStreamError(CHANGESTREAM_CLOSED_ERROR);
288
- }
289
-
290
- this.streamOptions = options;
291
- return this.cursor.stream(options);
292
- }
293
- /** @internal */
294
-
295
-
296
- _setIsEmitter() {
297
- if (this.mode === 'iterator') {
298
- // TODO(NODE-3485): Replace with MongoChangeStreamModeError
299
- throw new error_1.MongoAPIError('ChangeStream cannot be used as an EventEmitter after being used as an iterator');
300
- }
301
-
302
- this.mode = 'emitter';
303
- }
304
- /** @internal */
305
-
306
-
307
- _setIsIterator() {
308
- if (this.mode === 'emitter') {
309
- // TODO(NODE-3485): Replace with MongoChangeStreamModeError
310
- throw new error_1.MongoAPIError('ChangeStream cannot be used as an iterator after being used as an EventEmitter');
311
- }
312
-
313
- this.mode = 'iterator';
314
- }
315
- /**
316
- * Create a new change stream cursor based on self's configuration
317
- * @internal
318
- */
319
-
320
-
321
- _createChangeStreamCursor(options) {
322
- const changeStreamStageOptions = (0, utils_1.filterOptions)(options, CHANGE_STREAM_OPTIONS);
323
-
324
- if (this.type === CHANGE_DOMAIN_TYPES.CLUSTER) {
325
- changeStreamStageOptions.allChangesForCluster = true;
326
- }
327
-
328
- const pipeline = [{
329
- $changeStream: changeStreamStageOptions
330
- }, ...this.pipeline];
331
- const client = this.type === CHANGE_DOMAIN_TYPES.CLUSTER ? this.parent : this.type === CHANGE_DOMAIN_TYPES.DATABASE ? this.parent.client : this.type === CHANGE_DOMAIN_TYPES.COLLECTION ? this.parent.client : null;
332
-
333
- if (client == null) {
334
- // This should never happen because of the assertion in the constructor
335
- throw new error_1.MongoRuntimeError(`Changestream type should only be one of cluster, database, collection. Found ${this.type.toString()}`);
336
- }
337
-
338
- const changeStreamCursor = new change_stream_cursor_1.ChangeStreamCursor(client, this.namespace, pipeline, { ...options,
339
- timeoutContext: this.timeoutContext ? new abstract_cursor_1.CursorTimeoutContext(this.timeoutContext, this.contextOwner) : undefined
340
- });
341
-
342
- for (const event of CHANGE_STREAM_EVENTS) {
343
- changeStreamCursor.on(event, e => this.emit(event, e));
344
- }
345
-
346
- if (this.listenerCount(ChangeStream.CHANGE) > 0) {
347
- this._streamEvents(changeStreamCursor);
348
- }
349
-
350
- return changeStreamCursor;
351
- }
352
- /** @internal */
353
-
354
-
355
- _closeEmitterModeWithError(error) {
356
- this.emit(ChangeStream.ERROR, error);
357
- this.close().then(undefined, utils_1.squashError);
358
- }
359
- /** @internal */
360
-
361
-
362
- _streamEvents(cursor) {
363
- this._setIsEmitter();
364
-
365
- const stream = this.cursorStream ?? cursor.stream();
366
- this.cursorStream = stream;
367
- stream.on('data', change => {
368
- try {
369
- const processedChange = this._processChange(change);
370
-
371
- this.emit(ChangeStream.CHANGE, processedChange);
372
- } catch (error) {
373
- this.emit(ChangeStream.ERROR, error);
374
- }
375
-
376
- this.timeoutContext?.refresh();
377
- });
378
- stream.on('error', error => this._processErrorStreamMode(error, this.cursor.id != null));
379
- }
380
- /** @internal */
381
-
382
-
383
- _endStream() {
384
- this.cursorStream?.removeAllListeners('data');
385
- this.cursorStream?.removeAllListeners('close');
386
- this.cursorStream?.removeAllListeners('end');
387
- this.cursorStream?.destroy();
388
- this.cursorStream = undefined;
389
- }
390
- /** @internal */
391
-
392
-
393
- _processChange(change) {
394
- if (this.isClosed) {
395
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
396
- throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
397
- } // a null change means the cursor has been notified, implicitly closing the change stream
398
-
399
-
400
- if (change == null) {
401
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
402
- throw new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR);
403
- }
404
-
405
- if (change && !change._id) {
406
- throw new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR);
407
- } // cache the resume token
408
-
409
-
410
- this.cursor.cacheResumeToken(change._id); // wipe the startAtOperationTime if there was one so that there won't be a conflict
411
- // between resumeToken and startAtOperationTime if we need to reconnect the cursor
412
-
413
- this.options.startAtOperationTime = undefined;
414
- return change;
415
- }
416
- /** @internal */
417
-
418
-
419
- _processErrorStreamMode(changeStreamError, cursorInitialized) {
420
- // If the change stream has been closed explicitly, do not process error.
421
- if (this.isClosed) return;
422
-
423
- if (cursorInitialized && ((0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion) || changeStreamError instanceof error_1.MongoOperationTimeoutError)) {
424
- this._endStream();
425
-
426
- this.cursor.close().then(() => this._resume(changeStreamError), e => {
427
- (0, utils_1.squashError)(e);
428
- return this._resume(changeStreamError);
429
- }).then(() => {
430
- if (changeStreamError instanceof error_1.MongoOperationTimeoutError) this.emit(ChangeStream.ERROR, changeStreamError);
431
- }, () => this._closeEmitterModeWithError(changeStreamError));
432
- } else {
433
- this._closeEmitterModeWithError(changeStreamError);
434
- }
435
- }
436
- /** @internal */
437
-
438
-
439
- async _processErrorIteratorMode(changeStreamError, cursorInitialized) {
440
- if (this.isClosed) {
441
- // TODO(NODE-3485): Replace with MongoChangeStreamClosedError
442
- throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
443
- }
444
-
445
- if (cursorInitialized && ((0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion) || changeStreamError instanceof error_1.MongoOperationTimeoutError)) {
446
- try {
447
- await this.cursor.close();
448
- } catch (error) {
449
- (0, utils_1.squashError)(error);
450
- }
451
-
452
- await this._resume(changeStreamError);
453
- if (changeStreamError instanceof error_1.MongoOperationTimeoutError) throw changeStreamError;
454
- } else {
455
- try {
456
- await this.close();
457
- } catch (error) {
458
- (0, utils_1.squashError)(error);
459
- }
460
-
461
- throw changeStreamError;
462
- }
463
- }
464
-
465
- async _resume(changeStreamError) {
466
- this.timeoutContext?.refresh();
467
- const topology = (0, utils_1.getTopology)(this.parent);
468
-
469
- try {
470
- await topology.selectServer(this.cursor.readPreference, {
471
- operationName: 'reconnect topology in change stream',
472
- timeoutContext: this.timeoutContext
473
- });
474
- this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions);
475
- } catch {
476
- // if the topology can't reconnect, close the stream
477
- await this.close();
478
- throw changeStreamError;
479
- }
480
- }
481
-
482
- }
483
-
484
- exports.ChangeStream = ChangeStream;
485
- /** @event */
486
-
487
- ChangeStream.RESPONSE = constants_1.RESPONSE;
488
- /** @event */
489
-
490
- ChangeStream.MORE = constants_1.MORE;
491
- /** @event */
492
-
493
- ChangeStream.INIT = constants_1.INIT;
494
- /** @event */
495
-
496
- ChangeStream.CLOSE = constants_1.CLOSE;
497
- /**
498
- * Fired for each new matching change in the specified namespace. Attaching a `change`
499
- * event listener to a Change Stream will switch the stream into flowing mode. Data will
500
- * then be passed as soon as it is available.
501
- * @event
502
- */
503
-
504
- ChangeStream.CHANGE = constants_1.CHANGE;
505
- /** @event */
506
-
507
- ChangeStream.END = constants_1.END;
508
- /** @event */
509
-
510
- ChangeStream.ERROR = constants_1.ERROR;
511
- /**
512
- * Emitted each time the change stream stores a new resume token.
513
- * @event
514
- */
515
-
516
- ChangeStream.RESUME_TOKEN_CHANGED = constants_1.RESUME_TOKEN_CHANGED;
517
- (0, resource_management_1.configureResourceManagement)(ChangeStream.prototype);