oxygen-cli 1.40.1 → 1.40.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +1742 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +2 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +5 -1
  19. package/build/lib/debugger.js +1 -1
  20. package/build/lib/img-merge.js +1 -1
  21. package/build/lib/launcher.js +1 -1
  22. package/build/lib/logger.js +43 -43
  23. package/build/lib/moduleRequire.js +1 -1
  24. package/build/lib/parallel-launcher.js +1 -1
  25. package/build/lib/param-manager.js +1 -1
  26. package/build/lib/param-reader-csv.js +1 -1
  27. package/build/lib/param-reader-excel.js +1 -1
  28. package/build/lib/param-reader-json.js +1 -1
  29. package/build/lib/text-to-image.js +1 -1
  30. package/build/lib/util.js +1 -1
  31. package/build/model/case-result.js +1 -1
  32. package/build/model/failure.js +1 -1
  33. package/build/model/status.js +1 -1
  34. package/build/model/step-result.js +1 -1
  35. package/build/model/suite-result.js +1 -1
  36. package/build/model/test-result.js +1 -1
  37. package/build/model/testcase.js +1 -1
  38. package/build/model/testsuite.js +1 -1
  39. package/build/ox_modules/index.js +9 -1
  40. package/build/ox_modules/module-assert.js +37 -37
  41. package/build/ox_modules/module-date.js +24 -24
  42. package/build/ox_modules/module-db.js +52 -52
  43. package/build/ox_modules/module-email.js +59 -59
  44. package/build/ox_modules/module-eyes.js +34 -34
  45. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  46. package/build/ox_modules/module-http/ntlm.js +15 -15
  47. package/build/ox_modules/module-http.js +132 -132
  48. package/build/ox_modules/module-log.js +27 -27
  49. package/build/ox_modules/module-mailinator.js +87 -87
  50. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  51. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  52. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  53. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  54. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  55. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  56. package/build/ox_modules/module-mob/commands/back.js +16 -16
  57. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  58. package/build/ox_modules/module-mob/commands/click.js +17 -17
  59. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  61. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  62. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  63. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  64. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  65. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  66. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  67. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  68. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  69. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  70. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  71. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  73. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  75. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  77. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  78. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  79. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  80. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  81. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  82. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  83. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  84. package/build/ox_modules/module-mob/commands/index.js +1 -1
  85. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  86. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  88. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  91. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  92. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  93. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  94. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  95. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  96. package/build/ox_modules/module-mob/commands/open.js +17 -17
  97. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  98. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  99. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  100. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  101. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  102. package/build/ox_modules/module-mob/commands/select.js +24 -24
  103. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  104. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  105. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  106. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  107. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  108. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  109. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  110. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  111. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  112. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  113. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  116. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  117. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  118. package/build/ox_modules/module-mob/commands/type.js +20 -20
  119. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  120. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  121. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  122. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  123. package/build/ox_modules/module-mob.js +74 -74
  124. package/build/ox_modules/module-mongo.js +302 -0
  125. package/build/ox_modules/module-pdf.js +35 -35
  126. package/build/ox_modules/module-proxy.js +77 -77
  127. package/build/ox_modules/module-serial.js +55 -55
  128. package/build/ox_modules/module-shell.js +25 -25
  129. package/build/ox_modules/module-soap.js +72 -72
  130. package/build/ox_modules/module-twilio.js +41 -41
  131. package/build/ox_modules/module-utils.js +91 -91
  132. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  133. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  134. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  135. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  136. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  137. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  140. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  142. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  143. package/build/ox_modules/module-web/commands/back.js +16 -16
  144. package/build/ox_modules/module-web/commands/clear.js +18 -18
  145. package/build/ox_modules/module-web/commands/click.js +25 -25
  146. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  147. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  148. package/build/ox_modules/module-web/commands/debug.js +15 -15
  149. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  150. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  151. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  152. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  153. package/build/ox_modules/module-web/commands/execute.js +24 -24
  154. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  155. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  156. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  157. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  158. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  159. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  160. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  161. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  162. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  163. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  164. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  165. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  166. package/build/ox_modules/module-web/commands/getText.js +18 -18
  167. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  168. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  169. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  170. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  171. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  172. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  173. package/build/ox_modules/module-web/commands/index.js +1 -1
  174. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  175. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  176. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  177. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  178. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  179. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  180. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  181. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  182. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/mock.js +20 -20
  184. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  185. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  187. package/build/ox_modules/module-web/commands/open.js +16 -16
  188. package/build/ox_modules/module-web/commands/pause.js +15 -15
  189. package/build/ox_modules/module-web/commands/point.js +21 -21
  190. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  191. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  192. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  193. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  194. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  195. package/build/ox_modules/module-web/commands/select.js +23 -23
  196. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  197. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  198. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  199. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  200. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  201. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  202. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  203. package/build/ox_modules/module-web/commands/type.js +20 -20
  204. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  206. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  207. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  210. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  212. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  213. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  214. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  215. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  218. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  222. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  223. package/build/ox_modules/module-web.js +94 -94
  224. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  225. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  226. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  227. package/build/ox_modules/module-win/commands/back.js +11 -11
  228. package/build/ox_modules/module-win/commands/clear.js +13 -13
  229. package/build/ox_modules/module-win/commands/click.js +13 -13
  230. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  231. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  232. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  233. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  234. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  235. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  236. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  237. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  238. package/build/ox_modules/module-win/commands/getText.js +14 -14
  239. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  240. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  241. package/build/ox_modules/module-win/commands/index.js +1 -1
  242. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  243. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  244. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  245. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  246. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  247. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  248. package/build/ox_modules/module-win/commands/open.js +13 -13
  249. package/build/ox_modules/module-win/commands/pause.js +12 -12
  250. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  251. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  252. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  253. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  254. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  255. package/build/ox_modules/module-win/commands/tap.js +13 -13
  256. package/build/ox_modules/module-win/commands/type.js +16 -16
  257. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  258. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  259. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  260. package/build/ox_modules/module-win.js +47 -47
  261. package/build/ox_modules/utils.js +8 -8
  262. package/build/ox_reporters/excel/template.json +48 -48
  263. package/build/ox_reporters/html/index.ejs +163 -163
  264. package/build/ox_reporters/html/summary.ejs +77 -77
  265. package/build/ox_reporters/html/tests-details.ejs +134 -134
  266. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  267. package/build/ox_reporters/reporter-excel.js +1 -1
  268. package/build/ox_reporters/reporter-html.js +1 -1
  269. package/build/ox_reporters/reporter-json.js +1 -1
  270. package/build/ox_reporters/reporter-junit.js +1 -1
  271. package/build/ox_reporters/reporter-pdf.js +1 -1
  272. package/build/ox_reporters/reporter-rp.js +1 -1
  273. package/build/ox_reporters/reporter-xml.js +1 -1
  274. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  275. package/build/ox_services/service-devtools.js +1 -1
  276. package/build/reporter/FileReporterBase.js +1 -1
  277. package/build/reporter/ReportAggregator.js +13 -5
  278. package/build/reporter/ReporterBase.js +1 -1
  279. package/build/reporter/WebSocketReporter.js +1 -1
  280. package/build/runners/WorkerProcess.js +1 -1
  281. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  282. package/build/runners/cucumber/CucumberReporter.js +1 -1
  283. package/build/runners/cucumber/CucumberWorker.js +1 -1
  284. package/build/runners/cucumber/index.js +1 -1
  285. package/build/runners/cucumber/worker.js +1 -1
  286. package/build/runners/index.js +1 -1
  287. package/build/runners/oxygen/OxygenWorker.js +1 -1
  288. package/build/runners/oxygen/index.js +1 -1
  289. package/build/runners/oxygen/worker.js +1 -1
  290. package/config/default.json +6 -6
  291. package/log.txt +1614 -0
  292. package/package.json +139 -137
  293. package/reports/2025-06-08_231627/report.html +440 -0
  294. package/reports/2025-06-09_223615/report.html +440 -0
  295. package/transpiled/mongodb/etc/prepare.js +18 -0
  296. package/transpiled/mongodb/lib/admin.js +182 -0
  297. package/transpiled/mongodb/lib/beta.js +26 -0
  298. package/transpiled/mongodb/lib/bson.js +220 -0
  299. package/transpiled/mongodb/lib/bulk/common.js +1041 -0
  300. package/transpiled/mongodb/lib/bulk/ordered.js +76 -0
  301. package/transpiled/mongodb/lib/bulk/unordered.js +102 -0
  302. package/transpiled/mongodb/lib/change_stream.js +517 -0
  303. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +329 -0
  304. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +779 -0
  305. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +95 -0
  306. package/transpiled/mongodb/lib/client-side-encryption/errors.js +171 -0
  307. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +98 -0
  308. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +34 -0
  309. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +186 -0
  310. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +29 -0
  311. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +58 -0
  312. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +505 -0
  313. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +63 -0
  314. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +167 -0
  315. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +207 -0
  316. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +193 -0
  317. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +181 -0
  318. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +101 -0
  319. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +81 -0
  320. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +174 -0
  321. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +59 -0
  322. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +58 -0
  323. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +138 -0
  324. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +42 -0
  325. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +71 -0
  326. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +34 -0
  327. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +111 -0
  328. package/transpiled/mongodb/lib/cmap/auth/plain.js +43 -0
  329. package/transpiled/mongodb/lib/cmap/auth/providers.js +22 -0
  330. package/transpiled/mongodb/lib/cmap/auth/scram.js +318 -0
  331. package/transpiled/mongodb/lib/cmap/auth/x509.js +61 -0
  332. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +266 -0
  333. package/transpiled/mongodb/lib/cmap/commands.js +605 -0
  334. package/transpiled/mongodb/lib/cmap/connect.js +418 -0
  335. package/transpiled/mongodb/lib/cmap/connection.js +673 -0
  336. package/transpiled/mongodb/lib/cmap/connection_pool.js +688 -0
  337. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +254 -0
  338. package/transpiled/mongodb/lib/cmap/errors.js +128 -0
  339. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +278 -0
  340. package/transpiled/mongodb/lib/cmap/metrics.js +67 -0
  341. package/transpiled/mongodb/lib/cmap/stream_description.js +74 -0
  342. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +196 -0
  343. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +19 -0
  344. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +144 -0
  345. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +278 -0
  346. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +376 -0
  347. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +49 -0
  348. package/transpiled/mongodb/lib/collection.js +852 -0
  349. package/transpiled/mongodb/lib/connection_string.js +1452 -0
  350. package/transpiled/mongodb/lib/constants.js +162 -0
  351. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +1082 -0
  352. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +227 -0
  353. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +136 -0
  354. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +69 -0
  355. package/transpiled/mongodb/lib/cursor/find_cursor.js +476 -0
  356. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +48 -0
  357. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +46 -0
  358. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +30 -0
  359. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +125 -0
  360. package/transpiled/mongodb/lib/db.js +467 -0
  361. package/transpiled/mongodb/lib/deps.js +174 -0
  362. package/transpiled/mongodb/lib/encrypter.js +129 -0
  363. package/transpiled/mongodb/lib/error.js +1550 -0
  364. package/transpiled/mongodb/lib/explain.js +122 -0
  365. package/transpiled/mongodb/lib/gridfs/download.js +369 -0
  366. package/transpiled/mongodb/lib/gridfs/index.js +240 -0
  367. package/transpiled/mongodb/lib/gridfs/upload.js +446 -0
  368. package/transpiled/mongodb/lib/index.js +975 -0
  369. package/transpiled/mongodb/lib/mongo_client.js +626 -0
  370. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +98 -0
  371. package/transpiled/mongodb/lib/mongo_logger.js +812 -0
  372. package/transpiled/mongodb/lib/mongo_types.js +71 -0
  373. package/transpiled/mongodb/lib/operations/aggregate.js +129 -0
  374. package/transpiled/mongodb/lib/operations/bulk_write.js +48 -0
  375. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +96 -0
  376. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +409 -0
  377. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +5 -0
  378. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +144 -0
  379. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +228 -0
  380. package/transpiled/mongodb/lib/operations/collections.js +49 -0
  381. package/transpiled/mongodb/lib/operations/command.js +102 -0
  382. package/transpiled/mongodb/lib/operations/count.js +60 -0
  383. package/transpiled/mongodb/lib/operations/create_collection.js +109 -0
  384. package/transpiled/mongodb/lib/operations/delete.js +134 -0
  385. package/transpiled/mongodb/lib/operations/distinct.js +77 -0
  386. package/transpiled/mongodb/lib/operations/drop.js +102 -0
  387. package/transpiled/mongodb/lib/operations/estimated_document_count.js +47 -0
  388. package/transpiled/mongodb/lib/operations/execute_operation.js +251 -0
  389. package/transpiled/mongodb/lib/operations/find.js +197 -0
  390. package/transpiled/mongodb/lib/operations/find_and_modify.js +191 -0
  391. package/transpiled/mongodb/lib/operations/get_more.js +84 -0
  392. package/transpiled/mongodb/lib/operations/indexes.js +197 -0
  393. package/transpiled/mongodb/lib/operations/insert.js +138 -0
  394. package/transpiled/mongodb/lib/operations/is_capped.js +44 -0
  395. package/transpiled/mongodb/lib/operations/kill_cursors.js +58 -0
  396. package/transpiled/mongodb/lib/operations/list_collections.js +66 -0
  397. package/transpiled/mongodb/lib/operations/list_databases.js +56 -0
  398. package/transpiled/mongodb/lib/operations/operation.js +88 -0
  399. package/transpiled/mongodb/lib/operations/options_operation.js +44 -0
  400. package/transpiled/mongodb/lib/operations/profiling_level.js +42 -0
  401. package/transpiled/mongodb/lib/operations/remove_user.js +35 -0
  402. package/transpiled/mongodb/lib/operations/rename.js +48 -0
  403. package/transpiled/mongodb/lib/operations/run_command.js +64 -0
  404. package/transpiled/mongodb/lib/operations/search_indexes/create.js +41 -0
  405. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +51 -0
  406. package/transpiled/mongodb/lib/operations/search_indexes/update.js +40 -0
  407. package/transpiled/mongodb/lib/operations/set_profiling_level.js +70 -0
  408. package/transpiled/mongodb/lib/operations/stats.js +39 -0
  409. package/transpiled/mongodb/lib/operations/update.js +218 -0
  410. package/transpiled/mongodb/lib/operations/validate_collection.js +49 -0
  411. package/transpiled/mongodb/lib/read_concern.js +92 -0
  412. package/transpiled/mongodb/lib/read_preference.js +215 -0
  413. package/transpiled/mongodb/lib/resource_management.js +74 -0
  414. package/transpiled/mongodb/lib/sdam/common.js +53 -0
  415. package/transpiled/mongodb/lib/sdam/events.js +177 -0
  416. package/transpiled/mongodb/lib/sdam/monitor.js +656 -0
  417. package/transpiled/mongodb/lib/sdam/server.js +463 -0
  418. package/transpiled/mongodb/lib/sdam/server_description.js +196 -0
  419. package/transpiled/mongodb/lib/sdam/server_selection.js +283 -0
  420. package/transpiled/mongodb/lib/sdam/server_selection_events.js +112 -0
  421. package/transpiled/mongodb/lib/sdam/srv_polling.js +139 -0
  422. package/transpiled/mongodb/lib/sdam/topology.js +833 -0
  423. package/transpiled/mongodb/lib/sdam/topology_description.js +447 -0
  424. package/transpiled/mongodb/lib/sessions.js +988 -0
  425. package/transpiled/mongodb/lib/sort.js +123 -0
  426. package/transpiled/mongodb/lib/timeout.js +349 -0
  427. package/transpiled/mongodb/lib/transactions.js +149 -0
  428. package/transpiled/mongodb/lib/utils.js +1502 -0
  429. package/transpiled/mongodb/lib/write_concern.js +115 -0
  430. package/types/index.d.ts +70 -70
  431. package/types/module-eyes.d.ts +39 -39
  432. package/types/module-http.d.ts +163 -163
  433. package/types/module-log.d.ts +34 -34
  434. package/types/module-mob.d.ts +966 -966
  435. package/types/module-pdf.d.ts +40 -40
  436. package/types/module-proxy.d.ts +100 -100
  437. package/types/module-shell.d.ts +24 -24
  438. package/types/module-utils.d.ts +99 -99
  439. package/types/module-web.d.ts +1053 -1053
  440. package/types/module-win.d.ts +352 -352
  441. package/types/oxygen.d.ts +53 -53
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.formatSort = formatSort;
7
+
8
+ const error_1 = require("./error");
9
+ /** @internal */
10
+
11
+
12
+ function prepareDirection(direction = 1) {
13
+ const value = `${direction}`.toLowerCase();
14
+ if (isMeta(direction)) return direction;
15
+
16
+ switch (value) {
17
+ case 'ascending':
18
+ case 'asc':
19
+ case '1':
20
+ return 1;
21
+
22
+ case 'descending':
23
+ case 'desc':
24
+ case '-1':
25
+ return -1;
26
+
27
+ default:
28
+ throw new error_1.MongoInvalidArgumentError(`Invalid sort direction: ${JSON.stringify(direction)}`);
29
+ }
30
+ }
31
+ /** @internal */
32
+
33
+
34
+ function isMeta(t) {
35
+ return typeof t === 'object' && t != null && '$meta' in t && typeof t.$meta === 'string';
36
+ }
37
+ /** @internal */
38
+
39
+
40
+ function isPair(t) {
41
+ if (Array.isArray(t) && t.length === 2) {
42
+ try {
43
+ prepareDirection(t[1]);
44
+ return true;
45
+ } catch {
46
+ return false;
47
+ }
48
+ }
49
+
50
+ return false;
51
+ }
52
+
53
+ function isDeep(t) {
54
+ return Array.isArray(t) && Array.isArray(t[0]);
55
+ }
56
+
57
+ function isMap(t) {
58
+ return t instanceof Map && t.size > 0;
59
+ }
60
+
61
+ function isReadonlyArray(value) {
62
+ return Array.isArray(value);
63
+ }
64
+ /** @internal */
65
+
66
+
67
+ function pairToMap(v) {
68
+ return new Map([[`${v[0]}`, prepareDirection([v[1]])]]);
69
+ }
70
+ /** @internal */
71
+
72
+
73
+ function deepToMap(t) {
74
+ const sortEntries = t.map(([k, v]) => [`${k}`, prepareDirection(v)]);
75
+ return new Map(sortEntries);
76
+ }
77
+ /** @internal */
78
+
79
+
80
+ function stringsToMap(t) {
81
+ const sortEntries = t.map(key => [`${key}`, 1]);
82
+ return new Map(sortEntries);
83
+ }
84
+ /** @internal */
85
+
86
+
87
+ function objectToMap(t) {
88
+ const sortEntries = Object.entries(t).map(([k, v]) => [`${k}`, prepareDirection(v)]);
89
+ return new Map(sortEntries);
90
+ }
91
+ /** @internal */
92
+
93
+
94
+ function mapToMap(t) {
95
+ const sortEntries = Array.from(t).map(([k, v]) => [`${k}`, prepareDirection(v)]);
96
+ return new Map(sortEntries);
97
+ }
98
+ /** converts a Sort type into a type that is valid for the server (SortForCmd) */
99
+
100
+
101
+ function formatSort(sort, direction) {
102
+ if (sort == null) return undefined;
103
+ if (typeof sort === 'string') return new Map([[sort, prepareDirection(direction)]]); // 'fieldName'
104
+
105
+ if (typeof sort !== 'object') {
106
+ throw new error_1.MongoInvalidArgumentError(`Invalid sort format: ${JSON.stringify(sort)} Sort must be a valid object`);
107
+ }
108
+
109
+ if (!isReadonlyArray(sort)) {
110
+ if (isMap(sort)) return mapToMap(sort); // Map<fieldName, SortDirection>
111
+
112
+ if (Object.keys(sort).length) return objectToMap(sort); // { [fieldName: string]: SortDirection }
113
+
114
+ return undefined;
115
+ }
116
+
117
+ if (!sort.length) return undefined;
118
+ if (isDeep(sort)) return deepToMap(sort); // [ [fieldName, sortDir], [fieldName, sortDir] ... ]
119
+
120
+ if (isPair(sort)) return pairToMap(sort); // [ fieldName, sortDir ]
121
+
122
+ return stringsToMap(sort); // [ fieldName, fieldName ]
123
+ }
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.LegacyTimeoutContext = exports.CSOTTimeoutContext = exports.TimeoutContext = exports.Timeout = exports.TimeoutError = void 0;
7
+
8
+ const timers_1 = require("timers");
9
+
10
+ const error_1 = require("./error");
11
+
12
+ const utils_1 = require("./utils");
13
+ /** @internal */
14
+
15
+
16
+ class TimeoutError extends Error {
17
+ get name() {
18
+ return 'TimeoutError';
19
+ }
20
+
21
+ constructor(message, options) {
22
+ super(message, options);
23
+ this.duration = options.duration;
24
+ }
25
+
26
+ static is(error) {
27
+ return error != null && typeof error === 'object' && 'name' in error && error.name === 'TimeoutError';
28
+ }
29
+
30
+ }
31
+
32
+ exports.TimeoutError = TimeoutError;
33
+ /**
34
+ * @internal
35
+ * This class is an abstraction over timeouts
36
+ * The Timeout class can only be in the pending or rejected states. It is guaranteed not to resolve
37
+ * if interacted with exclusively through its public API
38
+ * */
39
+
40
+ class Timeout extends Promise {
41
+ get remainingTime() {
42
+ if (this.timedOut) return 0;
43
+ if (this.duration === 0) return Infinity;
44
+ return this.start + this.duration - Math.trunc(performance.now());
45
+ }
46
+
47
+ get timeElapsed() {
48
+ return Math.trunc(performance.now()) - this.start;
49
+ }
50
+ /** Create a new timeout that expires in `duration` ms */
51
+
52
+
53
+ constructor(executor = () => null, options) {
54
+ const duration = options?.duration ?? 0;
55
+ const unref = !!options?.unref;
56
+ const rejection = options?.rejection;
57
+
58
+ if (duration < 0) {
59
+ throw new error_1.MongoInvalidArgumentError('Cannot create a Timeout with a negative duration');
60
+ }
61
+
62
+ let reject;
63
+ super((_, promiseReject) => {
64
+ reject = promiseReject;
65
+ executor(utils_1.noop, promiseReject);
66
+ });
67
+ this.ended = null;
68
+ this.timedOut = false;
69
+ this.cleared = false;
70
+ this.duration = duration;
71
+ this.start = Math.trunc(performance.now());
72
+
73
+ if (rejection == null && this.duration > 0) {
74
+ this.id = (0, timers_1.setTimeout)(() => {
75
+ this.ended = Math.trunc(performance.now());
76
+ this.timedOut = true;
77
+ reject(new TimeoutError(`Expired after ${duration}ms`, {
78
+ duration
79
+ }));
80
+ }, this.duration);
81
+
82
+ if (typeof this.id.unref === 'function' && unref) {
83
+ // Ensure we do not keep the Node.js event loop running
84
+ this.id.unref();
85
+ }
86
+ } else if (rejection != null) {
87
+ this.ended = Math.trunc(performance.now());
88
+ this.timedOut = true;
89
+ reject(rejection);
90
+ }
91
+ }
92
+ /**
93
+ * Clears the underlying timeout. This method is idempotent
94
+ */
95
+
96
+
97
+ clear() {
98
+ (0, timers_1.clearTimeout)(this.id);
99
+ this.id = undefined;
100
+ this.timedOut = false;
101
+ this.cleared = true;
102
+ }
103
+
104
+ throwIfExpired() {
105
+ if (this.timedOut) {
106
+ // This method is invoked when someone wants to throw immediately instead of await the result of this promise
107
+ // Since they won't be handling the rejection from the promise (because we're about to throw here)
108
+ // attach handling to prevent this from bubbling up to Node.js
109
+ this.then(undefined, utils_1.squashError);
110
+ throw new TimeoutError('Timed out', {
111
+ duration: this.duration
112
+ });
113
+ }
114
+ }
115
+
116
+ static expires(duration, unref) {
117
+ return new Timeout(undefined, {
118
+ duration,
119
+ unref
120
+ });
121
+ }
122
+
123
+ static reject(rejection) {
124
+ return new Timeout(undefined, {
125
+ duration: 0,
126
+ unref: true,
127
+ rejection
128
+ });
129
+ }
130
+
131
+ }
132
+
133
+ exports.Timeout = Timeout;
134
+
135
+ function isLegacyTimeoutContextOptions(v) {
136
+ return v != null && typeof v === 'object' && 'serverSelectionTimeoutMS' in v && typeof v.serverSelectionTimeoutMS === 'number' && 'waitQueueTimeoutMS' in v && typeof v.waitQueueTimeoutMS === 'number';
137
+ }
138
+
139
+ function isCSOTTimeoutContextOptions(v) {
140
+ return v != null && typeof v === 'object' && 'serverSelectionTimeoutMS' in v && typeof v.serverSelectionTimeoutMS === 'number' && 'timeoutMS' in v && typeof v.timeoutMS === 'number';
141
+ }
142
+ /** @internal */
143
+
144
+
145
+ class TimeoutContext {
146
+ static create(options) {
147
+ if (options.session?.timeoutContext != null) return options.session?.timeoutContext;
148
+ if (isCSOTTimeoutContextOptions(options)) return new CSOTTimeoutContext(options);else if (isLegacyTimeoutContextOptions(options)) return new LegacyTimeoutContext(options);else throw new error_1.MongoRuntimeError('Unrecognized options');
149
+ }
150
+
151
+ }
152
+
153
+ exports.TimeoutContext = TimeoutContext;
154
+ /** @internal */
155
+
156
+ class CSOTTimeoutContext extends TimeoutContext {
157
+ constructor(options) {
158
+ super();
159
+ this.minRoundTripTime = 0;
160
+ this.start = Math.trunc(performance.now());
161
+ this.timeoutMS = options.timeoutMS;
162
+ this.serverSelectionTimeoutMS = options.serverSelectionTimeoutMS;
163
+ this.socketTimeoutMS = options.socketTimeoutMS;
164
+ this.clearServerSelectionTimeout = false;
165
+ }
166
+
167
+ get maxTimeMS() {
168
+ return this.remainingTimeMS - this.minRoundTripTime;
169
+ }
170
+
171
+ get remainingTimeMS() {
172
+ const timePassed = Math.trunc(performance.now()) - this.start;
173
+ return this.timeoutMS <= 0 ? Infinity : this.timeoutMS - timePassed;
174
+ }
175
+
176
+ csotEnabled() {
177
+ return true;
178
+ }
179
+
180
+ get serverSelectionTimeout() {
181
+ // check for undefined
182
+ if (typeof this._serverSelectionTimeout !== 'object' || this._serverSelectionTimeout?.cleared) {
183
+ const {
184
+ remainingTimeMS,
185
+ serverSelectionTimeoutMS
186
+ } = this;
187
+ if (remainingTimeMS <= 0) return Timeout.reject(new error_1.MongoOperationTimeoutError(`Timed out in server selection after ${this.timeoutMS}ms`));
188
+ const usingServerSelectionTimeoutMS = serverSelectionTimeoutMS !== 0 && (0, utils_1.csotMin)(remainingTimeMS, serverSelectionTimeoutMS) === serverSelectionTimeoutMS;
189
+
190
+ if (usingServerSelectionTimeoutMS) {
191
+ this._serverSelectionTimeout = Timeout.expires(serverSelectionTimeoutMS);
192
+ } else {
193
+ if (remainingTimeMS > 0 && Number.isFinite(remainingTimeMS)) {
194
+ this._serverSelectionTimeout = Timeout.expires(remainingTimeMS);
195
+ } else {
196
+ this._serverSelectionTimeout = null;
197
+ }
198
+ }
199
+ }
200
+
201
+ return this._serverSelectionTimeout;
202
+ }
203
+
204
+ get connectionCheckoutTimeout() {
205
+ if (typeof this._connectionCheckoutTimeout !== 'object' || this._connectionCheckoutTimeout?.cleared) {
206
+ if (typeof this._serverSelectionTimeout === 'object') {
207
+ // null or Timeout
208
+ this._connectionCheckoutTimeout = this._serverSelectionTimeout;
209
+ } else {
210
+ throw new error_1.MongoRuntimeError('Unreachable. If you are seeing this error, please file a ticket on the NODE driver project on Jira');
211
+ }
212
+ }
213
+
214
+ return this._connectionCheckoutTimeout;
215
+ }
216
+
217
+ get timeoutForSocketWrite() {
218
+ const {
219
+ remainingTimeMS
220
+ } = this;
221
+ if (!Number.isFinite(remainingTimeMS)) return null;
222
+ if (remainingTimeMS > 0) return Timeout.expires(remainingTimeMS);
223
+ return Timeout.reject(new error_1.MongoOperationTimeoutError('Timed out before socket write'));
224
+ }
225
+
226
+ get timeoutForSocketRead() {
227
+ const {
228
+ remainingTimeMS
229
+ } = this;
230
+ if (!Number.isFinite(remainingTimeMS)) return null;
231
+ if (remainingTimeMS > 0) return Timeout.expires(remainingTimeMS);
232
+ return Timeout.reject(new error_1.MongoOperationTimeoutError('Timed out before socket read'));
233
+ }
234
+
235
+ refresh() {
236
+ this.start = Math.trunc(performance.now());
237
+ this.minRoundTripTime = 0;
238
+ this._serverSelectionTimeout?.clear();
239
+ this._connectionCheckoutTimeout?.clear();
240
+ }
241
+
242
+ clear() {
243
+ this._serverSelectionTimeout?.clear();
244
+ this._connectionCheckoutTimeout?.clear();
245
+ }
246
+ /**
247
+ * @internal
248
+ * Throws a MongoOperationTimeoutError if the context has expired.
249
+ * If the context has not expired, returns the `remainingTimeMS`
250
+ **/
251
+
252
+
253
+ getRemainingTimeMSOrThrow(message) {
254
+ const {
255
+ remainingTimeMS
256
+ } = this;
257
+ if (remainingTimeMS <= 0) throw new error_1.MongoOperationTimeoutError(message ?? `Expired after ${this.timeoutMS}ms`);
258
+ return remainingTimeMS;
259
+ }
260
+ /**
261
+ * @internal
262
+ * This method is intended to be used in situations where concurrent operation are on the same deadline, but cannot share a single `TimeoutContext` instance.
263
+ * Returns a new instance of `CSOTTimeoutContext` constructed with identical options, but setting the `start` property to `this.start`.
264
+ */
265
+
266
+
267
+ clone() {
268
+ const timeoutContext = new CSOTTimeoutContext({
269
+ timeoutMS: this.timeoutMS,
270
+ serverSelectionTimeoutMS: this.serverSelectionTimeoutMS
271
+ });
272
+ timeoutContext.start = this.start;
273
+ return timeoutContext;
274
+ }
275
+
276
+ refreshed() {
277
+ return new CSOTTimeoutContext(this);
278
+ }
279
+
280
+ addMaxTimeMSToCommand(command, options) {
281
+ if (options.omitMaxTimeMS) return;
282
+ const maxTimeMS = this.remainingTimeMS - this.minRoundTripTime;
283
+ if (maxTimeMS > 0 && Number.isFinite(maxTimeMS)) command.maxTimeMS = maxTimeMS;
284
+ }
285
+
286
+ getSocketTimeoutMS() {
287
+ return 0;
288
+ }
289
+
290
+ }
291
+
292
+ exports.CSOTTimeoutContext = CSOTTimeoutContext;
293
+ /** @internal */
294
+
295
+ class LegacyTimeoutContext extends TimeoutContext {
296
+ constructor(options) {
297
+ super();
298
+ this.options = options;
299
+ this.clearServerSelectionTimeout = true;
300
+ }
301
+
302
+ csotEnabled() {
303
+ return false;
304
+ }
305
+
306
+ get serverSelectionTimeout() {
307
+ if (this.options.serverSelectionTimeoutMS != null && this.options.serverSelectionTimeoutMS > 0) return Timeout.expires(this.options.serverSelectionTimeoutMS);
308
+ return null;
309
+ }
310
+
311
+ get connectionCheckoutTimeout() {
312
+ if (this.options.waitQueueTimeoutMS != null && this.options.waitQueueTimeoutMS > 0) return Timeout.expires(this.options.waitQueueTimeoutMS);
313
+ return null;
314
+ }
315
+
316
+ get timeoutForSocketWrite() {
317
+ return null;
318
+ }
319
+
320
+ get timeoutForSocketRead() {
321
+ return null;
322
+ }
323
+
324
+ refresh() {
325
+ return;
326
+ }
327
+
328
+ clear() {
329
+ return;
330
+ }
331
+
332
+ get maxTimeMS() {
333
+ return null;
334
+ }
335
+
336
+ refreshed() {
337
+ return new LegacyTimeoutContext(this.options);
338
+ }
339
+
340
+ addMaxTimeMSToCommand(_command, _options) {// No max timeMS is added to commands in legacy timeout mode.
341
+ }
342
+
343
+ getSocketTimeoutMS() {
344
+ return this.options.socketTimeoutMS;
345
+ }
346
+
347
+ }
348
+
349
+ exports.LegacyTimeoutContext = LegacyTimeoutContext;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Transaction = exports.TxnState = void 0;
7
+ exports.isTransactionCommand = isTransactionCommand;
8
+
9
+ const error_1 = require("./error");
10
+
11
+ const read_concern_1 = require("./read_concern");
12
+
13
+ const read_preference_1 = require("./read_preference");
14
+
15
+ const write_concern_1 = require("./write_concern");
16
+ /** @internal */
17
+
18
+
19
+ exports.TxnState = Object.freeze({
20
+ NO_TRANSACTION: 'NO_TRANSACTION',
21
+ STARTING_TRANSACTION: 'STARTING_TRANSACTION',
22
+ TRANSACTION_IN_PROGRESS: 'TRANSACTION_IN_PROGRESS',
23
+ TRANSACTION_COMMITTED: 'TRANSACTION_COMMITTED',
24
+ TRANSACTION_COMMITTED_EMPTY: 'TRANSACTION_COMMITTED_EMPTY',
25
+ TRANSACTION_ABORTED: 'TRANSACTION_ABORTED'
26
+ });
27
+ const stateMachine = {
28
+ [exports.TxnState.NO_TRANSACTION]: [exports.TxnState.NO_TRANSACTION, exports.TxnState.STARTING_TRANSACTION],
29
+ [exports.TxnState.STARTING_TRANSACTION]: [exports.TxnState.TRANSACTION_IN_PROGRESS, exports.TxnState.TRANSACTION_COMMITTED, exports.TxnState.TRANSACTION_COMMITTED_EMPTY, exports.TxnState.TRANSACTION_ABORTED],
30
+ [exports.TxnState.TRANSACTION_IN_PROGRESS]: [exports.TxnState.TRANSACTION_IN_PROGRESS, exports.TxnState.TRANSACTION_COMMITTED, exports.TxnState.TRANSACTION_ABORTED],
31
+ [exports.TxnState.TRANSACTION_COMMITTED]: [exports.TxnState.TRANSACTION_COMMITTED, exports.TxnState.TRANSACTION_COMMITTED_EMPTY, exports.TxnState.STARTING_TRANSACTION, exports.TxnState.NO_TRANSACTION],
32
+ [exports.TxnState.TRANSACTION_ABORTED]: [exports.TxnState.STARTING_TRANSACTION, exports.TxnState.NO_TRANSACTION],
33
+ [exports.TxnState.TRANSACTION_COMMITTED_EMPTY]: [exports.TxnState.TRANSACTION_COMMITTED_EMPTY, exports.TxnState.NO_TRANSACTION]
34
+ };
35
+ const ACTIVE_STATES = new Set([exports.TxnState.STARTING_TRANSACTION, exports.TxnState.TRANSACTION_IN_PROGRESS]);
36
+ const COMMITTED_STATES = new Set([exports.TxnState.TRANSACTION_COMMITTED, exports.TxnState.TRANSACTION_COMMITTED_EMPTY, exports.TxnState.TRANSACTION_ABORTED]);
37
+ /**
38
+ * @public
39
+ * A class maintaining state related to a server transaction. Internal Only
40
+ */
41
+
42
+ class Transaction {
43
+ /** Create a transaction @internal */
44
+ constructor(options) {
45
+ options = options ?? {};
46
+ this.state = exports.TxnState.NO_TRANSACTION;
47
+ this.options = {};
48
+ const writeConcern = write_concern_1.WriteConcern.fromOptions(options);
49
+
50
+ if (writeConcern) {
51
+ if (writeConcern.w === 0) {
52
+ throw new error_1.MongoTransactionError('Transactions do not support unacknowledged write concern');
53
+ }
54
+
55
+ this.options.writeConcern = writeConcern;
56
+ }
57
+
58
+ if (options.readConcern) {
59
+ this.options.readConcern = read_concern_1.ReadConcern.fromOptions(options);
60
+ }
61
+
62
+ if (options.readPreference) {
63
+ this.options.readPreference = read_preference_1.ReadPreference.fromOptions(options);
64
+ }
65
+
66
+ if (options.maxCommitTimeMS) {
67
+ this.options.maxTimeMS = options.maxCommitTimeMS;
68
+ } // TODO: This isn't technically necessary
69
+
70
+
71
+ this._pinnedServer = undefined;
72
+ this._recoveryToken = undefined;
73
+ }
74
+ /** @internal */
75
+
76
+
77
+ get server() {
78
+ return this._pinnedServer;
79
+ }
80
+
81
+ get recoveryToken() {
82
+ return this._recoveryToken;
83
+ }
84
+
85
+ get isPinned() {
86
+ return !!this.server;
87
+ }
88
+ /** @returns Whether the transaction has started */
89
+
90
+
91
+ get isStarting() {
92
+ return this.state === exports.TxnState.STARTING_TRANSACTION;
93
+ }
94
+ /**
95
+ * @returns Whether this session is presently in a transaction
96
+ */
97
+
98
+
99
+ get isActive() {
100
+ return ACTIVE_STATES.has(this.state);
101
+ }
102
+
103
+ get isCommitted() {
104
+ return COMMITTED_STATES.has(this.state);
105
+ }
106
+ /**
107
+ * Transition the transaction in the state machine
108
+ * @internal
109
+ * @param nextState - The new state to transition to
110
+ */
111
+
112
+
113
+ transition(nextState) {
114
+ const nextStates = stateMachine[this.state];
115
+
116
+ if (nextStates && nextStates.includes(nextState)) {
117
+ this.state = nextState;
118
+
119
+ if (this.state === exports.TxnState.NO_TRANSACTION || this.state === exports.TxnState.STARTING_TRANSACTION || this.state === exports.TxnState.TRANSACTION_ABORTED) {
120
+ this.unpinServer();
121
+ }
122
+
123
+ return;
124
+ }
125
+
126
+ throw new error_1.MongoRuntimeError(`Attempted illegal state transition from [${this.state}] to [${nextState}]`);
127
+ }
128
+ /** @internal */
129
+
130
+
131
+ pinServer(server) {
132
+ if (this.isActive) {
133
+ this._pinnedServer = server;
134
+ }
135
+ }
136
+ /** @internal */
137
+
138
+
139
+ unpinServer() {
140
+ this._pinnedServer = undefined;
141
+ }
142
+
143
+ }
144
+
145
+ exports.Transaction = Transaction;
146
+
147
+ function isTransactionCommand(command) {
148
+ return !!(command.commitTransaction || command.abortTransaction);
149
+ }