oxygen-cli 1.40.2-beta.1 → 1.40.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1750 -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 -2
- package/build/index.js +1 -1
- package/build/lib/cli-util.js +1 -5
- 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 -9
- 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-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 +5 -13
- 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 +137 -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/build/ox_modules/module-mongo.js +0 -302
- 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,409 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.buildReplaceOneOperation = exports.buildUpdateManyOperation = exports.buildUpdateOneOperation = exports.buildDeleteManyOperation = exports.buildDeleteOneOperation = exports.buildInsertOneOperation = exports.ClientBulkWriteCommandBuilder = void 0;
|
|
7
|
-
exports.buildOperation = buildOperation;
|
|
8
|
-
|
|
9
|
-
const bson_1 = require("../../bson");
|
|
10
|
-
|
|
11
|
-
const commands_1 = require("../../cmap/commands");
|
|
12
|
-
|
|
13
|
-
const error_1 = require("../../error");
|
|
14
|
-
|
|
15
|
-
const sort_1 = require("../../sort");
|
|
16
|
-
|
|
17
|
-
const utils_1 = require("../../utils");
|
|
18
|
-
/**
|
|
19
|
-
* The bytes overhead for the extra fields added post command generation.
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const MESSAGE_OVERHEAD_BYTES = 1000;
|
|
24
|
-
/** @internal */
|
|
25
|
-
|
|
26
|
-
class ClientBulkWriteCommandBuilder {
|
|
27
|
-
/**
|
|
28
|
-
* Create the command builder.
|
|
29
|
-
* @param models - The client write models.
|
|
30
|
-
*/
|
|
31
|
-
constructor(models, options, pkFactory) {
|
|
32
|
-
this.models = models;
|
|
33
|
-
this.options = options;
|
|
34
|
-
this.pkFactory = pkFactory ?? utils_1.DEFAULT_PK_FACTORY;
|
|
35
|
-
this.currentModelIndex = 0;
|
|
36
|
-
this.previousModelIndex = 0;
|
|
37
|
-
this.lastOperations = [];
|
|
38
|
-
this.isBatchRetryable = true;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Gets the errorsOnly value for the command, which is the inverse of the
|
|
42
|
-
* user provided verboseResults option. Defaults to true.
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
get errorsOnly() {
|
|
47
|
-
if ('verboseResults' in this.options) {
|
|
48
|
-
return !this.options.verboseResults;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Determines if there is another batch to process.
|
|
55
|
-
* @returns True if not all batches have been built.
|
|
56
|
-
*/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
hasNextBatch() {
|
|
60
|
-
return this.currentModelIndex < this.models.length;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* When we need to retry a command we need to set the current
|
|
64
|
-
* model index back to its previous value.
|
|
65
|
-
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
resetBatch() {
|
|
69
|
-
this.currentModelIndex = this.previousModelIndex;
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Build a single batch of a client bulk write command.
|
|
74
|
-
* @param maxMessageSizeBytes - The max message size in bytes.
|
|
75
|
-
* @param maxWriteBatchSize - The max write batch size.
|
|
76
|
-
* @returns The client bulk write command.
|
|
77
|
-
*/
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
buildBatch(maxMessageSizeBytes, maxWriteBatchSize, maxBsonObjectSize) {
|
|
81
|
-
// We start by assuming the batch has no multi-updates, so it is retryable
|
|
82
|
-
// until we find them.
|
|
83
|
-
this.isBatchRetryable = true;
|
|
84
|
-
let commandLength = 0;
|
|
85
|
-
let currentNamespaceIndex = 0;
|
|
86
|
-
const command = this.baseCommand();
|
|
87
|
-
const namespaces = new Map(); // In the case of retries we need to mark where we started this batch.
|
|
88
|
-
|
|
89
|
-
this.previousModelIndex = this.currentModelIndex;
|
|
90
|
-
|
|
91
|
-
while (this.currentModelIndex < this.models.length) {
|
|
92
|
-
const model = this.models[this.currentModelIndex];
|
|
93
|
-
const ns = model.namespace;
|
|
94
|
-
const nsIndex = namespaces.get(ns); // Multi updates are not retryable.
|
|
95
|
-
|
|
96
|
-
if (model.name === 'deleteMany' || model.name === 'updateMany') {
|
|
97
|
-
this.isBatchRetryable = false;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (nsIndex != null) {
|
|
101
|
-
// Build the operation and serialize it to get the bytes buffer.
|
|
102
|
-
const operation = buildOperation(model, nsIndex, this.pkFactory, this.options);
|
|
103
|
-
let operationBuffer;
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
operationBuffer = bson_1.BSON.serialize(operation);
|
|
107
|
-
} catch (cause) {
|
|
108
|
-
throw new error_1.MongoInvalidArgumentError(`Could not serialize operation to BSON`, {
|
|
109
|
-
cause
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
validateBufferSize('ops', operationBuffer, maxBsonObjectSize); // Check if the operation buffer can fit in the command. If it can,
|
|
114
|
-
// then add the operation to the document sequence and increment the
|
|
115
|
-
// current length as long as the ops don't exceed the maxWriteBatchSize.
|
|
116
|
-
|
|
117
|
-
if (commandLength + operationBuffer.length < maxMessageSizeBytes && command.ops.documents.length < maxWriteBatchSize) {
|
|
118
|
-
// Pushing to the ops document sequence returns the total byte length of the document sequence.
|
|
119
|
-
commandLength = MESSAGE_OVERHEAD_BYTES + command.ops.push(operation, operationBuffer); // Increment the builder's current model index.
|
|
120
|
-
|
|
121
|
-
this.currentModelIndex++;
|
|
122
|
-
} else {
|
|
123
|
-
// The operation cannot fit in the current command and will need to
|
|
124
|
-
// go in the next batch. Exit the loop.
|
|
125
|
-
break;
|
|
126
|
-
}
|
|
127
|
-
} else {
|
|
128
|
-
// The namespace is not already in the nsInfo so we will set it in the map, and
|
|
129
|
-
// construct our nsInfo and ops documents and buffers.
|
|
130
|
-
namespaces.set(ns, currentNamespaceIndex);
|
|
131
|
-
const nsInfo = {
|
|
132
|
-
ns: ns
|
|
133
|
-
};
|
|
134
|
-
const operation = buildOperation(model, currentNamespaceIndex, this.pkFactory, this.options);
|
|
135
|
-
let nsInfoBuffer;
|
|
136
|
-
let operationBuffer;
|
|
137
|
-
|
|
138
|
-
try {
|
|
139
|
-
nsInfoBuffer = bson_1.BSON.serialize(nsInfo);
|
|
140
|
-
operationBuffer = bson_1.BSON.serialize(operation);
|
|
141
|
-
} catch (cause) {
|
|
142
|
-
throw new error_1.MongoInvalidArgumentError(`Could not serialize ns info to BSON`, {
|
|
143
|
-
cause
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
validateBufferSize('nsInfo', nsInfoBuffer, maxBsonObjectSize);
|
|
148
|
-
validateBufferSize('ops', operationBuffer, maxBsonObjectSize); // Check if the operation and nsInfo buffers can fit in the command. If they
|
|
149
|
-
// can, then add the operation and nsInfo to their respective document
|
|
150
|
-
// sequences and increment the current length as long as the ops don't exceed
|
|
151
|
-
// the maxWriteBatchSize.
|
|
152
|
-
|
|
153
|
-
if (commandLength + nsInfoBuffer.length + operationBuffer.length < maxMessageSizeBytes && command.ops.documents.length < maxWriteBatchSize) {
|
|
154
|
-
// Pushing to the ops document sequence returns the total byte length of the document sequence.
|
|
155
|
-
commandLength = MESSAGE_OVERHEAD_BYTES + command.nsInfo.push(nsInfo, nsInfoBuffer) + command.ops.push(operation, operationBuffer); // We've added a new namespace, increment the namespace index.
|
|
156
|
-
|
|
157
|
-
currentNamespaceIndex++; // Increment the builder's current model index.
|
|
158
|
-
|
|
159
|
-
this.currentModelIndex++;
|
|
160
|
-
} else {
|
|
161
|
-
// The operation cannot fit in the current command and will need to
|
|
162
|
-
// go in the next batch. Exit the loop.
|
|
163
|
-
break;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
} // Set the last operations and return the command.
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
this.lastOperations = command.ops.documents;
|
|
170
|
-
return command;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
baseCommand() {
|
|
174
|
-
const command = {
|
|
175
|
-
bulkWrite: 1,
|
|
176
|
-
errorsOnly: this.errorsOnly,
|
|
177
|
-
ordered: this.options.ordered ?? true,
|
|
178
|
-
ops: new commands_1.DocumentSequence('ops'),
|
|
179
|
-
nsInfo: new commands_1.DocumentSequence('nsInfo')
|
|
180
|
-
}; // Add bypassDocumentValidation if it was present in the options.
|
|
181
|
-
|
|
182
|
-
if (this.options.bypassDocumentValidation != null) {
|
|
183
|
-
command.bypassDocumentValidation = this.options.bypassDocumentValidation;
|
|
184
|
-
} // Add let if it was present in the options.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
if (this.options.let) {
|
|
188
|
-
command.let = this.options.let;
|
|
189
|
-
} // we check for undefined specifically here to allow falsy values
|
|
190
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (this.options.comment !== undefined) {
|
|
194
|
-
command.comment = this.options.comment;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return command;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
exports.ClientBulkWriteCommandBuilder = ClientBulkWriteCommandBuilder;
|
|
203
|
-
|
|
204
|
-
function validateBufferSize(name, buffer, maxBsonObjectSize) {
|
|
205
|
-
if (buffer.length > maxBsonObjectSize) {
|
|
206
|
-
throw new error_1.MongoInvalidArgumentError(`Client bulk write operation ${name} of length ${buffer.length} exceeds the max bson object size of ${maxBsonObjectSize}`);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Build the insert one operation.
|
|
211
|
-
* @param model - The insert one model.
|
|
212
|
-
* @param index - The namespace index.
|
|
213
|
-
* @returns the operation.
|
|
214
|
-
*/
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const buildInsertOneOperation = (model, index, pkFactory) => {
|
|
218
|
-
const document = {
|
|
219
|
-
insert: index,
|
|
220
|
-
document: model.document
|
|
221
|
-
};
|
|
222
|
-
document.document._id = model.document._id ?? pkFactory.createPk();
|
|
223
|
-
return document;
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
exports.buildInsertOneOperation = buildInsertOneOperation;
|
|
227
|
-
/**
|
|
228
|
-
* Build the delete one operation.
|
|
229
|
-
* @param model - The insert many model.
|
|
230
|
-
* @param index - The namespace index.
|
|
231
|
-
* @returns the operation.
|
|
232
|
-
*/
|
|
233
|
-
|
|
234
|
-
const buildDeleteOneOperation = (model, index) => {
|
|
235
|
-
return createDeleteOperation(model, index, false);
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
exports.buildDeleteOneOperation = buildDeleteOneOperation;
|
|
239
|
-
/**
|
|
240
|
-
* Build the delete many operation.
|
|
241
|
-
* @param model - The delete many model.
|
|
242
|
-
* @param index - The namespace index.
|
|
243
|
-
* @returns the operation.
|
|
244
|
-
*/
|
|
245
|
-
|
|
246
|
-
const buildDeleteManyOperation = (model, index) => {
|
|
247
|
-
return createDeleteOperation(model, index, true);
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
exports.buildDeleteManyOperation = buildDeleteManyOperation;
|
|
251
|
-
/**
|
|
252
|
-
* Creates a delete operation based on the parameters.
|
|
253
|
-
*/
|
|
254
|
-
|
|
255
|
-
function createDeleteOperation(model, index, multi) {
|
|
256
|
-
const document = {
|
|
257
|
-
delete: index,
|
|
258
|
-
multi: multi,
|
|
259
|
-
filter: model.filter
|
|
260
|
-
};
|
|
261
|
-
|
|
262
|
-
if (model.hint) {
|
|
263
|
-
document.hint = model.hint;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
if (model.collation) {
|
|
267
|
-
document.collation = model.collation;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
return document;
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Build the update one operation.
|
|
274
|
-
* @param model - The update one model.
|
|
275
|
-
* @param index - The namespace index.
|
|
276
|
-
* @returns the operation.
|
|
277
|
-
*/
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
const buildUpdateOneOperation = (model, index, options) => {
|
|
281
|
-
return createUpdateOperation(model, index, false, options);
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
exports.buildUpdateOneOperation = buildUpdateOneOperation;
|
|
285
|
-
/**
|
|
286
|
-
* Build the update many operation.
|
|
287
|
-
* @param model - The update many model.
|
|
288
|
-
* @param index - The namespace index.
|
|
289
|
-
* @returns the operation.
|
|
290
|
-
*/
|
|
291
|
-
|
|
292
|
-
const buildUpdateManyOperation = (model, index, options) => {
|
|
293
|
-
return createUpdateOperation(model, index, true, options);
|
|
294
|
-
};
|
|
295
|
-
|
|
296
|
-
exports.buildUpdateManyOperation = buildUpdateManyOperation;
|
|
297
|
-
/**
|
|
298
|
-
* Validate the update document.
|
|
299
|
-
* @param update - The update document.
|
|
300
|
-
*/
|
|
301
|
-
|
|
302
|
-
function validateUpdate(update, options) {
|
|
303
|
-
if (!(0, utils_1.hasAtomicOperators)(update, options)) {
|
|
304
|
-
throw new error_1.MongoAPIError('Client bulk write update models must only contain atomic modifiers (start with $) and must not be empty.');
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
/**
|
|
308
|
-
* Creates a delete operation based on the parameters.
|
|
309
|
-
*/
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
function createUpdateOperation(model, index, multi, options) {
|
|
313
|
-
// Update documents provided in UpdateOne and UpdateMany write models are
|
|
314
|
-
// required only to contain atomic modifiers (i.e. keys that start with "$").
|
|
315
|
-
// Drivers MUST throw an error if an update document is empty or if the
|
|
316
|
-
// document's first key does not start with "$".
|
|
317
|
-
validateUpdate(model.update, options);
|
|
318
|
-
const document = {
|
|
319
|
-
update: index,
|
|
320
|
-
multi: multi,
|
|
321
|
-
filter: model.filter,
|
|
322
|
-
updateMods: model.update
|
|
323
|
-
};
|
|
324
|
-
|
|
325
|
-
if (model.hint) {
|
|
326
|
-
document.hint = model.hint;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
if (model.upsert) {
|
|
330
|
-
document.upsert = model.upsert;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if (model.arrayFilters) {
|
|
334
|
-
document.arrayFilters = model.arrayFilters;
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
if (model.collation) {
|
|
338
|
-
document.collation = model.collation;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
if (!multi && 'sort' in model && model.sort != null) {
|
|
342
|
-
document.sort = (0, sort_1.formatSort)(model.sort);
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
return document;
|
|
346
|
-
}
|
|
347
|
-
/**
|
|
348
|
-
* Build the replace one operation.
|
|
349
|
-
* @param model - The replace one model.
|
|
350
|
-
* @param index - The namespace index.
|
|
351
|
-
* @returns the operation.
|
|
352
|
-
*/
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
const buildReplaceOneOperation = (model, index) => {
|
|
356
|
-
if ((0, utils_1.hasAtomicOperators)(model.replacement)) {
|
|
357
|
-
throw new error_1.MongoAPIError('Client bulk write replace models must not contain atomic modifiers (start with $) and must not be empty.');
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
const document = {
|
|
361
|
-
update: index,
|
|
362
|
-
multi: false,
|
|
363
|
-
filter: model.filter,
|
|
364
|
-
updateMods: model.replacement
|
|
365
|
-
};
|
|
366
|
-
|
|
367
|
-
if (model.hint) {
|
|
368
|
-
document.hint = model.hint;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
if (model.upsert) {
|
|
372
|
-
document.upsert = model.upsert;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
if (model.collation) {
|
|
376
|
-
document.collation = model.collation;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
if (model.sort != null) {
|
|
380
|
-
document.sort = (0, sort_1.formatSort)(model.sort);
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
return document;
|
|
384
|
-
};
|
|
385
|
-
|
|
386
|
-
exports.buildReplaceOneOperation = buildReplaceOneOperation;
|
|
387
|
-
/** @internal */
|
|
388
|
-
|
|
389
|
-
function buildOperation(model, index, pkFactory, options) {
|
|
390
|
-
switch (model.name) {
|
|
391
|
-
case 'insertOne':
|
|
392
|
-
return (0, exports.buildInsertOneOperation)(model, index, pkFactory);
|
|
393
|
-
|
|
394
|
-
case 'deleteOne':
|
|
395
|
-
return (0, exports.buildDeleteOneOperation)(model, index);
|
|
396
|
-
|
|
397
|
-
case 'deleteMany':
|
|
398
|
-
return (0, exports.buildDeleteManyOperation)(model, index);
|
|
399
|
-
|
|
400
|
-
case 'updateOne':
|
|
401
|
-
return (0, exports.buildUpdateOneOperation)(model, index, options);
|
|
402
|
-
|
|
403
|
-
case 'updateMany':
|
|
404
|
-
return (0, exports.buildUpdateManyOperation)(model, index, options);
|
|
405
|
-
|
|
406
|
-
case 'replaceOne':
|
|
407
|
-
return (0, exports.buildReplaceOneOperation)(model, index);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ClientBulkWriteExecutor = void 0;
|
|
7
|
-
|
|
8
|
-
const abstract_cursor_1 = require("../../cursor/abstract_cursor");
|
|
9
|
-
|
|
10
|
-
const client_bulk_write_cursor_1 = require("../../cursor/client_bulk_write_cursor");
|
|
11
|
-
|
|
12
|
-
const error_1 = require("../../error");
|
|
13
|
-
|
|
14
|
-
const timeout_1 = require("../../timeout");
|
|
15
|
-
|
|
16
|
-
const utils_1 = require("../../utils");
|
|
17
|
-
|
|
18
|
-
const write_concern_1 = require("../../write_concern");
|
|
19
|
-
|
|
20
|
-
const execute_operation_1 = require("../execute_operation");
|
|
21
|
-
|
|
22
|
-
const client_bulk_write_1 = require("./client_bulk_write");
|
|
23
|
-
|
|
24
|
-
const command_builder_1 = require("./command_builder");
|
|
25
|
-
|
|
26
|
-
const results_merger_1 = require("./results_merger");
|
|
27
|
-
/**
|
|
28
|
-
* Responsible for executing a client bulk write.
|
|
29
|
-
* @internal
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class ClientBulkWriteExecutor {
|
|
34
|
-
/**
|
|
35
|
-
* Instantiate the executor.
|
|
36
|
-
* @param client - The mongo client.
|
|
37
|
-
* @param operations - The user supplied bulk write models.
|
|
38
|
-
* @param options - The bulk write options.
|
|
39
|
-
*/
|
|
40
|
-
constructor(client, operations, options) {
|
|
41
|
-
if (operations.length === 0) {
|
|
42
|
-
throw new error_1.MongoClientBulkWriteExecutionError('No client bulk write models were provided.');
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
this.client = client;
|
|
46
|
-
this.operations = operations;
|
|
47
|
-
this.options = {
|
|
48
|
-
ordered: true,
|
|
49
|
-
bypassDocumentValidation: false,
|
|
50
|
-
verboseResults: false,
|
|
51
|
-
...options
|
|
52
|
-
}; // If no write concern was provided, we inherit one from the client.
|
|
53
|
-
|
|
54
|
-
if (!this.options.writeConcern) {
|
|
55
|
-
this.options.writeConcern = write_concern_1.WriteConcern.fromOptions(this.client.s.options);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (this.options.writeConcern?.w === 0) {
|
|
59
|
-
if (this.options.verboseResults) {
|
|
60
|
-
throw new error_1.MongoInvalidArgumentError('Cannot request unacknowledged write concern and verbose results');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (this.options.ordered) {
|
|
64
|
-
throw new error_1.MongoInvalidArgumentError('Cannot request unacknowledged write concern and ordered writes');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Execute the client bulk write. Will split commands into batches and exhaust the cursors
|
|
70
|
-
* for each, then merge the results into one.
|
|
71
|
-
* @returns The result.
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
async execute() {
|
|
76
|
-
// The command builder will take the user provided models and potential split the batch
|
|
77
|
-
// into multiple commands due to size.
|
|
78
|
-
const pkFactory = this.client.s.options.pkFactory;
|
|
79
|
-
const commandBuilder = new command_builder_1.ClientBulkWriteCommandBuilder(this.operations, this.options, pkFactory); // Unacknowledged writes need to execute all batches and return { ok: 1}
|
|
80
|
-
|
|
81
|
-
const resolvedOptions = (0, utils_1.resolveTimeoutOptions)(this.client, this.options);
|
|
82
|
-
const context = timeout_1.TimeoutContext.create(resolvedOptions);
|
|
83
|
-
|
|
84
|
-
if (this.options.writeConcern?.w === 0) {
|
|
85
|
-
while (commandBuilder.hasNextBatch()) {
|
|
86
|
-
const operation = new client_bulk_write_1.ClientBulkWriteOperation(commandBuilder, this.options);
|
|
87
|
-
await (0, execute_operation_1.executeOperation)(this.client, operation, context);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return results_merger_1.ClientBulkWriteResultsMerger.unacknowledged();
|
|
91
|
-
} else {
|
|
92
|
-
const resultsMerger = new results_merger_1.ClientBulkWriteResultsMerger(this.options); // For each command will will create and exhaust a cursor for the results.
|
|
93
|
-
|
|
94
|
-
while (commandBuilder.hasNextBatch()) {
|
|
95
|
-
const cursorContext = new abstract_cursor_1.CursorTimeoutContext(context, Symbol());
|
|
96
|
-
const options = { ...this.options,
|
|
97
|
-
timeoutContext: cursorContext,
|
|
98
|
-
...(resolvedOptions.timeoutMS != null && {
|
|
99
|
-
timeoutMode: abstract_cursor_1.CursorTimeoutMode.LIFETIME
|
|
100
|
-
})
|
|
101
|
-
};
|
|
102
|
-
const cursor = new client_bulk_write_cursor_1.ClientBulkWriteCursor(this.client, commandBuilder, options);
|
|
103
|
-
|
|
104
|
-
try {
|
|
105
|
-
await resultsMerger.merge(cursor);
|
|
106
|
-
} catch (error) {
|
|
107
|
-
// Write concern errors are recorded in the writeConcernErrors field on MongoClientBulkWriteError.
|
|
108
|
-
// When a write concern error is encountered, it should not terminate execution of the bulk write
|
|
109
|
-
// for either ordered or unordered bulk writes. However, drivers MUST throw an exception at the end
|
|
110
|
-
// of execution if any write concern errors were observed.
|
|
111
|
-
if (error instanceof error_1.MongoServerError && !(error instanceof error_1.MongoClientBulkWriteError)) {
|
|
112
|
-
// Server side errors need to be wrapped inside a MongoClientBulkWriteError, where the root
|
|
113
|
-
// cause is the error property and a partial result is to be included.
|
|
114
|
-
const bulkWriteError = new error_1.MongoClientBulkWriteError({
|
|
115
|
-
message: 'Mongo client bulk write encountered an error during execution'
|
|
116
|
-
});
|
|
117
|
-
bulkWriteError.cause = error;
|
|
118
|
-
bulkWriteError.partialResult = resultsMerger.bulkWriteResult;
|
|
119
|
-
throw bulkWriteError;
|
|
120
|
-
} else {
|
|
121
|
-
// Client side errors are just thrown.
|
|
122
|
-
throw error;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
} // If we have write concern errors or unordered write errors at the end we throw.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (resultsMerger.writeConcernErrors.length > 0 || resultsMerger.writeErrors.size > 0) {
|
|
129
|
-
const error = new error_1.MongoClientBulkWriteError({
|
|
130
|
-
message: 'Mongo client bulk write encountered errors during execution.'
|
|
131
|
-
});
|
|
132
|
-
error.writeConcernErrors = resultsMerger.writeConcernErrors;
|
|
133
|
-
error.writeErrors = resultsMerger.writeErrors;
|
|
134
|
-
error.partialResult = resultsMerger.bulkWriteResult;
|
|
135
|
-
throw error;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return resultsMerger.bulkWriteResult;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
exports.ClientBulkWriteExecutor = ClientBulkWriteExecutor;
|