oxygen-cli 1.40.2-beta.1 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +1755 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +1 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -1
  19. package/build/lib/cli.js +1 -1
  20. package/build/lib/debugger.js +1 -1
  21. package/build/lib/img-merge.js +1 -1
  22. package/build/lib/launcher.js +1 -1
  23. package/build/lib/logger.js +43 -43
  24. package/build/lib/moduleRequire.js +1 -1
  25. package/build/lib/parallel-launcher.js +1 -1
  26. package/build/lib/param-manager.js +1 -1
  27. package/build/lib/param-reader-csv.js +1 -1
  28. package/build/lib/param-reader-excel.js +1 -1
  29. package/build/lib/param-reader-json.js +1 -1
  30. package/build/lib/text-to-image.js +1 -1
  31. package/build/lib/util.js +1 -1
  32. package/build/model/case-result.js +1 -1
  33. package/build/model/failure.js +1 -1
  34. package/build/model/status.js +1 -1
  35. package/build/model/step-result.js +1 -1
  36. package/build/model/suite-result.js +1 -1
  37. package/build/model/test-result.js +1 -1
  38. package/build/model/testcase.js +1 -1
  39. package/build/model/testsuite.js +1 -1
  40. package/build/ox_modules/index.js +1 -1
  41. package/build/ox_modules/module-assert.js +37 -37
  42. package/build/ox_modules/module-date.js +24 -24
  43. package/build/ox_modules/module-db.js +52 -52
  44. package/build/ox_modules/module-email.js +59 -59
  45. package/build/ox_modules/module-eyes.js +34 -34
  46. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  47. package/build/ox_modules/module-http/ntlm.js +15 -15
  48. package/build/ox_modules/module-http.js +132 -132
  49. package/build/ox_modules/module-log.js +27 -27
  50. package/build/ox_modules/module-mailinator.js +87 -87
  51. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  52. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  53. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  54. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  55. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  56. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  57. package/build/ox_modules/module-mob/commands/back.js +16 -16
  58. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  59. package/build/ox_modules/module-mob/commands/click.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  61. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  62. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  63. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  64. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  65. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  66. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  67. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  68. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  69. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  70. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  71. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  73. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  75. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  77. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  78. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  79. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  80. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  81. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  82. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  83. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  84. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  85. package/build/ox_modules/module-mob/commands/index.js +1 -1
  86. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  88. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  91. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  92. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  93. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  94. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  95. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  96. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  97. package/build/ox_modules/module-mob/commands/open.js +17 -17
  98. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  99. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  100. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  101. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  102. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  103. package/build/ox_modules/module-mob/commands/select.js +24 -24
  104. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  105. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  106. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  107. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  108. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  109. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  110. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  111. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  112. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  113. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  116. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  117. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  118. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  119. package/build/ox_modules/module-mob/commands/type.js +20 -20
  120. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  121. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  122. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  123. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  124. package/build/ox_modules/module-mob.js +74 -74
  125. package/build/ox_modules/module-mongo.js +82 -82
  126. package/build/ox_modules/module-pdf.js +35 -35
  127. package/build/ox_modules/module-proxy.js +77 -77
  128. package/build/ox_modules/module-serial.js +55 -55
  129. package/build/ox_modules/module-shell.js +52 -33
  130. package/build/ox_modules/module-soap.js +72 -72
  131. package/build/ox_modules/module-twilio.js +41 -41
  132. package/build/ox_modules/module-utils.js +91 -91
  133. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  134. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  135. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  136. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  137. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  140. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  142. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  143. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  144. package/build/ox_modules/module-web/commands/back.js +16 -16
  145. package/build/ox_modules/module-web/commands/clear.js +18 -18
  146. package/build/ox_modules/module-web/commands/click.js +25 -25
  147. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  148. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  149. package/build/ox_modules/module-web/commands/debug.js +15 -15
  150. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  151. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  152. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  153. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  154. package/build/ox_modules/module-web/commands/execute.js +24 -24
  155. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  156. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  157. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  158. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  159. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  160. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  161. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  162. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  163. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  164. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  165. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  166. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  167. package/build/ox_modules/module-web/commands/getText.js +18 -18
  168. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  169. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  170. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  171. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  172. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  173. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  174. package/build/ox_modules/module-web/commands/index.js +1 -1
  175. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  176. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  177. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  178. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  179. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  180. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  181. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  182. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  184. package/build/ox_modules/module-web/commands/mock.js +20 -20
  185. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  187. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  188. package/build/ox_modules/module-web/commands/open.js +16 -16
  189. package/build/ox_modules/module-web/commands/pause.js +15 -15
  190. package/build/ox_modules/module-web/commands/point.js +21 -21
  191. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  192. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  193. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  194. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  195. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  196. package/build/ox_modules/module-web/commands/select.js +23 -23
  197. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  198. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  199. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  200. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  201. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  202. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  203. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  204. package/build/ox_modules/module-web/commands/type.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  206. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  207. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  210. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  212. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  213. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  214. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  215. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  218. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  222. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  223. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  224. package/build/ox_modules/module-web.js +94 -94
  225. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  226. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  227. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  228. package/build/ox_modules/module-win/commands/back.js +11 -11
  229. package/build/ox_modules/module-win/commands/clear.js +13 -13
  230. package/build/ox_modules/module-win/commands/click.js +13 -13
  231. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  232. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  233. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  234. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  235. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  236. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  237. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  238. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  239. package/build/ox_modules/module-win/commands/getText.js +14 -14
  240. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  241. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  242. package/build/ox_modules/module-win/commands/index.js +1 -1
  243. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  244. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  245. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  246. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  247. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  248. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  249. package/build/ox_modules/module-win/commands/open.js +13 -13
  250. package/build/ox_modules/module-win/commands/pause.js +12 -12
  251. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  252. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  253. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  254. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  255. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  256. package/build/ox_modules/module-win/commands/tap.js +13 -13
  257. package/build/ox_modules/module-win/commands/type.js +16 -16
  258. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  259. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  260. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  261. package/build/ox_modules/module-win.js +47 -47
  262. package/build/ox_modules/utils.js +8 -8
  263. package/build/ox_reporters/excel/template.json +48 -48
  264. package/build/ox_reporters/html/index.ejs +163 -163
  265. package/build/ox_reporters/html/summary.ejs +77 -77
  266. package/build/ox_reporters/html/tests-details.ejs +134 -134
  267. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  268. package/build/ox_reporters/reporter-excel.js +1 -1
  269. package/build/ox_reporters/reporter-html.js +1 -1
  270. package/build/ox_reporters/reporter-json.js +1 -1
  271. package/build/ox_reporters/reporter-junit.js +1 -1
  272. package/build/ox_reporters/reporter-pdf.js +1 -1
  273. package/build/ox_reporters/reporter-rp.js +73 -42
  274. package/build/ox_reporters/reporter-xml.js +1 -1
  275. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  276. package/build/ox_services/service-devtools.js +1 -1
  277. package/build/reporter/FileReporterBase.js +1 -1
  278. package/build/reporter/ReportAggregator.js +1 -1
  279. package/build/reporter/ReporterBase.js +1 -1
  280. package/build/reporter/WebSocketReporter.js +1 -1
  281. package/build/runners/WorkerProcess.js +1 -1
  282. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  283. package/build/runners/cucumber/CucumberReporter.js +1 -1
  284. package/build/runners/cucumber/CucumberWorker.js +1 -1
  285. package/build/runners/cucumber/index.js +1 -1
  286. package/build/runners/cucumber/worker.js +1 -1
  287. package/build/runners/index.js +1 -1
  288. package/build/runners/oxygen/OxygenWorker.js +1 -1
  289. package/build/runners/oxygen/index.js +1 -1
  290. package/build/runners/oxygen/worker.js +1 -1
  291. package/config/default.json +6 -6
  292. package/package.json +139 -139
  293. package/types/index.d.ts +70 -70
  294. package/types/module-eyes.d.ts +39 -39
  295. package/types/module-http.d.ts +163 -163
  296. package/types/module-log.d.ts +34 -34
  297. package/types/module-mob.d.ts +966 -966
  298. package/types/module-pdf.d.ts +40 -40
  299. package/types/module-proxy.d.ts +100 -100
  300. package/types/module-shell.d.ts +24 -24
  301. package/types/module-utils.d.ts +99 -99
  302. package/types/module-web.d.ts +1053 -1053
  303. package/types/module-win.d.ts +352 -352
  304. package/types/oxygen.d.ts +53 -53
  305. package/log.txt +0 -1614
  306. package/reports/2025-06-08_231627/report.html +0 -440
  307. package/reports/2025-06-09_223615/report.html +0 -440
  308. package/transpiled/mongodb/etc/prepare.js +0 -18
  309. package/transpiled/mongodb/lib/admin.js +0 -182
  310. package/transpiled/mongodb/lib/beta.js +0 -26
  311. package/transpiled/mongodb/lib/bson.js +0 -220
  312. package/transpiled/mongodb/lib/bulk/common.js +0 -1041
  313. package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
  314. package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
  315. package/transpiled/mongodb/lib/change_stream.js +0 -517
  316. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
  317. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
  318. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
  319. package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
  320. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
  321. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
  322. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
  323. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
  324. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
  325. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
  326. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
  327. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
  328. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
  329. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
  330. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
  331. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
  332. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
  333. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
  334. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
  335. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
  336. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
  337. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
  338. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
  339. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
  340. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
  341. package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
  342. package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
  343. package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
  344. package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
  345. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
  346. package/transpiled/mongodb/lib/cmap/commands.js +0 -605
  347. package/transpiled/mongodb/lib/cmap/connect.js +0 -418
  348. package/transpiled/mongodb/lib/cmap/connection.js +0 -673
  349. package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
  350. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
  351. package/transpiled/mongodb/lib/cmap/errors.js +0 -128
  352. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
  353. package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
  354. package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
  355. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
  356. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
  357. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
  358. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
  359. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
  360. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
  361. package/transpiled/mongodb/lib/collection.js +0 -852
  362. package/transpiled/mongodb/lib/connection_string.js +0 -1452
  363. package/transpiled/mongodb/lib/constants.js +0 -162
  364. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
  365. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
  366. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
  367. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
  368. package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
  369. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
  370. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
  371. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
  372. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
  373. package/transpiled/mongodb/lib/db.js +0 -467
  374. package/transpiled/mongodb/lib/deps.js +0 -174
  375. package/transpiled/mongodb/lib/encrypter.js +0 -129
  376. package/transpiled/mongodb/lib/error.js +0 -1550
  377. package/transpiled/mongodb/lib/explain.js +0 -122
  378. package/transpiled/mongodb/lib/gridfs/download.js +0 -369
  379. package/transpiled/mongodb/lib/gridfs/index.js +0 -240
  380. package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
  381. package/transpiled/mongodb/lib/index.js +0 -975
  382. package/transpiled/mongodb/lib/mongo_client.js +0 -626
  383. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
  384. package/transpiled/mongodb/lib/mongo_logger.js +0 -812
  385. package/transpiled/mongodb/lib/mongo_types.js +0 -71
  386. package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
  387. package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
  388. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
  389. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
  390. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
  391. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
  392. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
  393. package/transpiled/mongodb/lib/operations/collections.js +0 -49
  394. package/transpiled/mongodb/lib/operations/command.js +0 -102
  395. package/transpiled/mongodb/lib/operations/count.js +0 -60
  396. package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
  397. package/transpiled/mongodb/lib/operations/delete.js +0 -134
  398. package/transpiled/mongodb/lib/operations/distinct.js +0 -77
  399. package/transpiled/mongodb/lib/operations/drop.js +0 -102
  400. package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
  401. package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
  402. package/transpiled/mongodb/lib/operations/find.js +0 -197
  403. package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
  404. package/transpiled/mongodb/lib/operations/get_more.js +0 -84
  405. package/transpiled/mongodb/lib/operations/indexes.js +0 -197
  406. package/transpiled/mongodb/lib/operations/insert.js +0 -138
  407. package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
  408. package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
  409. package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
  410. package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
  411. package/transpiled/mongodb/lib/operations/operation.js +0 -88
  412. package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
  413. package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
  414. package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
  415. package/transpiled/mongodb/lib/operations/rename.js +0 -48
  416. package/transpiled/mongodb/lib/operations/run_command.js +0 -64
  417. package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
  418. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
  419. package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
  420. package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
  421. package/transpiled/mongodb/lib/operations/stats.js +0 -39
  422. package/transpiled/mongodb/lib/operations/update.js +0 -218
  423. package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
  424. package/transpiled/mongodb/lib/read_concern.js +0 -92
  425. package/transpiled/mongodb/lib/read_preference.js +0 -215
  426. package/transpiled/mongodb/lib/resource_management.js +0 -74
  427. package/transpiled/mongodb/lib/sdam/common.js +0 -53
  428. package/transpiled/mongodb/lib/sdam/events.js +0 -177
  429. package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
  430. package/transpiled/mongodb/lib/sdam/server.js +0 -463
  431. package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
  432. package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
  433. package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
  434. package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
  435. package/transpiled/mongodb/lib/sdam/topology.js +0 -833
  436. package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
  437. package/transpiled/mongodb/lib/sessions.js +0 -988
  438. package/transpiled/mongodb/lib/sort.js +0 -123
  439. package/transpiled/mongodb/lib/timeout.js +0 -349
  440. package/transpiled/mongodb/lib/transactions.js +0 -149
  441. package/transpiled/mongodb/lib/utils.js +0 -1502
  442. package/transpiled/mongodb/lib/write_concern.js +0 -115
