oxygen-cli 1.40.2-beta.1 → 1.40.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1750 -1742
- package/LICENSE +672 -672
- package/README.md +37 -37
- package/build/core/OxygenCore.js +1 -1
- package/build/core/OxygenEvents.js +1 -1
- package/build/core/OxygenModule.js +1 -1
- package/build/core/OxygenService.js +1 -1
- package/build/core/OxygenSubModule.js +1 -1
- package/build/core/WebDriverModule.js +1 -1
- package/build/core/utils.js +1 -1
- package/build/errors/HookError.js +1 -1
- package/build/errors/ModuleError.js +1 -1
- package/build/errors/ModuleUnavailableError.js +1 -1
- package/build/errors/OxygenError.js +1 -1
- package/build/errors/ScriptNotFound.js +1 -1
- package/build/errors/helper.js +1 -2
- package/build/index.js +1 -1
- package/build/lib/cli-util.js +1 -5
- package/build/lib/cli.js +1 -1
- package/build/lib/debugger.js +1 -1
- package/build/lib/img-merge.js +1 -1
- package/build/lib/launcher.js +1 -1
- package/build/lib/logger.js +43 -43
- package/build/lib/moduleRequire.js +1 -1
- package/build/lib/parallel-launcher.js +1 -1
- package/build/lib/param-manager.js +1 -1
- package/build/lib/param-reader-csv.js +1 -1
- package/build/lib/param-reader-excel.js +1 -1
- package/build/lib/param-reader-json.js +1 -1
- package/build/lib/text-to-image.js +1 -1
- package/build/lib/util.js +1 -1
- package/build/model/case-result.js +1 -1
- package/build/model/failure.js +1 -1
- package/build/model/status.js +1 -1
- package/build/model/step-result.js +1 -1
- package/build/model/suite-result.js +1 -1
- package/build/model/test-result.js +1 -1
- package/build/model/testcase.js +1 -1
- package/build/model/testsuite.js +1 -1
- package/build/ox_modules/index.js +1 -9
- package/build/ox_modules/module-assert.js +37 -37
- package/build/ox_modules/module-date.js +24 -24
- package/build/ox_modules/module-db.js +52 -52
- package/build/ox_modules/module-email.js +59 -59
- package/build/ox_modules/module-eyes.js +34 -34
- package/build/ox_modules/module-http/ntlm-util.js +10 -10
- package/build/ox_modules/module-http/ntlm.js +15 -15
- package/build/ox_modules/module-http.js +132 -132
- package/build/ox_modules/module-log.js +27 -27
- package/build/ox_modules/module-mailinator.js +87 -87
- package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-mob/commands/assertText.js +21 -21
- package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
- package/build/ox_modules/module-mob/commands/back.js +16 -16
- package/build/ox_modules/module-mob/commands/clear.js +19 -19
- package/build/ox_modules/module-mob/commands/click.js +17 -17
- package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
- package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
- package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/debug.js +16 -16
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
- package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
- package/build/ox_modules/module-mob/commands/execute.js +21 -21
- package/build/ox_modules/module-mob/commands/findElement.js +20 -20
- package/build/ox_modules/module-mob/commands/findElements.js +23 -23
- package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
- package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
- package/build/ox_modules/module-mob/commands/getSource.js +16 -16
- package/build/ox_modules/module-mob/commands/getText.js +18 -18
- package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
- package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
- package/build/ox_modules/module-mob/commands/getValue.js +18 -18
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
- package/build/ox_modules/module-mob/commands/index.js +1 -1
- package/build/ox_modules/module-mob/commands/installApp.js +16 -16
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
- package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
- package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
- package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
- package/build/ox_modules/module-mob/commands/isExist.js +19 -19
- package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
- package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
- package/build/ox_modules/module-mob/commands/open.js +17 -17
- package/build/ox_modules/module-mob/commands/pause.js +16 -16
- package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
- package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
- package/build/ox_modules/module-mob/commands/select.js +24 -24
- package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
- package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
- package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
- package/build/ox_modules/module-mob/commands/setContext.js +16 -16
- package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
- package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
- package/build/ox_modules/module-mob/commands/shake.js +16 -16
- package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
- package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
- package/build/ox_modules/module-mob/commands/swipe.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
- package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-mob/commands/tap.js +17 -17
- package/build/ox_modules/module-mob/commands/type.js +20 -20
- package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
- package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-mob.js +74 -74
- package/build/ox_modules/module-pdf.js +35 -35
- package/build/ox_modules/module-proxy.js +77 -77
- package/build/ox_modules/module-serial.js +55 -55
- package/build/ox_modules/module-shell.js +52 -33
- package/build/ox_modules/module-soap.js +72 -72
- package/build/ox_modules/module-twilio.js +41 -41
- package/build/ox_modules/module-utils.js +91 -91
- package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
- package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
- package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
- package/build/ox_modules/module-web/commands/assertExist.js +17 -17
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/assertText.js +21 -21
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
- package/build/ox_modules/module-web/commands/assertValue.js +20 -20
- package/build/ox_modules/module-web/commands/back.js +16 -16
- package/build/ox_modules/module-web/commands/clear.js +18 -18
- package/build/ox_modules/module-web/commands/click.js +25 -25
- package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
- package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
- package/build/ox_modules/module-web/commands/debug.js +15 -15
- package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
- package/build/ox_modules/module-web/commands/deselect.js +22 -22
- package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
- package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
- package/build/ox_modules/module-web/commands/execute.js +24 -24
- package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
- package/build/ox_modules/module-web/commands/findElement.js +19 -19
- package/build/ox_modules/module-web/commands/findElements.js +22 -22
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
- package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
- package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
- package/build/ox_modules/module-web/commands/getCookies.js +13 -13
- package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
- package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
- package/build/ox_modules/module-web/commands/getHTML.js +17 -17
- package/build/ox_modules/module-web/commands/getSource.js +16 -16
- package/build/ox_modules/module-web/commands/getText.js +18 -18
- package/build/ox_modules/module-web/commands/getTitle.js +12 -12
- package/build/ox_modules/module-web/commands/getUrl.js +16 -16
- package/build/ox_modules/module-web/commands/getValue.js +18 -18
- package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
- package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
- package/build/ox_modules/module-web/commands/index.js +1 -1
- package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
- package/build/ox_modules/module-web/commands/isChecked.js +18 -18
- package/build/ox_modules/module-web/commands/isExist.js +19 -19
- package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
- package/build/ox_modules/module-web/commands/isSelected.js +23 -23
- package/build/ox_modules/module-web/commands/isVisible.js +19 -19
- package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
- package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
- package/build/ox_modules/module-web/commands/mock.js +20 -20
- package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
- package/build/ox_modules/module-web/commands/newWindow.js +16 -16
- package/build/ox_modules/module-web/commands/open.js +16 -16
- package/build/ox_modules/module-web/commands/pause.js +15 -15
- package/build/ox_modules/module-web/commands/point.js +21 -21
- package/build/ox_modules/module-web/commands/pointJS.js +15 -15
- package/build/ox_modules/module-web/commands/refresh.js +15 -15
- package/build/ox_modules/module-web/commands/rightClick.js +17 -17
- package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
- package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
- package/build/ox_modules/module-web/commands/select.js +23 -23
- package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
- package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
- package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
- package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
- package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
- package/build/ox_modules/module-web/commands/type.js +20 -20
- package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
- package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
- package/build/ox_modules/module-web/commands/verifyText.js +21 -21
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
- package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
- package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
- package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
- package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForText.js +20 -20
- package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
- package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
- package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
- package/build/ox_modules/module-web.js +94 -94
- package/build/ox_modules/module-win/commands/assertText.js +17 -17
- package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
- package/build/ox_modules/module-win/commands/assertValue.js +14 -14
- package/build/ox_modules/module-win/commands/back.js +11 -11
- package/build/ox_modules/module-win/commands/clear.js +13 -13
- package/build/ox_modules/module-win/commands/click.js +13 -13
- package/build/ox_modules/module-win/commands/clickLong.js +14 -14
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
- package/build/ox_modules/module-win/commands/findElement.js +15 -15
- package/build/ox_modules/module-win/commands/findElements.js +15 -15
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
- package/build/ox_modules/module-win/commands/getLocation.js +14 -14
- package/build/ox_modules/module-win/commands/getSource.js +12 -12
- package/build/ox_modules/module-win/commands/getText.js +14 -14
- package/build/ox_modules/module-win/commands/getValue.js +14 -14
- package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
- package/build/ox_modules/module-win/commands/index.js +1 -1
- package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
- package/build/ox_modules/module-win/commands/isChecked.js +14 -14
- package/build/ox_modules/module-win/commands/isClickable.js +14 -14
- package/build/ox_modules/module-win/commands/isExist.js +15 -15
- package/build/ox_modules/module-win/commands/isSelected.js +14 -14
- package/build/ox_modules/module-win/commands/isVisible.js +15 -15
- package/build/ox_modules/module-win/commands/open.js +13 -13
- package/build/ox_modules/module-win/commands/pause.js +12 -12
- package/build/ox_modules/module-win/commands/rightClick.js +13 -13
- package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
- package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
- package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
- package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
- package/build/ox_modules/module-win/commands/tap.js +13 -13
- package/build/ox_modules/module-win/commands/type.js +16 -16
- package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
- package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
- package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
- package/build/ox_modules/module-win.js +47 -47
- package/build/ox_modules/utils.js +8 -8
- package/build/ox_reporters/excel/template.json +48 -48
- package/build/ox_reporters/html/index.ejs +163 -163
- package/build/ox_reporters/html/summary.ejs +77 -77
- package/build/ox_reporters/html/tests-details.ejs +134 -134
- package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
- package/build/ox_reporters/reporter-excel.js +1 -1
- package/build/ox_reporters/reporter-html.js +1 -1
- package/build/ox_reporters/reporter-json.js +1 -1
- package/build/ox_reporters/reporter-junit.js +1 -1
- package/build/ox_reporters/reporter-pdf.js +1 -1
- package/build/ox_reporters/reporter-rp.js +73 -42
- package/build/ox_reporters/reporter-xml.js +1 -1
- package/build/ox_services/service-devtools/submodule-network.js +1 -1
- package/build/ox_services/service-devtools.js +1 -1
- package/build/reporter/FileReporterBase.js +1 -1
- package/build/reporter/ReportAggregator.js +5 -13
- package/build/reporter/ReporterBase.js +1 -1
- package/build/reporter/WebSocketReporter.js +1 -1
- package/build/runners/WorkerProcess.js +1 -1
- package/build/runners/cucumber/CucumberEventListener.js +1 -1
- package/build/runners/cucumber/CucumberReporter.js +1 -1
- package/build/runners/cucumber/CucumberWorker.js +1 -1
- package/build/runners/cucumber/index.js +1 -1
- package/build/runners/cucumber/worker.js +1 -1
- package/build/runners/index.js +1 -1
- package/build/runners/oxygen/OxygenWorker.js +1 -1
- package/build/runners/oxygen/index.js +1 -1
- package/build/runners/oxygen/worker.js +1 -1
- package/config/default.json +6 -6
- package/package.json +137 -139
- package/types/index.d.ts +70 -70
- package/types/module-eyes.d.ts +39 -39
- package/types/module-http.d.ts +163 -163
- package/types/module-log.d.ts +34 -34
- package/types/module-mob.d.ts +966 -966
- package/types/module-pdf.d.ts +40 -40
- package/types/module-proxy.d.ts +100 -100
- package/types/module-shell.d.ts +24 -24
- package/types/module-utils.d.ts +99 -99
- package/types/module-web.d.ts +1053 -1053
- package/types/module-win.d.ts +352 -352
- package/types/oxygen.d.ts +53 -53
- package/build/ox_modules/module-mongo.js +0 -302
- package/log.txt +0 -1614
- package/reports/2025-06-08_231627/report.html +0 -440
- package/reports/2025-06-09_223615/report.html +0 -440
- package/transpiled/mongodb/etc/prepare.js +0 -18
- package/transpiled/mongodb/lib/admin.js +0 -182
- package/transpiled/mongodb/lib/beta.js +0 -26
- package/transpiled/mongodb/lib/bson.js +0 -220
- package/transpiled/mongodb/lib/bulk/common.js +0 -1041
- package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
- package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
- package/transpiled/mongodb/lib/change_stream.js +0 -517
- package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
- package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
- package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
- package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
- package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
- package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
- package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
- package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
- package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
- package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
- package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
- package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
- package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
- package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
- package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
- package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
- package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
- package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
- package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
- package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
- package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
- package/transpiled/mongodb/lib/cmap/commands.js +0 -605
- package/transpiled/mongodb/lib/cmap/connect.js +0 -418
- package/transpiled/mongodb/lib/cmap/connection.js +0 -673
- package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
- package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
- package/transpiled/mongodb/lib/cmap/errors.js +0 -128
- package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
- package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
- package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
- package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
- package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
- package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
- package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
- package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
- package/transpiled/mongodb/lib/collection.js +0 -852
- package/transpiled/mongodb/lib/connection_string.js +0 -1452
- package/transpiled/mongodb/lib/constants.js +0 -162
- package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
- package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
- package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
- package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
- package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
- package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
- package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
- package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
- package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
- package/transpiled/mongodb/lib/db.js +0 -467
- package/transpiled/mongodb/lib/deps.js +0 -174
- package/transpiled/mongodb/lib/encrypter.js +0 -129
- package/transpiled/mongodb/lib/error.js +0 -1550
- package/transpiled/mongodb/lib/explain.js +0 -122
- package/transpiled/mongodb/lib/gridfs/download.js +0 -369
- package/transpiled/mongodb/lib/gridfs/index.js +0 -240
- package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
- package/transpiled/mongodb/lib/index.js +0 -975
- package/transpiled/mongodb/lib/mongo_client.js +0 -626
- package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
- package/transpiled/mongodb/lib/mongo_logger.js +0 -812
- package/transpiled/mongodb/lib/mongo_types.js +0 -71
- package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
- package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
- package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
- package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
- package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
- package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
- package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
- package/transpiled/mongodb/lib/operations/collections.js +0 -49
- package/transpiled/mongodb/lib/operations/command.js +0 -102
- package/transpiled/mongodb/lib/operations/count.js +0 -60
- package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
- package/transpiled/mongodb/lib/operations/delete.js +0 -134
- package/transpiled/mongodb/lib/operations/distinct.js +0 -77
- package/transpiled/mongodb/lib/operations/drop.js +0 -102
- package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
- package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
- package/transpiled/mongodb/lib/operations/find.js +0 -197
- package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
- package/transpiled/mongodb/lib/operations/get_more.js +0 -84
- package/transpiled/mongodb/lib/operations/indexes.js +0 -197
- package/transpiled/mongodb/lib/operations/insert.js +0 -138
- package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
- package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
- package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
- package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
- package/transpiled/mongodb/lib/operations/operation.js +0 -88
- package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
- package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
- package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
- package/transpiled/mongodb/lib/operations/rename.js +0 -48
- package/transpiled/mongodb/lib/operations/run_command.js +0 -64
- package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
- package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
- package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
- package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
- package/transpiled/mongodb/lib/operations/stats.js +0 -39
- package/transpiled/mongodb/lib/operations/update.js +0 -218
- package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
- package/transpiled/mongodb/lib/read_concern.js +0 -92
- package/transpiled/mongodb/lib/read_preference.js +0 -215
- package/transpiled/mongodb/lib/resource_management.js +0 -74
- package/transpiled/mongodb/lib/sdam/common.js +0 -53
- package/transpiled/mongodb/lib/sdam/events.js +0 -177
- package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
- package/transpiled/mongodb/lib/sdam/server.js +0 -463
- package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
- package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
- package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
- package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
- package/transpiled/mongodb/lib/sdam/topology.js +0 -833
- package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
- package/transpiled/mongodb/lib/sessions.js +0 -988
- package/transpiled/mongodb/lib/sort.js +0 -123
- package/transpiled/mongodb/lib/timeout.js +0 -349
- package/transpiled/mongodb/lib/transactions.js +0 -149
- package/transpiled/mongodb/lib/utils.js +0 -1502
- package/transpiled/mongodb/lib/write_concern.js +0 -115
|
@@ -8,18 +8,18 @@ var _util = _interopRequireDefault(require("../lib/util"));
|
|
|
8
8
|
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
10
|
|
|
11
|
-
/*
|
|
12
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
13
|
-
*
|
|
14
|
-
* This program is free software: you can redistribute it and/or modify
|
|
15
|
-
* it under the terms of the GNU General Public License as published by
|
|
16
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
17
|
-
* (at your option) any later version.
|
|
11
|
+
/*
|
|
12
|
+
* Copyright (C) 2015-present CloudBeat Limited
|
|
13
|
+
*
|
|
14
|
+
* This program is free software: you can redistribute it and/or modify
|
|
15
|
+
* it under the terms of the GNU General Public License as published by
|
|
16
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
17
|
+
* (at your option) any later version.
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* @name serial
|
|
22
|
-
* @description Provides methods for working with serial ports.
|
|
20
|
+
/**
|
|
21
|
+
* @name serial
|
|
22
|
+
* @description Provides methods for working with serial ports.
|
|
23
23
|
*/
|
|
24
24
|
var errHelper = require('../errors/helper');
|
|
25
25
|
|
|
@@ -34,39 +34,39 @@ module.exports = function () {
|
|
|
34
34
|
module.isInitialized = function () {
|
|
35
35
|
return serialPort !== undefined;
|
|
36
36
|
};
|
|
37
|
-
/**
|
|
38
|
-
* @summary Returns list of available ports.
|
|
39
|
-
* @description See https://github.com/EmergingTechnologyAdvisors/node-serialport#module_serialport--SerialPort.list
|
|
40
|
-
* for details about the structure of returned values.
|
|
41
|
-
* @function list
|
|
42
|
-
* @return {Object[]} Array of port descriptions.
|
|
37
|
+
/**
|
|
38
|
+
* @summary Returns list of available ports.
|
|
39
|
+
* @description See https://github.com/EmergingTechnologyAdvisors/node-serialport#module_serialport--SerialPort.list
|
|
40
|
+
* for details about the structure of returned values.
|
|
41
|
+
* @function list
|
|
42
|
+
* @return {Object[]} Array of port descriptions.
|
|
43
43
|
*/
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
module.list = async function () {
|
|
47
47
|
return await SerialPort.list();
|
|
48
48
|
};
|
|
49
|
-
/**
|
|
50
|
-
* @summary Opens a serial port.
|
|
51
|
-
* @description Data from the opened port will be automatically read line by line into a circular buffer.
|
|
52
|
-
* Once the buffer reaches it's maximum capacity specified by `bufferSize` argument, eldest entries are
|
|
53
|
-
* evicted to make room for new data.
|
|
54
|
-
* @function open
|
|
55
|
-
* @param {String} port - Path to serial port. E.g. '/dev/tty-usbserial1', 'COM5', etc.
|
|
56
|
-
* @param {Object} opts - Port properties.
|
|
57
|
-
* @param {Number=} bufferSize - Size of the input data buffer. Default is 65536 bytes.
|
|
58
|
-
* @return {SerialPort} SerialPort object.
|
|
59
|
-
* @example <caption>[json] Serial port properties with default values</caption>
|
|
60
|
-
* {
|
|
61
|
-
* baudRate: 9600,
|
|
62
|
-
* dataBits: 8, // Must be one of: 8, 7, 6, or 5.
|
|
63
|
-
* stopBits: 1, // Must be one of: 1 or 2.
|
|
64
|
-
* parity: 'none' // Must be one of: 'none', 'even', 'mark', 'odd', 'space'.
|
|
65
|
-
* rtscts: false,
|
|
66
|
-
* xon: false,
|
|
67
|
-
* xoff: false,
|
|
68
|
-
* xany: false
|
|
69
|
-
* }
|
|
49
|
+
/**
|
|
50
|
+
* @summary Opens a serial port.
|
|
51
|
+
* @description Data from the opened port will be automatically read line by line into a circular buffer.
|
|
52
|
+
* Once the buffer reaches it's maximum capacity specified by `bufferSize` argument, eldest entries are
|
|
53
|
+
* evicted to make room for new data.
|
|
54
|
+
* @function open
|
|
55
|
+
* @param {String} port - Path to serial port. E.g. '/dev/tty-usbserial1', 'COM5', etc.
|
|
56
|
+
* @param {Object} opts - Port properties.
|
|
57
|
+
* @param {Number=} bufferSize - Size of the input data buffer. Default is 65536 bytes.
|
|
58
|
+
* @return {SerialPort} SerialPort object.
|
|
59
|
+
* @example <caption>[json] Serial port properties with default values</caption>
|
|
60
|
+
* {
|
|
61
|
+
* baudRate: 9600,
|
|
62
|
+
* dataBits: 8, // Must be one of: 8, 7, 6, or 5.
|
|
63
|
+
* stopBits: 1, // Must be one of: 1 or 2.
|
|
64
|
+
* parity: 'none' // Must be one of: 'none', 'even', 'mark', 'odd', 'space'.
|
|
65
|
+
* rtscts: false,
|
|
66
|
+
* xon: false,
|
|
67
|
+
* xoff: false,
|
|
68
|
+
* xany: false
|
|
69
|
+
* }
|
|
70
70
|
*/
|
|
71
71
|
|
|
72
72
|
|
|
@@ -91,13 +91,13 @@ module.exports = function () {
|
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
};
|
|
94
|
-
/**
|
|
95
|
-
* @summary Waits for text to appear in the input data buffer.
|
|
96
|
-
* @description Text pattern can be any of the supported
|
|
97
|
-
* string matching patterns(on the top of page).
|
|
98
|
-
* @function waitForText
|
|
99
|
-
* @param {String} pattern - Text pattern.
|
|
100
|
-
* @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
|
|
94
|
+
/**
|
|
95
|
+
* @summary Waits for text to appear in the input data buffer.
|
|
96
|
+
* @description Text pattern can be any of the supported
|
|
97
|
+
* string matching patterns(on the top of page).
|
|
98
|
+
* @function waitForText
|
|
99
|
+
* @param {String} pattern - Text pattern.
|
|
100
|
+
* @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
|
|
101
101
|
*/
|
|
102
102
|
|
|
103
103
|
|
|
@@ -127,12 +127,12 @@ module.exports = function () {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
};
|
|
130
|
-
/**
|
|
131
|
-
* @summary Write data to the port.
|
|
132
|
-
* @function write
|
|
133
|
-
* @param {(String|Array)} data - Data to send. Either a string or an array of bytes.
|
|
134
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
135
|
-
* serial.write('Hello\r\n');
|
|
130
|
+
/**
|
|
131
|
+
* @summary Write data to the port.
|
|
132
|
+
* @function write
|
|
133
|
+
* @param {(String|Array)} data - Data to send. Either a string or an array of bytes.
|
|
134
|
+
* @example <caption>[javascript] Usage example</caption>
|
|
135
|
+
* serial.write('Hello\r\n');
|
|
136
136
|
*/
|
|
137
137
|
|
|
138
138
|
|
|
@@ -148,10 +148,10 @@ module.exports = function () {
|
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
};
|
|
151
|
-
/**
|
|
152
|
-
* @summary Return data buffer.
|
|
153
|
-
* @function getBuffer
|
|
154
|
-
* @return {CircularStringBuffer} Data buffer.
|
|
151
|
+
/**
|
|
152
|
+
* @summary Return data buffer.
|
|
153
|
+
* @function getBuffer
|
|
154
|
+
* @return {CircularStringBuffer} Data buffer.
|
|
155
155
|
*/
|
|
156
156
|
|
|
157
157
|
|
|
@@ -184,4 +184,4 @@ module.exports = function () {
|
|
|
184
184
|
|
|
185
185
|
return module;
|
|
186
186
|
};
|
|
187
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zZXJpYWwuanMiXSwibmFtZXMiOlsiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJTZXJpYWxQb3J0IiwidXRpbHMiLCJzZXJpYWxQb3J0Iiwic3RyaW5nQnVmZmVyIiwiaXNJbml0aWFsaXplZCIsInVuZGVmaW5lZCIsImxpc3QiLCJvcGVuIiwicG9ydCIsIm9wdHMiLCJidWZmZXJTaXplIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwiZXJyIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIlNFUklBTF9QT1JUX0VSUk9SIiwibWVzc2FnZSIsInBhcnNlciIsInBpcGUiLCJwYXJzZXJzIiwiUmVhZGxpbmUiLCJDaXJjdWxhclN0cmluZ0J1ZmZlciIsImRhdGEiLCJwdXNoIiwidG9TdHJpbmciLCJ3YWl0Rm9yVGV4dCIsInBhdHRlcm4iLCJ0aW1lb3V0Iiwibm93IiwiRGF0ZSIsImdldFRpbWUiLCJkb25lIiwiaSIsImxlbmd0aCIsIm1hdGNoUGF0dGVybiIsImxpYlV0aWxzIiwic2xlZXAiLCJUSU1FT1VUIiwid3JpdGUiLCJhc3NlcnRBcmd1bWVudCIsImRyYWluIiwiZ2V0QnVmZmVyIiwiZGlzcG9zZSIsImNsb3NlIiwibWF4U2l6ZSIsInNpemUiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJjcmVhdGUiLCJBcnJheSIsInN0cmluZyIsInNoaWZ0IiwiY2FsbCJdLCJtYXBwaW5ncyI6Ijs7OztBQWFBOztBQUVBOzs7O0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUdBQyxNQUFNLENBQUNDLE9BQVAsR0FB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QUFDeEIsUUFBSTdDLFVBQUosRUFBZ0I7QUFDWkEsTUFBQUEsVUFBVSxDQUFDOEMsS0FBWDtBQUNIO0FBQ0osR0FKRDs7QUFNQSxXQUFTdEIsb0JBQVQsQ0FBOEJ1QixPQUE5QixFQUF1QztBQUNuQyxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLQyxJQUFMLEdBQVksQ0FBWjtBQUNIOztBQUVEeEIsRUFBQUEsb0JBQW9CLENBQUN5QixTQUFyQixHQUFpQ0MsTUFBTSxDQUFDQyxNQUFQLENBQWNDLEtBQUssQ0FBQ0gsU0FBcEIsQ0FBakM7O0FBRUF6QixFQUFBQSxvQkFBb0IsQ0FBQ3lCLFNBQXJCLENBQStCdkIsSUFBL0IsR0FBc0MsVUFBUzJCLE1BQVQsRUFBaUI7QUFDbkQsV0FBTyxLQUFLTCxJQUFMLEdBQVlLLE1BQU0sQ0FBQ2pCLE1BQW5CLEdBQTRCLEtBQUtXLE9BQXhDLEVBQWlEO0FBQzdDLFdBQUtDLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDQSxXQUFLa0IsS0FBTDtBQUNIOztBQUNERixJQUFBQSxLQUFLLENBQUNILFNBQU4sQ0FBZ0J2QixJQUFoQixDQUFxQjZCLElBQXJCLENBQTBCLElBQTFCLEVBQWdDRixNQUFoQztBQUNBLFNBQUtMLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDSCxHQVBEOztBQVNBLFNBQU94QyxNQUFQO0FBQ0gsQ0EzSkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5cbi8qKlxuICogQG5hbWUgc2VyaWFsXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIHNlcmlhbCBwb3J0cy5cbiAqL1xuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcbnZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XG5pbXBvcnQgbGliVXRpbHMgZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBTZXJpYWxQb3J0ID0gcmVxdWlyZSgnc2VyaWFscG9ydCcpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuICAgIHZhciBzZXJpYWxQb3J0O1xuICAgIHZhciBzdHJpbmdCdWZmZXI7XG5cbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VyaWFsUG9ydCAhPT0gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGxpc3Qgb2YgYXZhaWxhYmxlIHBvcnRzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0VtZXJnaW5nVGVjaG5vbG9neUFkdmlzb3JzL25vZGUtc2VyaWFscG9ydCNtb2R1bGVfc2VyaWFscG9ydC0tU2VyaWFsUG9ydC5saXN0XG4gICAgICogICAgICAgICAgICAgIGZvciBkZXRhaWxzIGFib3V0IHRoZSBzdHJ1Y3R1cmUgb2YgcmV0dXJuZWQgdmFsdWVzLlxuICAgICAqIEBmdW5jdGlvbiBsaXN0XG4gICAgICogQHJldHVybiB7T2JqZWN0W119IEFycmF5IG9mIHBvcnQgZGVzY3JpcHRpb25zLlxuICAgICAqL1xuICAgIG1vZHVsZS5saXN0ID0gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBTZXJpYWxQb3J0Lmxpc3QoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgT3BlbnMgYSBzZXJpYWwgcG9ydC5cbiAgICAgKiBAZGVzY3JpcHRpb24gRGF0YSBmcm9tIHRoZSBvcGVuZWQgcG9ydCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVhZCBsaW5lIGJ5IGxpbmUgaW50byBhIGNpcmN1bGFyIGJ1ZmZlci5cbiAgICAgKiAgICAgICAgICAgICAgT25jZSB0aGUgYnVmZmVyIHJlYWNoZXMgaXQncyBtYXhpbXVtIGNhcGFjaXR5IHNwZWNpZmllZCBieSBgYnVmZmVyU2l6ZWAgYXJndW1lbnQsIGVsZGVzdCBlbnRyaWVzIGFyZSBcbiAgICAgKiAgICAgICAgICAgICAgZXZpY3RlZCB0byBtYWtlIHJvb20gZm9yIG5ldyBkYXRhLlxuICAgICAqIEBmdW5jdGlvbiBvcGVuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBvcnQgLSBQYXRoIHRvIHNlcmlhbCBwb3J0LiBFLmcuICcvZGV2L3R0eS11c2JzZXJpYWwxJywgJ0NPTTUnLCBldGMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBQb3J0IHByb3BlcnRpZXMuXG4gICAgICogQHBhcmFtIHtOdW1iZXI9fSBidWZmZXJTaXplIC0gU2l6ZSBvZiB0aGUgaW5wdXQgZGF0YSBidWZmZXIuIERlZmF1bHQgaXMgNjU1MzYgYnl0ZXMuXG4gICAgICogQHJldHVybiB7U2VyaWFsUG9ydH0gU2VyaWFsUG9ydCBvYmplY3QuXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2pzb25dIFNlcmlhbCBwb3J0IHByb3BlcnRpZXMgd2l0aCBkZWZhdWx0IHZhbHVlczwvY2FwdGlvbj5cbiAgICAgKiB7XG4gICAgICogICBiYXVkUmF0ZTogOTYwMCxcbiAgICAgKiAgIGRhdGFCaXRzOiA4LCAgICAgICAgLy8gTXVzdCBiZSBvbmUgb2Y6IDgsIDcsIDYsIG9yIDUuXG4gICAgICogICBzdG9wQml0czogMSwgICAgICAgIC8vIE11c3QgYmUgb25lIG9mOiAxIG9yIDIuXG4gICAgICogICBwYXJpdHk6ICdub25lJyAgICAgIC8vIE11c3QgYmUgb25lIG9mOiAnbm9uZScsICdldmVuJywgJ21hcmsnLCAnb2RkJywgJ3NwYWNlJy5cbiAgICAgKiAgIHJ0c2N0czogZmFsc2UsXG4gICAgICogICB4b246IGZhbHNlLFxuICAgICAqICAgeG9mZjogZmFsc2UsXG4gICAgICogICB4YW55OiBmYWxzZVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBtb2R1bGUub3BlbiA9IGZ1bmN0aW9uKHBvcnQsIG9wdHMsIGJ1ZmZlclNpemUgPSA2NTUzNikge1xuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHBvcnQsICdwb3J0Jyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYnVmZmVyU2l6ZSwgJ2J1ZmZlclNpemUnKTtcblxuICAgICAgICBpZiAocG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0ID0gbmV3IFNlcmlhbFBvcnQocG9ydCwgb3B0cyk7XG5cbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0Lm9uKCdvcGVuJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHNlcmlhbFBvcnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2VyaWFsUG9ydC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNFUklBTF9QT1JUX0VSUk9SLCBlcnIubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHBhcnNlciA9IHNlcmlhbFBvcnQucGlwZShuZXcgU2VyaWFsUG9ydC5wYXJzZXJzLlJlYWRsaW5lKCkpO1xuICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlciA9IG5ldyBDaXJjdWxhclN0cmluZ0J1ZmZlcihidWZmZXJTaXplKTtcbiAgICAgICAgICAgICAgICBwYXJzZXIub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWZmZXIucHVzaChkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBXYWl0cyBmb3IgdGV4dCB0byBhcHBlYXIgaW4gdGhlIGlucHV0IGRhdGEgYnVmZmVyLlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0IHBhdHRlcm4gY2FuIGJlIGFueSBvZiB0aGUgc3VwcG9ydGVkIFxuICAgICAqICBzdHJpbmcgbWF0Y2hpbmcgcGF0dGVybnMob24gdGhlIHRvcCBvZiBwYWdlKS5cbiAgICAgKiBAZnVuY3Rpb24gd2FpdEZvclRleHRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFRleHQgcGF0dGVybi5cbiAgICAgKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxuICAgICAqL1xuICAgIG1vZHVsZS53YWl0Rm9yVGV4dCA9IGFzeW5jIGZ1bmN0aW9uKHBhdHRlcm4sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHBhdHRlcm4sICdwYXR0ZXJuJyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcblxuICAgICAgICBpZiAoc3RyaW5nQnVmZmVyKSB7XG4gICAgICAgICAgICB2YXIgbm93ID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBsZXQgZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lICYmIChEYXRlLm5vdygpIC0gbm93KSA8IHRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSBzdHJpbmdCdWZmZXIubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodXRpbHMubWF0Y2hQYXR0ZXJuKHN0cmluZ0J1ZmZlcltpXSwgcGF0dGVybikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhd2FpdCBsaWJVdGlscy5zbGVlcCg1MDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBub3cgPj0gdGltZW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVElNRU9VVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgV3JpdGUgZGF0YSB0byB0aGUgcG9ydC5cbiAgICAgKiBAZnVuY3Rpb24gd3JpdGVcbiAgICAgKiBAcGFyYW0geyhTdHJpbmd8QXJyYXkpfSBkYXRhIC0gRGF0YSB0byBzZW5kLiBFaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2YgYnl0ZXMuXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XG4gICAgICogc2VyaWFsLndyaXRlKCdIZWxsb1xcclxcbicpO1xuICAgICAqL1xuICAgIG1vZHVsZS53cml0ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnQoZGF0YSwgJ2RhdGEnKTtcblxuICAgICAgICBpZiAoc2VyaWFsUG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0LndyaXRlKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlcmlhbFBvcnQuZHJhaW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm4gZGF0YSBidWZmZXIuXG4gICAgICogQGZ1bmN0aW9uIGdldEJ1ZmZlclxuICAgICAqIEByZXR1cm4ge0NpcmN1bGFyU3RyaW5nQnVmZmVyfSBEYXRhIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBtb2R1bGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmdCdWZmZXI7XG4gICAgfTtcblxuICAgIG1vZHVsZS5kaXNwb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChzZXJpYWxQb3J0KSB7XG4gICAgICAgICAgICBzZXJpYWxQb3J0LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gQ2lyY3VsYXJTdHJpbmdCdWZmZXIobWF4U2l6ZSkge1xuICAgICAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIENpcmN1bGFyU3RyaW5nQnVmZmVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQXJyYXkucHJvdG90eXBlKTtcblxuICAgIENpcmN1bGFyU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnNpemUgKyBzdHJpbmcubGVuZ3RoID4gdGhpcy5tYXhTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnNpemUgLT0gc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsIHN0cmluZyk7XG4gICAgICAgIHRoaXMuc2l6ZSArPSBzdHJpbmcubGVuZ3RoO1xuICAgIH07XG5cbiAgICByZXR1cm4gbW9kdWxlO1xufTtcbiJdfQ==
|
|
187
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zZXJpYWwuanMiXSwibmFtZXMiOlsiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJTZXJpYWxQb3J0IiwidXRpbHMiLCJzZXJpYWxQb3J0Iiwic3RyaW5nQnVmZmVyIiwiaXNJbml0aWFsaXplZCIsInVuZGVmaW5lZCIsImxpc3QiLCJvcGVuIiwicG9ydCIsIm9wdHMiLCJidWZmZXJTaXplIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwiZXJyIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIlNFUklBTF9QT1JUX0VSUk9SIiwibWVzc2FnZSIsInBhcnNlciIsInBpcGUiLCJwYXJzZXJzIiwiUmVhZGxpbmUiLCJDaXJjdWxhclN0cmluZ0J1ZmZlciIsImRhdGEiLCJwdXNoIiwidG9TdHJpbmciLCJ3YWl0Rm9yVGV4dCIsInBhdHRlcm4iLCJ0aW1lb3V0Iiwibm93IiwiRGF0ZSIsImdldFRpbWUiLCJkb25lIiwiaSIsImxlbmd0aCIsIm1hdGNoUGF0dGVybiIsImxpYlV0aWxzIiwic2xlZXAiLCJUSU1FT1VUIiwid3JpdGUiLCJhc3NlcnRBcmd1bWVudCIsImRyYWluIiwiZ2V0QnVmZmVyIiwiZGlzcG9zZSIsImNsb3NlIiwibWF4U2l6ZSIsInNpemUiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJjcmVhdGUiLCJBcnJheSIsInN0cmluZyIsInNoaWZ0IiwiY2FsbCJdLCJtYXBwaW5ncyI6Ijs7OztBQWFBOztBQUVBOzs7O0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUdBQyxNQUFNLENBQUNDLE9BQVAsR0FB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QUFDeEIsUUFBSTdDLFVBQUosRUFBZ0I7QUFDWkEsTUFBQUEsVUFBVSxDQUFDOEMsS0FBWDtBQUNIO0FBQ0osR0FKRDs7QUFNQSxXQUFTdEIsb0JBQVQsQ0FBOEJ1QixPQUE5QixFQUF1QztBQUNuQyxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLQyxJQUFMLEdBQVksQ0FBWjtBQUNIOztBQUVEeEIsRUFBQUEsb0JBQW9CLENBQUN5QixTQUFyQixHQUFpQ0MsTUFBTSxDQUFDQyxNQUFQLENBQWNDLEtBQUssQ0FBQ0gsU0FBcEIsQ0FBakM7O0FBRUF6QixFQUFBQSxvQkFBb0IsQ0FBQ3lCLFNBQXJCLENBQStCdkIsSUFBL0IsR0FBc0MsVUFBUzJCLE1BQVQsRUFBaUI7QUFDbkQsV0FBTyxLQUFLTCxJQUFMLEdBQVlLLE1BQU0sQ0FBQ2pCLE1BQW5CLEdBQTRCLEtBQUtXLE9BQXhDLEVBQWlEO0FBQzdDLFdBQUtDLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDQSxXQUFLa0IsS0FBTDtBQUNIOztBQUNERixJQUFBQSxLQUFLLENBQUNILFNBQU4sQ0FBZ0J2QixJQUFoQixDQUFxQjZCLElBQXJCLENBQTBCLElBQTFCLEVBQWdDRixNQUFoQztBQUNBLFNBQUtMLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDSCxHQVBEOztBQVNBLFNBQU94QyxNQUFQO0FBQ0gsQ0EzSkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzZXJpYWxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBzZXJpYWwgcG9ydHMuXHJcbiAqL1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG52YXIgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5pbXBvcnQgbGliVXRpbHMgZnJvbSAnLi4vbGliL3V0aWwnO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBTZXJpYWxQb3J0ID0gcmVxdWlyZSgnc2VyaWFscG9ydCcpO1xyXG4gICAgdmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xyXG5cclxuICAgIHZhciBzZXJpYWxQb3J0O1xyXG4gICAgdmFyIHN0cmluZ0J1ZmZlcjtcclxuXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBzZXJpYWxQb3J0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBsaXN0IG9mIGF2YWlsYWJsZSBwb3J0cy5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0VtZXJnaW5nVGVjaG5vbG9neUFkdmlzb3JzL25vZGUtc2VyaWFscG9ydCNtb2R1bGVfc2VyaWFscG9ydC0tU2VyaWFsUG9ydC5saXN0XHJcbiAgICAgKiAgICAgICAgICAgICAgZm9yIGRldGFpbHMgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiByZXR1cm5lZCB2YWx1ZXMuXHJcbiAgICAgKiBAZnVuY3Rpb24gbGlzdFxyXG4gICAgICogQHJldHVybiB7T2JqZWN0W119IEFycmF5IG9mIHBvcnQgZGVzY3JpcHRpb25zLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUubGlzdCA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBTZXJpYWxQb3J0Lmxpc3QoKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBPcGVucyBhIHNlcmlhbCBwb3J0LlxyXG4gICAgICogQGRlc2NyaXB0aW9uIERhdGEgZnJvbSB0aGUgb3BlbmVkIHBvcnQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlYWQgbGluZSBieSBsaW5lIGludG8gYSBjaXJjdWxhciBidWZmZXIuXHJcbiAgICAgKiAgICAgICAgICAgICAgT25jZSB0aGUgYnVmZmVyIHJlYWNoZXMgaXQncyBtYXhpbXVtIGNhcGFjaXR5IHNwZWNpZmllZCBieSBgYnVmZmVyU2l6ZWAgYXJndW1lbnQsIGVsZGVzdCBlbnRyaWVzIGFyZSBcclxuICAgICAqICAgICAgICAgICAgICBldmljdGVkIHRvIG1ha2Ugcm9vbSBmb3IgbmV3IGRhdGEuXHJcbiAgICAgKiBAZnVuY3Rpb24gb3BlblxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBvcnQgLSBQYXRoIHRvIHNlcmlhbCBwb3J0LiBFLmcuICcvZGV2L3R0eS11c2JzZXJpYWwxJywgJ0NPTTUnLCBldGMuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFBvcnQgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyPX0gYnVmZmVyU2l6ZSAtIFNpemUgb2YgdGhlIGlucHV0IGRhdGEgYnVmZmVyLiBEZWZhdWx0IGlzIDY1NTM2IGJ5dGVzLlxyXG4gICAgICogQHJldHVybiB7U2VyaWFsUG9ydH0gU2VyaWFsUG9ydCBvYmplY3QuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5banNvbl0gU2VyaWFsIHBvcnQgcHJvcGVydGllcyB3aXRoIGRlZmF1bHQgdmFsdWVzPC9jYXB0aW9uPlxyXG4gICAgICoge1xyXG4gICAgICogICBiYXVkUmF0ZTogOTYwMCxcclxuICAgICAqICAgZGF0YUJpdHM6IDgsICAgICAgICAvLyBNdXN0IGJlIG9uZSBvZjogOCwgNywgNiwgb3IgNS5cclxuICAgICAqICAgc3RvcEJpdHM6IDEsICAgICAgICAvLyBNdXN0IGJlIG9uZSBvZjogMSBvciAyLlxyXG4gICAgICogICBwYXJpdHk6ICdub25lJyAgICAgIC8vIE11c3QgYmUgb25lIG9mOiAnbm9uZScsICdldmVuJywgJ21hcmsnLCAnb2RkJywgJ3NwYWNlJy5cclxuICAgICAqICAgcnRzY3RzOiBmYWxzZSxcclxuICAgICAqICAgeG9uOiBmYWxzZSxcclxuICAgICAqICAgeG9mZjogZmFsc2UsXHJcbiAgICAgKiAgIHhhbnk6IGZhbHNlXHJcbiAgICAgKiB9XHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5vcGVuID0gZnVuY3Rpb24ocG9ydCwgb3B0cywgYnVmZmVyU2l6ZSA9IDY1NTM2KSB7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhwb3J0LCAncG9ydCcpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYnVmZmVyU2l6ZSwgJ2J1ZmZlclNpemUnKTtcclxuXHJcbiAgICAgICAgaWYgKHBvcnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNlcmlhbFBvcnQgPSBuZXcgU2VyaWFsUG9ydChwb3J0LCBvcHRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0Lm9uKCdvcGVuJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc2VyaWFsUG9ydCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0Lm9uKCdlcnJvcicsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TRVJJQUxfUE9SVF9FUlJPUiwgZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBwYXJzZXIgPSBzZXJpYWxQb3J0LnBpcGUobmV3IFNlcmlhbFBvcnQucGFyc2Vycy5SZWFkbGluZSgpKTtcclxuICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlciA9IG5ldyBDaXJjdWxhclN0cmluZ0J1ZmZlcihidWZmZXJTaXplKTtcclxuICAgICAgICAgICAgICAgIHBhcnNlci5vbignZGF0YScsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVmZmVyLnB1c2goZGF0YS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFdhaXRzIGZvciB0ZXh0IHRvIGFwcGVhciBpbiB0aGUgaW5wdXQgZGF0YSBidWZmZXIuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dCBwYXR0ZXJuIGNhbiBiZSBhbnkgb2YgdGhlIHN1cHBvcnRlZCBcclxuICAgICAqICBzdHJpbmcgbWF0Y2hpbmcgcGF0dGVybnMob24gdGhlIHRvcCBvZiBwYWdlKS5cclxuICAgICAqIEBmdW5jdGlvbiB3YWl0Rm9yVGV4dFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBUZXh0IHBhdHRlcm4uXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUud2FpdEZvclRleHQgPSBhc3luYyBmdW5jdGlvbihwYXR0ZXJuLCB0aW1lb3V0ID0gNjAwMDApIHtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHBhdHRlcm4sICdwYXR0ZXJuJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG5cclxuICAgICAgICBpZiAoc3RyaW5nQnVmZmVyKSB7XHJcbiAgICAgICAgICAgIHZhciBub3cgPSAobmV3IERhdGUpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgd2hpbGUgKCFkb25lICYmIChEYXRlLm5vdygpIC0gbm93KSA8IHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gc3RyaW5nQnVmZmVyLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXRpbHMubWF0Y2hQYXR0ZXJuKHN0cmluZ0J1ZmZlcltpXSwgcGF0dGVybikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBsaWJVdGlscy5zbGVlcCg1MDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBub3cgPj0gdGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5USU1FT1VUKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBXcml0ZSBkYXRhIHRvIHRoZSBwb3J0LlxyXG4gICAgICogQGZ1bmN0aW9uIHdyaXRlXHJcbiAgICAgKiBAcGFyYW0geyhTdHJpbmd8QXJyYXkpfSBkYXRhIC0gRGF0YSB0byBzZW5kLiBFaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2YgYnl0ZXMuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIHNlcmlhbC53cml0ZSgnSGVsbG9cXHJcXG4nKTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLndyaXRlID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50KGRhdGEsICdkYXRhJyk7XHJcblxyXG4gICAgICAgIGlmIChzZXJpYWxQb3J0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0LndyaXRlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWFsUG9ydC5kcmFpbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm4gZGF0YSBidWZmZXIuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0QnVmZmVyXHJcbiAgICAgKiBAcmV0dXJuIHtDaXJjdWxhclN0cmluZ0J1ZmZlcn0gRGF0YSBidWZmZXIuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRCdWZmZXIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gc3RyaW5nQnVmZmVyO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuZGlzcG9zZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChzZXJpYWxQb3J0KSB7XHJcbiAgICAgICAgICAgIHNlcmlhbFBvcnQuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIENpcmN1bGFyU3RyaW5nQnVmZmVyKG1heFNpemUpIHtcclxuICAgICAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgQ2lyY3VsYXJTdHJpbmdCdWZmZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBcnJheS5wcm90b3R5cGUpO1xyXG5cclxuICAgIENpcmN1bGFyU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oc3RyaW5nKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuc2l6ZSArIHN0cmluZy5sZW5ndGggPiB0aGlzLm1heFNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5zaXplIC09IHN0cmluZy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBzdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuc2l6ZSArPSBzdHJpbmcubGVuZ3RoO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
|
|
@@ -17,18 +17,18 @@ var _utils = _interopRequireDefault(require("./utils"));
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
|
-
/*
|
|
21
|
-
* Copyright (C) 2015-2018 CloudBeat Limited
|
|
22
|
-
*
|
|
23
|
-
* This program is free software: you can redistribute it and/or modify
|
|
24
|
-
* it under the terms of the GNU General Public License as published by
|
|
25
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
26
|
-
* (at your option) any later version.
|
|
20
|
+
/*
|
|
21
|
+
* Copyright (C) 2015-2018 CloudBeat Limited
|
|
22
|
+
*
|
|
23
|
+
* This program is free software: you can redistribute it and/or modify
|
|
24
|
+
* it under the terms of the GNU General Public License as published by
|
|
25
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
26
|
+
* (at your option) any later version.
|
|
27
27
|
*/
|
|
28
28
|
const MODULE_NAME = 'shell';
|
|
29
|
-
/**
|
|
30
|
-
* @name shell
|
|
31
|
-
* @description Provides methods for working with operating system shell.
|
|
29
|
+
/**
|
|
30
|
+
* @name shell
|
|
31
|
+
* @description Provides methods for working with operating system shell.
|
|
32
32
|
*/
|
|
33
33
|
|
|
34
34
|
class ShellModule extends _OxygenModule.default {
|
|
@@ -37,31 +37,31 @@ class ShellModule extends _OxygenModule.default {
|
|
|
37
37
|
this._alwaysInitialized = true; // pre-initialize the module
|
|
38
38
|
|
|
39
39
|
this._isInitialized = true;
|
|
40
|
-
this._lastCmd;
|
|
41
40
|
this._lastStdout;
|
|
41
|
+
this._lastStderr;
|
|
42
42
|
}
|
|
43
|
-
/*
|
|
44
|
-
* @summary Gets module name
|
|
45
|
-
* @function name
|
|
46
|
-
* @return {String} Constant value "shell".
|
|
43
|
+
/*
|
|
44
|
+
* @summary Gets module name
|
|
45
|
+
* @function name
|
|
46
|
+
* @return {String} Constant value "shell".
|
|
47
47
|
*/
|
|
48
48
|
|
|
49
49
|
|
|
50
50
|
get name() {
|
|
51
51
|
return MODULE_NAME;
|
|
52
52
|
}
|
|
53
|
-
/**
|
|
54
|
-
* @summary Execute command
|
|
55
|
-
* @description Spawn child process
|
|
56
|
-
* @function exec
|
|
57
|
-
* @param {String} command - Shell command to be executed, including arguments, if applicable.
|
|
58
|
-
* @return {
|
|
53
|
+
/**
|
|
54
|
+
* @summary Execute command
|
|
55
|
+
* @description Spawn child process
|
|
56
|
+
* @function exec
|
|
57
|
+
* @param {String} command - Shell command to be executed, including arguments, if applicable.
|
|
58
|
+
* @return {Object} Response object containing stdout, stderr, exit code, and signal (if process was terminated by a signal).
|
|
59
59
|
*/
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
exec(command, options = {}) {
|
|
63
|
-
this._lastCmd = command;
|
|
64
63
|
this._lastStdout = null;
|
|
64
|
+
this._lastStderr = null;
|
|
65
65
|
|
|
66
66
|
const spawn = require('cross-spawn');
|
|
67
67
|
|
|
@@ -78,17 +78,18 @@ class ShellModule extends _OxygenModule.default {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
this._lastStdout = result.stdout ? result.stdout.toString() : null;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
81
|
+
this._lastStderr = result.stderr ? result.stderr.toString() : null;
|
|
82
|
+
return {
|
|
83
|
+
stdout: this._lastStdout,
|
|
84
|
+
stderr: this._lastStderr,
|
|
85
|
+
exitCode: result.status,
|
|
86
|
+
signal: result.signal
|
|
87
|
+
};
|
|
87
88
|
}
|
|
88
|
-
/**
|
|
89
|
-
* @summary Assert
|
|
90
|
-
* @function assertOutput
|
|
91
|
-
* @param {String} pattern - Pattern to assert.
|
|
89
|
+
/**
|
|
90
|
+
* @summary Assert that the shell command's output (stdout) matches the specified pattern.
|
|
91
|
+
* @function assertOutput
|
|
92
|
+
* @param {String} pattern - Pattern to assert.
|
|
92
93
|
*/
|
|
93
94
|
|
|
94
95
|
|
|
@@ -103,8 +104,26 @@ class ShellModule extends _OxygenModule.default {
|
|
|
103
104
|
|
|
104
105
|
return true;
|
|
105
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* @summary Assert that the shell command's error output (stderr) matches the specified pattern.
|
|
109
|
+
* @function assertErrorOutput
|
|
110
|
+
* @param {String} pattern - Pattern to assert.
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
assertErrorOutput(pattern) {
|
|
115
|
+
if (!this._lastStderr) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (!_utils.default.matchPattern(this._lastStderr, pattern)) {
|
|
120
|
+
throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, `Expected shell command error output to match: "${pattern}" but got: "${this._lastStderr}"`);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
106
125
|
|
|
107
126
|
}
|
|
108
127
|
|
|
109
128
|
exports.default = ShellModule;
|
|
110
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
129
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zaGVsbC5qcyJdLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIlNoZWxsTW9kdWxlIiwiT3h5Z2VuTW9kdWxlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY29udGV4dCIsInJzIiwibG9nZ2VyIiwibW9kdWxlcyIsInNlcnZpY2VzIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2lzSW5pdGlhbGl6ZWQiLCJfbGFzdFN0ZG91dCIsIl9sYXN0U3RkZXJyIiwibmFtZSIsImV4ZWMiLCJjb21tYW5kIiwic3Bhd24iLCJyZXF1aXJlIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwic3RkZXJyIiwiZXhpdENvZGUiLCJzdGF0dXMiLCJzaWduYWwiLCJhc3NlcnRPdXRwdXQiLCJwYXR0ZXJuIiwibW9kVXRpbHMiLCJtYXRjaFBhdHRlcm4iLCJBU1NFUlRfRVJST1IiLCJhc3NlcnRFcnJvck91dHB1dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUEsTUFBTUEsV0FBVyxHQUFHLE9BQXBCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsV0FBTixTQUEwQkMscUJBQTFCLENBQXVDO0FBQ2xEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUJDLE1BQXZCLEVBQStCQyxPQUEvQixFQUF3Q0MsUUFBeEMsRUFBa0Q7QUFDekQsVUFBTUwsT0FBTixFQUFlQyxPQUFmLEVBQXdCQyxFQUF4QixFQUE0QkMsTUFBNUIsRUFBb0NDLE9BQXBDLEVBQTZDQyxRQUE3QztBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLElBQTFCLENBRnlELENBR3pEOztBQUNBLFNBQUtDLGNBQUwsR0FBc0IsSUFBdEI7QUFDQSxTQUFLQyxXQUFMO0FBQ0EsU0FBS0MsV0FBTDtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ1ksTUFBSkMsSUFBSSxHQUFHO0FBQ1AsV0FBT2QsV0FBUDtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJZSxFQUFBQSxJQUFJLENBQUNDLE9BQUQsRUFBVVosT0FBTyxHQUFHLEVBQXBCLEVBQXdCO0FBQ3hCLFNBQUtRLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLElBQW5COztBQUVBLFVBQU1JLEtBQUssR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBckI7O0FBQ0FkLElBQUFBLE9BQU8sR0FBRztBQUFFZSxNQUFBQSxHQUFHLEVBQUUsS0FBS2YsT0FBTCxDQUFhZSxHQUFwQjtBQUF5QkMsTUFBQUEsS0FBSyxFQUFFLElBQWhDO0FBQXNDQyxNQUFBQSxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FBbkQ7QUFBd0QsU0FBR2pCO0FBQTNELEtBQVY7QUFDQSxVQUFNbUIsTUFBTSxHQUFHTixLQUFLLENBQUNPLElBQU4sQ0FBV1IsT0FBWCxFQUFvQlosT0FBcEIsQ0FBZjs7QUFFQSxRQUFJbUIsTUFBTSxDQUFDRSxLQUFYLEVBQWtCO0FBQ2QsWUFBTSxJQUFJQyxvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQkMsV0FBaEMsRUFBNkNOLE1BQU0sQ0FBQ0UsS0FBUCxDQUFhSyxPQUExRCxFQUFtRSxJQUFuRSxFQUF5RSxJQUF6RSxFQUErRVAsTUFBTSxDQUFDRSxLQUF0RixDQUFOO0FBQ0g7O0FBRUQsU0FBS2IsV0FBTCxHQUFtQlcsTUFBTSxDQUFDUSxNQUFQLEdBQWdCUixNQUFNLENBQUNRLE1BQVAsQ0FBY0MsUUFBZCxFQUFoQixHQUEyQyxJQUE5RDtBQUNBLFNBQUtuQixXQUFMLEdBQW1CVSxNQUFNLENBQUNVLE1BQVAsR0FBZ0JWLE1BQU0sQ0FBQ1UsTUFBUCxDQUFjRCxRQUFkLEVBQWhCLEdBQTJDLElBQTlEO0FBRUEsV0FBTztBQUNIRCxNQUFBQSxNQUFNLEVBQUUsS0FBS25CLFdBRFY7QUFFSHFCLE1BQUFBLE1BQU0sRUFBRSxLQUFLcEIsV0FGVjtBQUdIcUIsTUFBQUEsUUFBUSxFQUFFWCxNQUFNLENBQUNZLE1BSGQ7QUFJSEMsTUFBQUEsTUFBTSxFQUFFYixNQUFNLENBQUNhO0FBSlosS0FBUDtBQU1IO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lDLEVBQUFBLFlBQVksQ0FBQ0MsT0FBRCxFQUFVO0FBQ2xCLFFBQUksQ0FBQyxLQUFLMUIsV0FBVixFQUF1QjtBQUNuQixhQUFPLEtBQVA7QUFDSDs7QUFDRCxRQUFJLENBQUMyQixlQUFTQyxZQUFULENBQXNCLEtBQUs1QixXQUEzQixFQUF3QzBCLE9BQXhDLENBQUwsRUFBdUQ7QUFDbkQsWUFBTSxJQUFJWixvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQmEsWUFBaEMsRUFBK0MsNENBQTJDSCxPQUFRLGVBQWMsS0FBSzFCLFdBQVksR0FBakksQ0FBTjtBQUNIOztBQUNELFdBQU8sSUFBUDtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0k4QixFQUFBQSxpQkFBaUIsQ0FBQ0osT0FBRCxFQUFVO0FBQ3ZCLFFBQUksQ0FBQyxLQUFLekIsV0FBVixFQUF1QjtBQUNuQixhQUFPLEtBQVA7QUFDSDs7QUFDRCxRQUFJLENBQUMwQixlQUFTQyxZQUFULENBQXNCLEtBQUszQixXQUEzQixFQUF3Q3lCLE9BQXhDLENBQUwsRUFBdUQ7QUFDbkQsWUFBTSxJQUFJWixvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQmEsWUFBaEMsRUFBK0Msa0RBQWlESCxPQUFRLGVBQWMsS0FBS3pCLFdBQVksR0FBdkksQ0FBTjtBQUNIOztBQUNELFdBQU8sSUFBUDtBQUNIOztBQTdFaUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0IE94eWdlbk1vZHVsZSBmcm9tICcuLi9jb3JlL094eWdlbk1vZHVsZSc7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcbmltcG9ydCBtb2RVdGlscyBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ3NoZWxsJztcclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzaGVsbFxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIG9wZXJhdGluZyBzeXN0ZW0gc2hlbGwuXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGVsbE1vZHVsZSBleHRlbmRzIE94eWdlbk1vZHVsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKTtcclxuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgLy8gcHJlLWluaXRpYWxpemUgdGhlIG1vZHVsZVxyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQ7XHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZGVycjtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogQHN1bW1hcnkgR2V0cyBtb2R1bGUgbmFtZVxyXG4gICAgICogQGZ1bmN0aW9uIG5hbWVcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gQ29uc3RhbnQgdmFsdWUgXCJzaGVsbFwiLlxyXG4gICAgICovXHJcbiAgICBnZXQgbmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gTU9EVUxFX05BTUU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlIGNvbW1hbmRcclxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGF3biBjaGlsZCBwcm9jZXNzXHJcbiAgICAgKiBAZnVuY3Rpb24gZXhlY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbW1hbmQgLSBTaGVsbCBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYXJndW1lbnRzLCBpZiBhcHBsaWNhYmxlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QgY29udGFpbmluZyBzdGRvdXQsIHN0ZGVyciwgZXhpdCBjb2RlLCBhbmQgc2lnbmFsIChpZiBwcm9jZXNzIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsKS5cclxuICAgICAqL1xyXG4gICAgZXhlYyhjb21tYW5kLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sYXN0U3RkZXJyID0gbnVsbDtcclxuXHJcbiAgICAgICAgY29uc3Qgc3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpO1xyXG4gICAgICAgIG9wdGlvbnMgPSB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCwgc2hlbGw6IHRydWUsIGVudjogcHJvY2Vzcy5lbnYsIC4uLm9wdGlvbnMgfTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBzcGF3bi5zeW5jKGNvbW1hbmQsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0hFTExfRVJST1IsIHJlc3VsdC5lcnJvci5tZXNzYWdlLCBudWxsLCB0cnVlLCByZXN1bHQuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZG91dCA9IHJlc3VsdC5zdGRvdXQgPyByZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCkgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRlcnIgPSByZXN1bHQuc3RkZXJyID8gcmVzdWx0LnN0ZGVyci50b1N0cmluZygpIDogbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc3Rkb3V0OiB0aGlzLl9sYXN0U3Rkb3V0LFxyXG4gICAgICAgICAgICBzdGRlcnI6IHRoaXMuX2xhc3RTdGRlcnIsXHJcbiAgICAgICAgICAgIGV4aXRDb2RlOiByZXN1bHQuc3RhdHVzLFxyXG4gICAgICAgICAgICBzaWduYWw6IHJlc3VsdC5zaWduYWxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHRoYXQgdGhlIHNoZWxsIGNvbW1hbmQncyBvdXRwdXQgKHN0ZG91dCkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0T3V0cHV0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFBhdHRlcm4gdG8gYXNzZXJ0LlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRPdXRwdXQocGF0dGVybikge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFN0ZG91dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbW9kVXRpbHMubWF0Y2hQYXR0ZXJuKHRoaXMuX2xhc3RTdGRvdXQsIHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQgc2hlbGwgY29tbWFuZCBvdXRwdXQgdG8gbWF0Y2g6IFwiJHtwYXR0ZXJufVwiIGJ1dCBnb3Q6IFwiJHt0aGlzLl9sYXN0U3Rkb3V0fVwiYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHRoYXQgdGhlIHNoZWxsIGNvbW1hbmQncyBlcnJvciBvdXRwdXQgKHN0ZGVycikgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0RXJyb3JPdXRwdXRcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXR0ZXJuIC0gUGF0dGVybiB0byBhc3NlcnQuXHJcbiAgICAgKi9cclxuICAgIGFzc2VydEVycm9yT3V0cHV0KHBhdHRlcm4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2xhc3RTdGRlcnIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybih0aGlzLl9sYXN0U3RkZXJyLCBwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkIHNoZWxsIGNvbW1hbmQgZXJyb3Igb3V0cHV0IHRvIG1hdGNoOiBcIiR7cGF0dGVybn1cIiBidXQgZ290OiBcIiR7dGhpcy5fbGFzdFN0ZGVycn1cImApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufSJdfQ==
|