oxygen-cli 1.40.2-beta.1 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +1755 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +1 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -1
  19. package/build/lib/cli.js +1 -1
  20. package/build/lib/debugger.js +1 -1
  21. package/build/lib/img-merge.js +1 -1
  22. package/build/lib/launcher.js +1 -1
  23. package/build/lib/logger.js +43 -43
  24. package/build/lib/moduleRequire.js +1 -1
  25. package/build/lib/parallel-launcher.js +1 -1
  26. package/build/lib/param-manager.js +1 -1
  27. package/build/lib/param-reader-csv.js +1 -1
  28. package/build/lib/param-reader-excel.js +1 -1
  29. package/build/lib/param-reader-json.js +1 -1
  30. package/build/lib/text-to-image.js +1 -1
  31. package/build/lib/util.js +1 -1
  32. package/build/model/case-result.js +1 -1
  33. package/build/model/failure.js +1 -1
  34. package/build/model/status.js +1 -1
  35. package/build/model/step-result.js +1 -1
  36. package/build/model/suite-result.js +1 -1
  37. package/build/model/test-result.js +1 -1
  38. package/build/model/testcase.js +1 -1
  39. package/build/model/testsuite.js +1 -1
  40. package/build/ox_modules/index.js +1 -1
  41. package/build/ox_modules/module-assert.js +37 -37
  42. package/build/ox_modules/module-date.js +24 -24
  43. package/build/ox_modules/module-db.js +52 -52
  44. package/build/ox_modules/module-email.js +59 -59
  45. package/build/ox_modules/module-eyes.js +34 -34
  46. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  47. package/build/ox_modules/module-http/ntlm.js +15 -15
  48. package/build/ox_modules/module-http.js +132 -132
  49. package/build/ox_modules/module-log.js +27 -27
  50. package/build/ox_modules/module-mailinator.js +87 -87
  51. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  52. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  53. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  54. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  55. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  56. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  57. package/build/ox_modules/module-mob/commands/back.js +16 -16
  58. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  59. package/build/ox_modules/module-mob/commands/click.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  61. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  62. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  63. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  64. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  65. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  66. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  67. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  68. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  69. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  70. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  71. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  73. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  75. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  77. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  78. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  79. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  80. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  81. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  82. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  83. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  84. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  85. package/build/ox_modules/module-mob/commands/index.js +1 -1
  86. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  88. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  91. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  92. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  93. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  94. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  95. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  96. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  97. package/build/ox_modules/module-mob/commands/open.js +17 -17
  98. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  99. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  100. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  101. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  102. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  103. package/build/ox_modules/module-mob/commands/select.js +24 -24
  104. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  105. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  106. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  107. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  108. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  109. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  110. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  111. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  112. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  113. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  116. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  117. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  118. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  119. package/build/ox_modules/module-mob/commands/type.js +20 -20
  120. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  121. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  122. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  123. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  124. package/build/ox_modules/module-mob.js +74 -74
  125. package/build/ox_modules/module-mongo.js +82 -82
  126. package/build/ox_modules/module-pdf.js +35 -35
  127. package/build/ox_modules/module-proxy.js +77 -77
  128. package/build/ox_modules/module-serial.js +55 -55
  129. package/build/ox_modules/module-shell.js +52 -33
  130. package/build/ox_modules/module-soap.js +72 -72
  131. package/build/ox_modules/module-twilio.js +41 -41
  132. package/build/ox_modules/module-utils.js +91 -91
  133. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  134. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  135. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  136. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  137. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  140. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  142. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  143. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  144. package/build/ox_modules/module-web/commands/back.js +16 -16
  145. package/build/ox_modules/module-web/commands/clear.js +18 -18
  146. package/build/ox_modules/module-web/commands/click.js +25 -25
  147. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  148. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  149. package/build/ox_modules/module-web/commands/debug.js +15 -15
  150. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  151. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  152. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  153. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  154. package/build/ox_modules/module-web/commands/execute.js +24 -24
  155. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  156. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  157. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  158. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  159. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  160. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  161. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  162. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  163. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  164. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  165. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  166. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  167. package/build/ox_modules/module-web/commands/getText.js +18 -18
  168. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  169. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  170. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  171. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  172. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  173. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  174. package/build/ox_modules/module-web/commands/index.js +1 -1
  175. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  176. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  177. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  178. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  179. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  180. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  181. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  182. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  184. package/build/ox_modules/module-web/commands/mock.js +20 -20
  185. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  187. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  188. package/build/ox_modules/module-web/commands/open.js +16 -16
  189. package/build/ox_modules/module-web/commands/pause.js +15 -15
  190. package/build/ox_modules/module-web/commands/point.js +21 -21
  191. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  192. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  193. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  194. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  195. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  196. package/build/ox_modules/module-web/commands/select.js +23 -23
  197. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  198. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  199. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  200. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  201. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  202. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  203. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  204. package/build/ox_modules/module-web/commands/type.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  206. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  207. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  210. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  212. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  213. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  214. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  215. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  218. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  222. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  223. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  224. package/build/ox_modules/module-web.js +94 -94
  225. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  226. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  227. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  228. package/build/ox_modules/module-win/commands/back.js +11 -11
  229. package/build/ox_modules/module-win/commands/clear.js +13 -13
  230. package/build/ox_modules/module-win/commands/click.js +13 -13
  231. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  232. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  233. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  234. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  235. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  236. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  237. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  238. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  239. package/build/ox_modules/module-win/commands/getText.js +14 -14
  240. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  241. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  242. package/build/ox_modules/module-win/commands/index.js +1 -1
  243. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  244. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  245. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  246. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  247. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  248. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  249. package/build/ox_modules/module-win/commands/open.js +13 -13
  250. package/build/ox_modules/module-win/commands/pause.js +12 -12
  251. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  252. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  253. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  254. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  255. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  256. package/build/ox_modules/module-win/commands/tap.js +13 -13
  257. package/build/ox_modules/module-win/commands/type.js +16 -16
  258. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  259. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  260. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  261. package/build/ox_modules/module-win.js +47 -47
  262. package/build/ox_modules/utils.js +8 -8
  263. package/build/ox_reporters/excel/template.json +48 -48
  264. package/build/ox_reporters/html/index.ejs +163 -163
  265. package/build/ox_reporters/html/summary.ejs +77 -77
  266. package/build/ox_reporters/html/tests-details.ejs +134 -134
  267. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  268. package/build/ox_reporters/reporter-excel.js +1 -1
  269. package/build/ox_reporters/reporter-html.js +1 -1
  270. package/build/ox_reporters/reporter-json.js +1 -1
  271. package/build/ox_reporters/reporter-junit.js +1 -1
  272. package/build/ox_reporters/reporter-pdf.js +1 -1
  273. package/build/ox_reporters/reporter-rp.js +73 -42
  274. package/build/ox_reporters/reporter-xml.js +1 -1
  275. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  276. package/build/ox_services/service-devtools.js +1 -1
  277. package/build/reporter/FileReporterBase.js +1 -1
  278. package/build/reporter/ReportAggregator.js +1 -1
  279. package/build/reporter/ReporterBase.js +1 -1
  280. package/build/reporter/WebSocketReporter.js +1 -1
  281. package/build/runners/WorkerProcess.js +1 -1
  282. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  283. package/build/runners/cucumber/CucumberReporter.js +1 -1
  284. package/build/runners/cucumber/CucumberWorker.js +1 -1
  285. package/build/runners/cucumber/index.js +1 -1
  286. package/build/runners/cucumber/worker.js +1 -1
  287. package/build/runners/index.js +1 -1
  288. package/build/runners/oxygen/OxygenWorker.js +1 -1
  289. package/build/runners/oxygen/index.js +1 -1
  290. package/build/runners/oxygen/worker.js +1 -1
  291. package/config/default.json +6 -6
  292. package/package.json +139 -139
  293. package/types/index.d.ts +70 -70
  294. package/types/module-eyes.d.ts +39 -39
  295. package/types/module-http.d.ts +163 -163
  296. package/types/module-log.d.ts +34 -34
  297. package/types/module-mob.d.ts +966 -966
  298. package/types/module-pdf.d.ts +40 -40
  299. package/types/module-proxy.d.ts +100 -100
  300. package/types/module-shell.d.ts +24 -24
  301. package/types/module-utils.d.ts +99 -99
  302. package/types/module-web.d.ts +1053 -1053
  303. package/types/module-win.d.ts +352 -352
  304. package/types/oxygen.d.ts +53 -53
  305. package/log.txt +0 -1614
  306. package/reports/2025-06-08_231627/report.html +0 -440
  307. package/reports/2025-06-09_223615/report.html +0 -440
  308. package/transpiled/mongodb/etc/prepare.js +0 -18
  309. package/transpiled/mongodb/lib/admin.js +0 -182
  310. package/transpiled/mongodb/lib/beta.js +0 -26
  311. package/transpiled/mongodb/lib/bson.js +0 -220
  312. package/transpiled/mongodb/lib/bulk/common.js +0 -1041
  313. package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
  314. package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
  315. package/transpiled/mongodb/lib/change_stream.js +0 -517
  316. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
  317. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
  318. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
  319. package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
  320. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
  321. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
  322. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
  323. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
  324. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
  325. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
  326. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
  327. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
  328. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
  329. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
  330. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
  331. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
  332. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
  333. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
  334. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
  335. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
  336. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
  337. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
  338. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
  339. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
  340. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
  341. package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
  342. package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
  343. package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
  344. package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
  345. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
  346. package/transpiled/mongodb/lib/cmap/commands.js +0 -605
  347. package/transpiled/mongodb/lib/cmap/connect.js +0 -418
  348. package/transpiled/mongodb/lib/cmap/connection.js +0 -673
  349. package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
  350. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
  351. package/transpiled/mongodb/lib/cmap/errors.js +0 -128
  352. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
  353. package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
  354. package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
  355. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
  356. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
  357. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
  358. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
  359. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
  360. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
  361. package/transpiled/mongodb/lib/collection.js +0 -852
  362. package/transpiled/mongodb/lib/connection_string.js +0 -1452
  363. package/transpiled/mongodb/lib/constants.js +0 -162
  364. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
  365. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
  366. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
  367. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
  368. package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
  369. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
  370. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
  371. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
  372. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
  373. package/transpiled/mongodb/lib/db.js +0 -467
  374. package/transpiled/mongodb/lib/deps.js +0 -174
  375. package/transpiled/mongodb/lib/encrypter.js +0 -129
  376. package/transpiled/mongodb/lib/error.js +0 -1550
  377. package/transpiled/mongodb/lib/explain.js +0 -122
  378. package/transpiled/mongodb/lib/gridfs/download.js +0 -369
  379. package/transpiled/mongodb/lib/gridfs/index.js +0 -240
  380. package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
  381. package/transpiled/mongodb/lib/index.js +0 -975
  382. package/transpiled/mongodb/lib/mongo_client.js +0 -626
  383. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
  384. package/transpiled/mongodb/lib/mongo_logger.js +0 -812
  385. package/transpiled/mongodb/lib/mongo_types.js +0 -71
  386. package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
  387. package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
  388. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
  389. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
  390. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
  391. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
  392. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
  393. package/transpiled/mongodb/lib/operations/collections.js +0 -49
  394. package/transpiled/mongodb/lib/operations/command.js +0 -102
  395. package/transpiled/mongodb/lib/operations/count.js +0 -60
  396. package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
  397. package/transpiled/mongodb/lib/operations/delete.js +0 -134
  398. package/transpiled/mongodb/lib/operations/distinct.js +0 -77
  399. package/transpiled/mongodb/lib/operations/drop.js +0 -102
  400. package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
  401. package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
  402. package/transpiled/mongodb/lib/operations/find.js +0 -197
  403. package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
  404. package/transpiled/mongodb/lib/operations/get_more.js +0 -84
  405. package/transpiled/mongodb/lib/operations/indexes.js +0 -197
  406. package/transpiled/mongodb/lib/operations/insert.js +0 -138
  407. package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
  408. package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
  409. package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
  410. package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
  411. package/transpiled/mongodb/lib/operations/operation.js +0 -88
  412. package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
  413. package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
  414. package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
  415. package/transpiled/mongodb/lib/operations/rename.js +0 -48
  416. package/transpiled/mongodb/lib/operations/run_command.js +0 -64
  417. package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
  418. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
  419. package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
  420. package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
  421. package/transpiled/mongodb/lib/operations/stats.js +0 -39
  422. package/transpiled/mongodb/lib/operations/update.js +0 -218
  423. package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
  424. package/transpiled/mongodb/lib/read_concern.js +0 -92
  425. package/transpiled/mongodb/lib/read_preference.js +0 -215
  426. package/transpiled/mongodb/lib/resource_management.js +0 -74
  427. package/transpiled/mongodb/lib/sdam/common.js +0 -53
  428. package/transpiled/mongodb/lib/sdam/events.js +0 -177
  429. package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
  430. package/transpiled/mongodb/lib/sdam/server.js +0 -463
  431. package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
  432. package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
  433. package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
  434. package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
  435. package/transpiled/mongodb/lib/sdam/topology.js +0 -833
  436. package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
  437. package/transpiled/mongodb/lib/sessions.js +0 -988
  438. package/transpiled/mongodb/lib/sort.js +0 -123
  439. package/transpiled/mongodb/lib/timeout.js +0 -349
  440. package/transpiled/mongodb/lib/transactions.js +0 -149
  441. package/transpiled/mongodb/lib/utils.js +0 -1502
  442. package/transpiled/mongodb/lib/write_concern.js +0 -115
