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,688 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ConnectionPool = exports.PoolState = void 0;
7
-
8
- const timers_1 = require("timers");
9
-
10
- const constants_1 = require("../constants");
11
-
12
- const error_1 = require("../error");
13
-
14
- const mongo_types_1 = require("../mongo_types");
15
-
16
- const timeout_1 = require("../timeout");
17
-
18
- const utils_1 = require("../utils");
19
-
20
- const connect_1 = require("./connect");
21
-
22
- const connection_1 = require("./connection");
23
-
24
- const connection_pool_events_1 = require("./connection_pool_events");
25
-
26
- const errors_1 = require("./errors");
27
-
28
- const metrics_1 = require("./metrics");
29
- /** @internal */
30
-
31
-
32
- exports.PoolState = Object.freeze({
33
- paused: 'paused',
34
- ready: 'ready',
35
- closed: 'closed'
36
- });
37
- /**
38
- * A pool of connections which dynamically resizes, and emit events related to pool activity
39
- * @internal
40
- */
41
-
42
- class ConnectionPool extends mongo_types_1.TypedEventEmitter {
43
- constructor(server, options) {
44
- super();
45
- this.on('error', utils_1.noop);
46
- this.options = Object.freeze({
47
- connectionType: connection_1.Connection,
48
- ...options,
49
- maxPoolSize: options.maxPoolSize ?? 100,
50
- minPoolSize: options.minPoolSize ?? 0,
51
- maxConnecting: options.maxConnecting ?? 2,
52
- maxIdleTimeMS: options.maxIdleTimeMS ?? 0,
53
- waitQueueTimeoutMS: options.waitQueueTimeoutMS ?? 0,
54
- minPoolSizeCheckFrequencyMS: options.minPoolSizeCheckFrequencyMS ?? 100,
55
- autoEncrypter: options.autoEncrypter
56
- });
57
-
58
- if (this.options.minPoolSize > this.options.maxPoolSize) {
59
- throw new error_1.MongoInvalidArgumentError('Connection pool minimum size must not be greater than maximum pool size');
60
- }
61
-
62
- this.poolState = exports.PoolState.paused;
63
- this.server = server;
64
- this.connections = new utils_1.List();
65
- this.pending = 0;
66
- this.checkedOut = new Set();
67
- this.minPoolSizeTimer = undefined;
68
- this.generation = 0;
69
- this.serviceGenerations = new Map();
70
- this.connectionCounter = (0, utils_1.makeCounter)(1);
71
- this.cancellationToken = new mongo_types_1.CancellationToken();
72
- this.cancellationToken.setMaxListeners(Infinity);
73
- this.waitQueue = new utils_1.List();
74
- this.metrics = new metrics_1.ConnectionPoolMetrics();
75
- this.processingWaitQueue = false;
76
- this.mongoLogger = this.server.topology.client?.mongoLogger;
77
- this.component = 'connection';
78
- process.nextTick(() => {
79
- this.emitAndLog(ConnectionPool.CONNECTION_POOL_CREATED, new connection_pool_events_1.ConnectionPoolCreatedEvent(this));
80
- });
81
- }
82
- /** The address of the endpoint the pool is connected to */
83
-
84
-
85
- get address() {
86
- return this.options.hostAddress.toString();
87
- }
88
- /**
89
- * Check if the pool has been closed
90
- *
91
- * TODO(NODE-3263): We can remove this property once shell no longer needs it
92
- */
93
-
94
-
95
- get closed() {
96
- return this.poolState === exports.PoolState.closed;
97
- }
98
- /** An integer expressing how many total connections (available + pending + in use) the pool currently has */
99
-
100
-
101
- get totalConnectionCount() {
102
- return this.availableConnectionCount + this.pendingConnectionCount + this.currentCheckedOutCount;
103
- }
104
- /** An integer expressing how many connections are currently available in the pool. */
105
-
106
-
107
- get availableConnectionCount() {
108
- return this.connections.length;
109
- }
110
-
111
- get pendingConnectionCount() {
112
- return this.pending;
113
- }
114
-
115
- get currentCheckedOutCount() {
116
- return this.checkedOut.size;
117
- }
118
-
119
- get waitQueueSize() {
120
- return this.waitQueue.length;
121
- }
122
-
123
- get loadBalanced() {
124
- return this.options.loadBalanced;
125
- }
126
-
127
- get serverError() {
128
- return this.server.description.error;
129
- }
130
- /**
131
- * This is exposed ONLY for use in mongosh, to enable
132
- * killing all connections if a user quits the shell with
133
- * operations in progress.
134
- *
135
- * This property may be removed as a part of NODE-3263.
136
- */
137
-
138
-
139
- get checkedOutConnections() {
140
- return this.checkedOut;
141
- }
142
- /**
143
- * Get the metrics information for the pool when a wait queue timeout occurs.
144
- */
145
-
146
-
147
- waitQueueErrorMetrics() {
148
- return this.metrics.info(this.options.maxPoolSize);
149
- }
150
- /**
151
- * Set the pool state to "ready"
152
- */
153
-
154
-
155
- ready() {
156
- if (this.poolState !== exports.PoolState.paused) {
157
- return;
158
- }
159
-
160
- this.poolState = exports.PoolState.ready;
161
- this.emitAndLog(ConnectionPool.CONNECTION_POOL_READY, new connection_pool_events_1.ConnectionPoolReadyEvent(this));
162
- (0, timers_1.clearTimeout)(this.minPoolSizeTimer);
163
- this.ensureMinPoolSize();
164
- }
165
- /**
166
- * Check a connection out of this pool. The connection will continue to be tracked, but no reference to it
167
- * will be held by the pool. This means that if a connection is checked out it MUST be checked back in or
168
- * explicitly destroyed by the new owner.
169
- */
170
-
171
-
172
- async checkOut(options) {
173
- const checkoutTime = (0, utils_1.now)();
174
- this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_STARTED, new connection_pool_events_1.ConnectionCheckOutStartedEvent(this));
175
- const {
176
- promise,
177
- resolve,
178
- reject
179
- } = (0, utils_1.promiseWithResolvers)();
180
- const timeout = options.timeoutContext.connectionCheckoutTimeout;
181
- const waitQueueMember = {
182
- resolve,
183
- reject,
184
- cancelled: false,
185
- checkoutTime
186
- };
187
- const abortListener = (0, utils_1.addAbortListener)(options.signal, function () {
188
- waitQueueMember.cancelled = true;
189
- reject(this.reason);
190
- });
191
- this.waitQueue.push(waitQueueMember);
192
- process.nextTick(() => this.processWaitQueue());
193
-
194
- try {
195
- timeout?.throwIfExpired();
196
- return await (timeout ? Promise.race([promise, timeout]) : promise);
197
- } catch (error) {
198
- if (timeout_1.TimeoutError.is(error)) {
199
- timeout?.clear();
200
- waitQueueMember.cancelled = true;
201
- this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, 'timeout', waitQueueMember.checkoutTime));
202
- const timeoutError = new errors_1.WaitQueueTimeoutError(this.loadBalanced ? this.waitQueueErrorMetrics() : 'Timed out while checking out a connection from connection pool', this.address);
203
-
204
- if (options.timeoutContext.csotEnabled()) {
205
- throw new error_1.MongoOperationTimeoutError('Timed out during connection checkout', {
206
- cause: timeoutError
207
- });
208
- }
209
-
210
- throw timeoutError;
211
- }
212
-
213
- throw error;
214
- } finally {
215
- abortListener?.[utils_1.kDispose]();
216
- timeout?.clear();
217
- }
218
- }
219
- /**
220
- * Check a connection into the pool.
221
- *
222
- * @param connection - The connection to check in
223
- */
224
-
225
-
226
- checkIn(connection) {
227
- if (!this.checkedOut.has(connection)) {
228
- return;
229
- }
230
-
231
- const poolClosed = this.closed;
232
- const stale = this.connectionIsStale(connection);
233
- const willDestroy = !!(poolClosed || stale || connection.closed);
234
-
235
- if (!willDestroy) {
236
- connection.markAvailable();
237
- this.connections.unshift(connection);
238
- }
239
-
240
- this.checkedOut.delete(connection);
241
- this.emitAndLog(ConnectionPool.CONNECTION_CHECKED_IN, new connection_pool_events_1.ConnectionCheckedInEvent(this, connection));
242
-
243
- if (willDestroy) {
244
- const reason = connection.closed ? 'error' : poolClosed ? 'poolClosed' : 'stale';
245
- this.destroyConnection(connection, reason);
246
- }
247
-
248
- process.nextTick(() => this.processWaitQueue());
249
- }
250
- /**
251
- * Clear the pool
252
- *
253
- * Pool reset is handled by incrementing the pool's generation count. Any existing connection of a
254
- * previous generation will eventually be pruned during subsequent checkouts.
255
- */
256
-
257
-
258
- clear(options = {}) {
259
- if (this.closed) {
260
- return;
261
- } // handle load balanced case
262
-
263
-
264
- if (this.loadBalanced) {
265
- const {
266
- serviceId
267
- } = options;
268
-
269
- if (!serviceId) {
270
- throw new error_1.MongoRuntimeError('ConnectionPool.clear() called in load balanced mode with no serviceId.');
271
- }
272
-
273
- const sid = serviceId.toHexString();
274
- const generation = this.serviceGenerations.get(sid); // Only need to worry if the generation exists, since it should
275
- // always be there but typescript needs the check.
276
-
277
- if (generation == null) {
278
- throw new error_1.MongoRuntimeError('Service generations are required in load balancer mode.');
279
- } else {
280
- // Increment the generation for the service id.
281
- this.serviceGenerations.set(sid, generation + 1);
282
- }
283
-
284
- this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLEARED, new connection_pool_events_1.ConnectionPoolClearedEvent(this, {
285
- serviceId
286
- }));
287
- return;
288
- } // handle non load-balanced case
289
-
290
-
291
- const interruptInUseConnections = options.interruptInUseConnections ?? false;
292
- const oldGeneration = this.generation;
293
- this.generation += 1;
294
- const alreadyPaused = this.poolState === exports.PoolState.paused;
295
- this.poolState = exports.PoolState.paused;
296
- this.clearMinPoolSizeTimer();
297
-
298
- if (!alreadyPaused) {
299
- this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLEARED, new connection_pool_events_1.ConnectionPoolClearedEvent(this, {
300
- interruptInUseConnections
301
- }));
302
- }
303
-
304
- if (interruptInUseConnections) {
305
- process.nextTick(() => this.interruptInUseConnections(oldGeneration));
306
- }
307
-
308
- this.processWaitQueue();
309
- }
310
- /**
311
- * Closes all stale in-use connections in the pool with a resumable PoolClearedOnNetworkError.
312
- *
313
- * Only connections where `connection.generation <= minGeneration` are killed.
314
- */
315
-
316
-
317
- interruptInUseConnections(minGeneration) {
318
- for (const connection of this.checkedOut) {
319
- if (connection.generation <= minGeneration) {
320
- connection.onError(new errors_1.PoolClearedOnNetworkError(this));
321
- }
322
- }
323
- }
324
- /** For MongoClient.close() procedures */
325
-
326
-
327
- closeCheckedOutConnections() {
328
- for (const conn of this.checkedOut) {
329
- conn.onError(new error_1.MongoClientClosedError());
330
- }
331
- }
332
- /** Close the pool */
333
-
334
-
335
- close() {
336
- if (this.closed) {
337
- return;
338
- } // immediately cancel any in-flight connections
339
-
340
-
341
- this.cancellationToken.emit('cancel'); // end the connection counter
342
-
343
- if (typeof this.connectionCounter.return === 'function') {
344
- this.connectionCounter.return(undefined);
345
- }
346
-
347
- this.poolState = exports.PoolState.closed;
348
- this.clearMinPoolSizeTimer();
349
- this.processWaitQueue();
350
-
351
- for (const conn of this.connections) {
352
- this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, conn, 'poolClosed'));
353
- conn.destroy();
354
- }
355
-
356
- this.connections.clear();
357
- this.emitAndLog(ConnectionPool.CONNECTION_POOL_CLOSED, new connection_pool_events_1.ConnectionPoolClosedEvent(this));
358
- }
359
- /**
360
- * @internal
361
- * Reauthenticate a connection
362
- */
363
-
364
-
365
- async reauthenticate(connection) {
366
- const authContext = connection.authContext;
367
-
368
- if (!authContext) {
369
- throw new error_1.MongoRuntimeError('No auth context found on connection.');
370
- }
371
-
372
- const credentials = authContext.credentials;
373
-
374
- if (!credentials) {
375
- throw new error_1.MongoMissingCredentialsError('Connection is missing credentials when asked to reauthenticate');
376
- }
377
-
378
- const resolvedCredentials = credentials.resolveAuthMechanism(connection.hello);
379
- const provider = this.server.topology.client.s.authProviders.getOrCreateProvider(resolvedCredentials.mechanism, resolvedCredentials.mechanismProperties);
380
-
381
- if (!provider) {
382
- throw new error_1.MongoMissingCredentialsError(`Reauthenticate failed due to no auth provider for ${credentials.mechanism}`);
383
- }
384
-
385
- await provider.reauth(authContext);
386
- return;
387
- }
388
- /** Clear the min pool size timer */
389
-
390
-
391
- clearMinPoolSizeTimer() {
392
- const minPoolSizeTimer = this.minPoolSizeTimer;
393
-
394
- if (minPoolSizeTimer) {
395
- (0, timers_1.clearTimeout)(minPoolSizeTimer);
396
- }
397
- }
398
-
399
- destroyConnection(connection, reason) {
400
- this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, connection, reason)); // destroy the connection
401
-
402
- connection.destroy();
403
- }
404
-
405
- connectionIsStale(connection) {
406
- const serviceId = connection.serviceId;
407
-
408
- if (this.loadBalanced && serviceId) {
409
- const sid = serviceId.toHexString();
410
- const generation = this.serviceGenerations.get(sid);
411
- return connection.generation !== generation;
412
- }
413
-
414
- return connection.generation !== this.generation;
415
- }
416
-
417
- connectionIsIdle(connection) {
418
- return !!(this.options.maxIdleTimeMS && connection.idleTime > this.options.maxIdleTimeMS);
419
- }
420
- /**
421
- * Destroys a connection if the connection is perished.
422
- *
423
- * @returns `true` if the connection was destroyed, `false` otherwise.
424
- */
425
-
426
-
427
- destroyConnectionIfPerished(connection) {
428
- const isStale = this.connectionIsStale(connection);
429
- const isIdle = this.connectionIsIdle(connection);
430
-
431
- if (!isStale && !isIdle && !connection.closed) {
432
- return false;
433
- }
434
-
435
- const reason = connection.closed ? 'error' : isStale ? 'stale' : 'idle';
436
- this.destroyConnection(connection, reason);
437
- return true;
438
- }
439
-
440
- createConnection(callback) {
441
- const connectOptions = { ...this.options,
442
- id: this.connectionCounter.next().value,
443
- generation: this.generation,
444
- cancellationToken: this.cancellationToken,
445
- mongoLogger: this.mongoLogger,
446
- authProviders: this.server.topology.client.s.authProviders
447
- };
448
- this.pending++; // This is our version of a "virtual" no-I/O connection as the spec requires
449
-
450
- const connectionCreatedTime = (0, utils_1.now)();
451
- this.emitAndLog(ConnectionPool.CONNECTION_CREATED, new connection_pool_events_1.ConnectionCreatedEvent(this, {
452
- id: connectOptions.id
453
- }));
454
- (0, connect_1.connect)(connectOptions).then(connection => {
455
- // The pool might have closed since we started trying to create a connection
456
- if (this.poolState !== exports.PoolState.ready) {
457
- this.pending--;
458
- connection.destroy();
459
- callback(this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this));
460
- return;
461
- } // forward all events from the connection to the pool
462
-
463
-
464
- for (const event of [...constants_1.APM_EVENTS, connection_1.Connection.CLUSTER_TIME_RECEIVED]) {
465
- connection.on(event, e => this.emit(event, e));
466
- }
467
-
468
- if (this.loadBalanced) {
469
- connection.on(connection_1.Connection.PINNED, pinType => this.metrics.markPinned(pinType));
470
- connection.on(connection_1.Connection.UNPINNED, pinType => this.metrics.markUnpinned(pinType));
471
- const serviceId = connection.serviceId;
472
-
473
- if (serviceId) {
474
- let generation;
475
- const sid = serviceId.toHexString();
476
-
477
- if (generation = this.serviceGenerations.get(sid)) {
478
- connection.generation = generation;
479
- } else {
480
- this.serviceGenerations.set(sid, 0);
481
- connection.generation = 0;
482
- }
483
- }
484
- }
485
-
486
- connection.markAvailable();
487
- this.emitAndLog(ConnectionPool.CONNECTION_READY, new connection_pool_events_1.ConnectionReadyEvent(this, connection, connectionCreatedTime));
488
- this.pending--;
489
- callback(undefined, connection);
490
- }, error => {
491
- this.pending--;
492
- this.server.handleError(error);
493
- this.emitAndLog(ConnectionPool.CONNECTION_CLOSED, new connection_pool_events_1.ConnectionClosedEvent(this, {
494
- id: connectOptions.id,
495
- serviceId: undefined
496
- }, 'error', // TODO(NODE-5192): Remove this cast
497
- error));
498
-
499
- if (error instanceof error_1.MongoNetworkError || error instanceof error_1.MongoServerError) {
500
- error.connectionGeneration = connectOptions.generation;
501
- }
502
-
503
- callback(error ?? new error_1.MongoRuntimeError('Connection creation failed without error'));
504
- });
505
- }
506
-
507
- ensureMinPoolSize() {
508
- const minPoolSize = this.options.minPoolSize;
509
-
510
- if (this.poolState !== exports.PoolState.ready || minPoolSize === 0) {
511
- return;
512
- }
513
-
514
- this.connections.prune(connection => this.destroyConnectionIfPerished(connection));
515
-
516
- if (this.totalConnectionCount < minPoolSize && this.pendingConnectionCount < this.options.maxConnecting) {
517
- // NOTE: ensureMinPoolSize should not try to get all the pending
518
- // connection permits because that potentially delays the availability of
519
- // the connection to a checkout request
520
- this.createConnection((err, connection) => {
521
- if (!err && connection) {
522
- this.connections.push(connection);
523
- process.nextTick(() => this.processWaitQueue());
524
- }
525
-
526
- if (this.poolState === exports.PoolState.ready) {
527
- (0, timers_1.clearTimeout)(this.minPoolSizeTimer);
528
- this.minPoolSizeTimer = (0, timers_1.setTimeout)(() => this.ensureMinPoolSize(), this.options.minPoolSizeCheckFrequencyMS);
529
- }
530
- });
531
- } else {
532
- (0, timers_1.clearTimeout)(this.minPoolSizeTimer);
533
- this.minPoolSizeTimer = (0, timers_1.setTimeout)(() => this.ensureMinPoolSize(), this.options.minPoolSizeCheckFrequencyMS);
534
- }
535
- }
536
-
537
- processWaitQueue() {
538
- if (this.processingWaitQueue) {
539
- return;
540
- }
541
-
542
- this.processingWaitQueue = true;
543
-
544
- while (this.waitQueueSize) {
545
- const waitQueueMember = this.waitQueue.first();
546
-
547
- if (!waitQueueMember) {
548
- this.waitQueue.shift();
549
- continue;
550
- }
551
-
552
- if (waitQueueMember.cancelled) {
553
- this.waitQueue.shift();
554
- continue;
555
- }
556
-
557
- if (this.poolState !== exports.PoolState.ready) {
558
- const reason = this.closed ? 'poolClosed' : 'connectionError';
559
- const error = this.closed ? new errors_1.PoolClosedError(this) : new errors_1.PoolClearedError(this);
560
- this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, reason, waitQueueMember.checkoutTime, error));
561
- this.waitQueue.shift();
562
- waitQueueMember.reject(error);
563
- continue;
564
- }
565
-
566
- if (!this.availableConnectionCount) {
567
- break;
568
- }
569
-
570
- const connection = this.connections.shift();
571
-
572
- if (!connection) {
573
- break;
574
- }
575
-
576
- if (!this.destroyConnectionIfPerished(connection)) {
577
- this.checkedOut.add(connection);
578
- this.emitAndLog(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(this, connection, waitQueueMember.checkoutTime));
579
- this.waitQueue.shift();
580
- waitQueueMember.resolve(connection);
581
- }
582
- }
583
-
584
- const {
585
- maxPoolSize,
586
- maxConnecting
587
- } = this.options;
588
-
589
- while (this.waitQueueSize > 0 && this.pendingConnectionCount < maxConnecting && (maxPoolSize === 0 || this.totalConnectionCount < maxPoolSize)) {
590
- const waitQueueMember = this.waitQueue.shift();
591
-
592
- if (!waitQueueMember || waitQueueMember.cancelled) {
593
- continue;
594
- }
595
-
596
- this.createConnection((err, connection) => {
597
- if (waitQueueMember.cancelled) {
598
- if (!err && connection) {
599
- this.connections.push(connection);
600
- }
601
- } else {
602
- if (err) {
603
- this.emitAndLog(ConnectionPool.CONNECTION_CHECK_OUT_FAILED, // TODO(NODE-5192): Remove this cast
604
- new connection_pool_events_1.ConnectionCheckOutFailedEvent(this, 'connectionError', waitQueueMember.checkoutTime, err));
605
- waitQueueMember.reject(err);
606
- } else if (connection) {
607
- this.checkedOut.add(connection);
608
- this.emitAndLog(ConnectionPool.CONNECTION_CHECKED_OUT, new connection_pool_events_1.ConnectionCheckedOutEvent(this, connection, waitQueueMember.checkoutTime));
609
- waitQueueMember.resolve(connection);
610
- }
611
- }
612
-
613
- process.nextTick(() => this.processWaitQueue());
614
- });
615
- }
616
-
617
- this.processingWaitQueue = false;
618
- }
619
-
620
- }
621
-
622
- exports.ConnectionPool = ConnectionPool;
623
- /**
624
- * Emitted when the connection pool is created.
625
- * @event
626
- */
627
-
628
- ConnectionPool.CONNECTION_POOL_CREATED = constants_1.CONNECTION_POOL_CREATED;
629
- /**
630
- * Emitted once when the connection pool is closed
631
- * @event
632
- */
633
-
634
- ConnectionPool.CONNECTION_POOL_CLOSED = constants_1.CONNECTION_POOL_CLOSED;
635
- /**
636
- * Emitted each time the connection pool is cleared and it's generation incremented
637
- * @event
638
- */
639
-
640
- ConnectionPool.CONNECTION_POOL_CLEARED = constants_1.CONNECTION_POOL_CLEARED;
641
- /**
642
- * Emitted each time the connection pool is marked ready
643
- * @event
644
- */
645
-
646
- ConnectionPool.CONNECTION_POOL_READY = constants_1.CONNECTION_POOL_READY;
647
- /**
648
- * Emitted when a connection is created.
649
- * @event
650
- */
651
-
652
- ConnectionPool.CONNECTION_CREATED = constants_1.CONNECTION_CREATED;
653
- /**
654
- * Emitted when a connection becomes established, and is ready to use
655
- * @event
656
- */
657
-
658
- ConnectionPool.CONNECTION_READY = constants_1.CONNECTION_READY;
659
- /**
660
- * Emitted when a connection is closed
661
- * @event
662
- */
663
-
664
- ConnectionPool.CONNECTION_CLOSED = constants_1.CONNECTION_CLOSED;
665
- /**
666
- * Emitted when an attempt to check out a connection begins
667
- * @event
668
- */
669
-
670
- ConnectionPool.CONNECTION_CHECK_OUT_STARTED = constants_1.CONNECTION_CHECK_OUT_STARTED;
671
- /**
672
- * Emitted when an attempt to check out a connection fails
673
- * @event
674
- */
675
-
676
- ConnectionPool.CONNECTION_CHECK_OUT_FAILED = constants_1.CONNECTION_CHECK_OUT_FAILED;
677
- /**
678
- * Emitted each time a connection is successfully checked out of the connection pool
679
- * @event
680
- */
681
-
682
- ConnectionPool.CONNECTION_CHECKED_OUT = constants_1.CONNECTION_CHECKED_OUT;
683
- /**
684
- * Emitted each time a connection is successfully checked into the connection pool
685
- * @event
686
- */
687
-
688
- ConnectionPool.CONNECTION_CHECKED_IN = constants_1.CONNECTION_CHECKED_IN;