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.
- package/CHANGELOG.md +1755 -1742
- package/LICENSE +672 -672
- package/README.md +37 -37
- package/build/core/OxygenCore.js +1 -1
- package/build/core/OxygenEvents.js +1 -1
- package/build/core/OxygenModule.js +1 -1
- package/build/core/OxygenService.js +1 -1
- package/build/core/OxygenSubModule.js +1 -1
- package/build/core/WebDriverModule.js +1 -1
- package/build/core/utils.js +1 -1
- package/build/errors/HookError.js +1 -1
- package/build/errors/ModuleError.js +1 -1
- package/build/errors/ModuleUnavailableError.js +1 -1
- package/build/errors/OxygenError.js +1 -1
- package/build/errors/ScriptNotFound.js +1 -1
- package/build/errors/helper.js +1 -1
- package/build/index.js +1 -1
- package/build/lib/cli-util.js +1 -1
- package/build/lib/cli.js +1 -1
- package/build/lib/debugger.js +1 -1
- package/build/lib/img-merge.js +1 -1
- package/build/lib/launcher.js +1 -1
- package/build/lib/logger.js +43 -43
- package/build/lib/moduleRequire.js +1 -1
- package/build/lib/parallel-launcher.js +1 -1
- package/build/lib/param-manager.js +1 -1
- package/build/lib/param-reader-csv.js +1 -1
- package/build/lib/param-reader-excel.js +1 -1
- package/build/lib/param-reader-json.js +1 -1
- package/build/lib/text-to-image.js +1 -1
- package/build/lib/util.js +1 -1
- package/build/model/case-result.js +1 -1
- package/build/model/failure.js +1 -1
- package/build/model/status.js +1 -1
- package/build/model/step-result.js +1 -1
- package/build/model/suite-result.js +1 -1
- package/build/model/test-result.js +1 -1
- package/build/model/testcase.js +1 -1
- package/build/model/testsuite.js +1 -1
- package/build/ox_modules/index.js +1 -1
- package/build/ox_modules/module-assert.js +37 -37
- package/build/ox_modules/module-date.js +24 -24
- package/build/ox_modules/module-db.js +52 -52
- package/build/ox_modules/module-email.js +59 -59
- package/build/ox_modules/module-eyes.js +34 -34
- package/build/ox_modules/module-http/ntlm-util.js +10 -10
- package/build/ox_modules/module-http/ntlm.js +15 -15
- package/build/ox_modules/module-http.js +132 -132
- package/build/ox_modules/module-log.js +27 -27
- package/build/ox_modules/module-mailinator.js +87 -87
- package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-mob/commands/assertText.js +21 -21
- package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
- package/build/ox_modules/module-mob/commands/back.js +16 -16
- package/build/ox_modules/module-mob/commands/clear.js +19 -19
- package/build/ox_modules/module-mob/commands/click.js +17 -17
- package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
- package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
- package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/debug.js +16 -16
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
- package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
- package/build/ox_modules/module-mob/commands/execute.js +21 -21
- package/build/ox_modules/module-mob/commands/findElement.js +20 -20
- package/build/ox_modules/module-mob/commands/findElements.js +23 -23
- package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
- package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
- package/build/ox_modules/module-mob/commands/getSource.js +16 -16
- package/build/ox_modules/module-mob/commands/getText.js +18 -18
- package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
- package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
- package/build/ox_modules/module-mob/commands/getValue.js +18 -18
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
- package/build/ox_modules/module-mob/commands/index.js +1 -1
- package/build/ox_modules/module-mob/commands/installApp.js +16 -16
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
- package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
- package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
- package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
- package/build/ox_modules/module-mob/commands/isExist.js +19 -19
- package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
- package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
- package/build/ox_modules/module-mob/commands/open.js +17 -17
- package/build/ox_modules/module-mob/commands/pause.js +16 -16
- package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
- package/build/ox_modules/module-mob/commands/select.js +24 -24
- package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
- package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
- package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
- package/build/ox_modules/module-mob/commands/setContext.js +16 -16
- package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
- package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/shake.js +16 -16
- package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
- package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
- package/build/ox_modules/module-mob/commands/swipe.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-mob/commands/tap.js +17 -17
- package/build/ox_modules/module-mob/commands/type.js +20 -20
- package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
- package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-mob.js +74 -74
- package/build/ox_modules/module-mongo.js +82 -82
- package/build/ox_modules/module-pdf.js +35 -35
- package/build/ox_modules/module-proxy.js +77 -77
- package/build/ox_modules/module-serial.js +55 -55
- package/build/ox_modules/module-shell.js +52 -33
- package/build/ox_modules/module-soap.js +72 -72
- package/build/ox_modules/module-twilio.js +41 -41
- package/build/ox_modules/module-utils.js +91 -91
- package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-web/commands/assertExist.js +17 -17
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/assertText.js +21 -21
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-web/commands/assertValue.js +20 -20
- package/build/ox_modules/module-web/commands/back.js +16 -16
- package/build/ox_modules/module-web/commands/clear.js +18 -18
- package/build/ox_modules/module-web/commands/click.js +25 -25
- package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
- package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
- package/build/ox_modules/module-web/commands/debug.js +15 -15
- package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
- package/build/ox_modules/module-web/commands/deselect.js +22 -22
- package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
- package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
- package/build/ox_modules/module-web/commands/execute.js +24 -24
- package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
- package/build/ox_modules/module-web/commands/findElement.js +19 -19
- package/build/ox_modules/module-web/commands/findElements.js +22 -22
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
- package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
- package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
- package/build/ox_modules/module-web/commands/getCookies.js +13 -13
- package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
- package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
- package/build/ox_modules/module-web/commands/getHTML.js +17 -17
- package/build/ox_modules/module-web/commands/getSource.js +16 -16
- package/build/ox_modules/module-web/commands/getText.js +18 -18
- package/build/ox_modules/module-web/commands/getTitle.js +12 -12
- package/build/ox_modules/module-web/commands/getUrl.js +16 -16
- package/build/ox_modules/module-web/commands/getValue.js +18 -18
- package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
- package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
- package/build/ox_modules/module-web/commands/index.js +1 -1
- package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
- package/build/ox_modules/module-web/commands/isChecked.js +18 -18
- package/build/ox_modules/module-web/commands/isExist.js +19 -19
- package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
- package/build/ox_modules/module-web/commands/isSelected.js +23 -23
- package/build/ox_modules/module-web/commands/isVisible.js +19 -19
- package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
- package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/mock.js +20 -20
- package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
- package/build/ox_modules/module-web/commands/newWindow.js +16 -16
- package/build/ox_modules/module-web/commands/open.js +16 -16
- package/build/ox_modules/module-web/commands/pause.js +15 -15
- package/build/ox_modules/module-web/commands/point.js +21 -21
- package/build/ox_modules/module-web/commands/pointJS.js +15 -15
- package/build/ox_modules/module-web/commands/refresh.js +15 -15
- package/build/ox_modules/module-web/commands/rightClick.js +17 -17
- package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
- package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
- package/build/ox_modules/module-web/commands/select.js +23 -23
- package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
- package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
- package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
- package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-web/commands/type.js +20 -20
- package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
- package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/verifyText.js +21 -21
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
- package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
- package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
- package/build/ox_modules/module-web.js +94 -94
- package/build/ox_modules/module-win/commands/assertText.js +17 -17
- package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
- package/build/ox_modules/module-win/commands/assertValue.js +14 -14
- package/build/ox_modules/module-win/commands/back.js +11 -11
- package/build/ox_modules/module-win/commands/clear.js +13 -13
- package/build/ox_modules/module-win/commands/click.js +13 -13
- package/build/ox_modules/module-win/commands/clickLong.js +14 -14
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
- package/build/ox_modules/module-win/commands/findElement.js +15 -15
- package/build/ox_modules/module-win/commands/findElements.js +15 -15
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
- package/build/ox_modules/module-win/commands/getLocation.js +14 -14
- package/build/ox_modules/module-win/commands/getSource.js +12 -12
- package/build/ox_modules/module-win/commands/getText.js +14 -14
- package/build/ox_modules/module-win/commands/getValue.js +14 -14
- package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
- package/build/ox_modules/module-win/commands/index.js +1 -1
- package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
- package/build/ox_modules/module-win/commands/isChecked.js +14 -14
- package/build/ox_modules/module-win/commands/isClickable.js +14 -14
- package/build/ox_modules/module-win/commands/isExist.js +15 -15
- package/build/ox_modules/module-win/commands/isSelected.js +14 -14
- package/build/ox_modules/module-win/commands/isVisible.js +15 -15
- package/build/ox_modules/module-win/commands/open.js +13 -13
- package/build/ox_modules/module-win/commands/pause.js +12 -12
- package/build/ox_modules/module-win/commands/rightClick.js +13 -13
- package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
- package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
- package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
- package/build/ox_modules/module-win/commands/tap.js +13 -13
- package/build/ox_modules/module-win/commands/type.js +16 -16
- package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
- package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
- package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
- package/build/ox_modules/module-win.js +47 -47
- package/build/ox_modules/utils.js +8 -8
- package/build/ox_reporters/excel/template.json +48 -48
- package/build/ox_reporters/html/index.ejs +163 -163
- package/build/ox_reporters/html/summary.ejs +77 -77
- package/build/ox_reporters/html/tests-details.ejs +134 -134
- package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
- package/build/ox_reporters/reporter-excel.js +1 -1
- package/build/ox_reporters/reporter-html.js +1 -1
- package/build/ox_reporters/reporter-json.js +1 -1
- package/build/ox_reporters/reporter-junit.js +1 -1
- package/build/ox_reporters/reporter-pdf.js +1 -1
- package/build/ox_reporters/reporter-rp.js +73 -42
- package/build/ox_reporters/reporter-xml.js +1 -1
- package/build/ox_services/service-devtools/submodule-network.js +1 -1
- package/build/ox_services/service-devtools.js +1 -1
- package/build/reporter/FileReporterBase.js +1 -1
- package/build/reporter/ReportAggregator.js +1 -1
- package/build/reporter/ReporterBase.js +1 -1
- package/build/reporter/WebSocketReporter.js +1 -1
- package/build/runners/WorkerProcess.js +1 -1
- package/build/runners/cucumber/CucumberEventListener.js +1 -1
- package/build/runners/cucumber/CucumberReporter.js +1 -1
- package/build/runners/cucumber/CucumberWorker.js +1 -1
- package/build/runners/cucumber/index.js +1 -1
- package/build/runners/cucumber/worker.js +1 -1
- package/build/runners/index.js +1 -1
- package/build/runners/oxygen/OxygenWorker.js +1 -1
- package/build/runners/oxygen/index.js +1 -1
- package/build/runners/oxygen/worker.js +1 -1
- package/config/default.json +6 -6
- package/package.json +139 -139
- package/types/index.d.ts +70 -70
- package/types/module-eyes.d.ts +39 -39
- package/types/module-http.d.ts +163 -163
- package/types/module-log.d.ts +34 -34
- package/types/module-mob.d.ts +966 -966
- package/types/module-pdf.d.ts +40 -40
- package/types/module-proxy.d.ts +100 -100
- package/types/module-shell.d.ts +24 -24
- package/types/module-utils.d.ts +99 -99
- package/types/module-web.d.ts +1053 -1053
- package/types/module-win.d.ts +352 -352
- package/types/oxygen.d.ts +53 -53
- package/log.txt +0 -1614
- package/reports/2025-06-08_231627/report.html +0 -440
- package/reports/2025-06-09_223615/report.html +0 -440
- package/transpiled/mongodb/etc/prepare.js +0 -18
- package/transpiled/mongodb/lib/admin.js +0 -182
- package/transpiled/mongodb/lib/beta.js +0 -26
- package/transpiled/mongodb/lib/bson.js +0 -220
- package/transpiled/mongodb/lib/bulk/common.js +0 -1041
- package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
- package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
- package/transpiled/mongodb/lib/change_stream.js +0 -517
- package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
- package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
- package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
- package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
- package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
- package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
- package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
- package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
- package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
- package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
- package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
- package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
- package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
- package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
- package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
- package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
- package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
- package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
- package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
- package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
- package/transpiled/mongodb/lib/cmap/commands.js +0 -605
- package/transpiled/mongodb/lib/cmap/connect.js +0 -418
- package/transpiled/mongodb/lib/cmap/connection.js +0 -673
- package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
- package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
- package/transpiled/mongodb/lib/cmap/errors.js +0 -128
- package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
- package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
- package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
- package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
- package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
- package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
- package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
- package/transpiled/mongodb/lib/collection.js +0 -852
- package/transpiled/mongodb/lib/connection_string.js +0 -1452
- package/transpiled/mongodb/lib/constants.js +0 -162
- package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
- package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
- package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
- package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
- package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
- package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
- package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
- package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
- package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
- package/transpiled/mongodb/lib/db.js +0 -467
- package/transpiled/mongodb/lib/deps.js +0 -174
- package/transpiled/mongodb/lib/encrypter.js +0 -129
- package/transpiled/mongodb/lib/error.js +0 -1550
- package/transpiled/mongodb/lib/explain.js +0 -122
- package/transpiled/mongodb/lib/gridfs/download.js +0 -369
- package/transpiled/mongodb/lib/gridfs/index.js +0 -240
- package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
- package/transpiled/mongodb/lib/index.js +0 -975
- package/transpiled/mongodb/lib/mongo_client.js +0 -626
- package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
- package/transpiled/mongodb/lib/mongo_logger.js +0 -812
- package/transpiled/mongodb/lib/mongo_types.js +0 -71
- package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
- package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
- package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
- package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
- package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
- package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
- package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
- package/transpiled/mongodb/lib/operations/collections.js +0 -49
- package/transpiled/mongodb/lib/operations/command.js +0 -102
- package/transpiled/mongodb/lib/operations/count.js +0 -60
- package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
- package/transpiled/mongodb/lib/operations/delete.js +0 -134
- package/transpiled/mongodb/lib/operations/distinct.js +0 -77
- package/transpiled/mongodb/lib/operations/drop.js +0 -102
- package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
- package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
- package/transpiled/mongodb/lib/operations/find.js +0 -197
- package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
- package/transpiled/mongodb/lib/operations/get_more.js +0 -84
- package/transpiled/mongodb/lib/operations/indexes.js +0 -197
- package/transpiled/mongodb/lib/operations/insert.js +0 -138
- package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
- package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
- package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
- package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
- package/transpiled/mongodb/lib/operations/operation.js +0 -88
- package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
- package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
- package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
- package/transpiled/mongodb/lib/operations/rename.js +0 -48
- package/transpiled/mongodb/lib/operations/run_command.js +0 -64
- package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
- package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
- package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
- package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
- package/transpiled/mongodb/lib/operations/stats.js +0 -39
- package/transpiled/mongodb/lib/operations/update.js +0 -218
- package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
- package/transpiled/mongodb/lib/read_concern.js +0 -92
- package/transpiled/mongodb/lib/read_preference.js +0 -215
- package/transpiled/mongodb/lib/resource_management.js +0 -74
- package/transpiled/mongodb/lib/sdam/common.js +0 -53
- package/transpiled/mongodb/lib/sdam/events.js +0 -177
- package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
- package/transpiled/mongodb/lib/sdam/server.js +0 -463
- package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
- package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
- package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
- package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
- package/transpiled/mongodb/lib/sdam/topology.js +0 -833
- package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
- package/transpiled/mongodb/lib/sessions.js +0 -988
- package/transpiled/mongodb/lib/sort.js +0 -123
- package/transpiled/mongodb/lib/timeout.js +0 -349
- package/transpiled/mongodb/lib/transactions.js +0 -149
- package/transpiled/mongodb/lib/utils.js +0 -1502
- 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
|
-
}
|