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,122 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ExplainableCursor = exports.Explain = exports.ExplainVerbosity = void 0;
7
+ exports.validateExplainTimeoutOptions = validateExplainTimeoutOptions;
8
+ exports.decorateWithExplain = decorateWithExplain;
9
+
10
+ const abstract_cursor_1 = require("./cursor/abstract_cursor");
11
+
12
+ const error_1 = require("./error");
13
+ /** @public */
14
+
15
+
16
+ exports.ExplainVerbosity = Object.freeze({
17
+ queryPlanner: 'queryPlanner',
18
+ queryPlannerExtended: 'queryPlannerExtended',
19
+ executionStats: 'executionStats',
20
+ allPlansExecution: 'allPlansExecution'
21
+ });
22
+ /** @internal */
23
+
24
+ class Explain {
25
+ constructor(verbosity, maxTimeMS) {
26
+ if (typeof verbosity === 'boolean') {
27
+ this.verbosity = verbosity ? exports.ExplainVerbosity.allPlansExecution : exports.ExplainVerbosity.queryPlanner;
28
+ } else {
29
+ this.verbosity = verbosity;
30
+ }
31
+
32
+ this.maxTimeMS = maxTimeMS;
33
+ }
34
+
35
+ static fromOptions({
36
+ explain
37
+ } = {}) {
38
+ if (explain == null) return;
39
+
40
+ if (typeof explain === 'boolean' || typeof explain === 'string') {
41
+ return new Explain(explain);
42
+ }
43
+
44
+ const {
45
+ verbosity,
46
+ maxTimeMS
47
+ } = explain;
48
+ return new Explain(verbosity, maxTimeMS);
49
+ }
50
+
51
+ }
52
+
53
+ exports.Explain = Explain;
54
+
55
+ function validateExplainTimeoutOptions(options, explain) {
56
+ const {
57
+ maxTimeMS,
58
+ timeoutMS
59
+ } = options;
60
+
61
+ if (timeoutMS != null && (maxTimeMS != null || explain?.maxTimeMS != null)) {
62
+ throw new error_1.MongoAPIError('Cannot use maxTimeMS with timeoutMS for explain commands.');
63
+ }
64
+ }
65
+ /**
66
+ * Applies an explain to a given command.
67
+ * @internal
68
+ *
69
+ * @param command - the command on which to apply the explain
70
+ * @param options - the options containing the explain verbosity
71
+ */
72
+
73
+
74
+ function decorateWithExplain(command, explain) {
75
+ const {
76
+ verbosity,
77
+ maxTimeMS
78
+ } = explain;
79
+ const baseCommand = {
80
+ explain: command,
81
+ verbosity
82
+ };
83
+
84
+ if (typeof maxTimeMS === 'number') {
85
+ baseCommand.maxTimeMS = maxTimeMS;
86
+ }
87
+
88
+ return baseCommand;
89
+ }
90
+ /**
91
+ * @public
92
+ *
93
+ * A base class for any cursors that have `explain()` methods.
94
+ */
95
+
96
+
97
+ class ExplainableCursor extends abstract_cursor_1.AbstractCursor {
98
+ resolveExplainTimeoutOptions(verbosity, options) {
99
+ let explain;
100
+ let timeout;
101
+
102
+ if (verbosity == null && options == null) {
103
+ explain = undefined;
104
+ timeout = undefined;
105
+ } else if (verbosity != null && options == null) {
106
+ explain = typeof verbosity !== 'object' ? verbosity : 'verbosity' in verbosity ? verbosity : undefined;
107
+ timeout = typeof verbosity === 'object' && 'timeoutMS' in verbosity ? verbosity : undefined;
108
+ } else {
109
+ // @ts-expect-error TS isn't smart enough to determine that if both options are provided, the first is explain options
110
+ explain = verbosity;
111
+ timeout = options;
112
+ }
113
+
114
+ return {
115
+ timeout,
116
+ explain
117
+ };
118
+ }
119
+
120
+ }
121
+
122
+ exports.ExplainableCursor = ExplainableCursor;
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.GridFSBucketReadStream = void 0;
7
+
8
+ const stream_1 = require("stream");
9
+
10
+ const abstract_cursor_1 = require("../cursor/abstract_cursor");
11
+
12
+ const error_1 = require("../error");
13
+
14
+ const timeout_1 = require("../timeout");
15
+ /**
16
+ * A readable stream that enables you to read buffers from GridFS.
17
+ *
18
+ * Do not instantiate this class directly. Use `openDownloadStream()` instead.
19
+ * @public
20
+ */
21
+
22
+
23
+ class GridFSBucketReadStream extends stream_1.Readable {
24
+ /**
25
+ * @param chunks - Handle for chunks collection
26
+ * @param files - Handle for files collection
27
+ * @param readPreference - The read preference to use
28
+ * @param filter - The filter to use to find the file document
29
+ * @internal
30
+ */
31
+ constructor(chunks, files, readPreference, filter, options) {
32
+ super({
33
+ emitClose: true
34
+ });
35
+ this.s = {
36
+ bytesToTrim: 0,
37
+ bytesToSkip: 0,
38
+ bytesRead: 0,
39
+ chunks,
40
+ expected: 0,
41
+ files,
42
+ filter,
43
+ init: false,
44
+ expectedEnd: 0,
45
+ options: {
46
+ start: 0,
47
+ end: 0,
48
+ ...options
49
+ },
50
+ readPreference,
51
+ timeoutContext: options?.timeoutMS != null ? new timeout_1.CSOTTimeoutContext({
52
+ timeoutMS: options.timeoutMS,
53
+ serverSelectionTimeoutMS: 0
54
+ }) : undefined
55
+ };
56
+ }
57
+ /**
58
+ * Reads from the cursor and pushes to the stream.
59
+ * Private Impl, do not call directly
60
+ * @internal
61
+ */
62
+
63
+
64
+ _read() {
65
+ if (this.destroyed) return;
66
+ waitForFile(this, () => doRead(this));
67
+ }
68
+ /**
69
+ * Sets the 0-based offset in bytes to start streaming from. Throws
70
+ * an error if this stream has entered flowing mode
71
+ * (e.g. if you've already called `on('data')`)
72
+ *
73
+ * @param start - 0-based offset in bytes to start streaming from
74
+ */
75
+
76
+
77
+ start(start = 0) {
78
+ throwIfInitialized(this);
79
+ this.s.options.start = start;
80
+ return this;
81
+ }
82
+ /**
83
+ * Sets the 0-based offset in bytes to start streaming from. Throws
84
+ * an error if this stream has entered flowing mode
85
+ * (e.g. if you've already called `on('data')`)
86
+ *
87
+ * @param end - Offset in bytes to stop reading at
88
+ */
89
+
90
+
91
+ end(end = 0) {
92
+ throwIfInitialized(this);
93
+ this.s.options.end = end;
94
+ return this;
95
+ }
96
+ /**
97
+ * Marks this stream as aborted (will never push another `data` event)
98
+ * and kills the underlying cursor. Will emit the 'end' event, and then
99
+ * the 'close' event once the cursor is successfully killed.
100
+ */
101
+
102
+
103
+ async abort() {
104
+ this.push(null);
105
+ this.destroy();
106
+ const remainingTimeMS = this.s.timeoutContext?.getRemainingTimeMSOrThrow();
107
+ await this.s.cursor?.close({
108
+ timeoutMS: remainingTimeMS
109
+ });
110
+ }
111
+
112
+ }
113
+
114
+ exports.GridFSBucketReadStream = GridFSBucketReadStream;
115
+ /**
116
+ * Fires when the stream loaded the file document corresponding to the provided id.
117
+ * @event
118
+ */
119
+
120
+ GridFSBucketReadStream.FILE = 'file';
121
+
122
+ function throwIfInitialized(stream) {
123
+ if (stream.s.init) {
124
+ throw new error_1.MongoGridFSStreamError('Options cannot be changed after the stream is initialized');
125
+ }
126
+ }
127
+
128
+ function doRead(stream) {
129
+ if (stream.destroyed) return;
130
+ if (!stream.s.cursor) return;
131
+ if (!stream.s.file) return;
132
+
133
+ const handleReadResult = doc => {
134
+ if (stream.destroyed) return;
135
+
136
+ if (!doc) {
137
+ stream.push(null);
138
+ stream.s.cursor?.close().then(undefined, error => stream.destroy(error));
139
+ return;
140
+ }
141
+
142
+ if (!stream.s.file) return;
143
+ const bytesRemaining = stream.s.file.length - stream.s.bytesRead;
144
+ const expectedN = stream.s.expected++;
145
+ const expectedLength = Math.min(stream.s.file.chunkSize, bytesRemaining);
146
+
147
+ if (doc.n > expectedN) {
148
+ return stream.destroy(new error_1.MongoGridFSChunkError(`ChunkIsMissing: Got unexpected n: ${doc.n}, expected: ${expectedN}`));
149
+ }
150
+
151
+ if (doc.n < expectedN) {
152
+ return stream.destroy(new error_1.MongoGridFSChunkError(`ExtraChunk: Got unexpected n: ${doc.n}, expected: ${expectedN}`));
153
+ }
154
+
155
+ let buf = Buffer.isBuffer(doc.data) ? doc.data : doc.data.buffer;
156
+
157
+ if (buf.byteLength !== expectedLength) {
158
+ if (bytesRemaining <= 0) {
159
+ return stream.destroy(new error_1.MongoGridFSChunkError(`ExtraChunk: Got unexpected n: ${doc.n}, expected file length ${stream.s.file.length} bytes but already read ${stream.s.bytesRead} bytes`));
160
+ }
161
+
162
+ return stream.destroy(new error_1.MongoGridFSChunkError(`ChunkIsWrongSize: Got unexpected length: ${buf.byteLength}, expected: ${expectedLength}`));
163
+ }
164
+
165
+ stream.s.bytesRead += buf.byteLength;
166
+
167
+ if (buf.byteLength === 0) {
168
+ return stream.push(null);
169
+ }
170
+
171
+ let sliceStart = null;
172
+ let sliceEnd = null;
173
+
174
+ if (stream.s.bytesToSkip != null) {
175
+ sliceStart = stream.s.bytesToSkip;
176
+ stream.s.bytesToSkip = 0;
177
+ }
178
+
179
+ const atEndOfStream = expectedN === stream.s.expectedEnd - 1;
180
+ const bytesLeftToRead = stream.s.options.end - stream.s.bytesToSkip;
181
+
182
+ if (atEndOfStream && stream.s.bytesToTrim != null) {
183
+ sliceEnd = stream.s.file.chunkSize - stream.s.bytesToTrim;
184
+ } else if (stream.s.options.end && bytesLeftToRead < doc.data.byteLength) {
185
+ sliceEnd = bytesLeftToRead;
186
+ }
187
+
188
+ if (sliceStart != null || sliceEnd != null) {
189
+ buf = buf.slice(sliceStart || 0, sliceEnd || buf.byteLength);
190
+ }
191
+
192
+ stream.push(buf);
193
+ return;
194
+ };
195
+
196
+ stream.s.cursor.next().then(handleReadResult, error => {
197
+ if (stream.destroyed) return;
198
+ stream.destroy(error);
199
+ });
200
+ }
201
+
202
+ function init(stream) {
203
+ const findOneOptions = {};
204
+
205
+ if (stream.s.readPreference) {
206
+ findOneOptions.readPreference = stream.s.readPreference;
207
+ }
208
+
209
+ if (stream.s.options && stream.s.options.sort) {
210
+ findOneOptions.sort = stream.s.options.sort;
211
+ }
212
+
213
+ if (stream.s.options && stream.s.options.skip) {
214
+ findOneOptions.skip = stream.s.options.skip;
215
+ }
216
+
217
+ const handleReadResult = doc => {
218
+ if (stream.destroyed) return;
219
+
220
+ if (!doc) {
221
+ const identifier = stream.s.filter._id ? stream.s.filter._id.toString() : stream.s.filter.filename;
222
+ const errmsg = `FileNotFound: file ${identifier} was not found`; // TODO(NODE-3483)
223
+
224
+ const err = new error_1.MongoRuntimeError(errmsg);
225
+ err.code = 'ENOENT'; // TODO: NODE-3338 set property as part of constructor
226
+
227
+ return stream.destroy(err);
228
+ } // If document is empty, kill the stream immediately and don't
229
+ // execute any reads
230
+
231
+
232
+ if (doc.length <= 0) {
233
+ stream.push(null);
234
+ return;
235
+ }
236
+
237
+ if (stream.destroyed) {
238
+ // If user destroys the stream before we have a cursor, wait
239
+ // until the query is done to say we're 'closed' because we can't
240
+ // cancel a query.
241
+ stream.destroy();
242
+ return;
243
+ }
244
+
245
+ try {
246
+ stream.s.bytesToSkip = handleStartOption(stream, doc, stream.s.options);
247
+ } catch (error) {
248
+ return stream.destroy(error);
249
+ }
250
+
251
+ const filter = {
252
+ files_id: doc._id
253
+ }; // Currently (MongoDB 3.4.4) skip function does not support the index,
254
+ // it needs to retrieve all the documents first and then skip them. (CS-25811)
255
+ // As work around we use $gte on the "n" field.
256
+
257
+ if (stream.s.options && stream.s.options.start != null) {
258
+ const skip = Math.floor(stream.s.options.start / doc.chunkSize);
259
+
260
+ if (skip > 0) {
261
+ filter['n'] = {
262
+ $gte: skip
263
+ };
264
+ }
265
+ }
266
+
267
+ let remainingTimeMS;
268
+
269
+ try {
270
+ remainingTimeMS = stream.s.timeoutContext?.getRemainingTimeMSOrThrow(`Download timed out after ${stream.s.timeoutContext?.timeoutMS}ms`);
271
+ } catch (error) {
272
+ return stream.destroy(error);
273
+ }
274
+
275
+ stream.s.cursor = stream.s.chunks.find(filter, {
276
+ timeoutMode: stream.s.options.timeoutMS != null ? abstract_cursor_1.CursorTimeoutMode.LIFETIME : undefined,
277
+ timeoutMS: remainingTimeMS
278
+ }).sort({
279
+ n: 1
280
+ });
281
+
282
+ if (stream.s.readPreference) {
283
+ stream.s.cursor.withReadPreference(stream.s.readPreference);
284
+ }
285
+
286
+ stream.s.expectedEnd = Math.ceil(doc.length / doc.chunkSize);
287
+ stream.s.file = doc;
288
+
289
+ try {
290
+ stream.s.bytesToTrim = handleEndOption(stream, doc, stream.s.cursor, stream.s.options);
291
+ } catch (error) {
292
+ return stream.destroy(error);
293
+ }
294
+
295
+ stream.emit(GridFSBucketReadStream.FILE, doc);
296
+ return;
297
+ };
298
+
299
+ let remainingTimeMS;
300
+
301
+ try {
302
+ remainingTimeMS = stream.s.timeoutContext?.getRemainingTimeMSOrThrow(`Download timed out after ${stream.s.timeoutContext?.timeoutMS}ms`);
303
+ } catch (error) {
304
+ if (!stream.destroyed) stream.destroy(error);
305
+ return;
306
+ }
307
+
308
+ findOneOptions.timeoutMS = remainingTimeMS;
309
+ stream.s.files.findOne(stream.s.filter, findOneOptions).then(handleReadResult, error => {
310
+ if (stream.destroyed) return;
311
+ stream.destroy(error);
312
+ });
313
+ }
314
+
315
+ function waitForFile(stream, callback) {
316
+ if (stream.s.file) {
317
+ return callback();
318
+ }
319
+
320
+ if (!stream.s.init) {
321
+ init(stream);
322
+ stream.s.init = true;
323
+ }
324
+
325
+ stream.once('file', () => {
326
+ callback();
327
+ });
328
+ }
329
+
330
+ function handleStartOption(stream, doc, options) {
331
+ if (options && options.start != null) {
332
+ if (options.start > doc.length) {
333
+ throw new error_1.MongoInvalidArgumentError(`Stream start (${options.start}) must not be more than the length of the file (${doc.length})`);
334
+ }
335
+
336
+ if (options.start < 0) {
337
+ throw new error_1.MongoInvalidArgumentError(`Stream start (${options.start}) must not be negative`);
338
+ }
339
+
340
+ if (options.end != null && options.end < options.start) {
341
+ throw new error_1.MongoInvalidArgumentError(`Stream start (${options.start}) must not be greater than stream end (${options.end})`);
342
+ }
343
+
344
+ stream.s.bytesRead = Math.floor(options.start / doc.chunkSize) * doc.chunkSize;
345
+ stream.s.expected = Math.floor(options.start / doc.chunkSize);
346
+ return options.start - stream.s.bytesRead;
347
+ }
348
+
349
+ throw new error_1.MongoInvalidArgumentError('Start option must be defined');
350
+ }
351
+
352
+ function handleEndOption(stream, doc, cursor, options) {
353
+ if (options && options.end != null) {
354
+ if (options.end > doc.length) {
355
+ throw new error_1.MongoInvalidArgumentError(`Stream end (${options.end}) must not be more than the length of the file (${doc.length})`);
356
+ }
357
+
358
+ if (options.start == null || options.start < 0) {
359
+ throw new error_1.MongoInvalidArgumentError(`Stream end (${options.end}) must not be negative`);
360
+ }
361
+
362
+ const start = options.start != null ? Math.floor(options.start / doc.chunkSize) : 0;
363
+ cursor.limit(Math.ceil(options.end / doc.chunkSize) - start);
364
+ stream.s.expectedEnd = Math.ceil(options.end / doc.chunkSize);
365
+ return Math.ceil(options.end / doc.chunkSize) * doc.chunkSize - options.end;
366
+ }
367
+
368
+ throw new error_1.MongoInvalidArgumentError('End option must be defined');
369
+ }