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,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.OrderedBulkOperation = void 0;
|
|
7
|
-
|
|
8
|
-
const BSON = require("../bson");
|
|
9
|
-
|
|
10
|
-
const error_1 = require("../error");
|
|
11
|
-
|
|
12
|
-
const common_1 = require("./common");
|
|
13
|
-
/** @public */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class OrderedBulkOperation extends common_1.BulkOperationBase {
|
|
17
|
-
/** @internal */
|
|
18
|
-
constructor(collection, options) {
|
|
19
|
-
super(collection, options, true);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
addToOperationsList(batchType, document) {
|
|
23
|
-
// Get the bsonSize
|
|
24
|
-
const bsonSize = BSON.calculateObjectSize(document, {
|
|
25
|
-
checkKeys: false,
|
|
26
|
-
// Since we don't know what the user selected for BSON options here,
|
|
27
|
-
// err on the safe side, and check the size with ignoreUndefined: false.
|
|
28
|
-
ignoreUndefined: false
|
|
29
|
-
}); // Throw error if the doc is bigger than the max BSON size
|
|
30
|
-
|
|
31
|
-
if (bsonSize >= this.s.maxBsonObjectSize) // TODO(NODE-3483): Change this to MongoBSONError
|
|
32
|
-
throw new error_1.MongoInvalidArgumentError(`Document is larger than the maximum size ${this.s.maxBsonObjectSize}`); // Create a new batch object if we don't have a current one
|
|
33
|
-
|
|
34
|
-
if (this.s.currentBatch == null) {
|
|
35
|
-
this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const maxKeySize = this.s.maxKeySize; // Check if we need to create a new batch
|
|
39
|
-
|
|
40
|
-
if ( // New batch if we exceed the max batch op size
|
|
41
|
-
this.s.currentBatchSize + 1 >= this.s.maxWriteBatchSize || // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
|
|
42
|
-
// since we can't sent an empty batch
|
|
43
|
-
this.s.currentBatchSize > 0 && this.s.currentBatchSizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes || // New batch if the new op does not have the same op type as the current batch
|
|
44
|
-
this.s.currentBatch.batchType !== batchType) {
|
|
45
|
-
// Save the batch to the execution stack
|
|
46
|
-
this.s.batches.push(this.s.currentBatch); // Create a new batch
|
|
47
|
-
|
|
48
|
-
this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex); // Reset the current size trackers
|
|
49
|
-
|
|
50
|
-
this.s.currentBatchSize = 0;
|
|
51
|
-
this.s.currentBatchSizeBytes = 0;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (batchType === common_1.BatchType.INSERT) {
|
|
55
|
-
this.s.bulkResult.insertedIds.push({
|
|
56
|
-
index: this.s.currentIndex,
|
|
57
|
-
_id: document._id
|
|
58
|
-
});
|
|
59
|
-
} // We have an array of documents
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (Array.isArray(document)) {
|
|
63
|
-
throw new error_1.MongoInvalidArgumentError('Operation passed in cannot be an Array');
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
|
|
67
|
-
this.s.currentBatch.operations.push(document);
|
|
68
|
-
this.s.currentBatchSize += 1;
|
|
69
|
-
this.s.currentBatchSizeBytes += maxKeySize + bsonSize;
|
|
70
|
-
this.s.currentIndex += 1;
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
exports.OrderedBulkOperation = OrderedBulkOperation;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.UnorderedBulkOperation = void 0;
|
|
7
|
-
|
|
8
|
-
const BSON = require("../bson");
|
|
9
|
-
|
|
10
|
-
const error_1 = require("../error");
|
|
11
|
-
|
|
12
|
-
const common_1 = require("./common");
|
|
13
|
-
/** @public */
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class UnorderedBulkOperation extends common_1.BulkOperationBase {
|
|
17
|
-
/** @internal */
|
|
18
|
-
constructor(collection, options) {
|
|
19
|
-
super(collection, options, false);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
handleWriteError(writeResult) {
|
|
23
|
-
if (this.s.batches.length) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return super.handleWriteError(writeResult);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
addToOperationsList(batchType, document) {
|
|
31
|
-
// Get the bsonSize
|
|
32
|
-
const bsonSize = BSON.calculateObjectSize(document, {
|
|
33
|
-
checkKeys: false,
|
|
34
|
-
// Since we don't know what the user selected for BSON options here,
|
|
35
|
-
// err on the safe side, and check the size with ignoreUndefined: false.
|
|
36
|
-
ignoreUndefined: false
|
|
37
|
-
}); // Throw error if the doc is bigger than the max BSON size
|
|
38
|
-
|
|
39
|
-
if (bsonSize >= this.s.maxBsonObjectSize) {
|
|
40
|
-
// TODO(NODE-3483): Change this to MongoBSONError
|
|
41
|
-
throw new error_1.MongoInvalidArgumentError(`Document is larger than the maximum size ${this.s.maxBsonObjectSize}`);
|
|
42
|
-
} // Holds the current batch
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.s.currentBatch = undefined; // Get the right type of batch
|
|
46
|
-
|
|
47
|
-
if (batchType === common_1.BatchType.INSERT) {
|
|
48
|
-
this.s.currentBatch = this.s.currentInsertBatch;
|
|
49
|
-
} else if (batchType === common_1.BatchType.UPDATE) {
|
|
50
|
-
this.s.currentBatch = this.s.currentUpdateBatch;
|
|
51
|
-
} else if (batchType === common_1.BatchType.DELETE) {
|
|
52
|
-
this.s.currentBatch = this.s.currentRemoveBatch;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const maxKeySize = this.s.maxKeySize; // Create a new batch object if we don't have a current one
|
|
56
|
-
|
|
57
|
-
if (this.s.currentBatch == null) {
|
|
58
|
-
this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
|
|
59
|
-
} // Check if we need to create a new batch
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if ( // New batch if we exceed the max batch op size
|
|
63
|
-
this.s.currentBatch.size + 1 >= this.s.maxWriteBatchSize || // New batch if we exceed the maxBatchSizeBytes. Only matters if batch already has a doc,
|
|
64
|
-
// since we can't sent an empty batch
|
|
65
|
-
this.s.currentBatch.size > 0 && this.s.currentBatch.sizeBytes + maxKeySize + bsonSize >= this.s.maxBatchSizeBytes || // New batch if the new op does not have the same op type as the current batch
|
|
66
|
-
this.s.currentBatch.batchType !== batchType) {
|
|
67
|
-
// Save the batch to the execution stack
|
|
68
|
-
this.s.batches.push(this.s.currentBatch); // Create a new batch
|
|
69
|
-
|
|
70
|
-
this.s.currentBatch = new common_1.Batch(batchType, this.s.currentIndex);
|
|
71
|
-
} // We have an array of documents
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (Array.isArray(document)) {
|
|
75
|
-
throw new error_1.MongoInvalidArgumentError('Operation passed in cannot be an Array');
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
this.s.currentBatch.operations.push(document);
|
|
79
|
-
this.s.currentBatch.originalIndexes.push(this.s.currentIndex);
|
|
80
|
-
this.s.currentIndex = this.s.currentIndex + 1; // Save back the current Batch to the right type
|
|
81
|
-
|
|
82
|
-
if (batchType === common_1.BatchType.INSERT) {
|
|
83
|
-
this.s.currentInsertBatch = this.s.currentBatch;
|
|
84
|
-
this.s.bulkResult.insertedIds.push({
|
|
85
|
-
index: this.s.bulkResult.insertedIds.length,
|
|
86
|
-
_id: document._id
|
|
87
|
-
});
|
|
88
|
-
} else if (batchType === common_1.BatchType.UPDATE) {
|
|
89
|
-
this.s.currentUpdateBatch = this.s.currentBatch;
|
|
90
|
-
} else if (batchType === common_1.BatchType.DELETE) {
|
|
91
|
-
this.s.currentRemoveBatch = this.s.currentBatch;
|
|
92
|
-
} // Update current batch size
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
this.s.currentBatch.size += 1;
|
|
96
|
-
this.s.currentBatch.sizeBytes += maxKeySize + bsonSize;
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
exports.UnorderedBulkOperation = UnorderedBulkOperation;
|
|
@@ -1,517 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ChangeStream = void 0;
|
|
7
|
-
|
|
8
|
-
const collection_1 = require("./collection");
|
|
9
|
-
|
|
10
|
-
const constants_1 = require("./constants");
|
|
11
|
-
|
|
12
|
-
const abstract_cursor_1 = require("./cursor/abstract_cursor");
|
|
13
|
-
|
|
14
|
-
const change_stream_cursor_1 = require("./cursor/change_stream_cursor");
|
|
15
|
-
|
|
16
|
-
const db_1 = require("./db");
|
|
17
|
-
|
|
18
|
-
const error_1 = require("./error");
|
|
19
|
-
|
|
20
|
-
const mongo_client_1 = require("./mongo_client");
|
|
21
|
-
|
|
22
|
-
const mongo_types_1 = require("./mongo_types");
|
|
23
|
-
|
|
24
|
-
const resource_management_1 = require("./resource_management");
|
|
25
|
-
|
|
26
|
-
const timeout_1 = require("./timeout");
|
|
27
|
-
|
|
28
|
-
const utils_1 = require("./utils");
|
|
29
|
-
|
|
30
|
-
const CHANGE_STREAM_OPTIONS = ['resumeAfter', 'startAfter', 'startAtOperationTime', 'fullDocument', 'fullDocumentBeforeChange', 'showExpandedEvents'];
|
|
31
|
-
const CHANGE_DOMAIN_TYPES = {
|
|
32
|
-
COLLECTION: Symbol('Collection'),
|
|
33
|
-
DATABASE: Symbol('Database'),
|
|
34
|
-
CLUSTER: Symbol('Cluster')
|
|
35
|
-
};
|
|
36
|
-
const CHANGE_STREAM_EVENTS = [constants_1.RESUME_TOKEN_CHANGED, constants_1.END, constants_1.CLOSE];
|
|
37
|
-
const NO_RESUME_TOKEN_ERROR = 'A change stream document has been received that lacks a resume token (_id).';
|
|
38
|
-
const CHANGESTREAM_CLOSED_ERROR = 'ChangeStream is closed';
|
|
39
|
-
/**
|
|
40
|
-
* Creates a new Change Stream instance. Normally created using {@link Collection#watch|Collection.watch()}.
|
|
41
|
-
* @public
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
|
-
class ChangeStream extends mongo_types_1.TypedEventEmitter {
|
|
45
|
-
/** @internal */
|
|
46
|
-
async asyncDispose() {
|
|
47
|
-
await this.close();
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @internal
|
|
51
|
-
*
|
|
52
|
-
* @param parent - The parent object that created this change stream
|
|
53
|
-
* @param pipeline - An array of {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation-pipeline/|aggregation pipeline stages} through which to pass change stream documents
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
constructor(parent, pipeline = [], options = {}) {
|
|
58
|
-
super();
|
|
59
|
-
this.pipeline = pipeline;
|
|
60
|
-
this.options = { ...options
|
|
61
|
-
};
|
|
62
|
-
let serverSelectionTimeoutMS;
|
|
63
|
-
delete this.options.writeConcern;
|
|
64
|
-
|
|
65
|
-
if (parent instanceof collection_1.Collection) {
|
|
66
|
-
this.type = CHANGE_DOMAIN_TYPES.COLLECTION;
|
|
67
|
-
serverSelectionTimeoutMS = parent.s.db.client.options.serverSelectionTimeoutMS;
|
|
68
|
-
} else if (parent instanceof db_1.Db) {
|
|
69
|
-
this.type = CHANGE_DOMAIN_TYPES.DATABASE;
|
|
70
|
-
serverSelectionTimeoutMS = parent.client.options.serverSelectionTimeoutMS;
|
|
71
|
-
} else if (parent instanceof mongo_client_1.MongoClient) {
|
|
72
|
-
this.type = CHANGE_DOMAIN_TYPES.CLUSTER;
|
|
73
|
-
serverSelectionTimeoutMS = parent.options.serverSelectionTimeoutMS;
|
|
74
|
-
} else {
|
|
75
|
-
throw new error_1.MongoChangeStreamError('Parent provided to ChangeStream constructor must be an instance of Collection, Db, or MongoClient');
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
this.contextOwner = Symbol();
|
|
79
|
-
this.parent = parent;
|
|
80
|
-
this.namespace = parent.s.namespace;
|
|
81
|
-
|
|
82
|
-
if (!this.options.readPreference && parent.readPreference) {
|
|
83
|
-
this.options.readPreference = parent.readPreference;
|
|
84
|
-
} // Create contained Change Stream cursor
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.cursor = this._createChangeStreamCursor(options);
|
|
88
|
-
this.isClosed = false;
|
|
89
|
-
this.mode = false; // Listen for any `change` listeners being added to ChangeStream
|
|
90
|
-
|
|
91
|
-
this.on('newListener', eventName => {
|
|
92
|
-
if (eventName === 'change' && this.cursor && this.listenerCount('change') === 0) {
|
|
93
|
-
this._streamEvents(this.cursor);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
this.on('removeListener', eventName => {
|
|
97
|
-
if (eventName === 'change' && this.listenerCount('change') === 0 && this.cursor) {
|
|
98
|
-
this.cursorStream?.removeAllListeners('data');
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
if (this.options.timeoutMS != null) {
|
|
103
|
-
this.timeoutContext = new timeout_1.CSOTTimeoutContext({
|
|
104
|
-
timeoutMS: this.options.timeoutMS,
|
|
105
|
-
serverSelectionTimeoutMS
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/** The cached resume token that is used to resume after the most recently returned change. */
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
get resumeToken() {
|
|
113
|
-
return this.cursor?.resumeToken;
|
|
114
|
-
}
|
|
115
|
-
/** Check if there is any document still available in the Change Stream */
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
async hasNext() {
|
|
119
|
-
this._setIsIterator(); // Change streams must resume indefinitely while each resume event succeeds.
|
|
120
|
-
// This loop continues until either a change event is received or until a resume attempt
|
|
121
|
-
// fails.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
this.timeoutContext?.refresh();
|
|
125
|
-
|
|
126
|
-
try {
|
|
127
|
-
while (true) {
|
|
128
|
-
try {
|
|
129
|
-
const hasNext = await this.cursor.hasNext();
|
|
130
|
-
return hasNext;
|
|
131
|
-
} catch (error) {
|
|
132
|
-
try {
|
|
133
|
-
await this._processErrorIteratorMode(error, this.cursor.id != null);
|
|
134
|
-
} catch (error) {
|
|
135
|
-
if (error instanceof error_1.MongoOperationTimeoutError && this.cursor.id == null) {
|
|
136
|
-
throw error;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
try {
|
|
140
|
-
await this.close();
|
|
141
|
-
} catch (error) {
|
|
142
|
-
(0, utils_1.squashError)(error);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
throw error;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
} finally {
|
|
150
|
-
this.timeoutContext?.clear();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/** Get the next available document from the Change Stream. */
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
async next() {
|
|
157
|
-
this._setIsIterator(); // Change streams must resume indefinitely while each resume event succeeds.
|
|
158
|
-
// This loop continues until either a change event is received or until a resume attempt
|
|
159
|
-
// fails.
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
this.timeoutContext?.refresh();
|
|
163
|
-
|
|
164
|
-
try {
|
|
165
|
-
while (true) {
|
|
166
|
-
try {
|
|
167
|
-
const change = await this.cursor.next();
|
|
168
|
-
|
|
169
|
-
const processedChange = this._processChange(change ?? null);
|
|
170
|
-
|
|
171
|
-
return processedChange;
|
|
172
|
-
} catch (error) {
|
|
173
|
-
try {
|
|
174
|
-
await this._processErrorIteratorMode(error, this.cursor.id != null);
|
|
175
|
-
} catch (error) {
|
|
176
|
-
if (error instanceof error_1.MongoOperationTimeoutError && this.cursor.id == null) {
|
|
177
|
-
throw error;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
try {
|
|
181
|
-
await this.close();
|
|
182
|
-
} catch (error) {
|
|
183
|
-
(0, utils_1.squashError)(error);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
throw error;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
} finally {
|
|
191
|
-
this.timeoutContext?.clear();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Try to get the next available document from the Change Stream's cursor or `null` if an empty batch is returned
|
|
196
|
-
*/
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
async tryNext() {
|
|
200
|
-
this._setIsIterator(); // Change streams must resume indefinitely while each resume event succeeds.
|
|
201
|
-
// This loop continues until either a change event is received or until a resume attempt
|
|
202
|
-
// fails.
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.timeoutContext?.refresh();
|
|
206
|
-
|
|
207
|
-
try {
|
|
208
|
-
while (true) {
|
|
209
|
-
try {
|
|
210
|
-
const change = await this.cursor.tryNext();
|
|
211
|
-
return change ?? null;
|
|
212
|
-
} catch (error) {
|
|
213
|
-
try {
|
|
214
|
-
await this._processErrorIteratorMode(error, this.cursor.id != null);
|
|
215
|
-
} catch (error) {
|
|
216
|
-
if (error instanceof error_1.MongoOperationTimeoutError && this.cursor.id == null) throw error;
|
|
217
|
-
|
|
218
|
-
try {
|
|
219
|
-
await this.close();
|
|
220
|
-
} catch (error) {
|
|
221
|
-
(0, utils_1.squashError)(error);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
throw error;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
} finally {
|
|
229
|
-
this.timeoutContext?.clear();
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
async *[Symbol.asyncIterator]() {
|
|
234
|
-
if (this.closed) {
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
try {
|
|
239
|
-
// Change streams run indefinitely as long as errors are resumable
|
|
240
|
-
// So the only loop breaking condition is if `next()` throws
|
|
241
|
-
while (true) {
|
|
242
|
-
yield await this.next();
|
|
243
|
-
}
|
|
244
|
-
} finally {
|
|
245
|
-
try {
|
|
246
|
-
await this.close();
|
|
247
|
-
} catch (error) {
|
|
248
|
-
(0, utils_1.squashError)(error);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
/** Is the cursor closed */
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
get closed() {
|
|
256
|
-
return this.isClosed || this.cursor.closed;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Frees the internal resources used by the change stream.
|
|
260
|
-
*/
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
async close() {
|
|
264
|
-
this.timeoutContext?.clear();
|
|
265
|
-
this.timeoutContext = undefined;
|
|
266
|
-
this.isClosed = true;
|
|
267
|
-
const cursor = this.cursor;
|
|
268
|
-
|
|
269
|
-
try {
|
|
270
|
-
await cursor.close();
|
|
271
|
-
} finally {
|
|
272
|
-
this._endStream();
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
/**
|
|
276
|
-
* Return a modified Readable stream including a possible transform method.
|
|
277
|
-
*
|
|
278
|
-
* NOTE: When using a Stream to process change stream events, the stream will
|
|
279
|
-
* NOT automatically resume in the case a resumable error is encountered.
|
|
280
|
-
*
|
|
281
|
-
* @throws MongoChangeStreamError if the underlying cursor or the change stream is closed
|
|
282
|
-
*/
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
stream(options) {
|
|
286
|
-
if (this.closed) {
|
|
287
|
-
throw new error_1.MongoChangeStreamError(CHANGESTREAM_CLOSED_ERROR);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
this.streamOptions = options;
|
|
291
|
-
return this.cursor.stream(options);
|
|
292
|
-
}
|
|
293
|
-
/** @internal */
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
_setIsEmitter() {
|
|
297
|
-
if (this.mode === 'iterator') {
|
|
298
|
-
// TODO(NODE-3485): Replace with MongoChangeStreamModeError
|
|
299
|
-
throw new error_1.MongoAPIError('ChangeStream cannot be used as an EventEmitter after being used as an iterator');
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
this.mode = 'emitter';
|
|
303
|
-
}
|
|
304
|
-
/** @internal */
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
_setIsIterator() {
|
|
308
|
-
if (this.mode === 'emitter') {
|
|
309
|
-
// TODO(NODE-3485): Replace with MongoChangeStreamModeError
|
|
310
|
-
throw new error_1.MongoAPIError('ChangeStream cannot be used as an iterator after being used as an EventEmitter');
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
this.mode = 'iterator';
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Create a new change stream cursor based on self's configuration
|
|
317
|
-
* @internal
|
|
318
|
-
*/
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
_createChangeStreamCursor(options) {
|
|
322
|
-
const changeStreamStageOptions = (0, utils_1.filterOptions)(options, CHANGE_STREAM_OPTIONS);
|
|
323
|
-
|
|
324
|
-
if (this.type === CHANGE_DOMAIN_TYPES.CLUSTER) {
|
|
325
|
-
changeStreamStageOptions.allChangesForCluster = true;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
const pipeline = [{
|
|
329
|
-
$changeStream: changeStreamStageOptions
|
|
330
|
-
}, ...this.pipeline];
|
|
331
|
-
const client = this.type === CHANGE_DOMAIN_TYPES.CLUSTER ? this.parent : this.type === CHANGE_DOMAIN_TYPES.DATABASE ? this.parent.client : this.type === CHANGE_DOMAIN_TYPES.COLLECTION ? this.parent.client : null;
|
|
332
|
-
|
|
333
|
-
if (client == null) {
|
|
334
|
-
// This should never happen because of the assertion in the constructor
|
|
335
|
-
throw new error_1.MongoRuntimeError(`Changestream type should only be one of cluster, database, collection. Found ${this.type.toString()}`);
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
const changeStreamCursor = new change_stream_cursor_1.ChangeStreamCursor(client, this.namespace, pipeline, { ...options,
|
|
339
|
-
timeoutContext: this.timeoutContext ? new abstract_cursor_1.CursorTimeoutContext(this.timeoutContext, this.contextOwner) : undefined
|
|
340
|
-
});
|
|
341
|
-
|
|
342
|
-
for (const event of CHANGE_STREAM_EVENTS) {
|
|
343
|
-
changeStreamCursor.on(event, e => this.emit(event, e));
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
if (this.listenerCount(ChangeStream.CHANGE) > 0) {
|
|
347
|
-
this._streamEvents(changeStreamCursor);
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
return changeStreamCursor;
|
|
351
|
-
}
|
|
352
|
-
/** @internal */
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
_closeEmitterModeWithError(error) {
|
|
356
|
-
this.emit(ChangeStream.ERROR, error);
|
|
357
|
-
this.close().then(undefined, utils_1.squashError);
|
|
358
|
-
}
|
|
359
|
-
/** @internal */
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
_streamEvents(cursor) {
|
|
363
|
-
this._setIsEmitter();
|
|
364
|
-
|
|
365
|
-
const stream = this.cursorStream ?? cursor.stream();
|
|
366
|
-
this.cursorStream = stream;
|
|
367
|
-
stream.on('data', change => {
|
|
368
|
-
try {
|
|
369
|
-
const processedChange = this._processChange(change);
|
|
370
|
-
|
|
371
|
-
this.emit(ChangeStream.CHANGE, processedChange);
|
|
372
|
-
} catch (error) {
|
|
373
|
-
this.emit(ChangeStream.ERROR, error);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
this.timeoutContext?.refresh();
|
|
377
|
-
});
|
|
378
|
-
stream.on('error', error => this._processErrorStreamMode(error, this.cursor.id != null));
|
|
379
|
-
}
|
|
380
|
-
/** @internal */
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
_endStream() {
|
|
384
|
-
this.cursorStream?.removeAllListeners('data');
|
|
385
|
-
this.cursorStream?.removeAllListeners('close');
|
|
386
|
-
this.cursorStream?.removeAllListeners('end');
|
|
387
|
-
this.cursorStream?.destroy();
|
|
388
|
-
this.cursorStream = undefined;
|
|
389
|
-
}
|
|
390
|
-
/** @internal */
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
_processChange(change) {
|
|
394
|
-
if (this.isClosed) {
|
|
395
|
-
// TODO(NODE-3485): Replace with MongoChangeStreamClosedError
|
|
396
|
-
throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
|
|
397
|
-
} // a null change means the cursor has been notified, implicitly closing the change stream
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (change == null) {
|
|
401
|
-
// TODO(NODE-3485): Replace with MongoChangeStreamClosedError
|
|
402
|
-
throw new error_1.MongoRuntimeError(CHANGESTREAM_CLOSED_ERROR);
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
if (change && !change._id) {
|
|
406
|
-
throw new error_1.MongoChangeStreamError(NO_RESUME_TOKEN_ERROR);
|
|
407
|
-
} // cache the resume token
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
this.cursor.cacheResumeToken(change._id); // wipe the startAtOperationTime if there was one so that there won't be a conflict
|
|
411
|
-
// between resumeToken and startAtOperationTime if we need to reconnect the cursor
|
|
412
|
-
|
|
413
|
-
this.options.startAtOperationTime = undefined;
|
|
414
|
-
return change;
|
|
415
|
-
}
|
|
416
|
-
/** @internal */
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
_processErrorStreamMode(changeStreamError, cursorInitialized) {
|
|
420
|
-
// If the change stream has been closed explicitly, do not process error.
|
|
421
|
-
if (this.isClosed) return;
|
|
422
|
-
|
|
423
|
-
if (cursorInitialized && ((0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion) || changeStreamError instanceof error_1.MongoOperationTimeoutError)) {
|
|
424
|
-
this._endStream();
|
|
425
|
-
|
|
426
|
-
this.cursor.close().then(() => this._resume(changeStreamError), e => {
|
|
427
|
-
(0, utils_1.squashError)(e);
|
|
428
|
-
return this._resume(changeStreamError);
|
|
429
|
-
}).then(() => {
|
|
430
|
-
if (changeStreamError instanceof error_1.MongoOperationTimeoutError) this.emit(ChangeStream.ERROR, changeStreamError);
|
|
431
|
-
}, () => this._closeEmitterModeWithError(changeStreamError));
|
|
432
|
-
} else {
|
|
433
|
-
this._closeEmitterModeWithError(changeStreamError);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
/** @internal */
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
async _processErrorIteratorMode(changeStreamError, cursorInitialized) {
|
|
440
|
-
if (this.isClosed) {
|
|
441
|
-
// TODO(NODE-3485): Replace with MongoChangeStreamClosedError
|
|
442
|
-
throw new error_1.MongoAPIError(CHANGESTREAM_CLOSED_ERROR);
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
if (cursorInitialized && ((0, error_1.isResumableError)(changeStreamError, this.cursor.maxWireVersion) || changeStreamError instanceof error_1.MongoOperationTimeoutError)) {
|
|
446
|
-
try {
|
|
447
|
-
await this.cursor.close();
|
|
448
|
-
} catch (error) {
|
|
449
|
-
(0, utils_1.squashError)(error);
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
await this._resume(changeStreamError);
|
|
453
|
-
if (changeStreamError instanceof error_1.MongoOperationTimeoutError) throw changeStreamError;
|
|
454
|
-
} else {
|
|
455
|
-
try {
|
|
456
|
-
await this.close();
|
|
457
|
-
} catch (error) {
|
|
458
|
-
(0, utils_1.squashError)(error);
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
throw changeStreamError;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
async _resume(changeStreamError) {
|
|
466
|
-
this.timeoutContext?.refresh();
|
|
467
|
-
const topology = (0, utils_1.getTopology)(this.parent);
|
|
468
|
-
|
|
469
|
-
try {
|
|
470
|
-
await topology.selectServer(this.cursor.readPreference, {
|
|
471
|
-
operationName: 'reconnect topology in change stream',
|
|
472
|
-
timeoutContext: this.timeoutContext
|
|
473
|
-
});
|
|
474
|
-
this.cursor = this._createChangeStreamCursor(this.cursor.resumeOptions);
|
|
475
|
-
} catch {
|
|
476
|
-
// if the topology can't reconnect, close the stream
|
|
477
|
-
await this.close();
|
|
478
|
-
throw changeStreamError;
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
exports.ChangeStream = ChangeStream;
|
|
485
|
-
/** @event */
|
|
486
|
-
|
|
487
|
-
ChangeStream.RESPONSE = constants_1.RESPONSE;
|
|
488
|
-
/** @event */
|
|
489
|
-
|
|
490
|
-
ChangeStream.MORE = constants_1.MORE;
|
|
491
|
-
/** @event */
|
|
492
|
-
|
|
493
|
-
ChangeStream.INIT = constants_1.INIT;
|
|
494
|
-
/** @event */
|
|
495
|
-
|
|
496
|
-
ChangeStream.CLOSE = constants_1.CLOSE;
|
|
497
|
-
/**
|
|
498
|
-
* Fired for each new matching change in the specified namespace. Attaching a `change`
|
|
499
|
-
* event listener to a Change Stream will switch the stream into flowing mode. Data will
|
|
500
|
-
* then be passed as soon as it is available.
|
|
501
|
-
* @event
|
|
502
|
-
*/
|
|
503
|
-
|
|
504
|
-
ChangeStream.CHANGE = constants_1.CHANGE;
|
|
505
|
-
/** @event */
|
|
506
|
-
|
|
507
|
-
ChangeStream.END = constants_1.END;
|
|
508
|
-
/** @event */
|
|
509
|
-
|
|
510
|
-
ChangeStream.ERROR = constants_1.ERROR;
|
|
511
|
-
/**
|
|
512
|
-
* Emitted each time the change stream stores a new resume token.
|
|
513
|
-
* @event
|
|
514
|
-
*/
|
|
515
|
-
|
|
516
|
-
ChangeStream.RESUME_TOKEN_CHANGED = constants_1.RESUME_TOKEN_CHANGED;
|
|
517
|
-
(0, resource_management_1.configureResourceManagement)(ChangeStream.prototype);
|