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,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SetProfilingLevelOperation = exports.ProfilingLevel = void 0;
7
+
8
+ const error_1 = require("../error");
9
+
10
+ const utils_1 = require("../utils");
11
+
12
+ const command_1 = require("./command");
13
+
14
+ const levelValues = new Set(['off', 'slow_only', 'all']);
15
+ /** @public */
16
+
17
+ exports.ProfilingLevel = Object.freeze({
18
+ off: 'off',
19
+ slowOnly: 'slow_only',
20
+ all: 'all'
21
+ });
22
+ /** @internal */
23
+
24
+ class SetProfilingLevelOperation extends command_1.CommandOperation {
25
+ constructor(db, level, options) {
26
+ super(db, options);
27
+ this.options = options;
28
+
29
+ switch (level) {
30
+ case exports.ProfilingLevel.off:
31
+ this.profile = 0;
32
+ break;
33
+
34
+ case exports.ProfilingLevel.slowOnly:
35
+ this.profile = 1;
36
+ break;
37
+
38
+ case exports.ProfilingLevel.all:
39
+ this.profile = 2;
40
+ break;
41
+
42
+ default:
43
+ this.profile = 0;
44
+ break;
45
+ }
46
+
47
+ this.level = level;
48
+ }
49
+
50
+ get commandName() {
51
+ return 'profile';
52
+ }
53
+
54
+ async execute(server, session, timeoutContext) {
55
+ const level = this.level;
56
+
57
+ if (!levelValues.has(level)) {
58
+ throw new error_1.MongoInvalidArgumentError(`Profiling level must be one of "${(0, utils_1.enumToString)(exports.ProfilingLevel)}"`);
59
+ } // TODO(NODE-3483): Determine error to put here
60
+
61
+
62
+ await super.executeCommand(server, session, {
63
+ profile: this.profile
64
+ }, timeoutContext);
65
+ return level;
66
+ }
67
+
68
+ }
69
+
70
+ exports.SetProfilingLevelOperation = SetProfilingLevelOperation;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DbStatsOperation = void 0;
7
+
8
+ const command_1 = require("./command");
9
+
10
+ const operation_1 = require("./operation");
11
+ /** @internal */
12
+
13
+
14
+ class DbStatsOperation extends command_1.CommandOperation {
15
+ constructor(db, options) {
16
+ super(db, options);
17
+ this.options = options;
18
+ }
19
+
20
+ get commandName() {
21
+ return 'dbStats';
22
+ }
23
+
24
+ async execute(server, session, timeoutContext) {
25
+ const command = {
26
+ dbStats: true
27
+ };
28
+
29
+ if (this.options.scale != null) {
30
+ command.scale = this.options.scale;
31
+ }
32
+
33
+ return await super.executeCommand(server, session, command, timeoutContext);
34
+ }
35
+
36
+ }
37
+
38
+ exports.DbStatsOperation = DbStatsOperation;
39
+ (0, operation_1.defineAspects)(DbStatsOperation, [operation_1.Aspect.READ_OPERATION]);
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReplaceOneOperation = exports.UpdateManyOperation = exports.UpdateOneOperation = exports.UpdateOperation = void 0;
7
+ exports.makeUpdateStatement = makeUpdateStatement;
8
+
9
+ const error_1 = require("../error");
10
+
11
+ const sort_1 = require("../sort");
12
+
13
+ const utils_1 = require("../utils");
14
+
15
+ const command_1 = require("./command");
16
+
17
+ const operation_1 = require("./operation");
18
+ /**
19
+ * @internal
20
+ * UpdateOperation is used in bulk write, while UpdateOneOperation and UpdateManyOperation are only used in the collections API
21
+ */
22
+
23
+
24
+ class UpdateOperation extends command_1.CommandOperation {
25
+ constructor(ns, statements, options) {
26
+ super(undefined, options);
27
+ this.options = options;
28
+ this.ns = ns;
29
+ this.statements = statements;
30
+ }
31
+
32
+ get commandName() {
33
+ return 'update';
34
+ }
35
+
36
+ get canRetryWrite() {
37
+ if (super.canRetryWrite === false) {
38
+ return false;
39
+ }
40
+
41
+ return this.statements.every(op => op.multi == null || op.multi === false);
42
+ }
43
+
44
+ async execute(server, session, timeoutContext) {
45
+ const options = this.options ?? {};
46
+ const ordered = typeof options.ordered === 'boolean' ? options.ordered : true;
47
+ const command = {
48
+ update: this.ns.collection,
49
+ updates: this.statements,
50
+ ordered
51
+ };
52
+
53
+ if (typeof options.bypassDocumentValidation === 'boolean') {
54
+ command.bypassDocumentValidation = options.bypassDocumentValidation;
55
+ }
56
+
57
+ if (options.let) {
58
+ command.let = options.let;
59
+ } // we check for undefined specifically here to allow falsy values
60
+ // eslint-disable-next-line no-restricted-syntax
61
+
62
+
63
+ if (options.comment !== undefined) {
64
+ command.comment = options.comment;
65
+ }
66
+
67
+ const unacknowledgedWrite = this.writeConcern && this.writeConcern.w === 0;
68
+
69
+ if (unacknowledgedWrite) {
70
+ if (this.statements.find(o => o.hint)) {
71
+ // TODO(NODE-3541): fix error for hint with unacknowledged writes
72
+ throw new error_1.MongoCompatibilityError(`hint is not supported with unacknowledged writes`);
73
+ }
74
+ }
75
+
76
+ const res = await super.executeCommand(server, session, command, timeoutContext);
77
+ return res;
78
+ }
79
+
80
+ }
81
+
82
+ exports.UpdateOperation = UpdateOperation;
83
+ /** @internal */
84
+
85
+ class UpdateOneOperation extends UpdateOperation {
86
+ constructor(collection, filter, update, options) {
87
+ super(collection.s.namespace, [makeUpdateStatement(filter, update, { ...options,
88
+ multi: false
89
+ })], options);
90
+
91
+ if (!(0, utils_1.hasAtomicOperators)(update, options)) {
92
+ throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
93
+ }
94
+ }
95
+
96
+ async execute(server, session, timeoutContext) {
97
+ const res = await super.execute(server, session, timeoutContext);
98
+ if (this.explain != null) return res;
99
+ if (res.code) throw new error_1.MongoServerError(res);
100
+ if (res.writeErrors) throw new error_1.MongoServerError(res.writeErrors[0]);
101
+ return {
102
+ acknowledged: this.writeConcern?.w !== 0,
103
+ modifiedCount: res.nModified ?? res.n,
104
+ upsertedId: Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
105
+ upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
106
+ matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
107
+ };
108
+ }
109
+
110
+ }
111
+
112
+ exports.UpdateOneOperation = UpdateOneOperation;
113
+ /** @internal */
114
+
115
+ class UpdateManyOperation extends UpdateOperation {
116
+ constructor(collection, filter, update, options) {
117
+ super(collection.s.namespace, [makeUpdateStatement(filter, update, { ...options,
118
+ multi: true
119
+ })], options);
120
+
121
+ if (!(0, utils_1.hasAtomicOperators)(update, options)) {
122
+ throw new error_1.MongoInvalidArgumentError('Update document requires atomic operators');
123
+ }
124
+ }
125
+
126
+ async execute(server, session, timeoutContext) {
127
+ const res = await super.execute(server, session, timeoutContext);
128
+ if (this.explain != null) return res;
129
+ if (res.code) throw new error_1.MongoServerError(res);
130
+ if (res.writeErrors) throw new error_1.MongoServerError(res.writeErrors[0]);
131
+ return {
132
+ acknowledged: this.writeConcern?.w !== 0,
133
+ modifiedCount: res.nModified ?? res.n,
134
+ upsertedId: Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
135
+ upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
136
+ matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
137
+ };
138
+ }
139
+
140
+ }
141
+
142
+ exports.UpdateManyOperation = UpdateManyOperation;
143
+ /** @internal */
144
+
145
+ class ReplaceOneOperation extends UpdateOperation {
146
+ constructor(collection, filter, replacement, options) {
147
+ super(collection.s.namespace, [makeUpdateStatement(filter, replacement, { ...options,
148
+ multi: false
149
+ })], options);
150
+
151
+ if ((0, utils_1.hasAtomicOperators)(replacement)) {
152
+ throw new error_1.MongoInvalidArgumentError('Replacement document must not contain atomic operators');
153
+ }
154
+ }
155
+
156
+ async execute(server, session, timeoutContext) {
157
+ const res = await super.execute(server, session, timeoutContext);
158
+ if (this.explain != null) return res;
159
+ if (res.code) throw new error_1.MongoServerError(res);
160
+ if (res.writeErrors) throw new error_1.MongoServerError(res.writeErrors[0]);
161
+ return {
162
+ acknowledged: this.writeConcern?.w !== 0,
163
+ modifiedCount: res.nModified ?? res.n,
164
+ upsertedId: Array.isArray(res.upserted) && res.upserted.length > 0 ? res.upserted[0]._id : null,
165
+ upsertedCount: Array.isArray(res.upserted) && res.upserted.length ? res.upserted.length : 0,
166
+ matchedCount: Array.isArray(res.upserted) && res.upserted.length > 0 ? 0 : res.n
167
+ };
168
+ }
169
+
170
+ }
171
+
172
+ exports.ReplaceOneOperation = ReplaceOneOperation;
173
+
174
+ function makeUpdateStatement(filter, update, options) {
175
+ if (filter == null || typeof filter !== 'object') {
176
+ throw new error_1.MongoInvalidArgumentError('Selector must be a valid JavaScript object');
177
+ }
178
+
179
+ if (update == null || typeof update !== 'object') {
180
+ throw new error_1.MongoInvalidArgumentError('Document must be a valid JavaScript object');
181
+ }
182
+
183
+ const op = {
184
+ q: filter,
185
+ u: update
186
+ };
187
+
188
+ if (typeof options.upsert === 'boolean') {
189
+ op.upsert = options.upsert;
190
+ }
191
+
192
+ if (options.multi) {
193
+ op.multi = options.multi;
194
+ }
195
+
196
+ if (options.hint) {
197
+ op.hint = options.hint;
198
+ }
199
+
200
+ if (options.arrayFilters) {
201
+ op.arrayFilters = options.arrayFilters;
202
+ }
203
+
204
+ if (options.collation) {
205
+ op.collation = options.collation;
206
+ }
207
+
208
+ if (!options.multi && options.sort != null) {
209
+ op.sort = (0, sort_1.formatSort)(options.sort);
210
+ }
211
+
212
+ return op;
213
+ }
214
+
215
+ (0, operation_1.defineAspects)(UpdateOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION, operation_1.Aspect.SKIP_COLLATION]);
216
+ (0, operation_1.defineAspects)(UpdateOneOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION, operation_1.Aspect.EXPLAINABLE, operation_1.Aspect.SKIP_COLLATION]);
217
+ (0, operation_1.defineAspects)(UpdateManyOperation, [operation_1.Aspect.WRITE_OPERATION, operation_1.Aspect.EXPLAINABLE, operation_1.Aspect.SKIP_COLLATION]);
218
+ (0, operation_1.defineAspects)(ReplaceOneOperation, [operation_1.Aspect.RETRYABLE, operation_1.Aspect.WRITE_OPERATION, operation_1.Aspect.SKIP_COLLATION]);
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ValidateCollectionOperation = void 0;
7
+
8
+ const error_1 = require("../error");
9
+
10
+ const command_1 = require("./command");
11
+ /** @internal */
12
+
13
+
14
+ class ValidateCollectionOperation extends command_1.CommandOperation {
15
+ constructor(admin, collectionName, options) {
16
+ // Decorate command with extra options
17
+ const command = {
18
+ validate: collectionName
19
+ };
20
+ const keys = Object.keys(options);
21
+
22
+ for (let i = 0; i < keys.length; i++) {
23
+ if (Object.prototype.hasOwnProperty.call(options, keys[i]) && keys[i] !== 'session') {
24
+ command[keys[i]] = options[keys[i]];
25
+ }
26
+ }
27
+
28
+ super(admin.s.db, options);
29
+ this.options = options;
30
+ this.command = command;
31
+ this.collectionName = collectionName;
32
+ }
33
+
34
+ get commandName() {
35
+ return 'validate';
36
+ }
37
+
38
+ async execute(server, session, timeoutContext) {
39
+ const collectionName = this.collectionName;
40
+ const doc = await super.executeCommand(server, session, this.command, timeoutContext);
41
+ if (doc.result != null && typeof doc.result !== 'string') throw new error_1.MongoUnexpectedServerResponseError('Error with validation data');
42
+ if (doc.result != null && doc.result.match(/exception|corrupt/) != null) throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${collectionName}`);
43
+ if (doc.valid != null && !doc.valid) throw new error_1.MongoUnexpectedServerResponseError(`Invalid collection ${collectionName}`);
44
+ return doc;
45
+ }
46
+
47
+ }
48
+
49
+ exports.ValidateCollectionOperation = ValidateCollectionOperation;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReadConcern = exports.ReadConcernLevel = void 0;
7
+ /** @public */
8
+
9
+ exports.ReadConcernLevel = Object.freeze({
10
+ local: 'local',
11
+ majority: 'majority',
12
+ linearizable: 'linearizable',
13
+ available: 'available',
14
+ snapshot: 'snapshot'
15
+ });
16
+ /**
17
+ * The MongoDB ReadConcern, which allows for control of the consistency and isolation properties
18
+ * of the data read from replica sets and replica set shards.
19
+ * @public
20
+ *
21
+ * @see https://www.mongodb.com/docs/manual/reference/read-concern/index.html
22
+ */
23
+
24
+ class ReadConcern {
25
+ /** Constructs a ReadConcern from the read concern level.*/
26
+ constructor(level) {
27
+ /**
28
+ * A spec test exists that allows level to be any string.
29
+ * "invalid readConcern with out stage"
30
+ * @see ./test/spec/crud/v2/aggregate-out-readConcern.json
31
+ * @see https://github.com/mongodb/specifications/blob/master/source/read-write-concern/read-write-concern.md#unknown-levels-and-additional-options-for-string-based-readconcerns
32
+ */
33
+ this.level = exports.ReadConcernLevel[level] ?? level;
34
+ }
35
+ /**
36
+ * Construct a ReadConcern given an options object.
37
+ *
38
+ * @param options - The options object from which to extract the write concern.
39
+ */
40
+
41
+
42
+ static fromOptions(options) {
43
+ if (options == null) {
44
+ return;
45
+ }
46
+
47
+ if (options.readConcern) {
48
+ const {
49
+ readConcern
50
+ } = options;
51
+
52
+ if (readConcern instanceof ReadConcern) {
53
+ return readConcern;
54
+ } else if (typeof readConcern === 'string') {
55
+ return new ReadConcern(readConcern);
56
+ } else if ('level' in readConcern && readConcern.level) {
57
+ return new ReadConcern(readConcern.level);
58
+ }
59
+ }
60
+
61
+ if (options.level) {
62
+ return new ReadConcern(options.level);
63
+ }
64
+
65
+ return;
66
+ }
67
+
68
+ static get MAJORITY() {
69
+ return exports.ReadConcernLevel.majority;
70
+ }
71
+
72
+ static get AVAILABLE() {
73
+ return exports.ReadConcernLevel.available;
74
+ }
75
+
76
+ static get LINEARIZABLE() {
77
+ return exports.ReadConcernLevel.linearizable;
78
+ }
79
+
80
+ static get SNAPSHOT() {
81
+ return exports.ReadConcernLevel.snapshot;
82
+ }
83
+
84
+ toJSON() {
85
+ return {
86
+ level: this.level
87
+ };
88
+ }
89
+
90
+ }
91
+
92
+ exports.ReadConcern = ReadConcern;
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ReadPreference = exports.ReadPreferenceMode = void 0;
7
+
8
+ const error_1 = require("./error");
9
+ /** @public */
10
+
11
+
12
+ exports.ReadPreferenceMode = Object.freeze({
13
+ primary: 'primary',
14
+ primaryPreferred: 'primaryPreferred',
15
+ secondary: 'secondary',
16
+ secondaryPreferred: 'secondaryPreferred',
17
+ nearest: 'nearest'
18
+ });
19
+ /**
20
+ * The **ReadPreference** class is a class that represents a MongoDB ReadPreference and is
21
+ * used to construct connections.
22
+ * @public
23
+ *
24
+ * @see https://www.mongodb.com/docs/manual/core/read-preference/
25
+ */
26
+
27
+ class ReadPreference {
28
+ /**
29
+ * @param mode - A string describing the read preference mode (primary|primaryPreferred|secondary|secondaryPreferred|nearest)
30
+ * @param tags - A tag set used to target reads to members with the specified tag(s). tagSet is not available if using read preference mode primary.
31
+ * @param options - Additional read preference options
32
+ */
33
+ constructor(mode, tags, options) {
34
+ if (!ReadPreference.isValid(mode)) {
35
+ throw new error_1.MongoInvalidArgumentError(`Invalid read preference mode ${JSON.stringify(mode)}`);
36
+ }
37
+
38
+ if (options == null && typeof tags === 'object' && !Array.isArray(tags)) {
39
+ options = tags;
40
+ tags = undefined;
41
+ } else if (tags && !Array.isArray(tags)) {
42
+ throw new error_1.MongoInvalidArgumentError('ReadPreference tags must be an array');
43
+ }
44
+
45
+ this.mode = mode;
46
+ this.tags = tags;
47
+ this.hedge = options?.hedge;
48
+ this.maxStalenessSeconds = undefined;
49
+ this.minWireVersion = undefined;
50
+ options = options ?? {};
51
+
52
+ if (options.maxStalenessSeconds != null) {
53
+ if (options.maxStalenessSeconds <= 0) {
54
+ throw new error_1.MongoInvalidArgumentError('maxStalenessSeconds must be a positive integer');
55
+ }
56
+
57
+ this.maxStalenessSeconds = options.maxStalenessSeconds; // NOTE: The minimum required wire version is 5 for this read preference. If the existing
58
+ // topology has a lower value then a MongoError will be thrown during server selection.
59
+
60
+ this.minWireVersion = 5;
61
+ }
62
+
63
+ if (this.mode === ReadPreference.PRIMARY) {
64
+ if (this.tags && Array.isArray(this.tags) && this.tags.length > 0) {
65
+ throw new error_1.MongoInvalidArgumentError('Primary read preference cannot be combined with tags');
66
+ }
67
+
68
+ if (this.maxStalenessSeconds) {
69
+ throw new error_1.MongoInvalidArgumentError('Primary read preference cannot be combined with maxStalenessSeconds');
70
+ }
71
+
72
+ if (this.hedge) {
73
+ throw new error_1.MongoInvalidArgumentError('Primary read preference cannot be combined with hedge');
74
+ }
75
+ }
76
+ } // Support the deprecated `preference` property introduced in the porcelain layer
77
+
78
+
79
+ get preference() {
80
+ return this.mode;
81
+ }
82
+
83
+ static fromString(mode) {
84
+ return new ReadPreference(mode);
85
+ }
86
+ /**
87
+ * Construct a ReadPreference given an options object.
88
+ *
89
+ * @param options - The options object from which to extract the read preference.
90
+ */
91
+
92
+
93
+ static fromOptions(options) {
94
+ if (!options) return;
95
+ const readPreference = options.readPreference ?? options.session?.transaction.options.readPreference;
96
+ const readPreferenceTags = options.readPreferenceTags;
97
+
98
+ if (readPreference == null) {
99
+ return;
100
+ }
101
+
102
+ if (typeof readPreference === 'string') {
103
+ return new ReadPreference(readPreference, readPreferenceTags, {
104
+ maxStalenessSeconds: options.maxStalenessSeconds,
105
+ hedge: options.hedge
106
+ });
107
+ } else if (!(readPreference instanceof ReadPreference) && typeof readPreference === 'object') {
108
+ const mode = readPreference.mode || readPreference.preference;
109
+
110
+ if (mode && typeof mode === 'string') {
111
+ return new ReadPreference(mode, readPreference.tags ?? readPreferenceTags, {
112
+ maxStalenessSeconds: readPreference.maxStalenessSeconds,
113
+ hedge: options.hedge
114
+ });
115
+ }
116
+ }
117
+
118
+ if (readPreferenceTags) {
119
+ readPreference.tags = readPreferenceTags;
120
+ }
121
+
122
+ return readPreference;
123
+ }
124
+ /**
125
+ * Replaces options.readPreference with a ReadPreference instance
126
+ */
127
+
128
+
129
+ static translate(options) {
130
+ if (options.readPreference == null) return options;
131
+ const r = options.readPreference;
132
+
133
+ if (typeof r === 'string') {
134
+ options.readPreference = new ReadPreference(r);
135
+ } else if (r && !(r instanceof ReadPreference) && typeof r === 'object') {
136
+ const mode = r.mode || r.preference;
137
+
138
+ if (mode && typeof mode === 'string') {
139
+ options.readPreference = new ReadPreference(mode, r.tags, {
140
+ maxStalenessSeconds: r.maxStalenessSeconds
141
+ });
142
+ }
143
+ } else if (!(r instanceof ReadPreference)) {
144
+ throw new error_1.MongoInvalidArgumentError(`Invalid read preference: ${r}`);
145
+ }
146
+
147
+ return options;
148
+ }
149
+ /**
150
+ * Validate if a mode is legal
151
+ *
152
+ * @param mode - The string representing the read preference mode.
153
+ */
154
+
155
+
156
+ static isValid(mode) {
157
+ const VALID_MODES = new Set([ReadPreference.PRIMARY, ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST, null]);
158
+ return VALID_MODES.has(mode);
159
+ }
160
+ /**
161
+ * Validate if a mode is legal
162
+ *
163
+ * @param mode - The string representing the read preference mode.
164
+ */
165
+
166
+
167
+ isValid(mode) {
168
+ return ReadPreference.isValid(typeof mode === 'string' ? mode : this.mode);
169
+ }
170
+ /**
171
+ * Indicates that this readPreference needs the "SecondaryOk" bit when sent over the wire
172
+ * @see https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/#op-query
173
+ */
174
+
175
+
176
+ secondaryOk() {
177
+ const NEEDS_SECONDARYOK = new Set([ReadPreference.PRIMARY_PREFERRED, ReadPreference.SECONDARY, ReadPreference.SECONDARY_PREFERRED, ReadPreference.NEAREST]);
178
+ return NEEDS_SECONDARYOK.has(this.mode);
179
+ }
180
+ /**
181
+ * Check if the two ReadPreferences are equivalent
182
+ *
183
+ * @param readPreference - The read preference with which to check equality
184
+ */
185
+
186
+
187
+ equals(readPreference) {
188
+ return readPreference.mode === this.mode;
189
+ }
190
+ /** Return JSON representation */
191
+
192
+
193
+ toJSON() {
194
+ const readPreference = {
195
+ mode: this.mode
196
+ };
197
+ if (Array.isArray(this.tags)) readPreference.tags = this.tags;
198
+ if (this.maxStalenessSeconds) readPreference.maxStalenessSeconds = this.maxStalenessSeconds;
199
+ if (this.hedge) readPreference.hedge = this.hedge;
200
+ return readPreference;
201
+ }
202
+
203
+ }
204
+
205
+ exports.ReadPreference = ReadPreference;
206
+ ReadPreference.PRIMARY = exports.ReadPreferenceMode.primary;
207
+ ReadPreference.PRIMARY_PREFERRED = exports.ReadPreferenceMode.primaryPreferred;
208
+ ReadPreference.SECONDARY = exports.ReadPreferenceMode.secondary;
209
+ ReadPreference.SECONDARY_PREFERRED = exports.ReadPreferenceMode.secondaryPreferred;
210
+ ReadPreference.NEAREST = exports.ReadPreferenceMode.nearest;
211
+ ReadPreference.primary = new ReadPreference(exports.ReadPreferenceMode.primary);
212
+ ReadPreference.primaryPreferred = new ReadPreference(exports.ReadPreferenceMode.primaryPreferred);
213
+ ReadPreference.secondary = new ReadPreference(exports.ReadPreferenceMode.secondary);
214
+ ReadPreference.secondaryPreferred = new ReadPreference(exports.ReadPreferenceMode.secondaryPreferred);
215
+ ReadPreference.nearest = new ReadPreference(exports.ReadPreferenceMode.nearest);