oxygen-cli 1.40.1 → 1.40.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +1742 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +2 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +5 -1
  19. package/build/lib/debugger.js +1 -1
  20. package/build/lib/img-merge.js +1 -1
  21. package/build/lib/launcher.js +1 -1
  22. package/build/lib/logger.js +43 -43
  23. package/build/lib/moduleRequire.js +1 -1
  24. package/build/lib/parallel-launcher.js +1 -1
  25. package/build/lib/param-manager.js +1 -1
  26. package/build/lib/param-reader-csv.js +1 -1
  27. package/build/lib/param-reader-excel.js +1 -1
  28. package/build/lib/param-reader-json.js +1 -1
  29. package/build/lib/text-to-image.js +1 -1
  30. package/build/lib/util.js +1 -1
  31. package/build/model/case-result.js +1 -1
  32. package/build/model/failure.js +1 -1
  33. package/build/model/status.js +1 -1
  34. package/build/model/step-result.js +1 -1
  35. package/build/model/suite-result.js +1 -1
  36. package/build/model/test-result.js +1 -1
  37. package/build/model/testcase.js +1 -1
  38. package/build/model/testsuite.js +1 -1
  39. package/build/ox_modules/index.js +9 -1
  40. package/build/ox_modules/module-assert.js +37 -37
  41. package/build/ox_modules/module-date.js +24 -24
  42. package/build/ox_modules/module-db.js +52 -52
  43. package/build/ox_modules/module-email.js +59 -59
  44. package/build/ox_modules/module-eyes.js +34 -34
  45. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  46. package/build/ox_modules/module-http/ntlm.js +15 -15
  47. package/build/ox_modules/module-http.js +132 -132
  48. package/build/ox_modules/module-log.js +27 -27
  49. package/build/ox_modules/module-mailinator.js +87 -87
  50. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  51. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  52. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  53. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  54. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  55. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  56. package/build/ox_modules/module-mob/commands/back.js +16 -16
  57. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  58. package/build/ox_modules/module-mob/commands/click.js +17 -17
  59. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  61. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  62. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  63. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  64. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  65. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  66. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  67. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  68. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  69. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  70. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  71. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  73. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  75. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  77. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  78. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  79. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  80. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  81. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  82. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  83. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  84. package/build/ox_modules/module-mob/commands/index.js +1 -1
  85. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  86. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  88. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  91. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  92. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  93. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  94. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  95. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  96. package/build/ox_modules/module-mob/commands/open.js +17 -17
  97. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  98. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  99. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  100. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  101. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  102. package/build/ox_modules/module-mob/commands/select.js +24 -24
  103. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  104. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  105. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  106. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  107. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  108. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  109. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  110. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  111. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  112. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  113. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  116. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  117. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  118. package/build/ox_modules/module-mob/commands/type.js +20 -20
  119. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  120. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  121. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  122. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  123. package/build/ox_modules/module-mob.js +74 -74
  124. package/build/ox_modules/module-mongo.js +302 -0
  125. package/build/ox_modules/module-pdf.js +35 -35
  126. package/build/ox_modules/module-proxy.js +77 -77
  127. package/build/ox_modules/module-serial.js +55 -55
  128. package/build/ox_modules/module-shell.js +25 -25
  129. package/build/ox_modules/module-soap.js +72 -72
  130. package/build/ox_modules/module-twilio.js +41 -41
  131. package/build/ox_modules/module-utils.js +91 -91
  132. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  133. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  134. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  135. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  136. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  137. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  140. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  142. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  143. package/build/ox_modules/module-web/commands/back.js +16 -16
  144. package/build/ox_modules/module-web/commands/clear.js +18 -18
  145. package/build/ox_modules/module-web/commands/click.js +25 -25
  146. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  147. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  148. package/build/ox_modules/module-web/commands/debug.js +15 -15
  149. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  150. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  151. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  152. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  153. package/build/ox_modules/module-web/commands/execute.js +24 -24
  154. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  155. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  156. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  157. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  158. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  159. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  160. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  161. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  162. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  163. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  164. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  165. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  166. package/build/ox_modules/module-web/commands/getText.js +18 -18
  167. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  168. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  169. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  170. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  171. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  172. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  173. package/build/ox_modules/module-web/commands/index.js +1 -1
  174. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  175. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  176. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  177. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  178. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  179. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  180. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  181. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  182. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/mock.js +20 -20
  184. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  185. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  187. package/build/ox_modules/module-web/commands/open.js +16 -16
  188. package/build/ox_modules/module-web/commands/pause.js +15 -15
  189. package/build/ox_modules/module-web/commands/point.js +21 -21
  190. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  191. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  192. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  193. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  194. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  195. package/build/ox_modules/module-web/commands/select.js +23 -23
  196. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  197. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  198. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  199. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  200. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  201. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  202. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  203. package/build/ox_modules/module-web/commands/type.js +20 -20
  204. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  206. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  207. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  210. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  212. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  213. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  214. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  215. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  218. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  222. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  223. package/build/ox_modules/module-web.js +94 -94
  224. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  225. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  226. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  227. package/build/ox_modules/module-win/commands/back.js +11 -11
  228. package/build/ox_modules/module-win/commands/clear.js +13 -13
  229. package/build/ox_modules/module-win/commands/click.js +13 -13
  230. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  231. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  232. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  233. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  234. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  235. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  236. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  237. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  238. package/build/ox_modules/module-win/commands/getText.js +14 -14
  239. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  240. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  241. package/build/ox_modules/module-win/commands/index.js +1 -1
  242. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  243. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  244. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  245. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  246. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  247. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  248. package/build/ox_modules/module-win/commands/open.js +13 -13
  249. package/build/ox_modules/module-win/commands/pause.js +12 -12
  250. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  251. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  252. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  253. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  254. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  255. package/build/ox_modules/module-win/commands/tap.js +13 -13
  256. package/build/ox_modules/module-win/commands/type.js +16 -16
  257. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  258. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  259. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  260. package/build/ox_modules/module-win.js +47 -47
  261. package/build/ox_modules/utils.js +8 -8
  262. package/build/ox_reporters/excel/template.json +48 -48
  263. package/build/ox_reporters/html/index.ejs +163 -163
  264. package/build/ox_reporters/html/summary.ejs +77 -77
  265. package/build/ox_reporters/html/tests-details.ejs +134 -134
  266. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  267. package/build/ox_reporters/reporter-excel.js +1 -1
  268. package/build/ox_reporters/reporter-html.js +1 -1
  269. package/build/ox_reporters/reporter-json.js +1 -1
  270. package/build/ox_reporters/reporter-junit.js +1 -1
  271. package/build/ox_reporters/reporter-pdf.js +1 -1
  272. package/build/ox_reporters/reporter-rp.js +1 -1
  273. package/build/ox_reporters/reporter-xml.js +1 -1
  274. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  275. package/build/ox_services/service-devtools.js +1 -1
  276. package/build/reporter/FileReporterBase.js +1 -1
  277. package/build/reporter/ReportAggregator.js +13 -5
  278. package/build/reporter/ReporterBase.js +1 -1
  279. package/build/reporter/WebSocketReporter.js +1 -1
  280. package/build/runners/WorkerProcess.js +1 -1
  281. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  282. package/build/runners/cucumber/CucumberReporter.js +1 -1
  283. package/build/runners/cucumber/CucumberWorker.js +1 -1
  284. package/build/runners/cucumber/index.js +1 -1
  285. package/build/runners/cucumber/worker.js +1 -1
  286. package/build/runners/index.js +1 -1
  287. package/build/runners/oxygen/OxygenWorker.js +1 -1
  288. package/build/runners/oxygen/index.js +1 -1
  289. package/build/runners/oxygen/worker.js +1 -1
  290. package/config/default.json +6 -6
  291. package/log.txt +1614 -0
  292. package/package.json +139 -137
  293. package/reports/2025-06-08_231627/report.html +440 -0
  294. package/reports/2025-06-09_223615/report.html +440 -0
  295. package/transpiled/mongodb/etc/prepare.js +18 -0
  296. package/transpiled/mongodb/lib/admin.js +182 -0
  297. package/transpiled/mongodb/lib/beta.js +26 -0
  298. package/transpiled/mongodb/lib/bson.js +220 -0
  299. package/transpiled/mongodb/lib/bulk/common.js +1041 -0
  300. package/transpiled/mongodb/lib/bulk/ordered.js +76 -0
  301. package/transpiled/mongodb/lib/bulk/unordered.js +102 -0
  302. package/transpiled/mongodb/lib/change_stream.js +517 -0
  303. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +329 -0
  304. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +779 -0
  305. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +95 -0
  306. package/transpiled/mongodb/lib/client-side-encryption/errors.js +171 -0
  307. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +98 -0
  308. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +34 -0
  309. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +186 -0
  310. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +29 -0
  311. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +58 -0
  312. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +505 -0
  313. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +63 -0
  314. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +167 -0
  315. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +207 -0
  316. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +193 -0
  317. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +181 -0
  318. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +101 -0
  319. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +81 -0
  320. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +174 -0
  321. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +59 -0
  322. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +58 -0
  323. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +138 -0
  324. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +42 -0
  325. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +71 -0
  326. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +34 -0
  327. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +111 -0
  328. package/transpiled/mongodb/lib/cmap/auth/plain.js +43 -0
  329. package/transpiled/mongodb/lib/cmap/auth/providers.js +22 -0
  330. package/transpiled/mongodb/lib/cmap/auth/scram.js +318 -0
  331. package/transpiled/mongodb/lib/cmap/auth/x509.js +61 -0
  332. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +266 -0
  333. package/transpiled/mongodb/lib/cmap/commands.js +605 -0
  334. package/transpiled/mongodb/lib/cmap/connect.js +418 -0
  335. package/transpiled/mongodb/lib/cmap/connection.js +673 -0
  336. package/transpiled/mongodb/lib/cmap/connection_pool.js +688 -0
  337. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +254 -0
  338. package/transpiled/mongodb/lib/cmap/errors.js +128 -0
  339. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +278 -0
  340. package/transpiled/mongodb/lib/cmap/metrics.js +67 -0
  341. package/transpiled/mongodb/lib/cmap/stream_description.js +74 -0
  342. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +196 -0
  343. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +19 -0
  344. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +144 -0
  345. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +278 -0
  346. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +376 -0
  347. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +49 -0
  348. package/transpiled/mongodb/lib/collection.js +852 -0
  349. package/transpiled/mongodb/lib/connection_string.js +1452 -0
  350. package/transpiled/mongodb/lib/constants.js +162 -0
  351. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +1082 -0
  352. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +227 -0
  353. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +136 -0
  354. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +69 -0
  355. package/transpiled/mongodb/lib/cursor/find_cursor.js +476 -0
  356. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +48 -0
  357. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +46 -0
  358. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +30 -0
  359. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +125 -0
  360. package/transpiled/mongodb/lib/db.js +467 -0
  361. package/transpiled/mongodb/lib/deps.js +174 -0
  362. package/transpiled/mongodb/lib/encrypter.js +129 -0
  363. package/transpiled/mongodb/lib/error.js +1550 -0
  364. package/transpiled/mongodb/lib/explain.js +122 -0
  365. package/transpiled/mongodb/lib/gridfs/download.js +369 -0
  366. package/transpiled/mongodb/lib/gridfs/index.js +240 -0
  367. package/transpiled/mongodb/lib/gridfs/upload.js +446 -0
  368. package/transpiled/mongodb/lib/index.js +975 -0
  369. package/transpiled/mongodb/lib/mongo_client.js +626 -0
  370. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +98 -0
  371. package/transpiled/mongodb/lib/mongo_logger.js +812 -0
  372. package/transpiled/mongodb/lib/mongo_types.js +71 -0
  373. package/transpiled/mongodb/lib/operations/aggregate.js +129 -0
  374. package/transpiled/mongodb/lib/operations/bulk_write.js +48 -0
  375. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +96 -0
  376. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +409 -0
  377. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +5 -0
  378. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +144 -0
  379. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +228 -0
  380. package/transpiled/mongodb/lib/operations/collections.js +49 -0
  381. package/transpiled/mongodb/lib/operations/command.js +102 -0
  382. package/transpiled/mongodb/lib/operations/count.js +60 -0
  383. package/transpiled/mongodb/lib/operations/create_collection.js +109 -0
  384. package/transpiled/mongodb/lib/operations/delete.js +134 -0
  385. package/transpiled/mongodb/lib/operations/distinct.js +77 -0
  386. package/transpiled/mongodb/lib/operations/drop.js +102 -0
  387. package/transpiled/mongodb/lib/operations/estimated_document_count.js +47 -0
  388. package/transpiled/mongodb/lib/operations/execute_operation.js +251 -0
  389. package/transpiled/mongodb/lib/operations/find.js +197 -0
  390. package/transpiled/mongodb/lib/operations/find_and_modify.js +191 -0
  391. package/transpiled/mongodb/lib/operations/get_more.js +84 -0
  392. package/transpiled/mongodb/lib/operations/indexes.js +197 -0
  393. package/transpiled/mongodb/lib/operations/insert.js +138 -0
  394. package/transpiled/mongodb/lib/operations/is_capped.js +44 -0
  395. package/transpiled/mongodb/lib/operations/kill_cursors.js +58 -0
  396. package/transpiled/mongodb/lib/operations/list_collections.js +66 -0
  397. package/transpiled/mongodb/lib/operations/list_databases.js +56 -0
  398. package/transpiled/mongodb/lib/operations/operation.js +88 -0
  399. package/transpiled/mongodb/lib/operations/options_operation.js +44 -0
  400. package/transpiled/mongodb/lib/operations/profiling_level.js +42 -0
  401. package/transpiled/mongodb/lib/operations/remove_user.js +35 -0
  402. package/transpiled/mongodb/lib/operations/rename.js +48 -0
  403. package/transpiled/mongodb/lib/operations/run_command.js +64 -0
  404. package/transpiled/mongodb/lib/operations/search_indexes/create.js +41 -0
  405. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +51 -0
  406. package/transpiled/mongodb/lib/operations/search_indexes/update.js +40 -0
  407. package/transpiled/mongodb/lib/operations/set_profiling_level.js +70 -0
  408. package/transpiled/mongodb/lib/operations/stats.js +39 -0
  409. package/transpiled/mongodb/lib/operations/update.js +218 -0
  410. package/transpiled/mongodb/lib/operations/validate_collection.js +49 -0
  411. package/transpiled/mongodb/lib/read_concern.js +92 -0
  412. package/transpiled/mongodb/lib/read_preference.js +215 -0
  413. package/transpiled/mongodb/lib/resource_management.js +74 -0
  414. package/transpiled/mongodb/lib/sdam/common.js +53 -0
  415. package/transpiled/mongodb/lib/sdam/events.js +177 -0
  416. package/transpiled/mongodb/lib/sdam/monitor.js +656 -0
  417. package/transpiled/mongodb/lib/sdam/server.js +463 -0
  418. package/transpiled/mongodb/lib/sdam/server_description.js +196 -0
  419. package/transpiled/mongodb/lib/sdam/server_selection.js +283 -0
  420. package/transpiled/mongodb/lib/sdam/server_selection_events.js +112 -0
  421. package/transpiled/mongodb/lib/sdam/srv_polling.js +139 -0
  422. package/transpiled/mongodb/lib/sdam/topology.js +833 -0
  423. package/transpiled/mongodb/lib/sdam/topology_description.js +447 -0
  424. package/transpiled/mongodb/lib/sessions.js +988 -0
  425. package/transpiled/mongodb/lib/sort.js +123 -0
  426. package/transpiled/mongodb/lib/timeout.js +349 -0
  427. package/transpiled/mongodb/lib/transactions.js +149 -0
  428. package/transpiled/mongodb/lib/utils.js +1502 -0
  429. package/transpiled/mongodb/lib/write_concern.js +115 -0
  430. package/types/index.d.ts +70 -70
  431. package/types/module-eyes.d.ts +39 -39
  432. package/types/module-http.d.ts +163 -163
  433. package/types/module-log.d.ts +34 -34
  434. package/types/module-mob.d.ts +966 -966
  435. package/types/module-pdf.d.ts +40 -40
  436. package/types/module-proxy.d.ts +100 -100
  437. package/types/module-shell.d.ts +24 -24
  438. package/types/module-utils.d.ts +99 -99
  439. package/types/module-web.d.ts +1053 -1053
  440. package/types/module-win.d.ts +352 -352
  441. package/types/oxygen.d.ts +53 -53
