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,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.DistinctOperation = void 0;
|
|
7
|
-
|
|
8
|
-
const utils_1 = require("../utils");
|
|
9
|
-
|
|
10
|
-
const command_1 = require("./command");
|
|
11
|
-
|
|
12
|
-
const operation_1 = require("./operation");
|
|
13
|
-
/**
|
|
14
|
-
* Return a list of distinct values for the given key across a collection.
|
|
15
|
-
* @internal
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class DistinctOperation extends command_1.CommandOperation {
|
|
20
|
-
/**
|
|
21
|
-
* Construct a Distinct operation.
|
|
22
|
-
*
|
|
23
|
-
* @param collection - Collection instance.
|
|
24
|
-
* @param key - Field of the document to find distinct values for.
|
|
25
|
-
* @param query - The query for filtering the set of documents to which we apply the distinct filter.
|
|
26
|
-
* @param options - Optional settings. See Collection.prototype.distinct for a list of options.
|
|
27
|
-
*/
|
|
28
|
-
constructor(collection, key, query, options) {
|
|
29
|
-
super(collection, options);
|
|
30
|
-
this.options = options ?? {};
|
|
31
|
-
this.collection = collection;
|
|
32
|
-
this.key = key;
|
|
33
|
-
this.query = query;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get commandName() {
|
|
37
|
-
return 'distinct';
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
async execute(server, session, timeoutContext) {
|
|
41
|
-
const coll = this.collection;
|
|
42
|
-
const key = this.key;
|
|
43
|
-
const query = this.query;
|
|
44
|
-
const options = this.options; // Distinct command
|
|
45
|
-
|
|
46
|
-
const cmd = {
|
|
47
|
-
distinct: coll.collectionName,
|
|
48
|
-
key: key,
|
|
49
|
-
query: query
|
|
50
|
-
}; // Add maxTimeMS if defined
|
|
51
|
-
|
|
52
|
-
if (typeof options.maxTimeMS === 'number') {
|
|
53
|
-
cmd.maxTimeMS = options.maxTimeMS;
|
|
54
|
-
} // we check for undefined specifically here to allow falsy values
|
|
55
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (typeof options.comment !== 'undefined') {
|
|
59
|
-
cmd.comment = options.comment;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (options.hint != null) {
|
|
63
|
-
cmd.hint = options.hint;
|
|
64
|
-
} // Do we have a readConcern specified
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
(0, utils_1.decorateWithReadConcern)(cmd, coll, options); // Have we specified collation
|
|
68
|
-
|
|
69
|
-
(0, utils_1.decorateWithCollation)(cmd, coll, options);
|
|
70
|
-
const result = await super.executeCommand(server, session, cmd, timeoutContext);
|
|
71
|
-
return this.explain ? result : result.values;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
exports.DistinctOperation = DistinctOperation;
|
|
77
|
-
(0, operation_1.defineAspects)(DistinctOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.EXPLAINABLE]);
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.DropDatabaseOperation = exports.DropCollectionOperation = void 0;
|
|
7
|
-
|
|
8
|
-
const error_1 = require("../error");
|
|
9
|
-
|
|
10
|
-
const command_1 = require("./command");
|
|
11
|
-
|
|
12
|
-
const operation_1 = require("./operation");
|
|
13
|
-
/** @internal */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class DropCollectionOperation extends command_1.CommandOperation {
|
|
17
|
-
constructor(db, name, options = {}) {
|
|
18
|
-
super(db, options);
|
|
19
|
-
this.db = db;
|
|
20
|
-
this.options = options;
|
|
21
|
-
this.name = name;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
get commandName() {
|
|
25
|
-
return 'drop';
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async execute(server, session, timeoutContext) {
|
|
29
|
-
const db = this.db;
|
|
30
|
-
const options = this.options;
|
|
31
|
-
const name = this.name;
|
|
32
|
-
const encryptedFieldsMap = db.client.s.options.autoEncryption?.encryptedFieldsMap;
|
|
33
|
-
let encryptedFields = options.encryptedFields ?? encryptedFieldsMap?.[`${db.databaseName}.${name}`];
|
|
34
|
-
|
|
35
|
-
if (!encryptedFields && encryptedFieldsMap) {
|
|
36
|
-
// If the MongoClient was configured with an encryptedFieldsMap,
|
|
37
|
-
// and no encryptedFields config was available in it or explicitly
|
|
38
|
-
// passed as an argument, the spec tells us to look one up using
|
|
39
|
-
// listCollections().
|
|
40
|
-
const listCollectionsResult = await db.listCollections({
|
|
41
|
-
name
|
|
42
|
-
}, {
|
|
43
|
-
nameOnly: false
|
|
44
|
-
}).toArray();
|
|
45
|
-
encryptedFields = listCollectionsResult?.[0]?.options?.encryptedFields;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (encryptedFields) {
|
|
49
|
-
const escCollection = encryptedFields.escCollection || `enxcol_.${name}.esc`;
|
|
50
|
-
const ecocCollection = encryptedFields.ecocCollection || `enxcol_.${name}.ecoc`;
|
|
51
|
-
|
|
52
|
-
for (const collectionName of [escCollection, ecocCollection]) {
|
|
53
|
-
// Drop auxilliary collections, ignoring potential NamespaceNotFound errors.
|
|
54
|
-
const dropOp = new DropCollectionOperation(db, collectionName);
|
|
55
|
-
|
|
56
|
-
try {
|
|
57
|
-
await dropOp.executeWithoutEncryptedFieldsCheck(server, session, timeoutContext);
|
|
58
|
-
} catch (err) {
|
|
59
|
-
if (!(err instanceof error_1.MongoServerError) || err.code !== error_1.MONGODB_ERROR_CODES.NamespaceNotFound) {
|
|
60
|
-
throw err;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return await this.executeWithoutEncryptedFieldsCheck(server, session, timeoutContext);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
async executeWithoutEncryptedFieldsCheck(server, session, timeoutContext) {
|
|
70
|
-
await super.executeCommand(server, session, {
|
|
71
|
-
drop: this.name
|
|
72
|
-
}, timeoutContext);
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
exports.DropCollectionOperation = DropCollectionOperation;
|
|
79
|
-
/** @internal */
|
|
80
|
-
|
|
81
|
-
class DropDatabaseOperation extends command_1.CommandOperation {
|
|
82
|
-
constructor(db, options) {
|
|
83
|
-
super(db, options);
|
|
84
|
-
this.options = options;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
get commandName() {
|
|
88
|
-
return 'dropDatabase';
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
async execute(server, session, timeoutContext) {
|
|
92
|
-
await super.executeCommand(server, session, {
|
|
93
|
-
dropDatabase: 1
|
|
94
|
-
}, timeoutContext);
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
exports.DropDatabaseOperation = DropDatabaseOperation;
|
|
101
|
-
(0, operation_1.defineAspects)(DropCollectionOperation, [operation_1.Aspect.WRITE_OPERATION]);
|
|
102
|
-
(0, operation_1.defineAspects)(DropDatabaseOperation, [operation_1.Aspect.WRITE_OPERATION]);
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.EstimatedDocumentCountOperation = void 0;
|
|
7
|
-
|
|
8
|
-
const command_1 = require("./command");
|
|
9
|
-
|
|
10
|
-
const operation_1 = require("./operation");
|
|
11
|
-
/** @internal */
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class EstimatedDocumentCountOperation extends command_1.CommandOperation {
|
|
15
|
-
constructor(collection, options = {}) {
|
|
16
|
-
super(collection, options);
|
|
17
|
-
this.options = options;
|
|
18
|
-
this.collectionName = collection.collectionName;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
get commandName() {
|
|
22
|
-
return 'count';
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async execute(server, session, timeoutContext) {
|
|
26
|
-
const cmd = {
|
|
27
|
-
count: this.collectionName
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
if (typeof this.options.maxTimeMS === 'number') {
|
|
31
|
-
cmd.maxTimeMS = this.options.maxTimeMS;
|
|
32
|
-
} // we check for undefined specifically here to allow falsy values
|
|
33
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (this.options.comment !== undefined) {
|
|
37
|
-
cmd.comment = this.options.comment;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const response = await super.executeCommand(server, session, cmd, timeoutContext);
|
|
41
|
-
return response?.n || 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
exports.EstimatedDocumentCountOperation = EstimatedDocumentCountOperation;
|
|
47
|
-
(0, operation_1.defineAspects)(EstimatedDocumentCountOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.CURSOR_CREATING]);
|
|
@@ -1,251 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.executeOperation = executeOperation;
|
|
7
|
-
|
|
8
|
-
const error_1 = require("../error");
|
|
9
|
-
|
|
10
|
-
const read_preference_1 = require("../read_preference");
|
|
11
|
-
|
|
12
|
-
const server_selection_1 = require("../sdam/server_selection");
|
|
13
|
-
|
|
14
|
-
const timeout_1 = require("../timeout");
|
|
15
|
-
|
|
16
|
-
const utils_1 = require("../utils");
|
|
17
|
-
|
|
18
|
-
const operation_1 = require("./operation");
|
|
19
|
-
|
|
20
|
-
const MMAPv1_RETRY_WRITES_ERROR_CODE = error_1.MONGODB_ERROR_CODES.IllegalOperation;
|
|
21
|
-
const MMAPv1_RETRY_WRITES_ERROR_MESSAGE = 'This MongoDB deployment does not support retryable writes. Please add retryWrites=false to your connection string.';
|
|
22
|
-
/**
|
|
23
|
-
* Executes the given operation with provided arguments.
|
|
24
|
-
* @internal
|
|
25
|
-
*
|
|
26
|
-
* @remarks
|
|
27
|
-
* Allows for a single point of entry to provide features such as implicit sessions, which
|
|
28
|
-
* are required by the Driver Sessions specification in the event that a ClientSession is
|
|
29
|
-
* not provided.
|
|
30
|
-
*
|
|
31
|
-
* The expectation is that this function:
|
|
32
|
-
* - Connects the MongoClient if it has not already been connected, see {@link autoConnect}
|
|
33
|
-
* - Creates a session if none is provided and cleans up the session it creates
|
|
34
|
-
* - Tries an operation and retries under certain conditions, see {@link tryOperation}
|
|
35
|
-
*
|
|
36
|
-
* @typeParam T - The operation's type
|
|
37
|
-
* @typeParam TResult - The type of the operation's result, calculated from T
|
|
38
|
-
*
|
|
39
|
-
* @param client - The MongoClient to execute this operation with
|
|
40
|
-
* @param operation - The operation to execute
|
|
41
|
-
*/
|
|
42
|
-
|
|
43
|
-
async function executeOperation(client, operation, timeoutContext) {
|
|
44
|
-
if (!(operation instanceof operation_1.AbstractOperation)) {
|
|
45
|
-
// TODO(NODE-3483): Extend MongoRuntimeError
|
|
46
|
-
throw new error_1.MongoRuntimeError('This method requires a valid operation instance');
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const topology = client.topology == null ? await (0, utils_1.abortable)(autoConnect(client), operation.options) : client.topology; // The driver sessions spec mandates that we implicitly create sessions for operations
|
|
50
|
-
// that are not explicitly provided with a session.
|
|
51
|
-
|
|
52
|
-
let session = operation.session;
|
|
53
|
-
let owner;
|
|
54
|
-
|
|
55
|
-
if (session == null) {
|
|
56
|
-
owner = Symbol();
|
|
57
|
-
session = client.startSession({
|
|
58
|
-
owner,
|
|
59
|
-
explicit: false
|
|
60
|
-
});
|
|
61
|
-
} else if (session.hasEnded) {
|
|
62
|
-
throw new error_1.MongoExpiredSessionError('Use of expired sessions is not permitted');
|
|
63
|
-
} else if (session.snapshotEnabled && !topology.capabilities.supportsSnapshotReads) {
|
|
64
|
-
throw new error_1.MongoCompatibilityError('Snapshot reads require MongoDB 5.0 or later');
|
|
65
|
-
} else if (session.client !== client) {
|
|
66
|
-
throw new error_1.MongoInvalidArgumentError('ClientSession must be from the same MongoClient');
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const readPreference = operation.readPreference ?? read_preference_1.ReadPreference.primary;
|
|
70
|
-
const inTransaction = !!session?.inTransaction();
|
|
71
|
-
const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION);
|
|
72
|
-
|
|
73
|
-
if (inTransaction && !readPreference.equals(read_preference_1.ReadPreference.primary) && (hasReadAspect || operation.commandName === 'runCommand')) {
|
|
74
|
-
throw new error_1.MongoTransactionError(`Read preference in a transaction must be primary, not: ${readPreference.mode}`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (session?.isPinned && session.transaction.isCommitted && !operation.bypassPinningCheck) {
|
|
78
|
-
session.unpin();
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
timeoutContext ??= timeout_1.TimeoutContext.create({
|
|
82
|
-
session,
|
|
83
|
-
serverSelectionTimeoutMS: client.s.options.serverSelectionTimeoutMS,
|
|
84
|
-
waitQueueTimeoutMS: client.s.options.waitQueueTimeoutMS,
|
|
85
|
-
timeoutMS: operation.options.timeoutMS
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
try {
|
|
89
|
-
return await tryOperation(operation, {
|
|
90
|
-
topology,
|
|
91
|
-
timeoutContext,
|
|
92
|
-
session,
|
|
93
|
-
readPreference
|
|
94
|
-
});
|
|
95
|
-
} finally {
|
|
96
|
-
if (session?.owner != null && session.owner === owner) {
|
|
97
|
-
await session.endSession();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Connects a client if it has not yet been connected
|
|
103
|
-
* @internal
|
|
104
|
-
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
async function autoConnect(client) {
|
|
108
|
-
if (client.topology == null) {
|
|
109
|
-
if (client.s.hasBeenClosed) {
|
|
110
|
-
throw new error_1.MongoNotConnectedError('Client must be connected before running operations');
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
client.s.options.__skipPingOnConnect = true;
|
|
114
|
-
|
|
115
|
-
try {
|
|
116
|
-
await client.connect();
|
|
117
|
-
|
|
118
|
-
if (client.topology == null) {
|
|
119
|
-
throw new error_1.MongoRuntimeError('client.connect did not create a topology but also did not throw');
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
return client.topology;
|
|
123
|
-
} finally {
|
|
124
|
-
delete client.s.options.__skipPingOnConnect;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
return client.topology;
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Executes an operation and retries as appropriate
|
|
132
|
-
* @internal
|
|
133
|
-
*
|
|
134
|
-
* @remarks
|
|
135
|
-
* Implements behaviour described in [Retryable Reads](https://github.com/mongodb/specifications/blob/master/source/retryable-reads/retryable-reads.md) and [Retryable
|
|
136
|
-
* Writes](https://github.com/mongodb/specifications/blob/master/source/retryable-writes/retryable-writes.md) specification
|
|
137
|
-
*
|
|
138
|
-
* This function:
|
|
139
|
-
* - performs initial server selection
|
|
140
|
-
* - attempts to execute an operation
|
|
141
|
-
* - retries the operation if it meets the criteria for a retryable read or a retryable write
|
|
142
|
-
*
|
|
143
|
-
* @typeParam T - The operation's type
|
|
144
|
-
* @typeParam TResult - The type of the operation's result, calculated from T
|
|
145
|
-
*
|
|
146
|
-
* @param operation - The operation to execute
|
|
147
|
-
* */
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
async function tryOperation(operation, {
|
|
151
|
-
topology,
|
|
152
|
-
timeoutContext,
|
|
153
|
-
session,
|
|
154
|
-
readPreference
|
|
155
|
-
}) {
|
|
156
|
-
let selector;
|
|
157
|
-
|
|
158
|
-
if (operation.hasAspect(operation_1.Aspect.MUST_SELECT_SAME_SERVER)) {
|
|
159
|
-
// GetMore and KillCursor operations must always select the same server, but run through
|
|
160
|
-
// server selection to potentially force monitor checks if the server is
|
|
161
|
-
// in an unknown state.
|
|
162
|
-
selector = (0, server_selection_1.sameServerSelector)(operation.server?.description);
|
|
163
|
-
} else if (operation.trySecondaryWrite) {
|
|
164
|
-
// If operation should try to write to secondary use the custom server selector
|
|
165
|
-
// otherwise provide the read preference.
|
|
166
|
-
selector = (0, server_selection_1.secondaryWritableServerSelector)(topology.commonWireVersion, readPreference);
|
|
167
|
-
} else {
|
|
168
|
-
selector = readPreference;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
let server = await topology.selectServer(selector, {
|
|
172
|
-
session,
|
|
173
|
-
operationName: operation.commandName,
|
|
174
|
-
timeoutContext,
|
|
175
|
-
signal: operation.options.signal
|
|
176
|
-
});
|
|
177
|
-
const hasReadAspect = operation.hasAspect(operation_1.Aspect.READ_OPERATION);
|
|
178
|
-
const hasWriteAspect = operation.hasAspect(operation_1.Aspect.WRITE_OPERATION);
|
|
179
|
-
const inTransaction = session?.inTransaction() ?? false;
|
|
180
|
-
const willRetryRead = topology.s.options.retryReads && !inTransaction && operation.canRetryRead;
|
|
181
|
-
const willRetryWrite = topology.s.options.retryWrites && !inTransaction && (0, utils_1.supportsRetryableWrites)(server) && operation.canRetryWrite;
|
|
182
|
-
const willRetry = operation.hasAspect(operation_1.Aspect.RETRYABLE) && session != null && (hasReadAspect && willRetryRead || hasWriteAspect && willRetryWrite);
|
|
183
|
-
|
|
184
|
-
if (hasWriteAspect && willRetryWrite && session != null) {
|
|
185
|
-
operation.options.willRetryWrite = true;
|
|
186
|
-
session.incrementTransactionNumber();
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
const maxTries = willRetry ? timeoutContext.csotEnabled() ? Infinity : 2 : 1;
|
|
190
|
-
let previousOperationError;
|
|
191
|
-
let previousServer;
|
|
192
|
-
|
|
193
|
-
for (let tries = 0; tries < maxTries; tries++) {
|
|
194
|
-
if (previousOperationError) {
|
|
195
|
-
if (hasWriteAspect && previousOperationError.code === MMAPv1_RETRY_WRITES_ERROR_CODE) {
|
|
196
|
-
throw new error_1.MongoServerError({
|
|
197
|
-
message: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
|
|
198
|
-
errmsg: MMAPv1_RETRY_WRITES_ERROR_MESSAGE,
|
|
199
|
-
originalError: previousOperationError
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
if (operation.hasAspect(operation_1.Aspect.COMMAND_BATCHING) && !operation.canRetryWrite) {
|
|
204
|
-
throw previousOperationError;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
if (hasWriteAspect && !(0, error_1.isRetryableWriteError)(previousOperationError)) throw previousOperationError;
|
|
208
|
-
if (hasReadAspect && !(0, error_1.isRetryableReadError)(previousOperationError)) throw previousOperationError;
|
|
209
|
-
|
|
210
|
-
if (previousOperationError instanceof error_1.MongoNetworkError && operation.hasAspect(operation_1.Aspect.CURSOR_CREATING) && session != null && session.isPinned && !session.inTransaction()) {
|
|
211
|
-
session.unpin({
|
|
212
|
-
force: true,
|
|
213
|
-
forceClear: true
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
server = await topology.selectServer(selector, {
|
|
218
|
-
session,
|
|
219
|
-
operationName: operation.commandName,
|
|
220
|
-
previousServer,
|
|
221
|
-
signal: operation.options.signal
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
if (hasWriteAspect && !(0, utils_1.supportsRetryableWrites)(server)) {
|
|
225
|
-
throw new error_1.MongoUnexpectedServerResponseError('Selected server does not support retryable writes');
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
try {
|
|
230
|
-
// If tries > 0 and we are command batching we need to reset the batch.
|
|
231
|
-
if (tries > 0 && operation.hasAspect(operation_1.Aspect.COMMAND_BATCHING)) {
|
|
232
|
-
operation.resetBatch();
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
return await operation.execute(server, session, timeoutContext);
|
|
236
|
-
} catch (operationError) {
|
|
237
|
-
if (!(operationError instanceof error_1.MongoError)) throw operationError;
|
|
238
|
-
|
|
239
|
-
if (previousOperationError != null && operationError.hasErrorLabel(error_1.MongoErrorLabel.NoWritesPerformed)) {
|
|
240
|
-
throw previousOperationError;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
previousServer = server.description;
|
|
244
|
-
previousOperationError = operationError; // Reset timeouts
|
|
245
|
-
|
|
246
|
-
timeoutContext.clear();
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
throw previousOperationError ?? new error_1.MongoRuntimeError('Tried to propagate retryability error, but no error was found.');
|
|
251
|
-
}
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.FindOperation = void 0;
|
|
7
|
-
|
|
8
|
-
const responses_1 = require("../cmap/wire_protocol/responses");
|
|
9
|
-
|
|
10
|
-
const error_1 = require("../error");
|
|
11
|
-
|
|
12
|
-
const explain_1 = require("../explain");
|
|
13
|
-
|
|
14
|
-
const read_concern_1 = require("../read_concern");
|
|
15
|
-
|
|
16
|
-
const sort_1 = require("../sort");
|
|
17
|
-
|
|
18
|
-
const utils_1 = require("../utils");
|
|
19
|
-
|
|
20
|
-
const command_1 = require("./command");
|
|
21
|
-
|
|
22
|
-
const operation_1 = require("./operation");
|
|
23
|
-
/** @internal */
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class FindOperation extends command_1.CommandOperation {
|
|
27
|
-
constructor(ns, filter = {}, options = {}) {
|
|
28
|
-
super(undefined, options);
|
|
29
|
-
this.options = { ...options
|
|
30
|
-
};
|
|
31
|
-
delete this.options.writeConcern;
|
|
32
|
-
this.ns = ns;
|
|
33
|
-
|
|
34
|
-
if (typeof filter !== 'object' || Array.isArray(filter)) {
|
|
35
|
-
throw new error_1.MongoInvalidArgumentError('Query filter must be a plain object or ObjectId');
|
|
36
|
-
} // special case passing in an ObjectId as a filter
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.filter = filter != null && filter._bsontype === 'ObjectId' ? {
|
|
40
|
-
_id: filter
|
|
41
|
-
} : filter;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
get commandName() {
|
|
45
|
-
return 'find';
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
async execute(server, session, timeoutContext) {
|
|
49
|
-
this.server = server;
|
|
50
|
-
const options = this.options;
|
|
51
|
-
let findCommand = makeFindCommand(this.ns, this.filter, options);
|
|
52
|
-
|
|
53
|
-
if (this.explain) {
|
|
54
|
-
(0, explain_1.validateExplainTimeoutOptions)(this.options, this.explain);
|
|
55
|
-
findCommand = (0, explain_1.decorateWithExplain)(findCommand, this.explain);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return await server.command(this.ns, findCommand, { ...this.options,
|
|
59
|
-
...this.bsonOptions,
|
|
60
|
-
documentsReturnedIn: 'firstBatch',
|
|
61
|
-
session,
|
|
62
|
-
timeoutContext
|
|
63
|
-
}, this.explain ? responses_1.ExplainedCursorResponse : responses_1.CursorResponse);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
exports.FindOperation = FindOperation;
|
|
69
|
-
|
|
70
|
-
function makeFindCommand(ns, filter, options) {
|
|
71
|
-
const findCommand = {
|
|
72
|
-
find: ns.collection,
|
|
73
|
-
filter
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
if (options.sort) {
|
|
77
|
-
findCommand.sort = (0, sort_1.formatSort)(options.sort);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (options.projection) {
|
|
81
|
-
let projection = options.projection;
|
|
82
|
-
|
|
83
|
-
if (projection && Array.isArray(projection)) {
|
|
84
|
-
projection = projection.length ? projection.reduce((result, field) => {
|
|
85
|
-
result[field] = 1;
|
|
86
|
-
return result;
|
|
87
|
-
}, {}) : {
|
|
88
|
-
_id: 1
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
findCommand.projection = projection;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (options.hint) {
|
|
96
|
-
findCommand.hint = (0, utils_1.normalizeHintField)(options.hint);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (typeof options.skip === 'number') {
|
|
100
|
-
findCommand.skip = options.skip;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (typeof options.limit === 'number') {
|
|
104
|
-
if (options.limit < 0) {
|
|
105
|
-
findCommand.limit = -options.limit;
|
|
106
|
-
findCommand.singleBatch = true;
|
|
107
|
-
} else {
|
|
108
|
-
findCommand.limit = options.limit;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (typeof options.batchSize === 'number') {
|
|
113
|
-
if (options.batchSize < 0) {
|
|
114
|
-
if (options.limit && options.limit !== 0 && Math.abs(options.batchSize) < Math.abs(options.limit)) {
|
|
115
|
-
findCommand.limit = -options.batchSize;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
findCommand.singleBatch = true;
|
|
119
|
-
} else {
|
|
120
|
-
findCommand.batchSize = options.batchSize;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (typeof options.singleBatch === 'boolean') {
|
|
125
|
-
findCommand.singleBatch = options.singleBatch;
|
|
126
|
-
} // we check for undefined specifically here to allow falsy values
|
|
127
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (options.comment !== undefined) {
|
|
131
|
-
findCommand.comment = options.comment;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (typeof options.maxTimeMS === 'number') {
|
|
135
|
-
findCommand.maxTimeMS = options.maxTimeMS;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
const readConcern = read_concern_1.ReadConcern.fromOptions(options);
|
|
139
|
-
|
|
140
|
-
if (readConcern) {
|
|
141
|
-
findCommand.readConcern = readConcern.toJSON();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (options.max) {
|
|
145
|
-
findCommand.max = options.max;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
if (options.min) {
|
|
149
|
-
findCommand.min = options.min;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (typeof options.returnKey === 'boolean') {
|
|
153
|
-
findCommand.returnKey = options.returnKey;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (typeof options.showRecordId === 'boolean') {
|
|
157
|
-
findCommand.showRecordId = options.showRecordId;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (typeof options.tailable === 'boolean') {
|
|
161
|
-
findCommand.tailable = options.tailable;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (typeof options.oplogReplay === 'boolean') {
|
|
165
|
-
findCommand.oplogReplay = options.oplogReplay;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (typeof options.timeout === 'boolean') {
|
|
169
|
-
findCommand.noCursorTimeout = !options.timeout;
|
|
170
|
-
} else if (typeof options.noCursorTimeout === 'boolean') {
|
|
171
|
-
findCommand.noCursorTimeout = options.noCursorTimeout;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (typeof options.awaitData === 'boolean') {
|
|
175
|
-
findCommand.awaitData = options.awaitData;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
if (typeof options.allowPartialResults === 'boolean') {
|
|
179
|
-
findCommand.allowPartialResults = options.allowPartialResults;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
if (options.collation) {
|
|
183
|
-
findCommand.collation = options.collation;
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
if (typeof options.allowDiskUse === 'boolean') {
|
|
187
|
-
findCommand.allowDiskUse = options.allowDiskUse;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
if (options.let) {
|
|
191
|
-
findCommand.let = options.let;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
return findCommand;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
(0, operation_1.defineAspects)(FindOperation, [operation_1.Aspect.READ_OPERATION, operation_1.Aspect.RETRYABLE, operation_1.Aspect.EXPLAINABLE, operation_1.Aspect.CURSOR_CREATING]);
|