oxygen-cli 1.40.2-beta.1 → 1.40.2

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 +1750 -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 -2
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -5
  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 -9
  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-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 +52 -33
  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 +73 -42
  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 +5 -13
  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/package.json +137 -139
  292. package/types/index.d.ts +70 -70
  293. package/types/module-eyes.d.ts +39 -39
  294. package/types/module-http.d.ts +163 -163
  295. package/types/module-log.d.ts +34 -34
  296. package/types/module-mob.d.ts +966 -966
  297. package/types/module-pdf.d.ts +40 -40
  298. package/types/module-proxy.d.ts +100 -100
  299. package/types/module-shell.d.ts +24 -24
  300. package/types/module-utils.d.ts +99 -99
  301. package/types/module-web.d.ts +1053 -1053
  302. package/types/module-win.d.ts +352 -352
  303. package/types/oxygen.d.ts +53 -53
  304. package/build/ox_modules/module-mongo.js +0 -302
  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,779 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ClientEncryption = void 0;
7
- exports.autoSelectSocketOptions = autoSelectSocketOptions;
8
-
9
- const bson_1 = require("../bson");
10
-
11
- const deps_1 = require("../deps");
12
-
13
- const timeout_1 = require("../timeout");
14
-
15
- const utils_1 = require("../utils");
16
-
17
- const cryptoCallbacks = require("./crypto_callbacks");
18
-
19
- const errors_1 = require("./errors");
20
-
21
- const index_1 = require("./providers/index");
22
-
23
- const state_machine_1 = require("./state_machine");
24
- /**
25
- * @public
26
- * The public interface for explicit in-use encryption
27
- */
28
-
29
-
30
- class ClientEncryption {
31
- /** @internal */
32
- static getMongoCrypt() {
33
- const encryption = (0, deps_1.getMongoDBClientEncryption)();
34
-
35
- if ('kModuleError' in encryption) {
36
- throw encryption.kModuleError;
37
- }
38
-
39
- return encryption.MongoCrypt;
40
- }
41
- /**
42
- * Create a new encryption instance
43
- *
44
- * @example
45
- * ```ts
46
- * new ClientEncryption(mongoClient, {
47
- * keyVaultNamespace: 'client.encryption',
48
- * kmsProviders: {
49
- * local: {
50
- * key: masterKey // The master key used for encryption/decryption. A 96-byte long Buffer
51
- * }
52
- * }
53
- * });
54
- * ```
55
- *
56
- * @example
57
- * ```ts
58
- * new ClientEncryption(mongoClient, {
59
- * keyVaultNamespace: 'client.encryption',
60
- * kmsProviders: {
61
- * aws: {
62
- * accessKeyId: AWS_ACCESS_KEY,
63
- * secretAccessKey: AWS_SECRET_KEY
64
- * }
65
- * }
66
- * });
67
- * ```
68
- */
69
-
70
-
71
- constructor(client, options) {
72
- this._client = client;
73
- this._proxyOptions = options.proxyOptions ?? {};
74
- this._tlsOptions = options.tlsOptions ?? {};
75
- this._kmsProviders = options.kmsProviders || {};
76
- const {
77
- timeoutMS
78
- } = (0, utils_1.resolveTimeoutOptions)(client, options);
79
- this._timeoutMS = timeoutMS;
80
- this._credentialProviders = options.credentialProviders;
81
-
82
- if (options.credentialProviders?.aws && !(0, index_1.isEmptyCredentials)('aws', this._kmsProviders)) {
83
- throw new errors_1.MongoCryptInvalidArgumentError('Can only provide a custom AWS credential provider when the state machine is configured for automatic AWS credential fetching');
84
- }
85
-
86
- if (options.keyVaultNamespace == null) {
87
- throw new errors_1.MongoCryptInvalidArgumentError('Missing required option `keyVaultNamespace`');
88
- }
89
-
90
- const mongoCryptOptions = { ...options,
91
- cryptoCallbacks,
92
- kmsProviders: !Buffer.isBuffer(this._kmsProviders) ? (0, bson_1.serialize)(this._kmsProviders) : this._kmsProviders
93
- };
94
- this._keyVaultNamespace = options.keyVaultNamespace;
95
- this._keyVaultClient = options.keyVaultClient || client;
96
- const MongoCrypt = ClientEncryption.getMongoCrypt();
97
- this._mongoCrypt = new MongoCrypt(mongoCryptOptions);
98
- }
99
- /**
100
- * Creates a data key used for explicit encryption and inserts it into the key vault namespace
101
- *
102
- * @example
103
- * ```ts
104
- * // Using async/await to create a local key
105
- * const dataKeyId = await clientEncryption.createDataKey('local');
106
- * ```
107
- *
108
- * @example
109
- * ```ts
110
- * // Using async/await to create an aws key
111
- * const dataKeyId = await clientEncryption.createDataKey('aws', {
112
- * masterKey: {
113
- * region: 'us-east-1',
114
- * key: 'xxxxxxxxxxxxxx' // CMK ARN here
115
- * }
116
- * });
117
- * ```
118
- *
119
- * @example
120
- * ```ts
121
- * // Using async/await to create an aws key with a keyAltName
122
- * const dataKeyId = await clientEncryption.createDataKey('aws', {
123
- * masterKey: {
124
- * region: 'us-east-1',
125
- * key: 'xxxxxxxxxxxxxx' // CMK ARN here
126
- * },
127
- * keyAltNames: [ 'mySpecialKey' ]
128
- * });
129
- * ```
130
- */
131
-
132
-
133
- async createDataKey(provider, options = {}) {
134
- if (options.keyAltNames && !Array.isArray(options.keyAltNames)) {
135
- throw new errors_1.MongoCryptInvalidArgumentError(`Option "keyAltNames" must be an array of strings, but was of type ${typeof options.keyAltNames}.`);
136
- }
137
-
138
- let keyAltNames = undefined;
139
-
140
- if (options.keyAltNames && options.keyAltNames.length > 0) {
141
- keyAltNames = options.keyAltNames.map((keyAltName, i) => {
142
- if (typeof keyAltName !== 'string') {
143
- throw new errors_1.MongoCryptInvalidArgumentError(`Option "keyAltNames" must be an array of strings, but item at index ${i} was of type ${typeof keyAltName}`);
144
- }
145
-
146
- return (0, bson_1.serialize)({
147
- keyAltName
148
- });
149
- });
150
- }
151
-
152
- let keyMaterial = undefined;
153
-
154
- if (options.keyMaterial) {
155
- keyMaterial = (0, bson_1.serialize)({
156
- keyMaterial: options.keyMaterial
157
- });
158
- }
159
-
160
- const dataKeyBson = (0, bson_1.serialize)({
161
- provider,
162
- ...options.masterKey
163
- });
164
-
165
- const context = this._mongoCrypt.makeDataKeyContext(dataKeyBson, {
166
- keyAltNames,
167
- keyMaterial
168
- });
169
-
170
- const stateMachine = new state_machine_1.StateMachine({
171
- proxyOptions: this._proxyOptions,
172
- tlsOptions: this._tlsOptions,
173
- socketOptions: autoSelectSocketOptions(this._client.s.options)
174
- });
175
- const timeoutContext = options?.timeoutContext ?? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, {
176
- timeoutMS: this._timeoutMS
177
- }));
178
- const dataKey = (0, bson_1.deserialize)(await stateMachine.execute(this, context, {
179
- timeoutContext
180
- }));
181
- const {
182
- db: dbName,
183
- collection: collectionName
184
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
185
- const {
186
- insertedId
187
- } = await this._keyVaultClient.db(dbName).collection(collectionName).insertOne(dataKey, {
188
- writeConcern: {
189
- w: 'majority'
190
- },
191
- timeoutMS: timeoutContext?.csotEnabled() ? timeoutContext?.getRemainingTimeMSOrThrow() : undefined
192
- });
193
- return insertedId;
194
- }
195
- /**
196
- * Searches the keyvault for any data keys matching the provided filter. If there are matches, rewrapManyDataKey then attempts to re-wrap the data keys using the provided options.
197
- *
198
- * If no matches are found, then no bulk write is performed.
199
- *
200
- * @example
201
- * ```ts
202
- * // rewrapping all data data keys (using a filter that matches all documents)
203
- * const filter = {};
204
- *
205
- * const result = await clientEncryption.rewrapManyDataKey(filter);
206
- * if (result.bulkWriteResult != null) {
207
- * // keys were re-wrapped, results will be available in the bulkWrite object.
208
- * }
209
- * ```
210
- *
211
- * @example
212
- * ```ts
213
- * // attempting to rewrap all data keys with no matches
214
- * const filter = { _id: new Binary() } // assume _id matches no documents in the database
215
- * const result = await clientEncryption.rewrapManyDataKey(filter);
216
- *
217
- * if (result.bulkWriteResult == null) {
218
- * // no keys matched, `bulkWriteResult` does not exist on the result object
219
- * }
220
- * ```
221
- */
222
-
223
-
224
- async rewrapManyDataKey(filter, options) {
225
- let keyEncryptionKeyBson = undefined;
226
-
227
- if (options) {
228
- const keyEncryptionKey = Object.assign({
229
- provider: options.provider
230
- }, options.masterKey);
231
- keyEncryptionKeyBson = (0, bson_1.serialize)(keyEncryptionKey);
232
- }
233
-
234
- const filterBson = (0, bson_1.serialize)(filter);
235
-
236
- const context = this._mongoCrypt.makeRewrapManyDataKeyContext(filterBson, keyEncryptionKeyBson);
237
-
238
- const stateMachine = new state_machine_1.StateMachine({
239
- proxyOptions: this._proxyOptions,
240
- tlsOptions: this._tlsOptions,
241
- socketOptions: autoSelectSocketOptions(this._client.s.options)
242
- });
243
- const timeoutContext = timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, {
244
- timeoutMS: this._timeoutMS
245
- }));
246
- const {
247
- v: dataKeys
248
- } = (0, bson_1.deserialize)(await stateMachine.execute(this, context, {
249
- timeoutContext
250
- }));
251
-
252
- if (dataKeys.length === 0) {
253
- return {};
254
- }
255
-
256
- const {
257
- db: dbName,
258
- collection: collectionName
259
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
260
- const replacements = dataKeys.map(key => ({
261
- updateOne: {
262
- filter: {
263
- _id: key._id
264
- },
265
- update: {
266
- $set: {
267
- masterKey: key.masterKey,
268
- keyMaterial: key.keyMaterial
269
- },
270
- $currentDate: {
271
- updateDate: true
272
- }
273
- }
274
- }
275
- }));
276
- const result = await this._keyVaultClient.db(dbName).collection(collectionName).bulkWrite(replacements, {
277
- writeConcern: {
278
- w: 'majority'
279
- },
280
- timeoutMS: timeoutContext.csotEnabled() ? timeoutContext?.remainingTimeMS : undefined
281
- });
282
- return {
283
- bulkWriteResult: result
284
- };
285
- }
286
- /**
287
- * Deletes the key with the provided id from the keyvault, if it exists.
288
- *
289
- * @example
290
- * ```ts
291
- * // delete a key by _id
292
- * const id = new Binary(); // id is a bson binary subtype 4 object
293
- * const { deletedCount } = await clientEncryption.deleteKey(id);
294
- *
295
- * if (deletedCount != null && deletedCount > 0) {
296
- * // successful deletion
297
- * }
298
- * ```
299
- *
300
- */
301
-
302
-
303
- async deleteKey(_id) {
304
- const {
305
- db: dbName,
306
- collection: collectionName
307
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
308
- return await this._keyVaultClient.db(dbName).collection(collectionName).deleteOne({
309
- _id
310
- }, {
311
- writeConcern: {
312
- w: 'majority'
313
- },
314
- timeoutMS: this._timeoutMS
315
- });
316
- }
317
- /**
318
- * Finds all the keys currently stored in the keyvault.
319
- *
320
- * This method will not throw.
321
- *
322
- * @returns a FindCursor over all keys in the keyvault.
323
- * @example
324
- * ```ts
325
- * // fetching all keys
326
- * const keys = await clientEncryption.getKeys().toArray();
327
- * ```
328
- */
329
-
330
-
331
- getKeys() {
332
- const {
333
- db: dbName,
334
- collection: collectionName
335
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
336
- return this._keyVaultClient.db(dbName).collection(collectionName).find({}, {
337
- readConcern: {
338
- level: 'majority'
339
- },
340
- timeoutMS: this._timeoutMS
341
- });
342
- }
343
- /**
344
- * Finds a key in the keyvault with the specified _id.
345
- *
346
- * Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
347
- * match the id. The promise rejects with an error if an error is thrown.
348
- * @example
349
- * ```ts
350
- * // getting a key by id
351
- * const id = new Binary(); // id is a bson binary subtype 4 object
352
- * const key = await clientEncryption.getKey(id);
353
- * if (!key) {
354
- * // key is null if there was no matching key
355
- * }
356
- * ```
357
- */
358
-
359
-
360
- async getKey(_id) {
361
- const {
362
- db: dbName,
363
- collection: collectionName
364
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
365
- return await this._keyVaultClient.db(dbName).collection(collectionName).findOne({
366
- _id
367
- }, {
368
- readConcern: {
369
- level: 'majority'
370
- },
371
- timeoutMS: this._timeoutMS
372
- });
373
- }
374
- /**
375
- * Finds a key in the keyvault which has the specified keyAltName.
376
- *
377
- * @param keyAltName - a keyAltName to search for a key
378
- * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
379
- * match the keyAltName. The promise rejects with an error if an error is thrown.
380
- * @example
381
- * ```ts
382
- * // get a key by alt name
383
- * const keyAltName = 'keyAltName';
384
- * const key = await clientEncryption.getKeyByAltName(keyAltName);
385
- * if (!key) {
386
- * // key is null if there is no matching key
387
- * }
388
- * ```
389
- */
390
-
391
-
392
- async getKeyByAltName(keyAltName) {
393
- const {
394
- db: dbName,
395
- collection: collectionName
396
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
397
- return await this._keyVaultClient.db(dbName).collection(collectionName).findOne({
398
- keyAltNames: keyAltName
399
- }, {
400
- readConcern: {
401
- level: 'majority'
402
- },
403
- timeoutMS: this._timeoutMS
404
- });
405
- }
406
- /**
407
- * Adds a keyAltName to a key identified by the provided _id.
408
- *
409
- * This method resolves to/returns the *old* key value (prior to adding the new altKeyName).
410
- *
411
- * @param _id - The id of the document to update.
412
- * @param keyAltName - a keyAltName to search for a key
413
- * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
414
- * match the id. The promise rejects with an error if an error is thrown.
415
- * @example
416
- * ```ts
417
- * // adding an keyAltName to a data key
418
- * const id = new Binary(); // id is a bson binary subtype 4 object
419
- * const keyAltName = 'keyAltName';
420
- * const oldKey = await clientEncryption.addKeyAltName(id, keyAltName);
421
- * if (!oldKey) {
422
- * // null is returned if there is no matching document with an id matching the supplied id
423
- * }
424
- * ```
425
- */
426
-
427
-
428
- async addKeyAltName(_id, keyAltName) {
429
- const {
430
- db: dbName,
431
- collection: collectionName
432
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
433
- const value = await this._keyVaultClient.db(dbName).collection(collectionName).findOneAndUpdate({
434
- _id
435
- }, {
436
- $addToSet: {
437
- keyAltNames: keyAltName
438
- }
439
- }, {
440
- writeConcern: {
441
- w: 'majority'
442
- },
443
- returnDocument: 'before',
444
- timeoutMS: this._timeoutMS
445
- });
446
- return value;
447
- }
448
- /**
449
- * Adds a keyAltName to a key identified by the provided _id.
450
- *
451
- * This method resolves to/returns the *old* key value (prior to removing the new altKeyName).
452
- *
453
- * If the removed keyAltName is the last keyAltName for that key, the `altKeyNames` property is unset from the document.
454
- *
455
- * @param _id - The id of the document to update.
456
- * @param keyAltName - a keyAltName to search for a key
457
- * @returns Returns a promise that either resolves to a {@link DataKey} if a document matches the key or null if no documents
458
- * match the id. The promise rejects with an error if an error is thrown.
459
- * @example
460
- * ```ts
461
- * // removing a key alt name from a data key
462
- * const id = new Binary(); // id is a bson binary subtype 4 object
463
- * const keyAltName = 'keyAltName';
464
- * const oldKey = await clientEncryption.removeKeyAltName(id, keyAltName);
465
- *
466
- * if (!oldKey) {
467
- * // null is returned if there is no matching document with an id matching the supplied id
468
- * }
469
- * ```
470
- */
471
-
472
-
473
- async removeKeyAltName(_id, keyAltName) {
474
- const {
475
- db: dbName,
476
- collection: collectionName
477
- } = utils_1.MongoDBCollectionNamespace.fromString(this._keyVaultNamespace);
478
- const pipeline = [{
479
- $set: {
480
- keyAltNames: {
481
- $cond: [{
482
- $eq: ['$keyAltNames', [keyAltName]]
483
- }, '$$REMOVE', {
484
- $filter: {
485
- input: '$keyAltNames',
486
- cond: {
487
- $ne: ['$$this', keyAltName]
488
- }
489
- }
490
- }]
491
- }
492
- }
493
- }];
494
- const value = await this._keyVaultClient.db(dbName).collection(collectionName).findOneAndUpdate({
495
- _id
496
- }, pipeline, {
497
- writeConcern: {
498
- w: 'majority'
499
- },
500
- returnDocument: 'before',
501
- timeoutMS: this._timeoutMS
502
- });
503
- return value;
504
- }
505
- /**
506
- * A convenience method for creating an encrypted collection.
507
- * This method will create data keys for any encryptedFields that do not have a `keyId` defined
508
- * and then create a new collection with the full set of encryptedFields.
509
- *
510
- * @param db - A Node.js driver Db object with which to create the collection
511
- * @param name - The name of the collection to be created
512
- * @param options - Options for createDataKey and for createCollection
513
- * @returns created collection and generated encryptedFields
514
- * @throws MongoCryptCreateDataKeyError - If part way through the process a createDataKey invocation fails, an error will be rejected that has the partial `encryptedFields` that were created.
515
- * @throws MongoCryptCreateEncryptedCollectionError - If creating the collection fails, an error will be rejected that has the entire `encryptedFields` that were created.
516
- */
517
-
518
-
519
- async createEncryptedCollection(db, name, options) {
520
- const {
521
- provider,
522
- masterKey,
523
- createCollectionOptions: {
524
- encryptedFields: { ...encryptedFields
525
- },
526
- ...createCollectionOptions
527
- }
528
- } = options;
529
- const timeoutContext = this._timeoutMS != null ? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, {
530
- timeoutMS: this._timeoutMS
531
- })) : undefined;
532
-
533
- if (Array.isArray(encryptedFields.fields)) {
534
- const createDataKeyPromises = encryptedFields.fields.map(async field => field == null || typeof field !== 'object' || field.keyId != null ? field : { ...field,
535
- keyId: await this.createDataKey(provider, {
536
- masterKey,
537
- // clone the timeoutContext
538
- // in order to avoid sharing the same timeout for server selection and connection checkout across different concurrent operations
539
- timeoutContext: timeoutContext?.csotEnabled() ? timeoutContext?.clone() : undefined
540
- })
541
- });
542
- const createDataKeyResolutions = await Promise.allSettled(createDataKeyPromises);
543
- encryptedFields.fields = createDataKeyResolutions.map((resolution, index) => resolution.status === 'fulfilled' ? resolution.value : encryptedFields.fields[index]);
544
- const rejection = createDataKeyResolutions.find(result => result.status === 'rejected');
545
-
546
- if (rejection != null) {
547
- throw new errors_1.MongoCryptCreateDataKeyError(encryptedFields, {
548
- cause: rejection.reason
549
- });
550
- }
551
- }
552
-
553
- try {
554
- const collection = await db.createCollection(name, { ...createCollectionOptions,
555
- encryptedFields,
556
- timeoutMS: timeoutContext?.csotEnabled() ? timeoutContext?.getRemainingTimeMSOrThrow() : undefined
557
- });
558
- return {
559
- collection,
560
- encryptedFields
561
- };
562
- } catch (cause) {
563
- throw new errors_1.MongoCryptCreateEncryptedCollectionError(encryptedFields, {
564
- cause
565
- });
566
- }
567
- }
568
- /**
569
- * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
570
- * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
571
- *
572
- * @param value - The value that you wish to serialize. Must be of a type that can be serialized into BSON
573
- * @param options -
574
- * @returns a Promise that either resolves with the encrypted value, or rejects with an error.
575
- *
576
- * @example
577
- * ```ts
578
- * // Encryption with async/await api
579
- * async function encryptMyData(value) {
580
- * const keyId = await clientEncryption.createDataKey('local');
581
- * return clientEncryption.encrypt(value, { keyId, algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
582
- * }
583
- * ```
584
- *
585
- * @example
586
- * ```ts
587
- * // Encryption using a keyAltName
588
- * async function encryptMyData(value) {
589
- * await clientEncryption.createDataKey('local', { keyAltNames: 'mySpecialKey' });
590
- * return clientEncryption.encrypt(value, { keyAltName: 'mySpecialKey', algorithm: 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic' });
591
- * }
592
- * ```
593
- */
594
-
595
-
596
- async encrypt(value, options) {
597
- return await this._encrypt(value, false, options);
598
- }
599
- /**
600
- * Encrypts a Match Expression or Aggregate Expression to query a range index.
601
- *
602
- * Only supported when queryType is "range" and algorithm is "Range".
603
- *
604
- * @param expression - a BSON document of one of the following forms:
605
- * 1. A Match Expression of this form:
606
- * `{$and: [{<field>: {$gt: <value1>}}, {<field>: {$lt: <value2> }}]}`
607
- * 2. An Aggregate Expression of this form:
608
- * `{$and: [{$gt: [<fieldpath>, <value1>]}, {$lt: [<fieldpath>, <value2>]}]}`
609
- *
610
- * `$gt` may also be `$gte`. `$lt` may also be `$lte`.
611
- *
612
- * @param options -
613
- * @returns Returns a Promise that either resolves with the encrypted value or rejects with an error.
614
- */
615
-
616
-
617
- async encryptExpression(expression, options) {
618
- return await this._encrypt(expression, true, options);
619
- }
620
- /**
621
- * Explicitly decrypt a provided encrypted value
622
- *
623
- * @param value - An encrypted value
624
- * @returns a Promise that either resolves with the decrypted value, or rejects with an error
625
- *
626
- * @example
627
- * ```ts
628
- * // Decrypting value with async/await API
629
- * async function decryptMyValue(value) {
630
- * return clientEncryption.decrypt(value);
631
- * }
632
- * ```
633
- */
634
-
635
-
636
- async decrypt(value) {
637
- const valueBuffer = (0, bson_1.serialize)({
638
- v: value
639
- });
640
-
641
- const context = this._mongoCrypt.makeExplicitDecryptionContext(valueBuffer);
642
-
643
- const stateMachine = new state_machine_1.StateMachine({
644
- proxyOptions: this._proxyOptions,
645
- tlsOptions: this._tlsOptions,
646
- socketOptions: autoSelectSocketOptions(this._client.s.options)
647
- });
648
- const timeoutContext = this._timeoutMS != null ? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, {
649
- timeoutMS: this._timeoutMS
650
- })) : undefined;
651
- const {
652
- v
653
- } = (0, bson_1.deserialize)(await stateMachine.execute(this, context, {
654
- timeoutContext
655
- }));
656
- return v;
657
- }
658
- /**
659
- * @internal
660
- * Ask the user for KMS credentials.
661
- *
662
- * This returns anything that looks like the kmsProviders original input
663
- * option. It can be empty, and any provider specified here will override
664
- * the original ones.
665
- */
666
-
667
-
668
- async askForKMSCredentials() {
669
- return await (0, index_1.refreshKMSCredentials)(this._kmsProviders, this._credentialProviders);
670
- }
671
-
672
- static get libmongocryptVersion() {
673
- return ClientEncryption.getMongoCrypt().libmongocryptVersion;
674
- }
675
- /**
676
- * @internal
677
- * A helper that perform explicit encryption of values and expressions.
678
- * Explicitly encrypt a provided value. Note that either `options.keyId` or `options.keyAltName` must
679
- * be specified. Specifying both `options.keyId` and `options.keyAltName` is considered an error.
680
- *
681
- * @param value - The value that you wish to encrypt. Must be of a type that can be serialized into BSON
682
- * @param expressionMode - a boolean that indicates whether or not to encrypt the value as an expression
683
- * @param options - options to pass to encrypt
684
- * @returns the raw result of the call to stateMachine.execute(). When expressionMode is set to true, the return
685
- * value will be a bson document. When false, the value will be a BSON Binary.
686
- *
687
- */
688
-
689
-
690
- async _encrypt(value, expressionMode, options) {
691
- const {
692
- algorithm,
693
- keyId,
694
- keyAltName,
695
- contentionFactor,
696
- queryType,
697
- rangeOptions
698
- } = options;
699
- const contextOptions = {
700
- expressionMode,
701
- algorithm
702
- };
703
-
704
- if (keyId) {
705
- contextOptions.keyId = keyId.buffer;
706
- }
707
-
708
- if (keyAltName) {
709
- if (keyId) {
710
- throw new errors_1.MongoCryptInvalidArgumentError(`"options" cannot contain both "keyId" and "keyAltName"`);
711
- }
712
-
713
- if (typeof keyAltName !== 'string') {
714
- throw new errors_1.MongoCryptInvalidArgumentError(`"options.keyAltName" must be of type string, but was of type ${typeof keyAltName}`);
715
- }
716
-
717
- contextOptions.keyAltName = (0, bson_1.serialize)({
718
- keyAltName
719
- });
720
- }
721
-
722
- if (typeof contentionFactor === 'number' || typeof contentionFactor === 'bigint') {
723
- contextOptions.contentionFactor = contentionFactor;
724
- }
725
-
726
- if (typeof queryType === 'string') {
727
- contextOptions.queryType = queryType;
728
- }
729
-
730
- if (typeof rangeOptions === 'object') {
731
- contextOptions.rangeOptions = (0, bson_1.serialize)(rangeOptions);
732
- }
733
-
734
- const valueBuffer = (0, bson_1.serialize)({
735
- v: value
736
- });
737
- const stateMachine = new state_machine_1.StateMachine({
738
- proxyOptions: this._proxyOptions,
739
- tlsOptions: this._tlsOptions,
740
- socketOptions: autoSelectSocketOptions(this._client.s.options)
741
- });
742
-
743
- const context = this._mongoCrypt.makeExplicitEncryptionContext(valueBuffer, contextOptions);
744
-
745
- const timeoutContext = this._timeoutMS != null ? timeout_1.TimeoutContext.create((0, utils_1.resolveTimeoutOptions)(this._client, {
746
- timeoutMS: this._timeoutMS
747
- })) : undefined;
748
- const {
749
- v
750
- } = (0, bson_1.deserialize)(await stateMachine.execute(this, context, {
751
- timeoutContext
752
- }));
753
- return v;
754
- }
755
-
756
- }
757
-
758
- exports.ClientEncryption = ClientEncryption;
759
- /**
760
- * Get the socket options from the client.
761
- * @param baseOptions - The mongo client options.
762
- * @returns ClientEncryptionSocketOptions
763
- */
764
-
765
- function autoSelectSocketOptions(baseOptions) {
766
- const options = {
767
- autoSelectFamily: true
768
- };
769
-
770
- if ('autoSelectFamily' in baseOptions) {
771
- options.autoSelectFamily = baseOptions.autoSelectFamily;
772
- }
773
-
774
- if ('autoSelectFamilyAttemptTimeout' in baseOptions) {
775
- options.autoSelectFamilyAttemptTimeout = baseOptions.autoSelectFamilyAttemptTimeout;
776
- }
777
-
778
- return options;
779
- }