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,181 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.MongoDBAWS = void 0;
7
-
8
- const BSON = require("../../bson");
9
-
10
- const deps_1 = require("../../deps");
11
-
12
- const error_1 = require("../../error");
13
-
14
- const utils_1 = require("../../utils");
15
-
16
- const auth_provider_1 = require("./auth_provider");
17
-
18
- const aws_temporary_credentials_1 = require("./aws_temporary_credentials");
19
-
20
- const mongo_credentials_1 = require("./mongo_credentials");
21
-
22
- const providers_1 = require("./providers");
23
-
24
- const ASCII_N = 110;
25
- const bsonOptions = {
26
- useBigInt64: false,
27
- promoteLongs: true,
28
- promoteValues: true,
29
- promoteBuffers: false,
30
- bsonRegExp: false
31
- };
32
-
33
- class MongoDBAWS extends auth_provider_1.AuthProvider {
34
- constructor(credentialProvider) {
35
- super();
36
- this.credentialProvider = credentialProvider;
37
- this.credentialFetcher = aws_temporary_credentials_1.AWSTemporaryCredentialProvider.isAWSSDKInstalled ? new aws_temporary_credentials_1.AWSSDKCredentialProvider(credentialProvider) : new aws_temporary_credentials_1.LegacyAWSTemporaryCredentialProvider();
38
- }
39
-
40
- async auth(authContext) {
41
- const {
42
- connection
43
- } = authContext;
44
-
45
- if (!authContext.credentials) {
46
- throw new error_1.MongoMissingCredentialsError('AuthContext must provide credentials.');
47
- }
48
-
49
- if ('kModuleError' in deps_1.aws4) {
50
- throw deps_1.aws4['kModuleError'];
51
- }
52
-
53
- const {
54
- sign
55
- } = deps_1.aws4;
56
-
57
- if ((0, utils_1.maxWireVersion)(connection) < 9) {
58
- throw new error_1.MongoCompatibilityError('MONGODB-AWS authentication requires MongoDB version 4.4 or later');
59
- }
60
-
61
- if (!authContext.credentials.username) {
62
- authContext.credentials = await makeTempCredentials(authContext.credentials, this.credentialFetcher);
63
- }
64
-
65
- const {
66
- credentials
67
- } = authContext;
68
- const accessKeyId = credentials.username;
69
- const secretAccessKey = credentials.password; // Allow the user to specify an AWS session token for authentication with temporary credentials.
70
-
71
- const sessionToken = credentials.mechanismProperties.AWS_SESSION_TOKEN; // If all three defined, include sessionToken, else include username and pass, else no credentials
72
-
73
- const awsCredentials = accessKeyId && secretAccessKey && sessionToken ? {
74
- accessKeyId,
75
- secretAccessKey,
76
- sessionToken
77
- } : accessKeyId && secretAccessKey ? {
78
- accessKeyId,
79
- secretAccessKey
80
- } : undefined;
81
- const db = credentials.source;
82
- const nonce = await (0, utils_1.randomBytes)(32); // All messages between MongoDB clients and servers are sent as BSON objects
83
- // in the payload field of saslStart and saslContinue.
84
-
85
- const saslStart = {
86
- saslStart: 1,
87
- mechanism: 'MONGODB-AWS',
88
- payload: BSON.serialize({
89
- r: nonce,
90
- p: ASCII_N
91
- }, bsonOptions)
92
- };
93
- const saslStartResponse = await connection.command((0, utils_1.ns)(`${db}.$cmd`), saslStart, undefined);
94
- const serverResponse = BSON.deserialize(saslStartResponse.payload.buffer, bsonOptions);
95
- const host = serverResponse.h;
96
- const serverNonce = serverResponse.s.buffer;
97
-
98
- if (serverNonce.length !== 64) {
99
- // TODO(NODE-3483)
100
- throw new error_1.MongoRuntimeError(`Invalid server nonce length ${serverNonce.length}, expected 64`);
101
- }
102
-
103
- if (!utils_1.ByteUtils.equals(serverNonce.subarray(0, nonce.byteLength), nonce)) {
104
- // throw because the serverNonce's leading 32 bytes must equal the client nonce's 32 bytes
105
- // https://github.com/mongodb/specifications/blob/master/source/auth/auth.md#conversation-5
106
- // TODO(NODE-3483)
107
- throw new error_1.MongoRuntimeError('Server nonce does not begin with client nonce');
108
- }
109
-
110
- if (host.length < 1 || host.length > 255 || host.indexOf('..') !== -1) {
111
- // TODO(NODE-3483)
112
- throw new error_1.MongoRuntimeError(`Server returned an invalid host: "${host}"`);
113
- }
114
-
115
- const body = 'Action=GetCallerIdentity&Version=2011-06-15';
116
- const options = sign({
117
- method: 'POST',
118
- host,
119
- region: deriveRegion(serverResponse.h),
120
- service: 'sts',
121
- headers: {
122
- 'Content-Type': 'application/x-www-form-urlencoded',
123
- 'Content-Length': body.length,
124
- 'X-MongoDB-Server-Nonce': utils_1.ByteUtils.toBase64(serverNonce),
125
- 'X-MongoDB-GS2-CB-Flag': 'n'
126
- },
127
- path: '/',
128
- body
129
- }, awsCredentials);
130
- const payload = {
131
- a: options.headers.Authorization,
132
- d: options.headers['X-Amz-Date']
133
- };
134
-
135
- if (sessionToken) {
136
- payload.t = sessionToken;
137
- }
138
-
139
- const saslContinue = {
140
- saslContinue: 1,
141
- conversationId: saslStartResponse.conversationId,
142
- payload: BSON.serialize(payload, bsonOptions)
143
- };
144
- await connection.command((0, utils_1.ns)(`${db}.$cmd`), saslContinue, undefined);
145
- }
146
-
147
- }
148
-
149
- exports.MongoDBAWS = MongoDBAWS;
150
-
151
- async function makeTempCredentials(credentials, awsCredentialFetcher) {
152
- function makeMongoCredentialsFromAWSTemp(creds) {
153
- // The AWS session token (creds.Token) may or may not be set.
154
- if (!creds.AccessKeyId || !creds.SecretAccessKey) {
155
- throw new error_1.MongoMissingCredentialsError('Could not obtain temporary MONGODB-AWS credentials');
156
- }
157
-
158
- return new mongo_credentials_1.MongoCredentials({
159
- username: creds.AccessKeyId,
160
- password: creds.SecretAccessKey,
161
- source: credentials.source,
162
- mechanism: providers_1.AuthMechanism.MONGODB_AWS,
163
- mechanismProperties: {
164
- AWS_SESSION_TOKEN: creds.Token
165
- }
166
- });
167
- }
168
-
169
- const temporaryCredentials = await awsCredentialFetcher.getCredentials();
170
- return makeMongoCredentialsFromAWSTemp(temporaryCredentials);
171
- }
172
-
173
- function deriveRegion(host) {
174
- const parts = host.split('.');
175
-
176
- if (parts.length === 1 || parts[1] === 'amazonaws') {
177
- return 'us-east-1';
178
- }
179
-
180
- return parts[1];
181
- }
@@ -1,101 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.AutomatedCallbackWorkflow = void 0;
7
-
8
- const error_1 = require("../../../error");
9
-
10
- const timeout_1 = require("../../../timeout");
11
-
12
- const mongodb_oidc_1 = require("../mongodb_oidc");
13
-
14
- const callback_workflow_1 = require("./callback_workflow");
15
- /**
16
- * Class implementing behaviour for the non human callback workflow.
17
- * @internal
18
- */
19
-
20
-
21
- class AutomatedCallbackWorkflow extends callback_workflow_1.CallbackWorkflow {
22
- /**
23
- * Instantiate the human callback workflow.
24
- */
25
- constructor(cache, callback) {
26
- super(cache, callback);
27
- }
28
- /**
29
- * Execute the OIDC callback workflow.
30
- */
31
-
32
-
33
- async execute(connection, credentials) {
34
- // If there is a cached access token, try to authenticate with it. If
35
- // authentication fails with an Authentication error (18),
36
- // invalidate the access token, fetch a new access token, and try
37
- // to authenticate again.
38
- // If the server fails for any other reason, do not clear the cache.
39
- if (this.cache.hasAccessToken) {
40
- const token = this.cache.getAccessToken();
41
-
42
- if (!connection.accessToken) {
43
- connection.accessToken = token;
44
- }
45
-
46
- try {
47
- return await this.finishAuthentication(connection, credentials, token);
48
- } catch (error) {
49
- if (error instanceof error_1.MongoError && error.code === error_1.MONGODB_ERROR_CODES.AuthenticationFailed) {
50
- this.cache.removeAccessToken();
51
- return await this.execute(connection, credentials);
52
- } else {
53
- throw error;
54
- }
55
- }
56
- }
57
-
58
- const response = await this.fetchAccessToken(credentials);
59
- this.cache.put(response);
60
- connection.accessToken = response.accessToken;
61
- await this.finishAuthentication(connection, credentials, response.accessToken);
62
- }
63
- /**
64
- * Fetches the access token using the callback.
65
- */
66
-
67
-
68
- async fetchAccessToken(credentials) {
69
- const controller = new AbortController();
70
- const params = {
71
- timeoutContext: controller.signal,
72
- version: mongodb_oidc_1.OIDC_VERSION
73
- };
74
-
75
- if (credentials.username) {
76
- params.username = credentials.username;
77
- }
78
-
79
- if (credentials.mechanismProperties.TOKEN_RESOURCE) {
80
- params.tokenAudience = credentials.mechanismProperties.TOKEN_RESOURCE;
81
- }
82
-
83
- const timeout = timeout_1.Timeout.expires(callback_workflow_1.AUTOMATED_TIMEOUT_MS);
84
-
85
- try {
86
- return await Promise.race([this.executeAndValidateCallback(params), timeout]);
87
- } catch (error) {
88
- if (timeout_1.TimeoutError.is(error)) {
89
- controller.abort();
90
- throw new error_1.MongoOIDCError(`OIDC callback timed out after ${callback_workflow_1.AUTOMATED_TIMEOUT_MS}ms.`);
91
- }
92
-
93
- throw error;
94
- } finally {
95
- timeout.clear();
96
- }
97
- }
98
-
99
- }
100
-
101
- exports.AutomatedCallbackWorkflow = AutomatedCallbackWorkflow;
@@ -1,81 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.callback = void 0;
7
-
8
- const azure_1 = require("../../../client-side-encryption/providers/azure");
9
-
10
- const error_1 = require("../../../error");
11
-
12
- const utils_1 = require("../../../utils");
13
- /** Azure request headers. */
14
-
15
-
16
- const AZURE_HEADERS = Object.freeze({
17
- Metadata: 'true',
18
- Accept: 'application/json'
19
- });
20
- /** Invalid endpoint result error. */
21
-
22
- const ENDPOINT_RESULT_ERROR = 'Azure endpoint did not return a value with only access_token and expires_in properties';
23
- /** Error for when the token audience is missing in the environment. */
24
-
25
- const TOKEN_RESOURCE_MISSING_ERROR = 'TOKEN_RESOURCE must be set in the auth mechanism properties when ENVIRONMENT is azure.';
26
- /**
27
- * The callback function to be used in the automated callback workflow.
28
- * @param params - The OIDC callback parameters.
29
- * @returns The OIDC response.
30
- */
31
-
32
- const callback = async params => {
33
- const tokenAudience = params.tokenAudience;
34
- const username = params.username;
35
-
36
- if (!tokenAudience) {
37
- throw new error_1.MongoAzureError(TOKEN_RESOURCE_MISSING_ERROR);
38
- }
39
-
40
- const response = await getAzureTokenData(tokenAudience, username);
41
-
42
- if (!isEndpointResultValid(response)) {
43
- throw new error_1.MongoAzureError(ENDPOINT_RESULT_ERROR);
44
- }
45
-
46
- return response;
47
- };
48
-
49
- exports.callback = callback;
50
- /**
51
- * Hit the Azure endpoint to get the token data.
52
- */
53
-
54
- async function getAzureTokenData(tokenAudience, username) {
55
- const url = new URL(azure_1.AZURE_BASE_URL);
56
- (0, azure_1.addAzureParams)(url, tokenAudience, username);
57
- const response = await (0, utils_1.get)(url, {
58
- headers: AZURE_HEADERS
59
- });
60
-
61
- if (response.status !== 200) {
62
- throw new error_1.MongoAzureError(`Status code ${response.status} returned from the Azure endpoint. Response body: ${response.body}`);
63
- }
64
-
65
- const result = JSON.parse(response.body);
66
- return {
67
- accessToken: result.access_token,
68
- expiresInSeconds: Number(result.expires_in)
69
- };
70
- }
71
- /**
72
- * Determines if a result returned from the endpoint is valid.
73
- * This means the result is not nullish, contains the access_token required field
74
- * and the expires_in required field.
75
- */
76
-
77
-
78
- function isEndpointResultValid(token) {
79
- if (token == null || typeof token !== 'object') return false;
80
- return 'accessToken' in token && typeof token.accessToken === 'string' && 'expiresInSeconds' in token && typeof token.expiresInSeconds === 'number';
81
- }
@@ -1,174 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CallbackWorkflow = exports.AUTOMATED_TIMEOUT_MS = exports.HUMAN_TIMEOUT_MS = void 0;
7
-
8
- const promises_1 = require("timers/promises");
9
-
10
- const error_1 = require("../../../error");
11
-
12
- const utils_1 = require("../../../utils");
13
-
14
- const command_builders_1 = require("./command_builders");
15
- /** 5 minutes in milliseconds */
16
-
17
-
18
- exports.HUMAN_TIMEOUT_MS = 300000;
19
- /** 1 minute in milliseconds */
20
-
21
- exports.AUTOMATED_TIMEOUT_MS = 60000;
22
- /** Properties allowed on results of callbacks. */
23
-
24
- const RESULT_PROPERTIES = ['accessToken', 'expiresInSeconds', 'refreshToken'];
25
- /** Error message when the callback result is invalid. */
26
-
27
- const CALLBACK_RESULT_ERROR = 'User provided OIDC callbacks must return a valid object with an accessToken.';
28
- /** The time to throttle callback calls. */
29
-
30
- const THROTTLE_MS = 100;
31
- /**
32
- * OIDC implementation of a callback based workflow.
33
- * @internal
34
- */
35
-
36
- class CallbackWorkflow {
37
- /**
38
- * Instantiate the callback workflow.
39
- */
40
- constructor(cache, callback) {
41
- this.cache = cache;
42
- this.callback = this.withLock(callback);
43
- this.lastExecutionTime = Date.now() - THROTTLE_MS;
44
- }
45
- /**
46
- * Get the document to add for speculative authentication. This also needs
47
- * to add a db field from the credentials source.
48
- */
49
-
50
-
51
- async speculativeAuth(connection, credentials) {
52
- // Check if the Client Cache has an access token.
53
- // If it does, cache the access token in the Connection Cache and send a JwtStepRequest
54
- // with the cached access token in the speculative authentication SASL payload.
55
- if (this.cache.hasAccessToken) {
56
- const accessToken = this.cache.getAccessToken();
57
- connection.accessToken = accessToken;
58
- const document = (0, command_builders_1.finishCommandDocument)(accessToken);
59
- document.db = credentials.source;
60
- return {
61
- speculativeAuthenticate: document
62
- };
63
- }
64
-
65
- return {};
66
- }
67
- /**
68
- * Reauthenticate the callback workflow. For this we invalidated the access token
69
- * in the cache and run the authentication steps again. No initial handshake needs
70
- * to be sent.
71
- */
72
-
73
-
74
- async reauthenticate(connection, credentials) {
75
- if (this.cache.hasAccessToken) {
76
- // Reauthentication implies the token has expired.
77
- if (connection.accessToken === this.cache.getAccessToken()) {
78
- // If connection's access token is the same as the cache's, remove
79
- // the token from the cache and connection.
80
- this.cache.removeAccessToken();
81
- delete connection.accessToken;
82
- } else {
83
- // If the connection's access token is different from the cache's, set
84
- // the cache's token on the connection and do not remove from the
85
- // cache.
86
- connection.accessToken = this.cache.getAccessToken();
87
- }
88
- }
89
-
90
- await this.execute(connection, credentials);
91
- }
92
- /**
93
- * Starts the callback authentication process. If there is a speculative
94
- * authentication document from the initial handshake, then we will use that
95
- * value to get the issuer, otherwise we will send the saslStart command.
96
- */
97
-
98
-
99
- async startAuthentication(connection, credentials, response) {
100
- let result;
101
-
102
- if (response?.speculativeAuthenticate) {
103
- result = response.speculativeAuthenticate;
104
- } else {
105
- result = await connection.command((0, utils_1.ns)(credentials.source), (0, command_builders_1.startCommandDocument)(credentials), undefined);
106
- }
107
-
108
- return result;
109
- }
110
- /**
111
- * Finishes the callback authentication process.
112
- */
113
-
114
-
115
- async finishAuthentication(connection, credentials, token, conversationId) {
116
- await connection.command((0, utils_1.ns)(credentials.source), (0, command_builders_1.finishCommandDocument)(token, conversationId), undefined);
117
- }
118
- /**
119
- * Executes the callback and validates the output.
120
- */
121
-
122
-
123
- async executeAndValidateCallback(params) {
124
- const result = await this.callback(params); // Validate that the result returned by the callback is acceptable. If it is not
125
- // we must clear the token result from the cache.
126
-
127
- if (isCallbackResultInvalid(result)) {
128
- throw new error_1.MongoMissingCredentialsError(CALLBACK_RESULT_ERROR);
129
- }
130
-
131
- return result;
132
- }
133
- /**
134
- * Ensure the callback is only executed one at a time and throttles the calls
135
- * to every 100ms.
136
- */
137
-
138
-
139
- withLock(callback) {
140
- let lock = Promise.resolve();
141
- return async params => {
142
- // We do this to ensure that we would never return the result of the
143
- // previous lock, only the current callback's value would get returned.
144
- await lock;
145
- lock = lock.catch(() => null).then(async () => {
146
- const difference = Date.now() - this.lastExecutionTime;
147
-
148
- if (difference <= THROTTLE_MS) {
149
- await (0, promises_1.setTimeout)(THROTTLE_MS - difference, {
150
- signal: params.timeoutContext
151
- });
152
- }
153
-
154
- this.lastExecutionTime = Date.now();
155
- return await callback(params);
156
- });
157
- return await lock;
158
- };
159
- }
160
-
161
- }
162
-
163
- exports.CallbackWorkflow = CallbackWorkflow;
164
- /**
165
- * Determines if a result returned from a request or refresh callback
166
- * function is invalid. This means the result is nullish, doesn't contain
167
- * the accessToken required field, and does not contain extra fields.
168
- */
169
-
170
- function isCallbackResultInvalid(tokenResult) {
171
- if (tokenResult == null || typeof tokenResult !== 'object') return true;
172
- if (!('accessToken' in tokenResult)) return true;
173
- return !Object.getOwnPropertyNames(tokenResult).every(prop => RESULT_PROPERTIES.includes(prop));
174
- }
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.finishCommandDocument = finishCommandDocument;
7
- exports.startCommandDocument = startCommandDocument;
8
-
9
- const bson_1 = require("../../../bson");
10
-
11
- const providers_1 = require("../providers");
12
- /**
13
- * Generate the finishing command document for authentication. Will be a
14
- * saslStart or saslContinue depending on the presence of a conversation id.
15
- */
16
-
17
-
18
- function finishCommandDocument(token, conversationId) {
19
- if (conversationId != null) {
20
- return {
21
- saslContinue: 1,
22
- conversationId: conversationId,
23
- payload: new bson_1.Binary(bson_1.BSON.serialize({
24
- jwt: token
25
- }))
26
- };
27
- } // saslContinue requires a conversationId in the command to be valid so in this
28
- // case the server allows "step two" to actually be a saslStart with the token
29
- // as the jwt since the use of the cached value has no correlating conversating
30
- // on the particular connection.
31
-
32
-
33
- return {
34
- saslStart: 1,
35
- mechanism: providers_1.AuthMechanism.MONGODB_OIDC,
36
- payload: new bson_1.Binary(bson_1.BSON.serialize({
37
- jwt: token
38
- }))
39
- };
40
- }
41
- /**
42
- * Generate the saslStart command document.
43
- */
44
-
45
-
46
- function startCommandDocument(credentials) {
47
- const payload = {};
48
-
49
- if (credentials.username) {
50
- payload.n = credentials.username;
51
- }
52
-
53
- return {
54
- saslStart: 1,
55
- autoAuthorize: 1,
56
- mechanism: providers_1.AuthMechanism.MONGODB_OIDC,
57
- payload: new bson_1.Binary(bson_1.BSON.serialize(payload))
58
- };
59
- }
@@ -1,58 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.callback = void 0;
7
-
8
- const error_1 = require("../../../error");
9
-
10
- const utils_1 = require("../../../utils");
11
- /** GCP base URL. */
12
-
13
-
14
- const GCP_BASE_URL = 'http://metadata/computeMetadata/v1/instance/service-accounts/default/identity';
15
- /** GCP request headers. */
16
-
17
- const GCP_HEADERS = Object.freeze({
18
- 'Metadata-Flavor': 'Google'
19
- });
20
- /** Error for when the token audience is missing in the environment. */
21
-
22
- const TOKEN_RESOURCE_MISSING_ERROR = 'TOKEN_RESOURCE must be set in the auth mechanism properties when ENVIRONMENT is gcp.';
23
- /**
24
- * The callback function to be used in the automated callback workflow.
25
- * @param params - The OIDC callback parameters.
26
- * @returns The OIDC response.
27
- */
28
-
29
- const callback = async params => {
30
- const tokenAudience = params.tokenAudience;
31
-
32
- if (!tokenAudience) {
33
- throw new error_1.MongoGCPError(TOKEN_RESOURCE_MISSING_ERROR);
34
- }
35
-
36
- return await getGcpTokenData(tokenAudience);
37
- };
38
-
39
- exports.callback = callback;
40
- /**
41
- * Hit the GCP endpoint to get the token data.
42
- */
43
-
44
- async function getGcpTokenData(tokenAudience) {
45
- const url = new URL(GCP_BASE_URL);
46
- url.searchParams.append('audience', tokenAudience);
47
- const response = await (0, utils_1.get)(url, {
48
- headers: GCP_HEADERS
49
- });
50
-
51
- if (response.status !== 200) {
52
- throw new error_1.MongoGCPError(`Status code ${response.status} returned from the GCP endpoint. Response body: ${response.body}`);
53
- }
54
-
55
- return {
56
- accessToken: response.body
57
- };
58
- }