@@ -1,833 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ServerCapabilities = exports.Topology = void 0;
7
-
8
- const connection_string_1 = require("../connection_string");
9
-
10
- const constants_1 = require("../constants");
11
-
12
- const error_1 = require("../error");
13
-
14
- const mongo_logger_1 = require("../mongo_logger");
15
-
16
- const mongo_types_1 = require("../mongo_types");
17
-
18
- const read_preference_1 = require("../read_preference");
19
-
20
- const timeout_1 = require("../timeout");
21
-
22
- const utils_1 = require("../utils");
23
-
24
- const common_1 = require("./common");
25
-
26
- const events_1 = require("./events");
27
-
28
- const server_1 = require("./server");
29
-
30
- const server_description_1 = require("./server_description");
31
-
32
- const server_selection_1 = require("./server_selection");
33
-
34
- const server_selection_events_1 = require("./server_selection_events");
35
-
36
- const srv_polling_1 = require("./srv_polling");
37
-
38
- const topology_description_1 = require("./topology_description"); // Global state
39
-
40
-
41
- let globalTopologyCounter = 0;
42
- const stateTransition = (0, utils_1.makeStateMachine)({
43
- [common_1.STATE_CLOSED]: [common_1.STATE_CLOSED, common_1.STATE_CONNECTING],
44
- [common_1.STATE_CONNECTING]: [common_1.STATE_CONNECTING, common_1.STATE_CLOSING, common_1.STATE_CONNECTED, common_1.STATE_CLOSED],
45
- [common_1.STATE_CONNECTED]: [common_1.STATE_CONNECTED, common_1.STATE_CLOSING, common_1.STATE_CLOSED],
46
- [common_1.STATE_CLOSING]: [common_1.STATE_CLOSING, common_1.STATE_CLOSED]
47
- });
48
- /**
49
- * A container of server instances representing a connection to a MongoDB topology.
50
- * @internal
51
- */
52
-
53
- class Topology extends mongo_types_1.TypedEventEmitter {
54
- /**
55
- * @param seedlist - a list of HostAddress instances to connect to
56
- */
57
- constructor(client, seeds, options) {
58
- super();
59
- this.on('error', utils_1.noop);
60
- this.client = client; // Options should only be undefined in tests, MongoClient will always have defined options
61
-
62
- options = options ?? {
63
- hosts: [utils_1.HostAddress.fromString('localhost:27017')],
64
- ...Object.fromEntries(connection_string_1.DEFAULT_OPTIONS.entries())
65
- };
66
-
67
- if (typeof seeds === 'string') {
68
- seeds = [utils_1.HostAddress.fromString(seeds)];
69
- } else if (!Array.isArray(seeds)) {
70
- seeds = [seeds];
71
- }
72
-
73
- const seedlist = [];
74
-
75
- for (const seed of seeds) {
76
- if (typeof seed === 'string') {
77
- seedlist.push(utils_1.HostAddress.fromString(seed));
78
- } else if (seed instanceof utils_1.HostAddress) {
79
- seedlist.push(seed);
80
- } else {
81
- // FIXME(NODE-3483): May need to be a MongoParseError
82
- throw new error_1.MongoRuntimeError(`Topology cannot be constructed from ${JSON.stringify(seed)}`);
83
- }
84
- }
85
-
86
- const topologyType = topologyTypeFromOptions(options);
87
- const topologyId = globalTopologyCounter++;
88
- const selectedHosts = options.srvMaxHosts == null || options.srvMaxHosts === 0 || options.srvMaxHosts >= seedlist.length ? seedlist : (0, utils_1.shuffle)(seedlist, options.srvMaxHosts);
89
- const serverDescriptions = new Map();
90
-
91
- for (const hostAddress of selectedHosts) {
92
- serverDescriptions.set(hostAddress.toString(), new server_description_1.ServerDescription(hostAddress));
93
- }
94
-
95
- this.waitQueue = new utils_1.List();
96
- this.s = {
97
- // the id of this topology
98
- id: topologyId,
99
- // passed in options
100
- options,
101
- // initial seedlist of servers to connect to
102
- seedlist,
103
- // initial state
104
- state: common_1.STATE_CLOSED,
105
- // the topology description
106
- description: new topology_description_1.TopologyDescription(topologyType, serverDescriptions, options.replicaSet, undefined, undefined, undefined, options),
107
- serverSelectionTimeoutMS: options.serverSelectionTimeoutMS,
108
- heartbeatFrequencyMS: options.heartbeatFrequencyMS,
109
- minHeartbeatFrequencyMS: options.minHeartbeatFrequencyMS,
110
- // a map of server instances to normalized addresses
111
- servers: new Map(),
112
- credentials: options?.credentials,
113
- clusterTime: undefined,
114
- detectShardedTopology: ev => this.detectShardedTopology(ev),
115
- detectSrvRecords: ev => this.detectSrvRecords(ev)
116
- };
117
- this.mongoLogger = client.mongoLogger;
118
- this.component = 'topology';
119
-
120
- if (options.srvHost && !options.loadBalanced) {
121
- this.s.srvPoller = options.srvPoller ?? new srv_polling_1.SrvPoller({
122
- heartbeatFrequencyMS: this.s.heartbeatFrequencyMS,
123
- srvHost: options.srvHost,
124
- srvMaxHosts: options.srvMaxHosts,
125
- srvServiceName: options.srvServiceName
126
- });
127
- this.on(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
128
- }
129
-
130
- this.connectionLock = undefined;
131
- }
132
-
133
- detectShardedTopology(event) {
134
- const previousType = event.previousDescription.type;
135
- const newType = event.newDescription.type;
136
- const transitionToSharded = previousType !== common_1.TopologyType.Sharded && newType === common_1.TopologyType.Sharded;
137
- const srvListeners = this.s.srvPoller?.listeners(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY);
138
- const listeningToSrvPolling = !!srvListeners?.includes(this.s.detectSrvRecords);
139
-
140
- if (transitionToSharded && !listeningToSrvPolling) {
141
- this.s.srvPoller?.on(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
142
- this.s.srvPoller?.start();
143
- }
144
- }
145
-
146
- detectSrvRecords(ev) {
147
- const previousTopologyDescription = this.s.description;
148
- this.s.description = this.s.description.updateFromSrvPollingEvent(ev, this.s.options.srvMaxHosts);
149
-
150
- if (this.s.description === previousTopologyDescription) {
151
- // Nothing changed, so return
152
- return;
153
- }
154
-
155
- updateServers(this);
156
- this.emitAndLog(Topology.TOPOLOGY_DESCRIPTION_CHANGED, new events_1.TopologyDescriptionChangedEvent(this.s.id, previousTopologyDescription, this.s.description));
157
- }
158
- /**
159
- * @returns A `TopologyDescription` for this topology
160
- */
161
-
162
-
163
- get description() {
164
- return this.s.description;
165
- }
166
-
167
- get loadBalanced() {
168
- return this.s.options.loadBalanced;
169
- }
170
-
171
- get serverApi() {
172
- return this.s.options.serverApi;
173
- }
174
-
175
- get capabilities() {
176
- return new ServerCapabilities(this.lastHello());
177
- }
178
- /** Initiate server connect */
179
-
180
-
181
- async connect(options) {
182
- this.connectionLock ??= this._connect(options);
183
-
184
- try {
185
- await this.connectionLock;
186
- return this;
187
- } finally {
188
- this.connectionLock = undefined;
189
- }
190
- }
191
-
192
- async _connect(options) {
193
- options = options ?? {};
194
-
195
- if (this.s.state === common_1.STATE_CONNECTED) {
196
- return this;
197
- }
198
-
199
- stateTransition(this, common_1.STATE_CONNECTING); // emit SDAM monitoring events
200
-
201
- this.emitAndLog(Topology.TOPOLOGY_OPENING, new events_1.TopologyOpeningEvent(this.s.id)); // emit an event for the topology change
202
-
203
- this.emitAndLog(Topology.TOPOLOGY_DESCRIPTION_CHANGED, new events_1.TopologyDescriptionChangedEvent(this.s.id, new topology_description_1.TopologyDescription(common_1.TopologyType.Unknown), // initial is always Unknown
204
- this.s.description)); // connect all known servers, then attempt server selection to connect
205
-
206
- const serverDescriptions = Array.from(this.s.description.servers.values());
207
- this.s.servers = new Map(serverDescriptions.map(serverDescription => [serverDescription.address, createAndConnectServer(this, serverDescription)])); // In load balancer mode we need to fake a server description getting
208
- // emitted from the monitor, since the monitor doesn't exist.
209
-
210
- if (this.s.options.loadBalanced) {
211
- for (const description of serverDescriptions) {
212
- const newDescription = new server_description_1.ServerDescription(description.hostAddress, undefined, {
213
- loadBalanced: this.s.options.loadBalanced
214
- });
215
- this.serverUpdateHandler(newDescription);
216
- }
217
- }
218
-
219
- const serverSelectionTimeoutMS = this.client.s.options.serverSelectionTimeoutMS;
220
- const readPreference = options.readPreference ?? read_preference_1.ReadPreference.primary;
221
- const timeoutContext = timeout_1.TimeoutContext.create({
222
- // TODO(NODE-6448): auto-connect ignores timeoutMS; potential future feature
223
- timeoutMS: undefined,
224
- serverSelectionTimeoutMS,
225
- waitQueueTimeoutMS: this.client.s.options.waitQueueTimeoutMS
226
- });
227
- const selectServerOptions = {
228
- operationName: 'ping',
229
- ...options,
230
- timeoutContext
231
- };
232
-
233
- try {
234
- const server = await this.selectServer((0, server_selection_1.readPreferenceServerSelector)(readPreference), selectServerOptions);
235
- const skipPingOnConnect = this.s.options.__skipPingOnConnect === true;
236
-
237
- if (!skipPingOnConnect && this.s.credentials) {
238
- await server.command((0, utils_1.ns)('admin.$cmd'), {
239
- ping: 1
240
- }, {
241
- timeoutContext
242
- });
243
- stateTransition(this, common_1.STATE_CONNECTED);
244
- this.emit(Topology.OPEN, this);
245
- this.emit(Topology.CONNECT, this);
246
- return this;
247
- }
248
-
249
- stateTransition(this, common_1.STATE_CONNECTED);
250
- this.emit(Topology.OPEN, this);
251
- this.emit(Topology.CONNECT, this);
252
- return this;
253
- } catch (error) {
254
- this.close();
255
- throw error;
256
- }
257
- }
258
-
259
- closeCheckedOutConnections() {
260
- for (const server of this.s.servers.values()) {
261
- return server.closeCheckedOutConnections();
262
- }
263
- }
264
- /** Close this topology */
265
-
266
-
267
- close() {
268
- if (this.s.state === common_1.STATE_CLOSED || this.s.state === common_1.STATE_CLOSING) {
269
- return;
270
- }
271
-
272
- for (const server of this.s.servers.values()) {
273
- closeServer(server, this);
274
- }
275
-
276
- this.s.servers.clear();
277
- stateTransition(this, common_1.STATE_CLOSING);
278
- drainWaitQueue(this.waitQueue, new error_1.MongoTopologyClosedError());
279
-
280
- if (this.s.srvPoller) {
281
- this.s.srvPoller.stop();
282
- this.s.srvPoller.removeListener(srv_polling_1.SrvPoller.SRV_RECORD_DISCOVERY, this.s.detectSrvRecords);
283
- }
284
-
285
- this.removeListener(Topology.TOPOLOGY_DESCRIPTION_CHANGED, this.s.detectShardedTopology);
286
- stateTransition(this, common_1.STATE_CLOSED); // emit an event for close
287
-
288
- this.emitAndLog(Topology.TOPOLOGY_CLOSED, new events_1.TopologyClosedEvent(this.s.id));
289
- }
290
- /**
291
- * Selects a server according to the selection predicate provided
292
- *
293
- * @param selector - An optional selector to select servers by, defaults to a random selection within a latency window
294
- * @param options - Optional settings related to server selection
295
- * @param callback - The callback used to indicate success or failure
296
- * @returns An instance of a `Server` meeting the criteria of the predicate provided
297
- */
298
-
299
-
300
- async selectServer(selector, options) {
301
- let serverSelector;
302
-
303
- if (typeof selector !== 'function') {
304
- if (typeof selector === 'string') {
305
- serverSelector = (0, server_selection_1.readPreferenceServerSelector)(read_preference_1.ReadPreference.fromString(selector));
306
- } else {
307
- let readPreference;
308
-
309
- if (selector instanceof read_preference_1.ReadPreference) {
310
- readPreference = selector;
311
- } else {
312
- read_preference_1.ReadPreference.translate(options);
313
- readPreference = options.readPreference || read_preference_1.ReadPreference.primary;
314
- }
315
-
316
- serverSelector = (0, server_selection_1.readPreferenceServerSelector)(readPreference);
317
- }
318
- } else {
319
- serverSelector = selector;
320
- }
321
-
322
- options = {
323
- serverSelectionTimeoutMS: this.s.serverSelectionTimeoutMS,
324
- ...options
325
- };
326
-
327
- if (this.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
328
- this.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionStartedEvent(selector, this.description, options.operationName));
329
- }
330
-
331
- let timeout;
332
- if (options.timeoutContext) timeout = options.timeoutContext.serverSelectionTimeout;else {
333
- timeout = timeout_1.Timeout.expires(options.serverSelectionTimeoutMS ?? 0);
334
- }
335
- const isSharded = this.description.type === common_1.TopologyType.Sharded;
336
- const session = options.session;
337
- const transaction = session && session.transaction;
338
-
339
- if (isSharded && transaction && transaction.server) {
340
- if (this.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
341
- this.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionSucceededEvent(selector, this.description, transaction.server.pool.address, options.operationName));
342
- }
343
-
344
- if (options.timeoutContext?.clearServerSelectionTimeout) timeout?.clear();
345
- return transaction.server;
346
- }
347
-
348
- const {
349
- promise: serverPromise,
350
- resolve,
351
- reject
352
- } = (0, utils_1.promiseWithResolvers)();
353
- const waitQueueMember = {
354
- serverSelector,
355
- topologyDescription: this.description,
356
- mongoLogger: this.client.mongoLogger,
357
- transaction,
358
- resolve,
359
- reject,
360
- cancelled: false,
361
- startTime: (0, utils_1.now)(),
362
- operationName: options.operationName,
363
- waitingLogged: false,
364
- previousServer: options.previousServer
365
- };
366
- const abortListener = (0, utils_1.addAbortListener)(options.signal, function () {
367
- waitQueueMember.cancelled = true;
368
- reject(this.reason);
369
- });
370
- this.waitQueue.push(waitQueueMember);
371
- processWaitQueue(this);
372
-
373
- try {
374
- timeout?.throwIfExpired();
375
- const server = await (timeout ? Promise.race([serverPromise, timeout]) : serverPromise);
376
-
377
- if (options.timeoutContext?.csotEnabled() && server.description.minRoundTripTime !== 0) {
378
- options.timeoutContext.minRoundTripTime = server.description.minRoundTripTime;
379
- }
380
-
381
- return server;
382
- } catch (error) {
383
- if (timeout_1.TimeoutError.is(error)) {
384
- // Timeout
385
- waitQueueMember.cancelled = true;
386
- const timeoutError = new error_1.MongoServerSelectionError(`Server selection timed out after ${timeout?.duration} ms`, this.description);
387
-
388
- if (this.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
389
- this.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(selector, this.description, timeoutError, options.operationName));
390
- }
391
-
392
- if (options.timeoutContext?.csotEnabled()) {
393
- throw new error_1.MongoOperationTimeoutError('Timed out during server selection', {
394
- cause: timeoutError
395
- });
396
- }
397
-
398
- throw timeoutError;
399
- } // Other server selection error
400
-
401
-
402
- throw error;
403
- } finally {
404
- abortListener?.[utils_1.kDispose]();
405
- if (options.timeoutContext?.clearServerSelectionTimeout) timeout?.clear();
406
- }
407
- }
408
- /**
409
- * Update the internal TopologyDescription with a ServerDescription
410
- *
411
- * @param serverDescription - The server to update in the internal list of server descriptions
412
- */
413
-
414
-
415
- serverUpdateHandler(serverDescription) {
416
- if (!this.s.description.hasServer(serverDescription.address)) {
417
- return;
418
- } // ignore this server update if its from an outdated topologyVersion
419
-
420
-
421
- if (isStaleServerDescription(this.s.description, serverDescription)) {
422
- return;
423
- } // these will be used for monitoring events later
424
-
425
-
426
- const previousTopologyDescription = this.s.description;
427
- const previousServerDescription = this.s.description.servers.get(serverDescription.address);
428
-
429
- if (!previousServerDescription) {
430
- return;
431
- } // Driver Sessions Spec: "Whenever a driver receives a cluster time from
432
- // a server it MUST compare it to the current highest seen cluster time
433
- // for the deployment. If the new cluster time is higher than the
434
- // highest seen cluster time it MUST become the new highest seen cluster
435
- // time. Two cluster times are compared using only the BsonTimestamp
436
- // value of the clusterTime embedded field."
437
-
438
-
439
- const clusterTime = serverDescription.$clusterTime;
440
-
441
- if (clusterTime) {
442
- (0, common_1._advanceClusterTime)(this, clusterTime);
443
- } // If we already know all the information contained in this updated description, then
444
- // we don't need to emit SDAM events, but still need to update the description, in order
445
- // to keep client-tracked attributes like last update time and round trip time up to date
446
-
447
-
448
- const equalDescriptions = previousServerDescription && previousServerDescription.equals(serverDescription); // first update the TopologyDescription
449
-
450
- this.s.description = this.s.description.update(serverDescription);
451
-
452
- if (this.s.description.compatibilityError) {
453
- this.emit(Topology.ERROR, new error_1.MongoCompatibilityError(this.s.description.compatibilityError));
454
- return;
455
- } // emit monitoring events for this change
456
-
457
-
458
- if (!equalDescriptions) {
459
- const newDescription = this.s.description.servers.get(serverDescription.address);
460
-
461
- if (newDescription) {
462
- this.emit(Topology.SERVER_DESCRIPTION_CHANGED, new events_1.ServerDescriptionChangedEvent(this.s.id, serverDescription.address, previousServerDescription, newDescription));
463
- }
464
- } // update server list from updated descriptions
465
-
466
-
467
- updateServers(this, serverDescription); // attempt to resolve any outstanding server selection attempts
468
-
469
- if (this.waitQueue.length > 0) {
470
- processWaitQueue(this);
471
- }
472
-
473
- if (!equalDescriptions) {
474
- this.emitAndLog(Topology.TOPOLOGY_DESCRIPTION_CHANGED, new events_1.TopologyDescriptionChangedEvent(this.s.id, previousTopologyDescription, this.s.description));
475
- }
476
- }
477
-
478
- auth(credentials, callback) {
479
- if (typeof credentials === 'function') callback = credentials, credentials = undefined;
480
- if (typeof callback === 'function') callback(undefined, true);
481
- }
482
-
483
- get clientMetadata() {
484
- return this.s.options.metadata;
485
- }
486
-
487
- isConnected() {
488
- return this.s.state === common_1.STATE_CONNECTED;
489
- }
490
-
491
- isDestroyed() {
492
- return this.s.state === common_1.STATE_CLOSED;
493
- } // NOTE: There are many places in code where we explicitly check the last hello
494
- // to do feature support detection. This should be done any other way, but for
495
- // now we will just return the first hello seen, which should suffice.
496
-
497
-
498
- lastHello() {
499
- const serverDescriptions = Array.from(this.description.servers.values());
500
- if (serverDescriptions.length === 0) return {};
501
- const sd = serverDescriptions.filter(sd => sd.type !== common_1.ServerType.Unknown)[0];
502
- const result = sd || {
503
- maxWireVersion: this.description.commonWireVersion
504
- };
505
- return result;
506
- }
507
-
508
- get commonWireVersion() {
509
- return this.description.commonWireVersion;
510
- }
511
-
512
- get logicalSessionTimeoutMinutes() {
513
- return this.description.logicalSessionTimeoutMinutes;
514
- }
515
-
516
- get clusterTime() {
517
- return this.s.clusterTime;
518
- }
519
-
520
- set clusterTime(clusterTime) {
521
- this.s.clusterTime = clusterTime;
522
- }
523
-
524
- }
525
-
526
- exports.Topology = Topology;
527
- /** @event */
528
-
529
- Topology.SERVER_OPENING = constants_1.SERVER_OPENING;
530
- /** @event */
531
-
532
- Topology.SERVER_CLOSED = constants_1.SERVER_CLOSED;
533
- /** @event */
534
-
535
- Topology.SERVER_DESCRIPTION_CHANGED = constants_1.SERVER_DESCRIPTION_CHANGED;
536
- /** @event */
537
-
538
- Topology.TOPOLOGY_OPENING = constants_1.TOPOLOGY_OPENING;
539
- /** @event */
540
-
541
- Topology.TOPOLOGY_CLOSED = constants_1.TOPOLOGY_CLOSED;
542
- /** @event */
543
-
544
- Topology.TOPOLOGY_DESCRIPTION_CHANGED = constants_1.TOPOLOGY_DESCRIPTION_CHANGED;
545
- /** @event */
546
-
547
- Topology.ERROR = constants_1.ERROR;
548
- /** @event */
549
-
550
- Topology.OPEN = constants_1.OPEN;
551
- /** @event */
552
-
553
- Topology.CONNECT = constants_1.CONNECT;
554
- /** @event */
555
-
556
- Topology.CLOSE = constants_1.CLOSE;
557
- /** @event */
558
-
559
- Topology.TIMEOUT = constants_1.TIMEOUT;
560
- /** Destroys a server, and removes all event listeners from the instance */
561
-
562
- function closeServer(server, topology) {
563
- for (const event of constants_1.LOCAL_SERVER_EVENTS) {
564
- server.removeAllListeners(event);
565
- }
566
-
567
- server.close();
568
- topology.emitAndLog(Topology.SERVER_CLOSED, new events_1.ServerClosedEvent(topology.s.id, server.description.address));
569
-
570
- for (const event of constants_1.SERVER_RELAY_EVENTS) {
571
- server.removeAllListeners(event);
572
- }
573
- }
574
- /** Predicts the TopologyType from options */
575
-
576
-
577
- function topologyTypeFromOptions(options) {
578
- if (options?.directConnection) {
579
- return common_1.TopologyType.Single;
580
- }
581
-
582
- if (options?.replicaSet) {
583
- return common_1.TopologyType.ReplicaSetNoPrimary;
584
- }
585
-
586
- if (options?.loadBalanced) {
587
- return common_1.TopologyType.LoadBalanced;
588
- }
589
-
590
- return common_1.TopologyType.Unknown;
591
- }
592
- /**
593
- * Creates new server instances and attempts to connect them
594
- *
595
- * @param topology - The topology that this server belongs to
596
- * @param serverDescription - The description for the server to initialize and connect to
597
- */
598
-
599
-
600
- function createAndConnectServer(topology, serverDescription) {
601
- topology.emitAndLog(Topology.SERVER_OPENING, new events_1.ServerOpeningEvent(topology.s.id, serverDescription.address));
602
- const server = new server_1.Server(topology, serverDescription, topology.s.options);
603
-
604
- for (const event of constants_1.SERVER_RELAY_EVENTS) {
605
- server.on(event, e => topology.emit(event, e));
606
- }
607
-
608
- server.on(server_1.Server.DESCRIPTION_RECEIVED, description => topology.serverUpdateHandler(description));
609
- server.connect();
610
- return server;
611
- }
612
- /**
613
- * @param topology - Topology to update.
614
- * @param incomingServerDescription - New server description.
615
- */
616
-
617
-
618
- function updateServers(topology, incomingServerDescription) {
619
- // update the internal server's description
620
- if (incomingServerDescription && topology.s.servers.has(incomingServerDescription.address)) {
621
- const server = topology.s.servers.get(incomingServerDescription.address);
622
-
623
- if (server) {
624
- server.s.description = incomingServerDescription;
625
-
626
- if (incomingServerDescription.error instanceof error_1.MongoError && incomingServerDescription.error.hasErrorLabel(error_1.MongoErrorLabel.ResetPool)) {
627
- const interruptInUseConnections = incomingServerDescription.error.hasErrorLabel(error_1.MongoErrorLabel.InterruptInUseConnections);
628
- server.pool.clear({
629
- interruptInUseConnections
630
- });
631
- } else if (incomingServerDescription.error == null) {
632
- const newTopologyType = topology.s.description.type;
633
- const shouldMarkPoolReady = incomingServerDescription.isDataBearing || incomingServerDescription.type !== common_1.ServerType.Unknown && newTopologyType === common_1.TopologyType.Single;
634
-
635
- if (shouldMarkPoolReady) {
636
- server.pool.ready();
637
- }
638
- }
639
- }
640
- } // add new servers for all descriptions we currently don't know about locally
641
-
642
-
643
- for (const serverDescription of topology.description.servers.values()) {
644
- if (!topology.s.servers.has(serverDescription.address)) {
645
- const server = createAndConnectServer(topology, serverDescription);
646
- topology.s.servers.set(serverDescription.address, server);
647
- }
648
- } // for all servers no longer known, remove their descriptions and destroy their instances
649
-
650
-
651
- for (const entry of topology.s.servers) {
652
- const serverAddress = entry[0];
653
-
654
- if (topology.description.hasServer(serverAddress)) {
655
- continue;
656
- }
657
-
658
- if (!topology.s.servers.has(serverAddress)) {
659
- continue;
660
- }
661
-
662
- const server = topology.s.servers.get(serverAddress);
663
- topology.s.servers.delete(serverAddress); // prepare server for garbage collection
664
-
665
- if (server) {
666
- closeServer(server, topology);
667
- }
668
- }
669
- }
670
-
671
- function drainWaitQueue(queue, drainError) {
672
- while (queue.length) {
673
- const waitQueueMember = queue.shift();
674
-
675
- if (!waitQueueMember) {
676
- continue;
677
- }
678
-
679
- if (!waitQueueMember.cancelled) {
680
- if (waitQueueMember.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
681
- waitQueueMember.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(waitQueueMember.serverSelector, waitQueueMember.topologyDescription, drainError, waitQueueMember.operationName));
682
- }
683
-
684
- waitQueueMember.reject(drainError);
685
- }
686
- }
687
- }
688
-
689
- function processWaitQueue(topology) {
690
- if (topology.s.state === common_1.STATE_CLOSED) {
691
- drainWaitQueue(topology.waitQueue, new error_1.MongoTopologyClosedError());
692
- return;
693
- }
694
-
695
- const isSharded = topology.description.type === common_1.TopologyType.Sharded;
696
- const serverDescriptions = Array.from(topology.description.servers.values());
697
- const membersToProcess = topology.waitQueue.length;
698
-
699
- for (let i = 0; i < membersToProcess; ++i) {
700
- const waitQueueMember = topology.waitQueue.shift();
701
-
702
- if (!waitQueueMember) {
703
- continue;
704
- }
705
-
706
- if (waitQueueMember.cancelled) {
707
- continue;
708
- }
709
-
710
- let selectedDescriptions;
711
-
712
- try {
713
- const serverSelector = waitQueueMember.serverSelector;
714
- const previousServer = waitQueueMember.previousServer;
715
- selectedDescriptions = serverSelector ? serverSelector(topology.description, serverDescriptions, previousServer ? [previousServer] : []) : serverDescriptions;
716
- } catch (selectorError) {
717
- if (topology.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
718
- topology.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(waitQueueMember.serverSelector, topology.description, selectorError, waitQueueMember.operationName));
719
- }
720
-
721
- waitQueueMember.reject(selectorError);
722
- continue;
723
- }
724
-
725
- let selectedServer;
726
-
727
- if (selectedDescriptions.length === 0) {
728
- if (!waitQueueMember.waitingLogged) {
729
- if (topology.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.INFORMATIONAL)) {
730
- topology.client.mongoLogger?.info(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.WaitingForSuitableServerEvent(waitQueueMember.serverSelector, topology.description, topology.s.serverSelectionTimeoutMS !== 0 ? topology.s.serverSelectionTimeoutMS - ((0, utils_1.now)() - waitQueueMember.startTime) : -1, waitQueueMember.operationName));
731
- }
732
-
733
- waitQueueMember.waitingLogged = true;
734
- }
735
-
736
- topology.waitQueue.push(waitQueueMember);
737
- continue;
738
- } else if (selectedDescriptions.length === 1) {
739
- selectedServer = topology.s.servers.get(selectedDescriptions[0].address);
740
- } else {
741
- const descriptions = (0, utils_1.shuffle)(selectedDescriptions, 2);
742
- const server1 = topology.s.servers.get(descriptions[0].address);
743
- const server2 = topology.s.servers.get(descriptions[1].address);
744
- selectedServer = server1 && server2 && server1.s.operationCount < server2.s.operationCount ? server1 : server2;
745
- }
746
-
747
- if (!selectedServer) {
748
- const serverSelectionError = new error_1.MongoServerSelectionError('server selection returned a server description but the server was not found in the topology', topology.description);
749
-
750
- if (topology.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
751
- topology.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionFailedEvent(waitQueueMember.serverSelector, topology.description, serverSelectionError, waitQueueMember.operationName));
752
- }
753
-
754
- waitQueueMember.reject(serverSelectionError);
755
- return;
756
- }
757
-
758
- const transaction = waitQueueMember.transaction;
759
-
760
- if (isSharded && transaction && transaction.isActive && selectedServer) {
761
- transaction.pinServer(selectedServer);
762
- }
763
-
764
- if (topology.client.mongoLogger?.willLog(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, mongo_logger_1.SeverityLevel.DEBUG)) {
765
- topology.client.mongoLogger?.debug(mongo_logger_1.MongoLoggableComponent.SERVER_SELECTION, new server_selection_events_1.ServerSelectionSucceededEvent(waitQueueMember.serverSelector, waitQueueMember.topologyDescription, selectedServer.pool.address, waitQueueMember.operationName));
766
- }
767
-
768
- waitQueueMember.resolve(selectedServer);
769
- }
770
-
771
- if (topology.waitQueue.length > 0) {
772
- // ensure all server monitors attempt monitoring soon
773
- for (const [, server] of topology.s.servers) {
774
- process.nextTick(function scheduleServerCheck() {
775
- return server.requestCheck();
776
- });
777
- }
778
- }
779
- }
780
-
781
- function isStaleServerDescription(topologyDescription, incomingServerDescription) {
782
- const currentServerDescription = topologyDescription.servers.get(incomingServerDescription.address);
783
- const currentTopologyVersion = currentServerDescription?.topologyVersion;
784
- return (0, server_description_1.compareTopologyVersion)(currentTopologyVersion, incomingServerDescription.topologyVersion) > 0;
785
- }
786
- /** @public */
787
-
788
-
789
- class ServerCapabilities {
790
- constructor(hello) {
791
- this.minWireVersion = hello.minWireVersion || 0;
792
- this.maxWireVersion = hello.maxWireVersion || 0;
793
- }
794
-
795
- get hasAggregationCursor() {
796
- return this.maxWireVersion >= 1;
797
- }
798
-
799
- get hasWriteCommands() {
800
- return this.maxWireVersion >= 2;
801
- }
802
-
803
- get hasTextSearch() {
804
- return this.minWireVersion >= 0;
805
- }
806
-
807
- get hasAuthCommands() {
808
- return this.maxWireVersion >= 1;
809
- }
810
-
811
- get hasListCollectionsCommand() {
812
- return this.maxWireVersion >= 3;
813
- }
814
-
815
- get hasListIndexesCommand() {
816
- return this.maxWireVersion >= 3;
817
- }
818
-
819
- get supportsSnapshotReads() {
820
- return this.maxWireVersion >= 13;
821
- }
822
-
823
- get commandsTakeWriteConcern() {
824
- return this.maxWireVersion >= 5;
825
- }
826
-
827
- get commandsTakeCollation() {
828
- return this.maxWireVersion >= 5;
829
- }
830
-
831
- }
832
-
833
- exports.ServerCapabilities = ServerCapabilities;