@@ -0,0 +1,812 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MongoLogger = exports.MongoLoggableComponent = exports.SEVERITY_LEVEL_MAP = exports.DEFAULT_MAX_DOCUMENT_LENGTH = exports.SeverityLevel = void 0;
7
+ exports.parseSeverityFromString = parseSeverityFromString;
8
+ exports.createStdioLogger = createStdioLogger;
9
+ exports.stringifyWithMaxLen = stringifyWithMaxLen;
10
+ exports.defaultLogTransform = defaultLogTransform;
11
+
12
+ const util_1 = require("util");
13
+
14
+ const bson_1 = require("./bson");
15
+
16
+ const constants_1 = require("./constants");
17
+
18
+ const utils_1 = require("./utils");
19
+ /**
20
+ * @public
21
+ * Severity levels align with unix syslog.
22
+ * Most typical driver functions will log to debug.
23
+ */
24
+
25
+
26
+ exports.SeverityLevel = Object.freeze({
27
+ EMERGENCY: 'emergency',
28
+ ALERT: 'alert',
29
+ CRITICAL: 'critical',
30
+ ERROR: 'error',
31
+ WARNING: 'warn',
32
+ NOTICE: 'notice',
33
+ INFORMATIONAL: 'info',
34
+ DEBUG: 'debug',
35
+ TRACE: 'trace',
36
+ OFF: 'off'
37
+ });
38
+ /** @internal */
39
+
40
+ exports.DEFAULT_MAX_DOCUMENT_LENGTH = 1000;
41
+ /** @internal */
42
+
43
+ class SeverityLevelMap extends Map {
44
+ constructor(entries) {
45
+ const newEntries = [];
46
+
47
+ for (const [level, value] of entries) {
48
+ newEntries.push([value, level]);
49
+ }
50
+
51
+ newEntries.push(...entries);
52
+ super(newEntries);
53
+ }
54
+
55
+ getNumericSeverityLevel(severity) {
56
+ return this.get(severity);
57
+ }
58
+
59
+ getSeverityLevelName(level) {
60
+ return this.get(level);
61
+ }
62
+
63
+ }
64
+ /** @internal */
65
+
66
+
67
+ exports.SEVERITY_LEVEL_MAP = new SeverityLevelMap([[exports.SeverityLevel.OFF, -Infinity], [exports.SeverityLevel.EMERGENCY, 0], [exports.SeverityLevel.ALERT, 1], [exports.SeverityLevel.CRITICAL, 2], [exports.SeverityLevel.ERROR, 3], [exports.SeverityLevel.WARNING, 4], [exports.SeverityLevel.NOTICE, 5], [exports.SeverityLevel.INFORMATIONAL, 6], [exports.SeverityLevel.DEBUG, 7], [exports.SeverityLevel.TRACE, 8]]);
68
+ /** @public */
69
+
70
+ exports.MongoLoggableComponent = Object.freeze({
71
+ COMMAND: 'command',
72
+ TOPOLOGY: 'topology',
73
+ SERVER_SELECTION: 'serverSelection',
74
+ CONNECTION: 'connection',
75
+ CLIENT: 'client'
76
+ });
77
+ /**
78
+ * Parses a string as one of SeverityLevel
79
+ * @internal
80
+ *
81
+ * @param s - the value to be parsed
82
+ * @returns one of SeverityLevel if value can be parsed as such, otherwise null
83
+ */
84
+
85
+ function parseSeverityFromString(s) {
86
+ const validSeverities = Object.values(exports.SeverityLevel);
87
+ const lowerSeverity = s?.toLowerCase();
88
+
89
+ if (lowerSeverity != null && validSeverities.includes(lowerSeverity)) {
90
+ return lowerSeverity;
91
+ }
92
+
93
+ return null;
94
+ }
95
+ /** @internal */
96
+
97
+
98
+ function createStdioLogger(stream) {
99
+ return {
100
+ write: (0, util_1.promisify)((log, cb) => {
101
+ const logLine = (0, util_1.inspect)(log, {
102
+ compact: true,
103
+ breakLength: Infinity
104
+ });
105
+ stream.write(`${logLine}\n`, 'utf-8', cb);
106
+ return;
107
+ })
108
+ };
109
+ }
110
+ /**
111
+ * resolves the MONGODB_LOG_PATH and mongodbLogPath options from the environment and the
112
+ * mongo client options respectively. The mongodbLogPath can be either 'stdout', 'stderr', a NodeJS
113
+ * Writable or an object which has a `write` method with the signature:
114
+ * ```ts
115
+ * write(log: Log): void
116
+ * ```
117
+ *
118
+ * @returns the MongoDBLogWritable object to write logs to
119
+ */
120
+
121
+
122
+ function resolveLogPath({
123
+ MONGODB_LOG_PATH
124
+ }, {
125
+ mongodbLogPath
126
+ }) {
127
+ if (typeof mongodbLogPath === 'string' && /^stderr$/i.test(mongodbLogPath)) {
128
+ return {
129
+ mongodbLogPath: createStdioLogger(process.stderr),
130
+ mongodbLogPathIsStdErr: true
131
+ };
132
+ }
133
+
134
+ if (typeof mongodbLogPath === 'string' && /^stdout$/i.test(mongodbLogPath)) {
135
+ return {
136
+ mongodbLogPath: createStdioLogger(process.stdout),
137
+ mongodbLogPathIsStdErr: false
138
+ };
139
+ }
140
+
141
+ if (typeof mongodbLogPath === 'object' && typeof mongodbLogPath?.write === 'function') {
142
+ return {
143
+ mongodbLogPath: mongodbLogPath,
144
+ mongodbLogPathIsStdErr: false
145
+ };
146
+ }
147
+
148
+ if (MONGODB_LOG_PATH && /^stderr$/i.test(MONGODB_LOG_PATH)) {
149
+ return {
150
+ mongodbLogPath: createStdioLogger(process.stderr),
151
+ mongodbLogPathIsStdErr: true
152
+ };
153
+ }
154
+
155
+ if (MONGODB_LOG_PATH && /^stdout$/i.test(MONGODB_LOG_PATH)) {
156
+ return {
157
+ mongodbLogPath: createStdioLogger(process.stdout),
158
+ mongodbLogPathIsStdErr: false
159
+ };
160
+ }
161
+
162
+ return {
163
+ mongodbLogPath: createStdioLogger(process.stderr),
164
+ mongodbLogPathIsStdErr: true
165
+ };
166
+ }
167
+
168
+ function resolveSeverityConfiguration(clientOption, environmentOption, defaultSeverity) {
169
+ return parseSeverityFromString(clientOption) ?? parseSeverityFromString(environmentOption) ?? defaultSeverity;
170
+ }
171
+
172
+ function compareSeverity(s0, s1) {
173
+ const s0Num = exports.SEVERITY_LEVEL_MAP.getNumericSeverityLevel(s0);
174
+ const s1Num = exports.SEVERITY_LEVEL_MAP.getNumericSeverityLevel(s1);
175
+ return s0Num < s1Num ? -1 : s0Num > s1Num ? 1 : 0;
176
+ }
177
+ /** @internal */
178
+
179
+
180
+ function stringifyWithMaxLen(value, maxDocumentLength, options = {}) {
181
+ let strToTruncate = '';
182
+ let currentLength = 0;
183
+
184
+ const maxDocumentLengthEnsurer = function maxDocumentLengthEnsurer(key, value) {
185
+ if (currentLength >= maxDocumentLength) {
186
+ return undefined;
187
+ } // Account for root document
188
+
189
+
190
+ if (key === '') {
191
+ // Account for starting brace
192
+ currentLength += 1;
193
+ return value;
194
+ } // +4 accounts for 2 quotation marks, colon and comma after value
195
+ // Note that this potentially undercounts since it does not account for escape sequences which
196
+ // will have an additional backslash added to them once passed through JSON.stringify.
197
+
198
+
199
+ currentLength += key.length + 4;
200
+ if (value == null) return value;
201
+
202
+ switch (typeof value) {
203
+ case 'string':
204
+ // +2 accounts for quotes
205
+ // Note that this potentially undercounts similarly to the key length calculation
206
+ currentLength += value.length + 2;
207
+ break;
208
+
209
+ case 'number':
210
+ case 'bigint':
211
+ currentLength += String(value).length;
212
+ break;
213
+
214
+ case 'boolean':
215
+ currentLength += value ? 4 : 5;
216
+ break;
217
+
218
+ case 'object':
219
+ if ((0, utils_1.isUint8Array)(value)) {
220
+ // '{"$binary":{"base64":"<base64 string>","subType":"XX"}}'
221
+ // This is an estimate based on the fact that the base64 is approximately 1.33x the length of
222
+ // the actual binary sequence https://en.wikipedia.org/wiki/Base64
223
+ currentLength += 22 + value.byteLength + value.byteLength * 0.33 + 18 | 0;
224
+ } else if ('_bsontype' in value) {
225
+ const v = value;
226
+
227
+ switch (v._bsontype) {
228
+ case 'Int32':
229
+ currentLength += String(v.value).length;
230
+ break;
231
+
232
+ case 'Double':
233
+ // Account for representing integers as <value>.0
234
+ currentLength += (v.value | 0) === v.value ? String(v.value).length + 2 : String(v.value).length;
235
+ break;
236
+
237
+ case 'Long':
238
+ currentLength += v.toString().length;
239
+ break;
240
+
241
+ case 'ObjectId':
242
+ // '{"$oid":"XXXXXXXXXXXXXXXXXXXXXXXX"}'
243
+ currentLength += 35;
244
+ break;
245
+
246
+ case 'MaxKey':
247
+ case 'MinKey':
248
+ // '{"$maxKey":1}' or '{"$minKey":1}'
249
+ currentLength += 13;
250
+ break;
251
+
252
+ case 'Binary':
253
+ // '{"$binary":{"base64":"<base64 string>","subType":"XX"}}'
254
+ // This is an estimate based on the fact that the base64 is approximately 1.33x the length of
255
+ // the actual binary sequence https://en.wikipedia.org/wiki/Base64
256
+ currentLength += 22 + value.position + value.position * 0.33 + 18 | 0;
257
+ break;
258
+
259
+ case 'Timestamp':
260
+ // '{"$timestamp":{"t":<t>,"i":<i>}}'
261
+ currentLength += 19 + String(v.t).length + 5 + String(v.i).length + 2;
262
+ break;
263
+
264
+ case 'Code':
265
+ // '{"$code":"<code>"}' or '{"$code":"<code>","$scope":<scope>}'
266
+ if (v.scope == null) {
267
+ currentLength += v.code.length + 10 + 2;
268
+ } else {
269
+ // Ignoring actual scope object, so this undercounts by a significant amount
270
+ currentLength += v.code.length + 10 + 11;
271
+ }
272
+
273
+ break;
274
+
275
+ case 'BSONRegExp':
276
+ // '{"$regularExpression":{"pattern":"<pattern>","options":"<options>"}}'
277
+ currentLength += 34 + v.pattern.length + 13 + v.options.length + 3;
278
+ break;
279
+ }
280
+ }
281
+
282
+ }
283
+
284
+ return value;
285
+ };
286
+
287
+ if (typeof value === 'string') {
288
+ strToTruncate = value;
289
+ } else if (typeof value === 'function') {
290
+ strToTruncate = value.name;
291
+ } else {
292
+ try {
293
+ if (maxDocumentLength !== 0) {
294
+ strToTruncate = bson_1.EJSON.stringify(value, maxDocumentLengthEnsurer, 0, options);
295
+ } else {
296
+ strToTruncate = bson_1.EJSON.stringify(value, options);
297
+ }
298
+ } catch (e) {
299
+ strToTruncate = `Extended JSON serialization failed with: ${e.message}`;
300
+ }
301
+ } // handle truncation that occurs in the middle of multi-byte codepoints
302
+
303
+
304
+ if (maxDocumentLength !== 0 && strToTruncate.length > maxDocumentLength && strToTruncate.charCodeAt(maxDocumentLength - 1) !== strToTruncate.codePointAt(maxDocumentLength - 1)) {
305
+ maxDocumentLength--;
306
+
307
+ if (maxDocumentLength === 0) {
308
+ return '';
309
+ }
310
+ }
311
+
312
+ return maxDocumentLength !== 0 && strToTruncate.length > maxDocumentLength ? `${strToTruncate.slice(0, maxDocumentLength)}...` : strToTruncate;
313
+ }
314
+
315
+ function isLogConvertible(obj) {
316
+ const objAsLogConvertible = obj; // eslint-disable-next-line no-restricted-syntax
317
+
318
+ return objAsLogConvertible.toLog !== undefined && typeof objAsLogConvertible.toLog === 'function';
319
+ }
320
+
321
+ function attachServerSelectionFields(log, serverSelectionEvent, maxDocumentLength = exports.DEFAULT_MAX_DOCUMENT_LENGTH) {
322
+ const {
323
+ selector,
324
+ operation,
325
+ topologyDescription,
326
+ message
327
+ } = serverSelectionEvent;
328
+ log.selector = stringifyWithMaxLen(selector, maxDocumentLength);
329
+ log.operation = operation;
330
+ log.topologyDescription = stringifyWithMaxLen(topologyDescription, maxDocumentLength);
331
+ log.message = message;
332
+ return log;
333
+ }
334
+
335
+ function attachCommandFields(log, commandEvent) {
336
+ log.commandName = commandEvent.commandName;
337
+ log.requestId = commandEvent.requestId;
338
+ log.driverConnectionId = commandEvent.connectionId;
339
+ const {
340
+ host,
341
+ port
342
+ } = utils_1.HostAddress.fromString(commandEvent.address).toHostPort();
343
+ log.serverHost = host;
344
+ log.serverPort = port;
345
+
346
+ if (commandEvent?.serviceId) {
347
+ log.serviceId = commandEvent.serviceId.toHexString();
348
+ }
349
+
350
+ log.databaseName = commandEvent.databaseName;
351
+ log.serverConnectionId = commandEvent.serverConnectionId;
352
+ return log;
353
+ }
354
+
355
+ function attachConnectionFields(log, event) {
356
+ const {
357
+ host,
358
+ port
359
+ } = utils_1.HostAddress.fromString(event.address).toHostPort();
360
+ log.serverHost = host;
361
+ log.serverPort = port;
362
+ return log;
363
+ }
364
+
365
+ function attachSDAMFields(log, sdamEvent) {
366
+ log.topologyId = sdamEvent.topologyId;
367
+ return log;
368
+ }
369
+
370
+ function attachServerHeartbeatFields(log, serverHeartbeatEvent) {
371
+ const {
372
+ awaited,
373
+ connectionId
374
+ } = serverHeartbeatEvent;
375
+ log.awaited = awaited;
376
+ log.driverConnectionId = serverHeartbeatEvent.connectionId;
377
+ const {
378
+ host,
379
+ port
380
+ } = utils_1.HostAddress.fromString(connectionId).toHostPort();
381
+ log.serverHost = host;
382
+ log.serverPort = port;
383
+ return log;
384
+ }
385
+ /** @internal */
386
+
387
+
388
+ function defaultLogTransform(logObject, maxDocumentLength = exports.DEFAULT_MAX_DOCUMENT_LENGTH) {
389
+ let log = Object.create(null);
390
+
391
+ switch (logObject.name) {
392
+ case constants_1.SERVER_SELECTION_STARTED:
393
+ log = attachServerSelectionFields(log, logObject, maxDocumentLength);
394
+ return log;
395
+
396
+ case constants_1.SERVER_SELECTION_FAILED:
397
+ log = attachServerSelectionFields(log, logObject, maxDocumentLength);
398
+ log.failure = logObject.failure?.message;
399
+ return log;
400
+
401
+ case constants_1.SERVER_SELECTION_SUCCEEDED:
402
+ log = attachServerSelectionFields(log, logObject, maxDocumentLength);
403
+ log.serverHost = logObject.serverHost;
404
+ log.serverPort = logObject.serverPort;
405
+ return log;
406
+
407
+ case constants_1.WAITING_FOR_SUITABLE_SERVER:
408
+ log = attachServerSelectionFields(log, logObject, maxDocumentLength);
409
+ log.remainingTimeMS = logObject.remainingTimeMS;
410
+ return log;
411
+
412
+ case constants_1.COMMAND_STARTED:
413
+ log = attachCommandFields(log, logObject);
414
+ log.message = 'Command started';
415
+ log.command = stringifyWithMaxLen(logObject.command, maxDocumentLength, {
416
+ relaxed: true
417
+ });
418
+ log.databaseName = logObject.databaseName;
419
+ return log;
420
+
421
+ case constants_1.COMMAND_SUCCEEDED:
422
+ log = attachCommandFields(log, logObject);
423
+ log.message = 'Command succeeded';
424
+ log.durationMS = logObject.duration;
425
+ log.reply = stringifyWithMaxLen(logObject.reply, maxDocumentLength, {
426
+ relaxed: true
427
+ });
428
+ return log;
429
+
430
+ case constants_1.COMMAND_FAILED:
431
+ log = attachCommandFields(log, logObject);
432
+ log.message = 'Command failed';
433
+ log.durationMS = logObject.duration;
434
+ log.failure = logObject.failure?.message ?? '(redacted)';
435
+ return log;
436
+
437
+ case constants_1.CONNECTION_POOL_CREATED:
438
+ log = attachConnectionFields(log, logObject);
439
+ log.message = 'Connection pool created';
440
+
441
+ if (logObject.options) {
442
+ const {
443
+ maxIdleTimeMS,
444
+ minPoolSize,
445
+ maxPoolSize,
446
+ maxConnecting,
447
+ waitQueueTimeoutMS
448
+ } = logObject.options;
449
+ log = { ...log,
450
+ maxIdleTimeMS,
451
+ minPoolSize,
452
+ maxPoolSize,
453
+ maxConnecting,
454
+ waitQueueTimeoutMS
455
+ };
456
+ }
457
+
458
+ return log;
459
+
460
+ case constants_1.CONNECTION_POOL_READY:
461
+ log = attachConnectionFields(log, logObject);
462
+ log.message = 'Connection pool ready';
463
+ return log;
464
+
465
+ case constants_1.CONNECTION_POOL_CLEARED:
466
+ log = attachConnectionFields(log, logObject);
467
+ log.message = 'Connection pool cleared';
468
+
469
+ if (logObject.serviceId?._bsontype === 'ObjectId') {
470
+ log.serviceId = logObject.serviceId?.toHexString();
471
+ }
472
+
473
+ return log;
474
+
475
+ case constants_1.CONNECTION_POOL_CLOSED:
476
+ log = attachConnectionFields(log, logObject);
477
+ log.message = 'Connection pool closed';
478
+ return log;
479
+
480
+ case constants_1.CONNECTION_CREATED:
481
+ log = attachConnectionFields(log, logObject);
482
+ log.message = 'Connection created';
483
+ log.driverConnectionId = logObject.connectionId;
484
+ return log;
485
+
486
+ case constants_1.CONNECTION_READY:
487
+ log = attachConnectionFields(log, logObject);
488
+ log.message = 'Connection ready';
489
+ log.driverConnectionId = logObject.connectionId;
490
+ log.durationMS = logObject.durationMS;
491
+ return log;
492
+
493
+ case constants_1.CONNECTION_CLOSED:
494
+ log = attachConnectionFields(log, logObject);
495
+ log.message = 'Connection closed';
496
+ log.driverConnectionId = logObject.connectionId;
497
+
498
+ switch (logObject.reason) {
499
+ case 'stale':
500
+ log.reason = 'Connection became stale because the pool was cleared';
501
+ break;
502
+
503
+ case 'idle':
504
+ log.reason = 'Connection has been available but unused for longer than the configured max idle time';
505
+ break;
506
+
507
+ case 'error':
508
+ log.reason = 'An error occurred while using the connection';
509
+
510
+ if (logObject.error) {
511
+ log.error = logObject.error;
512
+ }
513
+
514
+ break;
515
+
516
+ case 'poolClosed':
517
+ log.reason = 'Connection pool was closed';
518
+ break;
519
+
520
+ default:
521
+ log.reason = `Unknown close reason: ${logObject.reason}`;
522
+ }
523
+
524
+ return log;
525
+
526
+ case constants_1.CONNECTION_CHECK_OUT_STARTED:
527
+ log = attachConnectionFields(log, logObject);
528
+ log.message = 'Connection checkout started';
529
+ return log;
530
+
531
+ case constants_1.CONNECTION_CHECK_OUT_FAILED:
532
+ log = attachConnectionFields(log, logObject);
533
+ log.message = 'Connection checkout failed';
534
+
535
+ switch (logObject.reason) {
536
+ case 'poolClosed':
537
+ log.reason = 'Connection pool was closed';
538
+ break;
539
+
540
+ case 'timeout':
541
+ log.reason = 'Wait queue timeout elapsed without a connection becoming available';
542
+ break;
543
+
544
+ case 'connectionError':
545
+ log.reason = 'An error occurred while trying to establish a new connection';
546
+
547
+ if (logObject.error) {
548
+ log.error = logObject.error;
549
+ }
550
+
551
+ break;
552
+
553
+ default:
554
+ log.reason = `Unknown close reason: ${logObject.reason}`;
555
+ }
556
+
557
+ log.durationMS = logObject.durationMS;
558
+ return log;
559
+
560
+ case constants_1.CONNECTION_CHECKED_OUT:
561
+ log = attachConnectionFields(log, logObject);
562
+ log.message = 'Connection checked out';
563
+ log.driverConnectionId = logObject.connectionId;
564
+ log.durationMS = logObject.durationMS;
565
+ return log;
566
+
567
+ case constants_1.CONNECTION_CHECKED_IN:
568
+ log = attachConnectionFields(log, logObject);
569
+ log.message = 'Connection checked in';
570
+ log.driverConnectionId = logObject.connectionId;
571
+ return log;
572
+
573
+ case constants_1.SERVER_OPENING:
574
+ log = attachSDAMFields(log, logObject);
575
+ log = attachConnectionFields(log, logObject);
576
+ log.message = 'Starting server monitoring';
577
+ return log;
578
+
579
+ case constants_1.SERVER_CLOSED:
580
+ log = attachSDAMFields(log, logObject);
581
+ log = attachConnectionFields(log, logObject);
582
+ log.message = 'Stopped server monitoring';
583
+ return log;
584
+
585
+ case constants_1.SERVER_HEARTBEAT_STARTED:
586
+ log = attachSDAMFields(log, logObject);
587
+ log = attachServerHeartbeatFields(log, logObject);
588
+ log.message = 'Server heartbeat started';
589
+ return log;
590
+
591
+ case constants_1.SERVER_HEARTBEAT_SUCCEEDED:
592
+ log = attachSDAMFields(log, logObject);
593
+ log = attachServerHeartbeatFields(log, logObject);
594
+ log.message = 'Server heartbeat succeeded';
595
+ log.durationMS = logObject.duration;
596
+ log.serverConnectionId = logObject.serverConnectionId;
597
+ log.reply = stringifyWithMaxLen(logObject.reply, maxDocumentLength, {
598
+ relaxed: true
599
+ });
600
+ return log;
601
+
602
+ case constants_1.SERVER_HEARTBEAT_FAILED:
603
+ log = attachSDAMFields(log, logObject);
604
+ log = attachServerHeartbeatFields(log, logObject);
605
+ log.message = 'Server heartbeat failed';
606
+ log.durationMS = logObject.duration;
607
+ log.failure = logObject.failure?.message;
608
+ return log;
609
+
610
+ case constants_1.TOPOLOGY_OPENING:
611
+ log = attachSDAMFields(log, logObject);
612
+ log.message = 'Starting topology monitoring';
613
+ return log;
614
+
615
+ case constants_1.TOPOLOGY_CLOSED:
616
+ log = attachSDAMFields(log, logObject);
617
+ log.message = 'Stopped topology monitoring';
618
+ return log;
619
+
620
+ case constants_1.TOPOLOGY_DESCRIPTION_CHANGED:
621
+ log = attachSDAMFields(log, logObject);
622
+ log.message = 'Topology description changed';
623
+ log.previousDescription = log.reply = stringifyWithMaxLen(logObject.previousDescription, maxDocumentLength);
624
+ log.newDescription = log.reply = stringifyWithMaxLen(logObject.newDescription, maxDocumentLength);
625
+ return log;
626
+
627
+ default:
628
+ for (const [key, value] of Object.entries(logObject)) {
629
+ if (value != null) log[key] = value;
630
+ }
631
+
632
+ }
633
+
634
+ return log;
635
+ }
636
+ /** @internal */
637
+
638
+
639
+ class MongoLogger {
640
+ constructor(options) {
641
+ this.pendingLog = null;
642
+ /**
643
+ * This method should be used when logging errors that do not have a public driver API for
644
+ * reporting errors.
645
+ */
646
+
647
+ this.error = this.log.bind(this, 'error');
648
+ /**
649
+ * This method should be used to log situations where undesirable application behaviour might
650
+ * occur. For example, failing to end sessions on `MongoClient.close`.
651
+ */
652
+
653
+ this.warn = this.log.bind(this, 'warn');
654
+ /**
655
+ * This method should be used to report high-level information about normal driver behaviour.
656
+ * For example, the creation of a `MongoClient`.
657
+ */
658
+
659
+ this.info = this.log.bind(this, 'info');
660
+ /**
661
+ * This method should be used to report information that would be helpful when debugging an
662
+ * application. For example, a command starting, succeeding or failing.
663
+ */
664
+
665
+ this.debug = this.log.bind(this, 'debug');
666
+ /**
667
+ * This method should be used to report fine-grained details related to logic flow. For example,
668
+ * entering and exiting a function body.
669
+ */
670
+
671
+ this.trace = this.log.bind(this, 'trace');
672
+ this.componentSeverities = options.componentSeverities;
673
+ this.maxDocumentLength = options.maxDocumentLength;
674
+ this.logDestination = options.logDestination;
675
+ this.logDestinationIsStdErr = options.logDestinationIsStdErr;
676
+ this.severities = this.createLoggingSeverities();
677
+ }
678
+
679
+ createLoggingSeverities() {
680
+ const severities = Object();
681
+
682
+ for (const component of Object.values(exports.MongoLoggableComponent)) {
683
+ severities[component] = {};
684
+
685
+ for (const severityLevel of Object.values(exports.SeverityLevel)) {
686
+ severities[component][severityLevel] = compareSeverity(severityLevel, this.componentSeverities[component]) <= 0;
687
+ }
688
+ }
689
+
690
+ return severities;
691
+ }
692
+
693
+ turnOffSeverities() {
694
+ for (const component of Object.values(exports.MongoLoggableComponent)) {
695
+ this.componentSeverities[component] = exports.SeverityLevel.OFF;
696
+
697
+ for (const severityLevel of Object.values(exports.SeverityLevel)) {
698
+ this.severities[component][severityLevel] = false;
699
+ }
700
+ }
701
+ }
702
+
703
+ logWriteFailureHandler(error) {
704
+ if (this.logDestinationIsStdErr) {
705
+ this.turnOffSeverities();
706
+ this.clearPendingLog();
707
+ return;
708
+ }
709
+
710
+ this.logDestination = createStdioLogger(process.stderr);
711
+ this.logDestinationIsStdErr = true;
712
+ this.clearPendingLog();
713
+ this.error(exports.MongoLoggableComponent.CLIENT, {
714
+ toLog: function () {
715
+ return {
716
+ message: 'User input for mongodbLogPath is now invalid. Logging is halted.',
717
+ error: error.message
718
+ };
719
+ }
720
+ });
721
+ this.turnOffSeverities();
722
+ this.clearPendingLog();
723
+ }
724
+
725
+ clearPendingLog() {
726
+ this.pendingLog = null;
727
+ }
728
+
729
+ willLog(component, severity) {
730
+ if (severity === exports.SeverityLevel.OFF) return false;
731
+ return this.severities[component][severity];
732
+ }
733
+
734
+ log(severity, component, message) {
735
+ if (!this.willLog(component, severity)) return;
736
+ let logMessage = {
737
+ t: new Date(),
738
+ c: component,
739
+ s: severity
740
+ };
741
+
742
+ if (typeof message === 'string') {
743
+ logMessage.message = message;
744
+ } else if (typeof message === 'object') {
745
+ if (isLogConvertible(message)) {
746
+ logMessage = { ...logMessage,
747
+ ...message.toLog()
748
+ };
749
+ } else {
750
+ logMessage = { ...logMessage,
751
+ ...defaultLogTransform(message, this.maxDocumentLength)
752
+ };
753
+ }
754
+ }
755
+
756
+ if ((0, utils_1.isPromiseLike)(this.pendingLog)) {
757
+ this.pendingLog = this.pendingLog.then(() => this.logDestination.write(logMessage)).then(this.clearPendingLog.bind(this), this.logWriteFailureHandler.bind(this));
758
+ return;
759
+ }
760
+
761
+ try {
762
+ const logResult = this.logDestination.write(logMessage);
763
+
764
+ if ((0, utils_1.isPromiseLike)(logResult)) {
765
+ this.pendingLog = logResult.then(this.clearPendingLog.bind(this), this.logWriteFailureHandler.bind(this));
766
+ }
767
+ } catch (error) {
768
+ this.logWriteFailureHandler(error);
769
+ }
770
+ }
771
+ /**
772
+ * Merges options set through environment variables and the MongoClient, preferring environment
773
+ * variables when both are set, and substituting defaults for values not set. Options set in
774
+ * constructor take precedence over both environment variables and MongoClient options.
775
+ *
776
+ * @remarks
777
+ * When parsing component severity levels, invalid values are treated as unset and replaced with
778
+ * the default severity.
779
+ *
780
+ * @param envOptions - options set for the logger from the environment
781
+ * @param clientOptions - options set for the logger in the MongoClient options
782
+ * @returns a MongoLoggerOptions object to be used when instantiating a new MongoLogger
783
+ */
784
+
785
+
786
+ static resolveOptions(envOptions, clientOptions) {
787
+ // client options take precedence over env options
788
+ const resolvedLogPath = resolveLogPath(envOptions, clientOptions);
789
+ const combinedOptions = { ...envOptions,
790
+ ...clientOptions,
791
+ mongodbLogPath: resolvedLogPath.mongodbLogPath,
792
+ mongodbLogPathIsStdErr: resolvedLogPath.mongodbLogPathIsStdErr
793
+ };
794
+ const defaultSeverity = resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.default, combinedOptions.MONGODB_LOG_ALL, exports.SeverityLevel.OFF);
795
+ return {
796
+ componentSeverities: {
797
+ command: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.command, combinedOptions.MONGODB_LOG_COMMAND, defaultSeverity),
798
+ topology: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.topology, combinedOptions.MONGODB_LOG_TOPOLOGY, defaultSeverity),
799
+ serverSelection: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.serverSelection, combinedOptions.MONGODB_LOG_SERVER_SELECTION, defaultSeverity),
800
+ connection: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.connection, combinedOptions.MONGODB_LOG_CONNECTION, defaultSeverity),
801
+ client: resolveSeverityConfiguration(combinedOptions.mongodbLogComponentSeverities?.client, combinedOptions.MONGODB_LOG_CLIENT, defaultSeverity),
802
+ default: defaultSeverity
803
+ },
804
+ maxDocumentLength: combinedOptions.mongodbLogMaxDocumentLength ?? (0, utils_1.parseUnsignedInteger)(combinedOptions.MONGODB_LOG_MAX_DOCUMENT_LENGTH) ?? 1000,
805
+ logDestination: combinedOptions.mongodbLogPath,
806
+ logDestinationIsStdErr: combinedOptions.mongodbLogPathIsStdErr
807
+ };
808
+ }
809
+
810
+ }
811
+
812
+ exports.MongoLogger = MongoLogger;