@@ -1,240 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GridFSBucket = void 0;
7
-
8
- const error_1 = require("../error");
9
-
10
- const mongo_types_1 = require("../mongo_types");
11
-
12
- const timeout_1 = require("../timeout");
13
-
14
- const utils_1 = require("../utils");
15
-
16
- const write_concern_1 = require("../write_concern");
17
-
18
- const download_1 = require("./download");
19
-
20
- const upload_1 = require("./upload");
21
-
22
- const DEFAULT_GRIDFS_BUCKET_OPTIONS = {
23
- bucketName: 'fs',
24
- chunkSizeBytes: 255 * 1024
25
- };
26
- /**
27
- * Constructor for a streaming GridFS interface
28
- * @public
29
- */
30
-
31
- class GridFSBucket extends mongo_types_1.TypedEventEmitter {
32
- constructor(db, options) {
33
- super();
34
- this.on('error', utils_1.noop);
35
- this.setMaxListeners(0);
36
- const privateOptions = (0, utils_1.resolveOptions)(db, { ...DEFAULT_GRIDFS_BUCKET_OPTIONS,
37
- ...options,
38
- writeConcern: write_concern_1.WriteConcern.fromOptions(options)
39
- });
40
- this.s = {
41
- db,
42
- options: privateOptions,
43
- _chunksCollection: db.collection(privateOptions.bucketName + '.chunks'),
44
- _filesCollection: db.collection(privateOptions.bucketName + '.files'),
45
- checkedIndexes: false,
46
- calledOpenUploadStream: false
47
- };
48
- }
49
- /**
50
- * Returns a writable stream (GridFSBucketWriteStream) for writing
51
- * buffers to GridFS. The stream's 'id' property contains the resulting
52
- * file's id.
53
- *
54
- * @param filename - The value of the 'filename' key in the files doc
55
- * @param options - Optional settings.
56
- */
57
-
58
-
59
- openUploadStream(filename, options) {
60
- return new upload_1.GridFSBucketWriteStream(this, filename, {
61
- timeoutMS: this.s.options.timeoutMS,
62
- ...options
63
- });
64
- }
65
- /**
66
- * Returns a writable stream (GridFSBucketWriteStream) for writing
67
- * buffers to GridFS for a custom file id. The stream's 'id' property contains the resulting
68
- * file's id.
69
- */
70
-
71
-
72
- openUploadStreamWithId(id, filename, options) {
73
- return new upload_1.GridFSBucketWriteStream(this, filename, {
74
- timeoutMS: this.s.options.timeoutMS,
75
- ...options,
76
- id
77
- });
78
- }
79
- /** Returns a readable stream (GridFSBucketReadStream) for streaming file data from GridFS. */
80
-
81
-
82
- openDownloadStream(id, options) {
83
- return new download_1.GridFSBucketReadStream(this.s._chunksCollection, this.s._filesCollection, this.s.options.readPreference, {
84
- _id: id
85
- }, {
86
- timeoutMS: this.s.options.timeoutMS,
87
- ...options
88
- });
89
- }
90
- /**
91
- * Deletes a file with the given id
92
- *
93
- * @param id - The id of the file doc
94
- */
95
-
96
-
97
- async delete(id, options) {
98
- const {
99
- timeoutMS
100
- } = (0, utils_1.resolveOptions)(this.s.db, options);
101
- let timeoutContext = undefined;
102
-
103
- if (timeoutMS) {
104
- timeoutContext = new timeout_1.CSOTTimeoutContext({
105
- timeoutMS,
106
- serverSelectionTimeoutMS: this.s.db.client.s.options.serverSelectionTimeoutMS
107
- });
108
- }
109
-
110
- const {
111
- deletedCount
112
- } = await this.s._filesCollection.deleteOne({
113
- _id: id
114
- }, {
115
- timeoutMS: timeoutContext?.remainingTimeMS
116
- });
117
- const remainingTimeMS = timeoutContext?.remainingTimeMS;
118
- if (remainingTimeMS != null && remainingTimeMS <= 0) throw new error_1.MongoOperationTimeoutError(`Timed out after ${timeoutMS}ms`); // Delete orphaned chunks before returning FileNotFound
119
-
120
- await this.s._chunksCollection.deleteMany({
121
- files_id: id
122
- }, {
123
- timeoutMS: remainingTimeMS
124
- });
125
-
126
- if (deletedCount === 0) {
127
- // TODO(NODE-3483): Replace with more appropriate error
128
- // Consider creating new error MongoGridFSFileNotFoundError
129
- throw new error_1.MongoRuntimeError(`File not found for id ${id}`);
130
- }
131
- }
132
- /** Convenience wrapper around find on the files collection */
133
-
134
-
135
- find(filter = {}, options = {}) {
136
- return this.s._filesCollection.find(filter, options);
137
- }
138
- /**
139
- * Returns a readable stream (GridFSBucketReadStream) for streaming the
140
- * file with the given name from GridFS. If there are multiple files with
141
- * the same name, this will stream the most recent file with the given name
142
- * (as determined by the `uploadDate` field). You can set the `revision`
143
- * option to change this behavior.
144
- */
145
-
146
-
147
- openDownloadStreamByName(filename, options) {
148
- let sort = {
149
- uploadDate: -1
150
- };
151
- let skip = undefined;
152
-
153
- if (options && options.revision != null) {
154
- if (options.revision >= 0) {
155
- sort = {
156
- uploadDate: 1
157
- };
158
- skip = options.revision;
159
- } else {
160
- skip = -options.revision - 1;
161
- }
162
- }
163
-
164
- return new download_1.GridFSBucketReadStream(this.s._chunksCollection, this.s._filesCollection, this.s.options.readPreference, {
165
- filename
166
- }, {
167
- timeoutMS: this.s.options.timeoutMS,
168
- ...options,
169
- sort,
170
- skip
171
- });
172
- }
173
- /**
174
- * Renames the file with the given _id to the given string
175
- *
176
- * @param id - the id of the file to rename
177
- * @param filename - new name for the file
178
- */
179
-
180
-
181
- async rename(id, filename, options) {
182
- const filter = {
183
- _id: id
184
- };
185
- const update = {
186
- $set: {
187
- filename
188
- }
189
- };
190
- const {
191
- matchedCount
192
- } = await this.s._filesCollection.updateOne(filter, update, options);
193
-
194
- if (matchedCount === 0) {
195
- throw new error_1.MongoRuntimeError(`File with id ${id} not found`);
196
- }
197
- }
198
- /** Removes this bucket's files collection, followed by its chunks collection. */
199
-
200
-
201
- async drop(options) {
202
- const {
203
- timeoutMS
204
- } = (0, utils_1.resolveOptions)(this.s.db, options);
205
- let timeoutContext = undefined;
206
-
207
- if (timeoutMS) {
208
- timeoutContext = new timeout_1.CSOTTimeoutContext({
209
- timeoutMS,
210
- serverSelectionTimeoutMS: this.s.db.client.s.options.serverSelectionTimeoutMS
211
- });
212
- }
213
-
214
- if (timeoutContext) {
215
- await this.s._filesCollection.drop({
216
- timeoutMS: timeoutContext.remainingTimeMS
217
- });
218
- const remainingTimeMS = timeoutContext.getRemainingTimeMSOrThrow(`Timed out after ${timeoutMS}ms`);
219
- await this.s._chunksCollection.drop({
220
- timeoutMS: remainingTimeMS
221
- });
222
- } else {
223
- await this.s._filesCollection.drop();
224
- await this.s._chunksCollection.drop();
225
- }
226
- }
227
-
228
- }
229
-
230
- exports.GridFSBucket = GridFSBucket;
231
- /**
232
- * When the first call to openUploadStream is made, the upload stream will
233
- * check to see if it needs to create the proper indexes on the chunks and
234
- * files collections. This event is fired either when 1) it determines that
235
- * no index creation is necessary, 2) when it successfully creates the
236
- * necessary indexes.
237
- * @event
238
- */
239
-
240
- GridFSBucket.INDEX = 'index';
@@ -1,446 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.GridFSBucketWriteStream = void 0;
7
-
8
- const stream_1 = require("stream");
9
-
10
- const bson_1 = require("../bson");
11
-
12
- const abstract_cursor_1 = require("../cursor/abstract_cursor");
13
-
14
- const error_1 = require("../error");
15
-
16
- const timeout_1 = require("../timeout");
17
-
18
- const utils_1 = require("../utils");
19
-
20
- const write_concern_1 = require("./../write_concern");
21
- /**
22
- * A writable stream that enables you to write buffers to GridFS.
23
- *
24
- * Do not instantiate this class directly. Use `openUploadStream()` instead.
25
- * @public
26
- */
27
-
28
-
29
- class GridFSBucketWriteStream extends stream_1.Writable {
30
- /**
31
- * @param bucket - Handle for this stream's corresponding bucket
32
- * @param filename - The value of the 'filename' key in the files doc
33
- * @param options - Optional settings.
34
- * @internal
35
- */
36
- constructor(bucket, filename, options) {
37
- super();
38
- /**
39
- * The document containing information about the inserted file.
40
- * This property is defined _after_ the finish event has been emitted.
41
- * It will remain `null` if an error occurs.
42
- *
43
- * @example
44
- * ```ts
45
- * fs.createReadStream('file.txt')
46
- * .pipe(bucket.openUploadStream('file.txt'))
47
- * .on('finish', function () {
48
- * console.log(this.gridFSFile)
49
- * })
50
- * ```
51
- */
52
-
53
- this.gridFSFile = null;
54
- options = options ?? {};
55
- this.bucket = bucket;
56
- this.chunks = bucket.s._chunksCollection;
57
- this.filename = filename;
58
- this.files = bucket.s._filesCollection;
59
- this.options = options;
60
- this.writeConcern = write_concern_1.WriteConcern.fromOptions(options) || bucket.s.options.writeConcern; // Signals the write is all done
61
-
62
- this.done = false;
63
- this.id = options.id ? options.id : new bson_1.ObjectId(); // properly inherit the default chunksize from parent
64
-
65
- this.chunkSizeBytes = options.chunkSizeBytes || this.bucket.s.options.chunkSizeBytes;
66
- this.bufToStore = Buffer.alloc(this.chunkSizeBytes);
67
- this.length = 0;
68
- this.n = 0;
69
- this.pos = 0;
70
- this.state = {
71
- streamEnd: false,
72
- outstandingRequests: 0,
73
- errored: false,
74
- aborted: false
75
- };
76
- if (options.timeoutMS != null) this.timeoutContext = new timeout_1.CSOTTimeoutContext({
77
- timeoutMS: options.timeoutMS,
78
- serverSelectionTimeoutMS: (0, utils_1.resolveTimeoutOptions)(this.bucket.s.db.client, {}).serverSelectionTimeoutMS
79
- });
80
- }
81
- /**
82
- * @internal
83
- *
84
- * The stream is considered constructed when the indexes are done being created
85
- */
86
-
87
-
88
- _construct(callback) {
89
- if (!this.bucket.s.calledOpenUploadStream) {
90
- this.bucket.s.calledOpenUploadStream = true;
91
- checkIndexes(this).then(() => {
92
- this.bucket.s.checkedIndexes = true;
93
- this.bucket.emit('index');
94
- callback();
95
- }, error => {
96
- if (error instanceof error_1.MongoOperationTimeoutError) {
97
- return handleError(this, error, callback);
98
- }
99
-
100
- (0, utils_1.squashError)(error);
101
- callback();
102
- });
103
- } else {
104
- return process.nextTick(callback);
105
- }
106
- }
107
- /**
108
- * @internal
109
- * Write a buffer to the stream.
110
- *
111
- * @param chunk - Buffer to write
112
- * @param encoding - Optional encoding for the buffer
113
- * @param callback - Function to call when the chunk was added to the buffer, or if the entire chunk was persisted to MongoDB if this chunk caused a flush.
114
- */
115
-
116
-
117
- _write(chunk, encoding, callback) {
118
- doWrite(this, chunk, encoding, callback);
119
- }
120
- /** @internal */
121
-
122
-
123
- _final(callback) {
124
- if (this.state.streamEnd) {
125
- return process.nextTick(callback);
126
- }
127
-
128
- this.state.streamEnd = true;
129
- writeRemnant(this, callback);
130
- }
131
- /**
132
- * Places this write stream into an aborted state (all future writes fail)
133
- * and deletes all chunks that have already been written.
134
- */
135
-
136
-
137
- async abort() {
138
- if (this.state.streamEnd) {
139
- // TODO(NODE-3485): Replace with MongoGridFSStreamClosed
140
- throw new error_1.MongoAPIError('Cannot abort a stream that has already completed');
141
- }
142
-
143
- if (this.state.aborted) {
144
- // TODO(NODE-3485): Replace with MongoGridFSStreamClosed
145
- throw new error_1.MongoAPIError('Cannot call abort() on a stream twice');
146
- }
147
-
148
- this.state.aborted = true;
149
- const remainingTimeMS = this.timeoutContext?.getRemainingTimeMSOrThrow(`Upload timed out after ${this.timeoutContext?.timeoutMS}ms`);
150
- await this.chunks.deleteMany({
151
- files_id: this.id
152
- }, {
153
- timeoutMS: remainingTimeMS
154
- });
155
- }
156
-
157
- }
158
-
159
- exports.GridFSBucketWriteStream = GridFSBucketWriteStream;
160
-
161
- function handleError(stream, error, callback) {
162
- if (stream.state.errored) {
163
- process.nextTick(callback);
164
- return;
165
- }
166
-
167
- stream.state.errored = true;
168
- process.nextTick(callback, error);
169
- }
170
-
171
- function createChunkDoc(filesId, n, data) {
172
- return {
173
- _id: new bson_1.ObjectId(),
174
- files_id: filesId,
175
- n,
176
- data
177
- };
178
- }
179
-
180
- async function checkChunksIndex(stream) {
181
- const index = {
182
- files_id: 1,
183
- n: 1
184
- };
185
- let remainingTimeMS;
186
- remainingTimeMS = stream.timeoutContext?.getRemainingTimeMSOrThrow(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`);
187
- let indexes;
188
-
189
- try {
190
- indexes = await stream.chunks.listIndexes({
191
- timeoutMode: remainingTimeMS != null ? abstract_cursor_1.CursorTimeoutMode.LIFETIME : undefined,
192
- timeoutMS: remainingTimeMS
193
- }).toArray();
194
- } catch (error) {
195
- if (error instanceof error_1.MongoError && error.code === error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
196
- indexes = [];
197
- } else {
198
- throw error;
199
- }
200
- }
201
-
202
- const hasChunksIndex = !!indexes.find(index => {
203
- const keys = Object.keys(index.key);
204
-
205
- if (keys.length === 2 && index.key.files_id === 1 && index.key.n === 1) {
206
- return true;
207
- }
208
-
209
- return false;
210
- });
211
-
212
- if (!hasChunksIndex) {
213
- remainingTimeMS = stream.timeoutContext?.getRemainingTimeMSOrThrow(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`);
214
- await stream.chunks.createIndex(index, { ...stream.writeConcern,
215
- background: true,
216
- unique: true,
217
- timeoutMS: remainingTimeMS
218
- });
219
- }
220
- }
221
-
222
- function checkDone(stream, callback) {
223
- if (stream.done) {
224
- return process.nextTick(callback);
225
- }
226
-
227
- if (stream.state.streamEnd && stream.state.outstandingRequests === 0 && !stream.state.errored) {
228
- // Set done so we do not trigger duplicate createFilesDoc
229
- stream.done = true; // Create a new files doc
230
-
231
- const gridFSFile = createFilesDoc(stream.id, stream.length, stream.chunkSizeBytes, stream.filename, stream.options.contentType, stream.options.aliases, stream.options.metadata);
232
-
233
- if (isAborted(stream, callback)) {
234
- return;
235
- }
236
-
237
- const remainingTimeMS = stream.timeoutContext?.remainingTimeMS;
238
-
239
- if (remainingTimeMS != null && remainingTimeMS <= 0) {
240
- return handleError(stream, new error_1.MongoOperationTimeoutError(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`), callback);
241
- }
242
-
243
- stream.files.insertOne(gridFSFile, {
244
- writeConcern: stream.writeConcern,
245
- timeoutMS: remainingTimeMS
246
- }).then(() => {
247
- stream.gridFSFile = gridFSFile;
248
- callback();
249
- }, error => {
250
- return handleError(stream, error, callback);
251
- });
252
- return;
253
- }
254
-
255
- process.nextTick(callback);
256
- }
257
-
258
- async function checkIndexes(stream) {
259
- let remainingTimeMS = stream.timeoutContext?.getRemainingTimeMSOrThrow(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`);
260
- const doc = await stream.files.findOne({}, {
261
- projection: {
262
- _id: 1
263
- },
264
- timeoutMS: remainingTimeMS
265
- });
266
-
267
- if (doc != null) {
268
- // If at least one document exists assume the collection has the required index
269
- return;
270
- }
271
-
272
- const index = {
273
- filename: 1,
274
- uploadDate: 1
275
- };
276
- let indexes;
277
- remainingTimeMS = stream.timeoutContext?.getRemainingTimeMSOrThrow(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`);
278
- const listIndexesOptions = {
279
- timeoutMode: remainingTimeMS != null ? abstract_cursor_1.CursorTimeoutMode.LIFETIME : undefined,
280
- timeoutMS: remainingTimeMS
281
- };
282
-
283
- try {
284
- indexes = await stream.files.listIndexes(listIndexesOptions).toArray();
285
- } catch (error) {
286
- if (error instanceof error_1.MongoError && error.code === error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
287
- indexes = [];
288
- } else {
289
- throw error;
290
- }
291
- }
292
-
293
- const hasFileIndex = !!indexes.find(index => {
294
- const keys = Object.keys(index.key);
295
-
296
- if (keys.length === 2 && index.key.filename === 1 && index.key.uploadDate === 1) {
297
- return true;
298
- }
299
-
300
- return false;
301
- });
302
-
303
- if (!hasFileIndex) {
304
- remainingTimeMS = stream.timeoutContext?.getRemainingTimeMSOrThrow(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`);
305
- await stream.files.createIndex(index, {
306
- background: false,
307
- timeoutMS: remainingTimeMS
308
- });
309
- }
310
-
311
- await checkChunksIndex(stream);
312
- }
313
-
314
- function createFilesDoc(_id, length, chunkSize, filename, contentType, aliases, metadata) {
315
- const ret = {
316
- _id,
317
- length,
318
- chunkSize,
319
- uploadDate: new Date(),
320
- filename
321
- };
322
-
323
- if (contentType) {
324
- ret.contentType = contentType;
325
- }
326
-
327
- if (aliases) {
328
- ret.aliases = aliases;
329
- }
330
-
331
- if (metadata) {
332
- ret.metadata = metadata;
333
- }
334
-
335
- return ret;
336
- }
337
-
338
- function doWrite(stream, chunk, encoding, callback) {
339
- if (isAborted(stream, callback)) {
340
- return;
341
- }
342
-
343
- const inputBuf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding);
344
- stream.length += inputBuf.length; // Input is small enough to fit in our buffer
345
-
346
- if (stream.pos + inputBuf.length < stream.chunkSizeBytes) {
347
- inputBuf.copy(stream.bufToStore, stream.pos);
348
- stream.pos += inputBuf.length;
349
- process.nextTick(callback);
350
- return;
351
- } // Otherwise, buffer is too big for current chunk, so we need to flush
352
- // to MongoDB.
353
-
354
-
355
- let inputBufRemaining = inputBuf.length;
356
- let spaceRemaining = stream.chunkSizeBytes - stream.pos;
357
- let numToCopy = Math.min(spaceRemaining, inputBuf.length);
358
- let outstandingRequests = 0;
359
-
360
- while (inputBufRemaining > 0) {
361
- const inputBufPos = inputBuf.length - inputBufRemaining;
362
- inputBuf.copy(stream.bufToStore, stream.pos, inputBufPos, inputBufPos + numToCopy);
363
- stream.pos += numToCopy;
364
- spaceRemaining -= numToCopy;
365
- let doc;
366
-
367
- if (spaceRemaining === 0) {
368
- doc = createChunkDoc(stream.id, stream.n, Buffer.from(stream.bufToStore));
369
- const remainingTimeMS = stream.timeoutContext?.remainingTimeMS;
370
-
371
- if (remainingTimeMS != null && remainingTimeMS <= 0) {
372
- return handleError(stream, new error_1.MongoOperationTimeoutError(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`), callback);
373
- }
374
-
375
- ++stream.state.outstandingRequests;
376
- ++outstandingRequests;
377
-
378
- if (isAborted(stream, callback)) {
379
- return;
380
- }
381
-
382
- stream.chunks.insertOne(doc, {
383
- writeConcern: stream.writeConcern,
384
- timeoutMS: remainingTimeMS
385
- }).then(() => {
386
- --stream.state.outstandingRequests;
387
- --outstandingRequests;
388
-
389
- if (!outstandingRequests) {
390
- checkDone(stream, callback);
391
- }
392
- }, error => {
393
- return handleError(stream, error, callback);
394
- });
395
- spaceRemaining = stream.chunkSizeBytes;
396
- stream.pos = 0;
397
- ++stream.n;
398
- }
399
-
400
- inputBufRemaining -= numToCopy;
401
- numToCopy = Math.min(spaceRemaining, inputBufRemaining);
402
- }
403
- }
404
-
405
- function writeRemnant(stream, callback) {
406
- // Buffer is empty, so don't bother to insert
407
- if (stream.pos === 0) {
408
- return checkDone(stream, callback);
409
- } // Create a new buffer to make sure the buffer isn't bigger than it needs
410
- // to be.
411
-
412
-
413
- const remnant = Buffer.alloc(stream.pos);
414
- stream.bufToStore.copy(remnant, 0, 0, stream.pos);
415
- const doc = createChunkDoc(stream.id, stream.n, remnant); // If the stream was aborted, do not write remnant
416
-
417
- if (isAborted(stream, callback)) {
418
- return;
419
- }
420
-
421
- const remainingTimeMS = stream.timeoutContext?.remainingTimeMS;
422
-
423
- if (remainingTimeMS != null && remainingTimeMS <= 0) {
424
- return handleError(stream, new error_1.MongoOperationTimeoutError(`Upload timed out after ${stream.timeoutContext?.timeoutMS}ms`), callback);
425
- }
426
-
427
- ++stream.state.outstandingRequests;
428
- stream.chunks.insertOne(doc, {
429
- writeConcern: stream.writeConcern,
430
- timeoutMS: remainingTimeMS
431
- }).then(() => {
432
- --stream.state.outstandingRequests;
433
- checkDone(stream, callback);
434
- }, error => {
435
- return handleError(stream, error, callback);
436
- });
437
- }
438
-
439
- function isAborted(stream, callback) {
440
- if (stream.state.aborted) {
441
- process.nextTick(callback, new error_1.MongoAPIError('Stream has been aborted'));
442
- return true;
443
- }
444
-
445
- return false;
446
- }