oxygen-cli 1.40.1 → 1.40.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +1742 -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 +2 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +5 -1
  19. package/build/lib/debugger.js +1 -1
  20. package/build/lib/img-merge.js +1 -1
  21. package/build/lib/launcher.js +1 -1
  22. package/build/lib/logger.js +43 -43
  23. package/build/lib/moduleRequire.js +1 -1
  24. package/build/lib/parallel-launcher.js +1 -1
  25. package/build/lib/param-manager.js +1 -1
  26. package/build/lib/param-reader-csv.js +1 -1
  27. package/build/lib/param-reader-excel.js +1 -1
  28. package/build/lib/param-reader-json.js +1 -1
  29. package/build/lib/text-to-image.js +1 -1
  30. package/build/lib/util.js +1 -1
  31. package/build/model/case-result.js +1 -1
  32. package/build/model/failure.js +1 -1
  33. package/build/model/status.js +1 -1
  34. package/build/model/step-result.js +1 -1
  35. package/build/model/suite-result.js +1 -1
  36. package/build/model/test-result.js +1 -1
  37. package/build/model/testcase.js +1 -1
  38. package/build/model/testsuite.js +1 -1
  39. package/build/ox_modules/index.js +9 -1
  40. package/build/ox_modules/module-assert.js +37 -37
  41. package/build/ox_modules/module-date.js +24 -24
  42. package/build/ox_modules/module-db.js +52 -52
  43. package/build/ox_modules/module-email.js +59 -59
  44. package/build/ox_modules/module-eyes.js +34 -34
  45. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  46. package/build/ox_modules/module-http/ntlm.js +15 -15
  47. package/build/ox_modules/module-http.js +132 -132
  48. package/build/ox_modules/module-log.js +27 -27
  49. package/build/ox_modules/module-mailinator.js +87 -87
  50. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  51. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  52. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  53. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  54. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  55. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  56. package/build/ox_modules/module-mob/commands/back.js +16 -16
  57. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  58. package/build/ox_modules/module-mob/commands/click.js +17 -17
  59. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  61. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  62. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  63. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  64. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  65. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  66. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  67. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  68. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  69. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  70. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  71. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  73. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  75. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  77. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  78. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  79. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  80. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  81. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  82. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  83. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  84. package/build/ox_modules/module-mob/commands/index.js +1 -1
  85. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  86. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  88. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  91. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  92. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  93. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  94. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  95. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  96. package/build/ox_modules/module-mob/commands/open.js +17 -17
  97. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  98. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  99. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  100. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  101. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  102. package/build/ox_modules/module-mob/commands/select.js +24 -24
  103. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  104. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  105. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  106. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  107. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  108. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  109. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  110. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  111. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  112. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  113. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  116. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  117. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  118. package/build/ox_modules/module-mob/commands/type.js +20 -20
  119. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  120. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  121. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  122. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  123. package/build/ox_modules/module-mob.js +74 -74
  124. package/build/ox_modules/module-mongo.js +302 -0
  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 +25 -25
  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 +1 -1
  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 +13 -5
  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/log.txt +1614 -0
  292. package/package.json +139 -137
  293. package/reports/2025-06-08_231627/report.html +440 -0
  294. package/reports/2025-06-09_223615/report.html +440 -0
  295. package/transpiled/mongodb/etc/prepare.js +18 -0
  296. package/transpiled/mongodb/lib/admin.js +182 -0
  297. package/transpiled/mongodb/lib/beta.js +26 -0
  298. package/transpiled/mongodb/lib/bson.js +220 -0
  299. package/transpiled/mongodb/lib/bulk/common.js +1041 -0
  300. package/transpiled/mongodb/lib/bulk/ordered.js +76 -0
  301. package/transpiled/mongodb/lib/bulk/unordered.js +102 -0
  302. package/transpiled/mongodb/lib/change_stream.js +517 -0
  303. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +329 -0
  304. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +779 -0
  305. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +95 -0
  306. package/transpiled/mongodb/lib/client-side-encryption/errors.js +171 -0
  307. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +98 -0
  308. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +34 -0
  309. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +186 -0
  310. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +29 -0
  311. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +58 -0
  312. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +505 -0
  313. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +63 -0
  314. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +167 -0
  315. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +207 -0
  316. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +193 -0
  317. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +181 -0
  318. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +101 -0
  319. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +81 -0
  320. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +174 -0
  321. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +59 -0
  322. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +58 -0
  323. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +138 -0
  324. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +42 -0
  325. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +71 -0
  326. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +34 -0
  327. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +111 -0
  328. package/transpiled/mongodb/lib/cmap/auth/plain.js +43 -0
  329. package/transpiled/mongodb/lib/cmap/auth/providers.js +22 -0
  330. package/transpiled/mongodb/lib/cmap/auth/scram.js +318 -0
  331. package/transpiled/mongodb/lib/cmap/auth/x509.js +61 -0
  332. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +266 -0
  333. package/transpiled/mongodb/lib/cmap/commands.js +605 -0
  334. package/transpiled/mongodb/lib/cmap/connect.js +418 -0
  335. package/transpiled/mongodb/lib/cmap/connection.js +673 -0
  336. package/transpiled/mongodb/lib/cmap/connection_pool.js +688 -0
  337. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +254 -0
  338. package/transpiled/mongodb/lib/cmap/errors.js +128 -0
  339. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +278 -0
  340. package/transpiled/mongodb/lib/cmap/metrics.js +67 -0
  341. package/transpiled/mongodb/lib/cmap/stream_description.js +74 -0
  342. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +196 -0
  343. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +19 -0
  344. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +144 -0
  345. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +278 -0
  346. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +376 -0
  347. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +49 -0
  348. package/transpiled/mongodb/lib/collection.js +852 -0
  349. package/transpiled/mongodb/lib/connection_string.js +1452 -0
  350. package/transpiled/mongodb/lib/constants.js +162 -0
  351. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +1082 -0
  352. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +227 -0
  353. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +136 -0
  354. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +69 -0
  355. package/transpiled/mongodb/lib/cursor/find_cursor.js +476 -0
  356. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +48 -0
  357. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +46 -0
  358. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +30 -0
  359. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +125 -0
  360. package/transpiled/mongodb/lib/db.js +467 -0
  361. package/transpiled/mongodb/lib/deps.js +174 -0
  362. package/transpiled/mongodb/lib/encrypter.js +129 -0
  363. package/transpiled/mongodb/lib/error.js +1550 -0
  364. package/transpiled/mongodb/lib/explain.js +122 -0
  365. package/transpiled/mongodb/lib/gridfs/download.js +369 -0
  366. package/transpiled/mongodb/lib/gridfs/index.js +240 -0
  367. package/transpiled/mongodb/lib/gridfs/upload.js +446 -0
  368. package/transpiled/mongodb/lib/index.js +975 -0
  369. package/transpiled/mongodb/lib/mongo_client.js +626 -0
  370. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +98 -0
  371. package/transpiled/mongodb/lib/mongo_logger.js +812 -0
  372. package/transpiled/mongodb/lib/mongo_types.js +71 -0
  373. package/transpiled/mongodb/lib/operations/aggregate.js +129 -0
  374. package/transpiled/mongodb/lib/operations/bulk_write.js +48 -0
  375. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +96 -0
  376. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +409 -0
  377. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +5 -0
  378. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +144 -0
  379. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +228 -0
  380. package/transpiled/mongodb/lib/operations/collections.js +49 -0
  381. package/transpiled/mongodb/lib/operations/command.js +102 -0
  382. package/transpiled/mongodb/lib/operations/count.js +60 -0
  383. package/transpiled/mongodb/lib/operations/create_collection.js +109 -0
  384. package/transpiled/mongodb/lib/operations/delete.js +134 -0
  385. package/transpiled/mongodb/lib/operations/distinct.js +77 -0
  386. package/transpiled/mongodb/lib/operations/drop.js +102 -0
  387. package/transpiled/mongodb/lib/operations/estimated_document_count.js +47 -0
  388. package/transpiled/mongodb/lib/operations/execute_operation.js +251 -0
  389. package/transpiled/mongodb/lib/operations/find.js +197 -0
  390. package/transpiled/mongodb/lib/operations/find_and_modify.js +191 -0
  391. package/transpiled/mongodb/lib/operations/get_more.js +84 -0
  392. package/transpiled/mongodb/lib/operations/indexes.js +197 -0
  393. package/transpiled/mongodb/lib/operations/insert.js +138 -0
  394. package/transpiled/mongodb/lib/operations/is_capped.js +44 -0
  395. package/transpiled/mongodb/lib/operations/kill_cursors.js +58 -0
  396. package/transpiled/mongodb/lib/operations/list_collections.js +66 -0
  397. package/transpiled/mongodb/lib/operations/list_databases.js +56 -0
  398. package/transpiled/mongodb/lib/operations/operation.js +88 -0
  399. package/transpiled/mongodb/lib/operations/options_operation.js +44 -0
  400. package/transpiled/mongodb/lib/operations/profiling_level.js +42 -0
  401. package/transpiled/mongodb/lib/operations/remove_user.js +35 -0
  402. package/transpiled/mongodb/lib/operations/rename.js +48 -0
  403. package/transpiled/mongodb/lib/operations/run_command.js +64 -0
  404. package/transpiled/mongodb/lib/operations/search_indexes/create.js +41 -0
  405. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +51 -0
  406. package/transpiled/mongodb/lib/operations/search_indexes/update.js +40 -0
  407. package/transpiled/mongodb/lib/operations/set_profiling_level.js +70 -0
  408. package/transpiled/mongodb/lib/operations/stats.js +39 -0
  409. package/transpiled/mongodb/lib/operations/update.js +218 -0
  410. package/transpiled/mongodb/lib/operations/validate_collection.js +49 -0
  411. package/transpiled/mongodb/lib/read_concern.js +92 -0
  412. package/transpiled/mongodb/lib/read_preference.js +215 -0
  413. package/transpiled/mongodb/lib/resource_management.js +74 -0
  414. package/transpiled/mongodb/lib/sdam/common.js +53 -0
  415. package/transpiled/mongodb/lib/sdam/events.js +177 -0
  416. package/transpiled/mongodb/lib/sdam/monitor.js +656 -0
  417. package/transpiled/mongodb/lib/sdam/server.js +463 -0
  418. package/transpiled/mongodb/lib/sdam/server_description.js +196 -0
  419. package/transpiled/mongodb/lib/sdam/server_selection.js +283 -0
  420. package/transpiled/mongodb/lib/sdam/server_selection_events.js +112 -0
  421. package/transpiled/mongodb/lib/sdam/srv_polling.js +139 -0
  422. package/transpiled/mongodb/lib/sdam/topology.js +833 -0
  423. package/transpiled/mongodb/lib/sdam/topology_description.js +447 -0
  424. package/transpiled/mongodb/lib/sessions.js +988 -0
  425. package/transpiled/mongodb/lib/sort.js +123 -0
  426. package/transpiled/mongodb/lib/timeout.js +349 -0
  427. package/transpiled/mongodb/lib/transactions.js +149 -0
  428. package/transpiled/mongodb/lib/utils.js +1502 -0
  429. package/transpiled/mongodb/lib/write_concern.js +115 -0
  430. package/types/index.d.ts +70 -70
  431. package/types/module-eyes.d.ts +39 -39
  432. package/types/module-http.d.ts +163 -163
  433. package/types/module-log.d.ts +34 -34
  434. package/types/module-mob.d.ts +966 -966
  435. package/types/module-pdf.d.ts +40 -40
  436. package/types/module-proxy.d.ts +100 -100
  437. package/types/module-shell.d.ts +24 -24
  438. package/types/module-utils.d.ts +99 -99
  439. package/types/module-web.d.ts +1053 -1053
  440. package/types/module-win.d.ts +352 -352
  441. package/types/oxygen.d.ts +53 -53
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DistinctOperation = void 0;
7
+
8
+ const utils_1 = require("../utils");
9
+
10
+ const command_1 = require("./command");
11
+
12
+ const operation_1 = require("./operation");
13
+ /**
14
+ * Return a list of distinct values for the given key across a collection.
15
+ * @internal
16
+ */
17
+
18
+
19
+ class DistinctOperation extends command_1.CommandOperation {
20
+ /**
21
+ * Construct a Distinct operation.
22
+ *
23
+ * @param collection - Collection instance.
24
+ * @param key - Field of the document to find distinct values for.
25
+ * @param query - The query for filtering the set of documents to which we apply the distinct filter.
26
+ * @param options - Optional settings. See Collection.prototype.distinct for a list of options.
27
+ */
28
+ constructor(collection, key, query, options) {
29
+ super(collection, options);
30
+ this.options = options ?? {};
31
+ this.collection = collection;
32
+ this.key = key;
33
+ this.query = query;
34
+ }
35
+
36
+ get commandName() {
37
+ return 'distinct';
38
+ }
39
+
40
+ async execute(server, session, timeoutContext) {
41
+ const coll = this.collection;
42
+ const key = this.key;
43
+ const query = this.query;
44
+ const options = this.options; // Distinct command
45
+
46
+ const cmd = {
47
+ distinct: coll.collectionName,
48
+ key: key,
49
+ query: query
50
+ }; // Add maxTimeMS if defined
51
+
52
+ if (typeof options.maxTimeMS === 'number') {
53
+ cmd.maxTimeMS = options.maxTimeMS;
54
+ } // we check for undefined specifically here to allow falsy values
55
+ // eslint-disable-next-line no-restricted-syntax
56
+
57
+
58
+ if (typeof options.comment !== 'undefined') {
59
+ cmd.comment = options.comment;
60
+ }
61
+
62
+ if (options.hint != null) {
63
+ cmd.hint = options.hint;
64
+ } // Do we have a readConcern specified
65
+
66
+
67
+ (0, utils_1.decorateWithReadConcern)(cmd, coll, options); // Have we specified collation
68
+
69
+ (0, utils_1.decorateWithCollation)(cmd, coll, options);
70
+ const result = await super.executeCommand(server, session, cmd, timeoutContext);
71
+ return this.explain ? result : result.values;
72
+ }
73
+
74
+ }
75
+
76
+ exports.DistinctOperation = DistinctOperation;
77
+ (0, operation_1.defineAspects)(DistinctOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.EXPLAINABLE]);
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DropDatabaseOperation = exports.DropCollectionOperation = void 0;
7
+
8
+ const error_1 = require("../error");
9
+
10
+ const command_1 = require("./command");
11
+
12
+ const operation_1 = require("./operation");
13
+ /** @internal */
14
+
15
+
16
+ class DropCollectionOperation extends command_1.CommandOperation {
17
+ constructor(db, name, options = {}) {
18
+ super(db, options);
19
+ this.db = db;
20
+ this.options = options;
21
+ this.name = name;
22
+ }
23
+
24
+ get commandName() {
25
+ return 'drop';
26
+ }
27
+
28
+ async execute(server, session, timeoutContext) {
29
+ const db = this.db;
30
+ const options = this.options;
31
+ const name = this.name;
32
+ const encryptedFieldsMap = db.client.s.options.autoEncryption?.encryptedFieldsMap;
33
+ let encryptedFields = options.encryptedFields ?? encryptedFieldsMap?.[`${db.databaseName}.${name}`];
34
+
35
+ if (!encryptedFields && encryptedFieldsMap) {
36
+ // If the MongoClient was configured with an encryptedFieldsMap,
37
+ // and no encryptedFields config was available in it or explicitly
38
+ // passed as an argument, the spec tells us to look one up using
39
+ // listCollections().
40
+ const listCollectionsResult = await db.listCollections({
41
+ name
42
+ }, {
43
+ nameOnly: false
44
+ }).toArray();
45
+ encryptedFields = listCollectionsResult?.[0]?.options?.encryptedFields;
46
+ }
47
+
48
+ if (encryptedFields) {
49
+ const escCollection = encryptedFields.escCollection || `enxcol_.${name}.esc`;
50
+ const ecocCollection = encryptedFields.ecocCollection || `enxcol_.${name}.ecoc`;
51
+
52
+ for (const collectionName of [escCollection, ecocCollection]) {
53
+ // Drop auxilliary collections, ignoring potential NamespaceNotFound errors.
54
+ const dropOp = new DropCollectionOperation(db, collectionName);
55
+
56
+ try {
57
+ await dropOp.executeWithoutEncryptedFieldsCheck(server, session, timeoutContext);
58
+ } catch (err) {
59
+ if (!(err instanceof error_1.MongoServerError) || err.code !== error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
60
+ throw err;
61
+ }
62
+ }
63
+ }
64
+ }
65
+
66
+ return await this.executeWithoutEncryptedFieldsCheck(server, session, timeoutContext);
67
+ }
68
+
69
+ async executeWithoutEncryptedFieldsCheck(server, session, timeoutContext) {
70
+ await super.executeCommand(server, session, {
71
+ drop: this.name
72
+ }, timeoutContext);
73
+ return true;
74
+ }
75
+
76
+ }
77
+
78
+ exports.DropCollectionOperation = DropCollectionOperation;
79
+ /** @internal */
80
+
81
+ class DropDatabaseOperation extends command_1.CommandOperation {
82
+ constructor(db, options) {
83
+ super(db, options);
84
+ this.options = options;
85
+ }
86
+
87
+ get commandName() {
88
+ return 'dropDatabase';
89
+ }
90
+
91
+ async execute(server, session, timeoutContext) {
92
+ await super.executeCommand(server, session, {
93
+ dropDatabase: 1
94
+ }, timeoutContext);
95
+ return true;
96
+ }
97
+
98
+ }
99
+
100
+ exports.DropDatabaseOperation = DropDatabaseOperation;
101
+ (0, operation_1.defineAspects)(DropCollectionOperation, [operation_1.Aspect.WRITE_OPERATION]);
102
+ (0, operation_1.defineAspects)(DropDatabaseOperation, [operation_1.Aspect.WRITE_OPERATION]);
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.EstimatedDocumentCountOperation = void 0;
7
+
8
+ const command_1 = require("./command");
9
+
10
+ const operation_1 = require("./operation");
11
+ /** @internal */
12
+
13
+
14
+ class EstimatedDocumentCountOperation extends command_1.CommandOperation {
15
+ constructor(collection, options = {}) {
16
+ super(collection, options);
17
+ this.options = options;
18
+ this.collectionName = collection.collectionName;
19
+ }
20
+
21
+ get commandName() {
22
+ return 'count';
23
+ }
24
+
25
+ async execute(server, session, timeoutContext) {
26
+ const cmd = {
27
+ count: this.collectionName
28
+ };
29
+
30
+ if (typeof this.options.maxTimeMS === 'number') {
31
+ cmd.maxTimeMS = this.options.maxTimeMS;
32
+ } // we check for undefined specifically here to allow falsy values
33
+ // eslint-disable-next-line no-restricted-syntax
34
+
35
+
36
+ if (this.options.comment !== undefined) {
37
+ cmd.comment = this.options.comment;
38
+ }
39
+
40
+ const response = await super.executeCommand(server, session, cmd, timeoutContext);
41
+ return response?.n || 0;
42
+ }
43
+
44
+ }
45
+
46
+ exports.EstimatedDocumentCountOperation = EstimatedDocumentCountOperation;
47
+ (0, operation_1.defineAspects)(EstimatedDocumentCountOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.CURSOR_CREATING]);
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.executeOperation = executeOperation;
7
+
8
+ const error_1 = require("../error");
9
+
10
+ const read_preference_1 = require("../read_preference");
11
+
12
+ const server_selection_1 = require("../sdam/server_selection");
13
+
14
+ const timeout_1 = require("../timeout");
15
+
16
+ const utils_1 = require("../utils");
17
+
18
+ const operation_1 = require("./operation");
19
+
20
+ const MMAPv1_RETRY_WRITES_ERROR_CODE = error_1.MONGODB_ERROR_CODES.IllegalOperation;
21
+ const MMAPv1_RETRY_WRITES_ERROR_MESSAGE = 'This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.';
22
+ /**
23
+ * Executes the given operation with provided arguments.
24
+ * @internal
25
+ *
26
+ * @remarks
27
+ * Allows for a single point of entry to provide features such as implicit sessions, which
28
+ * are required by the Driver Sessions specification in the event that a ClientSession is
29
+ * not provided.
30
+ *
31
+ * The expectation is that this function:
32
+ * - Connects the MongoClient if it has not already been connected, see {@link autoConnect}
33
+ * - Creates a session if none is provided and cleans up the session it creates
34
+ * - Tries an operation and retries under certain conditions, see {@link tryOperation}
35
+ *
36
+ * @typeParam T - The operation's type
37
+ * @typeParam TResult - The type of the operation's result, calculated from T
38
+ *
39
+ * @param client - The MongoClient to execute this operation with
40
+ * @param operation - The operation to execute
41
+ */
42
+
43
+ async function executeOperation(client, operation, timeoutContext) {
44
+ if (!(operation instanceof operation_1.AbstractOperation)) {
45
+ // TODO(NODE-3483): Extend MongoRuntimeError
46
+ throw new error_1.MongoRuntimeError('This method requires a valid operation instance');
47
+ }
48
+
49
+ const topology = client.topology == null ? await (0, utils_1.abortable)(autoConnect(client), operation.options) : client.topology; // The driver sessions spec mandates that we implicitly create sessions for operations
50
+ // that are not explicitly provided with a session.
51
+
52
+ let session = operation.session;
53
+ let owner;
54
+
55
+ if (session == null) {
56
+ owner = Symbol();
57
+ session = client.startSession({
58
+ owner,
59
+ explicit: false
60
+ });
61
+ } else if (session.hasEnded) {
62
+ throw new error_1.MongoExpiredSessionError('Use of expired sessions is not permitted');
63
+ } else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) {
64
+ throw new error_1.MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later');
65
+ } else if (session.client !== client) {
66
+ throw new error_1.MongoInvalidArgumentError('ClientSession must be from the same MongoClient');
67
+ }
68
+
69
+ const readPreference = operation.readPreference ?? read_preference_1.ReadPreference.primary;
70
+ const inTransaction = !!session?.inTransaction();
71
+ const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION);
72
+
73
+ if (inTransaction && !readPreference.equals(read_preference_1.ReadPreference.primary) && (hasReadAspect || operation.commandName === 'runCommand')) {
74
+ throw new error_1.MongoTransactionError(`Read preference in a transaction must be primary, not: ${readPreference.mode}`);
75
+ }
76
+
77
+ if (session?.isPinned && session.transaction.isCommitted && !operation.bypassPinningCheck) {
78
+ session.unpin();
79
+ }
80
+
81
+ timeoutContext ??= timeout_1.TimeoutContext.create({
82
+ session,
83
+ serverSelectionTimeoutMS: client.s.options.serverSelectionTimeoutMS,
84
+ waitQueueTimeoutMS: client.s.options.waitQueueTimeoutMS,
85
+ timeoutMS: operation.options.timeoutMS
86
+ });
87
+
88
+ try {
89
+ return await tryOperation(operation, {
90
+ topology,
91
+ timeoutContext,
92
+ session,
93
+ readPreference
94
+ });
95
+ } finally {
96
+ if (session?.owner != null && session.owner === owner) {
97
+ await session.endSession();
98
+ }
99
+ }
100
+ }
101
+ /**
102
+ * Connects a client if it has not yet been connected
103
+ * @internal
104
+ */
105
+
106
+
107
+ async function autoConnect(client) {
108
+ if (client.topology == null) {
109
+ if (client.s.hasBeenClosed) {
110
+ throw new error_1.MongoNotConnectedError('Client must be connected before running operations');
111
+ }
112
+
113
+ client.s.options.__skipPingOnConnect = true;
114
+
115
+ try {
116
+ await client.connect();
117
+
118
+ if (client.topology == null) {
119
+ throw new error_1.MongoRuntimeError('client.connect did not create a topology but also did not throw');
120
+ }
121
+
122
+ return client.topology;
123
+ } finally {
124
+ delete client.s.options.__skipPingOnConnect;
125
+ }
126
+ }
127
+
128
+ return client.topology;
129
+ }
130
+ /**
131
+ * Executes an operation and retries as appropriate
132
+ * @internal
133
+ *
134
+ * @remarks
135
+ * Implements behaviour described in [Retryable Reads](https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.md) and [Retryable
136
+ * Writes](https://github.com/mongodb/specifications/blob/master/source/retryable-writes/retryable-writes.md) specification
137
+ *
138
+ * This function:
139
+ * - performs initial server selection
140
+ * - attempts to execute an operation
141
+ * - retries the operation if it meets the criteria for a retryable read or a retryable write
142
+ *
143
+ * @typeParam T - The operation's type
144
+ * @typeParam TResult - The type of the operation's result, calculated from T
145
+ *
146
+ * @param operation - The operation to execute
147
+ * */
148
+
149
+
150
+ async function tryOperation(operation, {
151
+ topology,
152
+ timeoutContext,
153
+ session,
154
+ readPreference
155
+ }) {
156
+ let selector;
157
+
158
+ if (operation.hasAspect(operation_1.Aspect.MUST_SELECT_SAME_SERVER)) {
159
+ // GetMore and KillCursor operations must always select the same server, but run through
160
+ // server selection to potentially force monitor checks if the server is
161
+ // in an unknown state.
162
+ selector = (0, server_selection_1.sameServerSelector)(operation.server?.description);
163
+ } else if (operation.trySecondaryWrite) {
164
+ // If operation should try to write to secondary use the custom server selector
165
+ // otherwise provide the read preference.
166
+ selector = (0, server_selection_1.secondaryWritableServerSelector)(topology.commonWireVersion, readPreference);
167
+ } else {
168
+ selector = readPreference;
169
+ }
170
+
171
+ let server = await topology.selectServer(selector, {
172
+ session,
173
+ operationName: operation.commandName,
174
+ timeoutContext,
175
+ signal: operation.options.signal
176
+ });
177
+ const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION);
178
+ const hasWriteAspect = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION);
179
+ const inTransaction = session?.inTransaction() ?? false;
180
+ const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead;
181
+ const willRetryWrite = topology.s.options.retryWrites && !inTransaction && (0, utils_1.supportsRetryableWrites)(server) && operation.canRetryWrite;
182
+ const willRetry = operation.hasAspect(operation_1.Aspect.RETRYABLE) && session != null && (hasReadAspect && willRetryRead || hasWriteAspect && willRetryWrite);
183
+
184
+ if (hasWriteAspect && willRetryWrite && session != null) {
185
+ operation.options.willRetryWrite = true;
186
+ session.incrementTransactionNumber();
187
+ }
188
+
189
+ const maxTries = willRetry ? timeoutContext.csotEnabled() ? Infinity : 2 : 1;
190
+ let previousOperationError;
191
+ let previousServer;
192
+
193
+ for (let tries = 0; tries < maxTries; tries++) {
194
+ if (previousOperationError) {
195
+ if (hasWriteAspect && previousOperationError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) {
196
+ throw new error_1.MongoServerError({
197
+ message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
198
+ errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
199
+ originalError: previousOperationError
200
+ });
201
+ }
202
+
203
+ if (operation.hasAspect(operation_1.Aspect.COMMAND_BATCHING) && !operation.canRetryWrite) {
204
+ throw previousOperationError;
205
+ }
206
+
207
+ if (hasWriteAspect && !(0, error_1.isRetryableWriteError)(previousOperationError)) throw previousOperationError;
208
+ if (hasReadAspect && !(0, error_1.isRetryableReadError)(previousOperationError)) throw previousOperationError;
209
+
210
+ if (previousOperationError instanceof error_1.MongoNetworkError && operation.hasAspect(operation_1.Aspect.CURSOR_CREATING) && session != null && session.isPinned && !session.inTransaction()) {
211
+ session.unpin({
212
+ force: true,
213
+ forceClear: true
214
+ });
215
+ }
216
+
217
+ server = await topology.selectServer(selector, {
218
+ session,
219
+ operationName: operation.commandName,
220
+ previousServer,
221
+ signal: operation.options.signal
222
+ });
223
+
224
+ if (hasWriteAspect && !(0, utils_1.supportsRetryableWrites)(server)) {
225
+ throw new error_1.MongoUnexpectedServerResponseError('Selected server does not support retryable writes');
226
+ }
227
+ }
228
+
229
+ try {
230
+ // If tries > 0 and we are command batching we need to reset the batch.
231
+ if (tries > 0 && operation.hasAspect(operation_1.Aspect.COMMAND_BATCHING)) {
232
+ operation.resetBatch();
233
+ }
234
+
235
+ return await operation.execute(server, session, timeoutContext);
236
+ } catch (operationError) {
237
+ if (!(operationError instanceof error_1.MongoError)) throw operationError;
238
+
239
+ if (previousOperationError != null && operationError.hasErrorLabel(error_1.MongoErrorLabel.NoWritesPerformed)) {
240
+ throw previousOperationError;
241
+ }
242
+
243
+ previousServer = server.description;
244
+ previousOperationError = operationError; // Reset timeouts
245
+
246
+ timeoutContext.clear();
247
+ }
248
+ }
249
+
250
+ throw previousOperationError ?? new error_1.MongoRuntimeError('Tried to propagate retryability error, but no error was found.');
251
+ }
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.FindOperation = void 0;
7
+
8
+ const responses_1 = require("../cmap/wire_protocol/responses");
9
+
10
+ const error_1 = require("../error");
11
+
12
+ const explain_1 = require("../explain");
13
+
14
+ const read_concern_1 = require("../read_concern");
15
+
16
+ const sort_1 = require("../sort");
17
+
18
+ const utils_1 = require("../utils");
19
+
20
+ const command_1 = require("./command");
21
+
22
+ const operation_1 = require("./operation");
23
+ /** @internal */
24
+
25
+
26
+ class FindOperation extends command_1.CommandOperation {
27
+ constructor(ns, filter = {}, options = {}) {
28
+ super(undefined, options);
29
+ this.options = { ...options
30
+ };
31
+ delete this.options.writeConcern;
32
+ this.ns = ns;
33
+
34
+ if (typeof filter !== 'object' || Array.isArray(filter)) {
35
+ throw new error_1.MongoInvalidArgumentError('Query filter must be a plain object or ObjectId');
36
+ } // special case passing in an ObjectId as a filter
37
+
38
+
39
+ this.filter = filter != null && filter._bsontype === 'ObjectId' ? {
40
+ _id: filter
41
+ } : filter;
42
+ }
43
+
44
+ get commandName() {
45
+ return 'find';
46
+ }
47
+
48
+ async execute(server, session, timeoutContext) {
49
+ this.server = server;
50
+ const options = this.options;
51
+ let findCommand = makeFindCommand(this.ns, this.filter, options);
52
+
53
+ if (this.explain) {
54
+ (0, explain_1.validateExplainTimeoutOptions)(this.options, this.explain);
55
+ findCommand = (0, explain_1.decorateWithExplain)(findCommand, this.explain);
56
+ }
57
+
58
+ return await server.command(this.ns, findCommand, { ...this.options,
59
+ ...this.bsonOptions,
60
+ documentsReturnedIn: 'firstBatch',
61
+ session,
62
+ timeoutContext
63
+ }, this.explain ? responses_1.ExplainedCursorResponse : responses_1.CursorResponse);
64
+ }
65
+
66
+ }
67
+
68
+ exports.FindOperation = FindOperation;
69
+
70
+ function makeFindCommand(ns, filter, options) {
71
+ const findCommand = {
72
+ find: ns.collection,
73
+ filter
74
+ };
75
+
76
+ if (options.sort) {
77
+ findCommand.sort = (0, sort_1.formatSort)(options.sort);
78
+ }
79
+
80
+ if (options.projection) {
81
+ let projection = options.projection;
82
+
83
+ if (projection && Array.isArray(projection)) {
84
+ projection = projection.length ? projection.reduce((result, field) => {
85
+ result[field] = 1;
86
+ return result;
87
+ }, {}) : {
88
+ _id: 1
89
+ };
90
+ }
91
+
92
+ findCommand.projection = projection;
93
+ }
94
+
95
+ if (options.hint) {
96
+ findCommand.hint = (0, utils_1.normalizeHintField)(options.hint);
97
+ }
98
+
99
+ if (typeof options.skip === 'number') {
100
+ findCommand.skip = options.skip;
101
+ }
102
+
103
+ if (typeof options.limit === 'number') {
104
+ if (options.limit < 0) {
105
+ findCommand.limit = -options.limit;
106
+ findCommand.singleBatch = true;
107
+ } else {
108
+ findCommand.limit = options.limit;
109
+ }
110
+ }
111
+
112
+ if (typeof options.batchSize === 'number') {
113
+ if (options.batchSize < 0) {
114
+ if (options.limit && options.limit !== 0 && Math.abs(options.batchSize) < Math.abs(options.limit)) {
115
+ findCommand.limit = -options.batchSize;
116
+ }
117
+
118
+ findCommand.singleBatch = true;
119
+ } else {
120
+ findCommand.batchSize = options.batchSize;
121
+ }
122
+ }
123
+
124
+ if (typeof options.singleBatch === 'boolean') {
125
+ findCommand.singleBatch = options.singleBatch;
126
+ } // we check for undefined specifically here to allow falsy values
127
+ // eslint-disable-next-line no-restricted-syntax
128
+
129
+
130
+ if (options.comment !== undefined) {
131
+ findCommand.comment = options.comment;
132
+ }
133
+
134
+ if (typeof options.maxTimeMS === 'number') {
135
+ findCommand.maxTimeMS = options.maxTimeMS;
136
+ }
137
+
138
+ const readConcern = read_concern_1.ReadConcern.fromOptions(options);
139
+
140
+ if (readConcern) {
141
+ findCommand.readConcern = readConcern.toJSON();
142
+ }
143
+
144
+ if (options.max) {
145
+ findCommand.max = options.max;
146
+ }
147
+
148
+ if (options.min) {
149
+ findCommand.min = options.min;
150
+ }
151
+
152
+ if (typeof options.returnKey === 'boolean') {
153
+ findCommand.returnKey = options.returnKey;
154
+ }
155
+
156
+ if (typeof options.showRecordId === 'boolean') {
157
+ findCommand.showRecordId = options.showRecordId;
158
+ }
159
+
160
+ if (typeof options.tailable === 'boolean') {
161
+ findCommand.tailable = options.tailable;
162
+ }
163
+
164
+ if (typeof options.oplogReplay === 'boolean') {
165
+ findCommand.oplogReplay = options.oplogReplay;
166
+ }
167
+
168
+ if (typeof options.timeout === 'boolean') {
169
+ findCommand.noCursorTimeout = !options.timeout;
170
+ } else if (typeof options.noCursorTimeout === 'boolean') {
171
+ findCommand.noCursorTimeout = options.noCursorTimeout;
172
+ }
173
+
174
+ if (typeof options.awaitData === 'boolean') {
175
+ findCommand.awaitData = options.awaitData;
176
+ }
177
+
178
+ if (typeof options.allowPartialResults === 'boolean') {
179
+ findCommand.allowPartialResults = options.allowPartialResults;
180
+ }
181
+
182
+ if (options.collation) {
183
+ findCommand.collation = options.collation;
184
+ }
185
+
186
+ if (typeof options.allowDiskUse === 'boolean') {
187
+ findCommand.allowDiskUse = options.allowDiskUse;
188
+ }
189
+
190
+ if (options.let) {
191
+ findCommand.let = options.let;
192
+ }
193
+
194
+ return findCommand;
195
+ }
196
+
197
+ (0, operation_1.defineAspects)(FindOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.EXPLAINABLE, operation_1.Aspect.CURSOR_CREATING]);