oxygen-cli 1.41.0 → 1.43.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 +16 -0
- package/build/core/OxygenCore.js +93 -283
- package/build/core/OxygenEvents.js +2 -12
- package/build/core/OxygenModule.js +1 -16
- package/build/core/OxygenService.js +1 -12
- package/build/core/OxygenSubModule.js +1 -10
- package/build/core/WebDriverModule.js +2 -32
- package/build/core/utils.js +22 -21
- package/build/errors/HookError.js +2 -8
- package/build/errors/ModuleError.js +2 -8
- package/build/errors/ModuleUnavailableError.js +1 -3
- package/build/errors/OxygenError.js +3 -36
- package/build/errors/ScriptNotFound.js +2 -8
- package/build/errors/helper.js +50 -82
- package/build/index.js +8 -22
- package/build/lib/cli-util.js +36 -105
- package/build/lib/cli.js +3 -30
- package/build/lib/debugger.js +2 -145
- package/build/lib/img-merge.js +2 -16
- package/build/lib/launcher.js +3 -31
- package/build/lib/moduleRequire.js +1 -4
- package/build/lib/parallel-launcher.js +44 -84
- package/build/lib/param-manager.js +2 -29
- package/build/lib/param-reader-csv.js +1 -15
- package/build/lib/param-reader-excel.js +1 -14
- package/build/lib/param-reader-json.js +1 -10
- package/build/lib/text-to-image.js +5 -26
- package/build/lib/util.js +13 -84
- package/build/model/case-result.js +1 -2
- package/build/model/failure.js +1 -2
- package/build/model/status.js +1 -2
- package/build/model/step-result.js +1 -2
- package/build/model/suite-result.js +1 -2
- package/build/model/test-result.js +1 -2
- package/build/model/testcase.js +1 -2
- package/build/model/testsuite.js +1 -2
- package/build/ox_modules/index.js +20 -41
- package/build/ox_modules/module-assert.js +9 -28
- package/build/ox_modules/module-date.js +3 -8
- package/build/ox_modules/module-db.js +8 -29
- package/build/ox_modules/module-email.js +14 -45
- package/build/ox_modules/module-eyes.js +6 -47
- package/build/ox_modules/module-http/ntlm-util.js +3 -7
- package/build/ox_modules/module-http/ntlm.js +9 -78
- package/build/ox_modules/module-http.js +69 -172
- package/build/ox_modules/module-log.js +10 -23
- package/build/ox_modules/module-mailinator.js +11 -33
- package/build/ox_modules/module-mob/commands/alertAccept.js +1 -3
- package/build/ox_modules/module-mob/commands/alertDismiss.js +1 -3
- package/build/ox_modules/module-mob/commands/assertAlert.js +1 -7
- package/build/ox_modules/module-mob/commands/assertText.js +1 -4
- package/build/ox_modules/module-mob/commands/assertTitle.js +1 -5
- package/build/ox_modules/module-mob/commands/assertValue.js +9 -17
- package/build/ox_modules/module-mob/commands/back.js +1 -3
- package/build/ox_modules/module-mob/commands/clear.js +1 -5
- package/build/ox_modules/module-mob/commands/click.js +3 -5
- package/build/ox_modules/module-mob/commands/clickHidden.js +3 -10
- package/build/ox_modules/module-mob/commands/clickLong.js +1 -3
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +1 -5
- package/build/ox_modules/module-mob/commands/closeApp.js +1 -3
- package/build/ox_modules/module-mob/commands/debug.js +2 -3
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +1 -3
- package/build/ox_modules/module-mob/commands/enableNetwork.js +4 -13
- package/build/ox_modules/module-mob/commands/execute.js +1 -3
- package/build/ox_modules/module-mob/commands/findElement.js +1 -4
- package/build/ox_modules/module-mob/commands/findElements.js +1 -5
- package/build/ox_modules/module-mob/commands/getAlertText.js +1 -3
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +1 -3
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +1 -11
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +1 -3
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +1 -3
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +1 -10
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +1 -3
- package/build/ox_modules/module-mob/commands/getLocation.js +1 -3
- package/build/ox_modules/module-mob/commands/getSource.js +1 -3
- package/build/ox_modules/module-mob/commands/getText.js +1 -5
- package/build/ox_modules/module-mob/commands/getTitle.js +1 -3
- package/build/ox_modules/module-mob/commands/getUrl.js +1 -3
- package/build/ox_modules/module-mob/commands/getValue.js +5 -10
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +1 -3
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +1 -3
- package/build/ox_modules/module-mob/commands/index.js +1 -148
- package/build/ox_modules/module-mob/commands/installApp.js +1 -3
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +1 -3
- package/build/ox_modules/module-mob/commands/isCheckable.js +1 -3
- package/build/ox_modules/module-mob/commands/isChecked.js +1 -3
- package/build/ox_modules/module-mob/commands/isClickable.js +1 -3
- package/build/ox_modules/module-mob/commands/isExist.js +1 -4
- package/build/ox_modules/module-mob/commands/isSelected.js +1 -3
- package/build/ox_modules/module-mob/commands/isVisible.js +1 -4
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +1 -3
- package/build/ox_modules/module-mob/commands/launchApp.js +1 -3
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +1 -3
- package/build/ox_modules/module-mob/commands/open.js +1 -4
- package/build/ox_modules/module-mob/commands/pause.js +1 -3
- package/build/ox_modules/module-mob/commands/removeApp.js +1 -3
- package/build/ox_modules/module-mob/commands/resetApp.js +1 -3
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +1 -7
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +1 -3
- package/build/ox_modules/module-mob/commands/select.js +1 -5
- package/build/ox_modules/module-mob/commands/selectFrame.js +1 -5
- package/build/ox_modules/module-mob/commands/selectWindow.js +5 -27
- package/build/ox_modules/module-mob/commands/sendKeys.js +6 -10
- package/build/ox_modules/module-mob/commands/setContext.js +1 -3
- package/build/ox_modules/module-mob/commands/setNativeContext.js +1 -3
- package/build/ox_modules/module-mob/commands/setTimeout.js +1 -3
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +3 -7
- package/build/ox_modules/module-mob/commands/shake.js +1 -3
- package/build/ox_modules/module-mob/commands/smsClickLink.js +1 -3
- package/build/ox_modules/module-mob/commands/smsGetText.js +3 -7
- package/build/ox_modules/module-mob/commands/swipe.js +1 -3
- package/build/ox_modules/module-mob/commands/swipeElement.js +1 -3
- package/build/ox_modules/module-mob/commands/swipeScreen.js +1 -3
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +1 -3
- package/build/ox_modules/module-mob/commands/tap.js +1 -3
- package/build/ox_modules/module-mob/commands/type.js +3 -8
- package/build/ox_modules/module-mob/commands/unlockPattern.js +9 -11
- package/build/ox_modules/module-mob/commands/waitForExist.js +1 -3
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +1 -4
- package/build/ox_modules/module-mob/commands/waitForVisible.js +1 -3
- package/build/ox_modules/module-mob.js +107 -217
- package/build/ox_modules/module-mongo.js +14 -51
- package/build/ox_modules/module-pdf.js +24 -65
- package/build/ox_modules/module-proxy.js +9 -69
- package/build/ox_modules/module-serial.js +8 -33
- package/build/ox_modules/module-shell.js +10 -30
- package/build/ox_modules/module-soap.js +17 -52
- package/build/ox_modules/module-twilio.js +11 -54
- package/build/ox_modules/module-utils.js +22 -58
- package/build/ox_modules/module-web/commands/alertAccept.js +1 -3
- package/build/ox_modules/module-web/commands/alertDismiss.js +1 -3
- package/build/ox_modules/module-web/commands/assertAlert.js +1 -7
- package/build/ox_modules/module-web/commands/assertExist.js +1 -3
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +1 -5
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +1 -4
- package/build/ox_modules/module-web/commands/assertText.js +1 -4
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +1 -7
- package/build/ox_modules/module-web/commands/assertTextPresent.js +1 -7
- package/build/ox_modules/module-web/commands/assertTitle.js +1 -4
- package/build/ox_modules/module-web/commands/assertValue.js +1 -4
- package/build/ox_modules/module-web/commands/back.js +1 -3
- package/build/ox_modules/module-web/commands/clear.js +1 -6
- package/build/ox_modules/module-web/commands/click.js +4 -15
- package/build/ox_modules/module-web/commands/clickHidden.js +2 -8
- package/build/ox_modules/module-web/commands/closeWindow.js +1 -3
- package/build/ox_modules/module-web/commands/debug.js +2 -3
- package/build/ox_modules/module-web/commands/deleteCookies.js +1 -3
- package/build/ox_modules/module-web/commands/deselect.js +1 -3
- package/build/ox_modules/module-web/commands/doubleClick.js +3 -10
- package/build/ox_modules/module-web/commands/dragAndDrop.js +1 -3
- package/build/ox_modules/module-web/commands/execute.js +1 -3
- package/build/ox_modules/module-web/commands/fileBrowse.js +4 -11
- package/build/ox_modules/module-web/commands/findElement.js +1 -4
- package/build/ox_modules/module-web/commands/findElements.js +1 -5
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +1 -3
- package/build/ox_modules/module-web/commands/getAlertText.js +1 -3
- package/build/ox_modules/module-web/commands/getAttribute.js +1 -5
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +1 -4
- package/build/ox_modules/module-web/commands/getCookies.js +1 -3
- package/build/ox_modules/module-web/commands/getCssValue.js +1 -5
- package/build/ox_modules/module-web/commands/getElementCount.js +1 -3
- package/build/ox_modules/module-web/commands/getHTML.js +1 -3
- package/build/ox_modules/module-web/commands/getSource.js +1 -3
- package/build/ox_modules/module-web/commands/getText.js +1 -5
- package/build/ox_modules/module-web/commands/getTitle.js +1 -3
- package/build/ox_modules/module-web/commands/getUrl.js +1 -3
- package/build/ox_modules/module-web/commands/getValue.js +1 -6
- package/build/ox_modules/module-web/commands/getWindowHandles.js +1 -3
- package/build/ox_modules/module-web/commands/getWindowSize.js +1 -3
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +1 -6
- package/build/ox_modules/module-web/commands/index.js +1 -184
- package/build/ox_modules/module-web/commands/isAlertPresent.js +1 -3
- package/build/ox_modules/module-web/commands/isChecked.js +1 -3
- package/build/ox_modules/module-web/commands/isExist.js +1 -4
- package/build/ox_modules/module-web/commands/isInteractable.js +1 -3
- package/build/ox_modules/module-web/commands/isSelected.js +1 -3
- package/build/ox_modules/module-web/commands/isVisible.js +1 -4
- package/build/ox_modules/module-web/commands/makeVisible.js +2 -11
- package/build/ox_modules/module-web/commands/maximizeWindow.js +1 -3
- package/build/ox_modules/module-web/commands/minimizeWindow.js +1 -3
- package/build/ox_modules/module-web/commands/mock.js +1 -3
- package/build/ox_modules/module-web/commands/mockClearAll.js +1 -3
- package/build/ox_modules/module-web/commands/mockRestoreAll.js +1 -3
- package/build/ox_modules/module-web/commands/newWindow.js +1 -3
- package/build/ox_modules/module-web/commands/open.js +1 -5
- package/build/ox_modules/module-web/commands/pause.js +1 -3
- package/build/ox_modules/module-web/commands/point.js +1 -3
- package/build/ox_modules/module-web/commands/pointJS.js +2 -9
- package/build/ox_modules/module-web/commands/refresh.js +1 -3
- package/build/ox_modules/module-web/commands/rightClick.js +3 -9
- package/build/ox_modules/module-web/commands/rightClickActions.js +1 -3
- package/build/ox_modules/module-web/commands/scrollToElement.js +1 -3
- package/build/ox_modules/module-web/commands/select.js +1 -6
- package/build/ox_modules/module-web/commands/selectFrame.js +1 -4
- package/build/ox_modules/module-web/commands/selectWindow.js +5 -27
- package/build/ox_modules/module-web/commands/sendKeys.js +3 -7
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -3
- package/build/ox_modules/module-web/commands/setTimeout.js +1 -3
- package/build/ox_modules/module-web/commands/setWindowSize.js +1 -3
- package/build/ox_modules/module-web/commands/takeScreenshot.js +3 -6
- package/build/ox_modules/module-web/commands/type.js +1 -6
- package/build/ox_modules/module-web/commands/verifyAlert.js +1 -7
- package/build/ox_modules/module-web/commands/verifyExist.js +2 -7
- package/build/ox_modules/module-web/commands/verifySelectedLabel.js +1 -5
- package/build/ox_modules/module-web/commands/verifySelectedValue.js +1 -4
- package/build/ox_modules/module-web/commands/verifyText.js +1 -4
- package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +1 -7
- package/build/ox_modules/module-web/commands/verifyTextPresent.js +1 -7
- package/build/ox_modules/module-web/commands/verifyTitle.js +1 -4
- package/build/ox_modules/module-web/commands/verifyValue.js +1 -4
- package/build/ox_modules/module-web/commands/waitForAngular.js +11 -14
- package/build/ox_modules/module-web/commands/waitForExist.js +1 -3
- package/build/ox_modules/module-web/commands/waitForInteractable.js +1 -3
- package/build/ox_modules/module-web/commands/waitForNotExist.js +1 -9
- package/build/ox_modules/module-web/commands/waitForNotText.js +1 -4
- package/build/ox_modules/module-web/commands/waitForNotValue.js +1 -4
- package/build/ox_modules/module-web/commands/waitForText.js +1 -4
- package/build/ox_modules/module-web/commands/waitForValue.js +1 -4
- package/build/ox_modules/module-web/commands/waitForVisible.js +1 -3
- package/build/ox_modules/module-web/commands/waitForWindow.js +4 -22
- package/build/ox_modules/module-web/webdriver/ChromeWDM.js +287 -0
- package/build/ox_modules/module-web/webdriver/auto-start.js +25 -0
- package/build/ox_modules/module-web.js +169 -233
- package/build/ox_modules/module-win/commands/assertText.js +1 -4
- package/build/ox_modules/module-win/commands/assertTitle.js +1 -5
- package/build/ox_modules/module-win/commands/assertValue.js +9 -17
- package/build/ox_modules/module-win/commands/back.js +1 -3
- package/build/ox_modules/module-win/commands/clear.js +1 -5
- package/build/ox_modules/module-win/commands/click.js +1 -3
- package/build/ox_modules/module-win/commands/clickLong.js +1 -3
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +1 -5
- package/build/ox_modules/module-win/commands/findElement.js +1 -4
- package/build/ox_modules/module-win/commands/findElements.js +1 -5
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +1 -3
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +1 -3
- package/build/ox_modules/module-win/commands/getLocation.js +1 -3
- package/build/ox_modules/module-win/commands/getSource.js +1 -3
- package/build/ox_modules/module-win/commands/getText.js +1 -5
- package/build/ox_modules/module-win/commands/getValue.js +5 -10
- package/build/ox_modules/module-win/commands/getWindowHandles.js +1 -3
- package/build/ox_modules/module-win/commands/index.js +1 -74
- package/build/ox_modules/module-win/commands/isCheckable.js +1 -3
- package/build/ox_modules/module-win/commands/isChecked.js +1 -3
- package/build/ox_modules/module-win/commands/isClickable.js +1 -3
- package/build/ox_modules/module-win/commands/isExist.js +1 -4
- package/build/ox_modules/module-win/commands/isSelected.js +1 -3
- package/build/ox_modules/module-win/commands/isVisible.js +1 -4
- package/build/ox_modules/module-win/commands/open.js +1 -3
- package/build/ox_modules/module-win/commands/pause.js +1 -3
- package/build/ox_modules/module-win/commands/rightClick.js +1 -3
- package/build/ox_modules/module-win/commands/selectWindow.js +1 -16
- package/build/ox_modules/module-win/commands/sendKeys.js +1 -5
- package/build/ox_modules/module-win/commands/setTimeout.js +1 -3
- package/build/ox_modules/module-win/commands/takeScreenshot.js +1 -3
- package/build/ox_modules/module-win/commands/tap.js +1 -3
- package/build/ox_modules/module-win/commands/type.js +1 -5
- package/build/ox_modules/module-win/commands/waitForExist.js +1 -3
- package/build/ox_modules/module-win/commands/waitForInteractable.js +1 -5
- package/build/ox_modules/module-win/commands/waitForVisible.js +1 -3
- package/build/ox_modules/module-win.js +54 -95
- package/build/ox_modules/utils.js +97 -79
- package/build/ox_reporters/reporter-excel.js +2 -59
- package/build/ox_reporters/reporter-html.js +2 -29
- package/build/ox_reporters/reporter-json.js +2 -15
- package/build/ox_reporters/reporter-junit.js +2 -25
- package/build/ox_reporters/reporter-pdf.js +2 -20
- package/build/ox_reporters/reporter-rp.js +4 -92
- package/build/ox_reporters/reporter-xml.js +2 -18
- package/build/ox_services/service-devtools/submodule-network.js +4 -86
- package/build/ox_services/service-devtools.js +2 -24
- package/build/reporter/FileReporterBase.js +6 -45
- package/build/reporter/ReportAggregator.js +7 -121
- package/build/reporter/ReporterBase.js +1 -6
- package/build/reporter/WebSocketReporter.js +1 -39
- package/build/runners/WorkerProcess.js +2 -107
- package/build/runners/cucumber/CucumberEventListener.js +4 -29
- package/build/runners/cucumber/CucumberReporter.js +2 -57
- package/build/runners/cucumber/CucumberWorker.js +3 -69
- package/build/runners/cucumber/index.js +2 -31
- package/build/runners/cucumber/worker.js +2 -19
- package/build/runners/index.js +4 -11
- package/build/runners/oxygen/OxygenWorker.js +3 -61
- package/build/runners/oxygen/index.js +18 -179
- package/build/runners/oxygen/worker.js +3 -27
- package/package.json +4 -1
|
@@ -4,27 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
require("source-map-support/register");
|
|
9
|
-
|
|
10
8
|
var Runners = _interopRequireWildcard(require("../runners"));
|
|
11
|
-
|
|
12
9
|
var _parallelLimit = _interopRequireDefault(require("async/parallelLimit"));
|
|
13
|
-
|
|
14
|
-
function
|
|
15
|
-
|
|
16
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
-
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
20
12
|
const Duration = require('duration');
|
|
21
|
-
|
|
22
13
|
const hash = require('object-hash');
|
|
23
|
-
|
|
24
14
|
const {
|
|
25
15
|
v1
|
|
26
16
|
} = require('uuid');
|
|
27
|
-
|
|
28
17
|
class ParallelLauncher {
|
|
29
18
|
constructor(config, reporter) {
|
|
30
19
|
this._config = config;
|
|
@@ -33,27 +22,21 @@ class ParallelLauncher {
|
|
|
33
22
|
this.runners = [];
|
|
34
23
|
this.createdRunnersStat = [];
|
|
35
24
|
}
|
|
36
|
-
|
|
37
25
|
async run(capsSet) {
|
|
38
26
|
const collection = [];
|
|
39
|
-
|
|
40
27
|
if (!this._config.parallel) {
|
|
41
28
|
throw new Error('Cannot start the parallel testing - "parallel" settings are missing.');
|
|
42
29
|
}
|
|
43
|
-
|
|
44
30
|
if (!this._config.parallel.mode) {
|
|
45
31
|
this._config.parallel.mode = 'case';
|
|
46
32
|
}
|
|
47
|
-
|
|
48
33
|
const workersCount = !isNaN(this._config.parallel.workers) ? this._config.parallel.workers : 1;
|
|
49
34
|
const mode = this._config.parallel.mode === 'iteration' ? 'iteration' : this._config.parallel.mode === 'suite' ? 'suite' : 'case';
|
|
50
35
|
const suites = this._config.suites;
|
|
51
36
|
const resultName = this._config.name || '';
|
|
52
|
-
|
|
53
37
|
if (!suites || !Array.isArray(suites)) {
|
|
54
38
|
throw new Error('Cannot start the parallel testing - no suites are defined.');
|
|
55
39
|
}
|
|
56
|
-
|
|
57
40
|
const testCaps = capsSet ? Array.isArray(capsSet) ? capsSet[0] : capsSet : null;
|
|
58
41
|
const resultHash = testCaps ? hash(testCaps) : '';
|
|
59
42
|
const resultKey = `${resultName}-${resultHash}`;
|
|
@@ -61,23 +44,22 @@ class ParallelLauncher {
|
|
|
61
44
|
suites.forEach(suiteDef => {
|
|
62
45
|
const suiteKey = suiteDef.key || suiteDef.id || suiteDef.name;
|
|
63
46
|
const suiteRefId = suiteDef.key || suiteDef.id || v1();
|
|
64
|
-
|
|
65
47
|
if (mode === 'iteration') {
|
|
66
48
|
for (let i = 1; i <= suiteDef.iterationCount; i++) {
|
|
67
49
|
let mockedParamManager = undefined;
|
|
68
|
-
|
|
69
50
|
if (suiteDef.paramManager) {
|
|
70
51
|
mockedParamManager = new ParamManagerMock(suiteDef.paramManager.getValues());
|
|
71
52
|
suiteDef.paramManager.readNext();
|
|
72
53
|
}
|
|
73
|
-
|
|
74
54
|
const workerId = `${suiteKey}-${suiteIndex}/${i}`;
|
|
75
|
-
const suiteCopy = {
|
|
55
|
+
const suiteCopy = {
|
|
56
|
+
...suiteDef,
|
|
76
57
|
refId: suiteRefId,
|
|
77
58
|
iterationCount: 1,
|
|
78
59
|
paramManager: mockedParamManager
|
|
79
60
|
};
|
|
80
|
-
const testConfig = {
|
|
61
|
+
const testConfig = {
|
|
62
|
+
...this._config,
|
|
81
63
|
suites: [suiteCopy],
|
|
82
64
|
_groupResult: {
|
|
83
65
|
resultKey
|
|
@@ -92,39 +74,21 @@ class ParallelLauncher {
|
|
|
92
74
|
collection.push(callback => this._launchWorkerFunc(workerConfig, callback));
|
|
93
75
|
}
|
|
94
76
|
} else if (mode === 'case' && Array.isArray(suiteDef.cases)) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
suiteKey
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
const workerConfig = {
|
|
111
|
-
workerId,
|
|
112
|
-
testConfig,
|
|
113
|
-
testCaps,
|
|
114
|
-
startupDelay: 0
|
|
115
|
-
};
|
|
116
|
-
collection.push(callback => this._launchWorkerFunc(workerConfig, callback));
|
|
117
|
-
caseIndex++;
|
|
118
|
-
});
|
|
119
|
-
} else {
|
|
120
|
-
const suiteKey = suiteDef.key || suiteDef.id || suiteDef.name;
|
|
121
|
-
const workerId = `${suiteKey}-${suiteIndex}`;
|
|
122
|
-
const testConfig = { ...this._config,
|
|
123
|
-
suites: [{ ...suiteDef,
|
|
124
|
-
refId: suiteRefId
|
|
125
|
-
}],
|
|
77
|
+
let caseIndex = 0;
|
|
78
|
+
suiteDef.cases.forEach(caseDef => {
|
|
79
|
+
const caseKey = caseDef.key || caseDef.id || caseDef.name;
|
|
80
|
+
const workerId = `${caseKey}-${suiteIndex}/${caseIndex}`;
|
|
81
|
+
const suiteCopy = {
|
|
82
|
+
...suiteDef,
|
|
83
|
+
refId: suiteRefId,
|
|
84
|
+
cases: [caseDef]
|
|
85
|
+
};
|
|
86
|
+
const testConfig = {
|
|
87
|
+
...this._config,
|
|
88
|
+
suites: [suiteCopy],
|
|
126
89
|
_groupResult: {
|
|
127
|
-
resultKey
|
|
90
|
+
resultKey,
|
|
91
|
+
suiteKey
|
|
128
92
|
}
|
|
129
93
|
};
|
|
130
94
|
const workerConfig = {
|
|
@@ -134,8 +98,29 @@ class ParallelLauncher {
|
|
|
134
98
|
startupDelay: 0
|
|
135
99
|
};
|
|
136
100
|
collection.push(callback => this._launchWorkerFunc(workerConfig, callback));
|
|
137
|
-
|
|
138
|
-
|
|
101
|
+
caseIndex++;
|
|
102
|
+
});
|
|
103
|
+
} else {
|
|
104
|
+
const suiteKey = suiteDef.key || suiteDef.id || suiteDef.name;
|
|
105
|
+
const workerId = `${suiteKey}-${suiteIndex}`;
|
|
106
|
+
const testConfig = {
|
|
107
|
+
...this._config,
|
|
108
|
+
suites: [{
|
|
109
|
+
...suiteDef,
|
|
110
|
+
refId: suiteRefId
|
|
111
|
+
}],
|
|
112
|
+
_groupResult: {
|
|
113
|
+
resultKey
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const workerConfig = {
|
|
117
|
+
workerId,
|
|
118
|
+
testConfig,
|
|
119
|
+
testCaps,
|
|
120
|
+
startupDelay: 0
|
|
121
|
+
};
|
|
122
|
+
collection.push(callback => this._launchWorkerFunc(workerConfig, callback));
|
|
123
|
+
}
|
|
139
124
|
suiteIndex++;
|
|
140
125
|
});
|
|
141
126
|
const start = new Date();
|
|
@@ -155,33 +140,27 @@ class ParallelLauncher {
|
|
|
155
140
|
const duration = new Duration(start, end);
|
|
156
141
|
console.log('Duration: ', duration.toString(1));
|
|
157
142
|
}
|
|
158
|
-
|
|
159
143
|
_launchWorkerFunc(workerConfig, callback) {
|
|
160
144
|
const cb = error => {
|
|
161
145
|
if (error) {
|
|
162
146
|
callback(error, null);
|
|
163
147
|
}
|
|
164
148
|
};
|
|
165
|
-
|
|
166
149
|
this._launchTest(workerConfig, cb).then(result => {
|
|
167
150
|
callback(null, result);
|
|
168
151
|
}).catch(error => {
|
|
169
152
|
callback(error, null);
|
|
170
153
|
});
|
|
171
154
|
}
|
|
172
|
-
|
|
173
155
|
_instantiateRunner() {
|
|
174
156
|
if (this._config.framework && typeof this._config.framework === 'string') {
|
|
175
157
|
if (Object.prototype.hasOwnProperty.call(Runners, this._config.framework)) {
|
|
176
158
|
return new Runners[this._config.framework]();
|
|
177
159
|
}
|
|
178
|
-
|
|
179
160
|
return null;
|
|
180
161
|
}
|
|
181
|
-
|
|
182
162
|
return new Runners.oxygen();
|
|
183
163
|
}
|
|
184
|
-
|
|
185
164
|
async _launchTest({
|
|
186
165
|
workerId,
|
|
187
166
|
testConfig,
|
|
@@ -191,19 +170,14 @@ class ParallelLauncher {
|
|
|
191
170
|
if (!callback) {
|
|
192
171
|
return;
|
|
193
172
|
}
|
|
194
|
-
|
|
195
173
|
await this._sleep(startupDelay);
|
|
196
|
-
|
|
197
174
|
let runner = this._instantiateRunner();
|
|
198
|
-
|
|
199
175
|
this.createdRunnersStat[runner._id] = [workerId];
|
|
200
|
-
|
|
201
176
|
if (!runner) {
|
|
202
177
|
const framework = this._config.framework;
|
|
203
178
|
callback(new Error(`Cannot find runner for the specified framework: ${framework}.`));
|
|
204
179
|
return;
|
|
205
180
|
}
|
|
206
|
-
|
|
207
181
|
try {
|
|
208
182
|
await runner.init(testConfig, testCaps, this.reporter);
|
|
209
183
|
const result = await runner.run();
|
|
@@ -211,11 +185,9 @@ class ParallelLauncher {
|
|
|
211
185
|
callback();
|
|
212
186
|
} catch (e) {
|
|
213
187
|
console.error('Failed to launch the test:', e);
|
|
214
|
-
|
|
215
188
|
if (this._queue) {
|
|
216
189
|
this._queue.kill();
|
|
217
190
|
}
|
|
218
|
-
|
|
219
191
|
if (e.error) {
|
|
220
192
|
var errMsg = '';
|
|
221
193
|
var err = e.error;
|
|
@@ -226,38 +198,26 @@ class ParallelLauncher {
|
|
|
226
198
|
callback(e);
|
|
227
199
|
}
|
|
228
200
|
}
|
|
229
|
-
|
|
230
201
|
this.runners.push(runner);
|
|
231
202
|
}
|
|
232
|
-
|
|
233
203
|
_sleep(duration) {
|
|
234
204
|
return new Promise(resolve => setTimeout(resolve, duration));
|
|
235
205
|
}
|
|
236
|
-
|
|
237
206
|
}
|
|
238
|
-
|
|
239
207
|
exports.default = ParallelLauncher;
|
|
240
|
-
|
|
241
208
|
class ParamManagerMock {
|
|
242
209
|
constructor(values) {
|
|
243
210
|
this.values = values;
|
|
244
211
|
}
|
|
245
|
-
|
|
246
212
|
init() {}
|
|
247
|
-
|
|
248
213
|
getMode() {}
|
|
249
|
-
|
|
250
214
|
readNext() {}
|
|
251
|
-
|
|
252
215
|
readPrev() {}
|
|
253
|
-
|
|
254
216
|
getValues() {
|
|
255
217
|
return this.values;
|
|
256
218
|
}
|
|
257
|
-
|
|
258
219
|
get rows() {
|
|
259
220
|
return 1;
|
|
260
221
|
}
|
|
261
|
-
|
|
262
222
|
}
|
|
263
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYWxsZWwtbGF1bmNoZXIuanMiXSwibmFtZXMiOlsiRHVyYXRpb24iLCJyZXF1aXJlIiwiaGFzaCIsInYxIiwiUGFyYWxsZWxMYXVuY2hlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwicmVwb3J0ZXIiLCJfY29uZmlnIiwiX3F1ZXVlIiwicnVubmVycyIsImNyZWF0ZWRSdW5uZXJzU3RhdCIsInJ1biIsImNhcHNTZXQiLCJjb2xsZWN0aW9uIiwicGFyYWxsZWwiLCJFcnJvciIsIm1vZGUiLCJ3b3JrZXJzQ291bnQiLCJpc05hTiIsIndvcmtlcnMiLCJzdWl0ZXMiLCJyZXN1bHROYW1lIiwibmFtZSIsIkFycmF5IiwiaXNBcnJheSIsInRlc3RDYXBzIiwicmVzdWx0SGFzaCIsInJlc3VsdEtleSIsInN1aXRlSW5kZXgiLCJmb3JFYWNoIiwic3VpdGVEZWYiLCJzdWl0ZUtleSIsImtleSIsImlkIiwic3VpdGVSZWZJZCIsImkiLCJpdGVyYXRpb25Db3VudCIsIm1vY2tlZFBhcmFtTWFuYWdlciIsInVuZGVmaW5lZCIsInBhcmFtTWFuYWdlciIsIlBhcmFtTWFuYWdlck1vY2siLCJnZXRWYWx1ZXMiLCJyZWFkTmV4dCIsIndvcmtlcklkIiwic3VpdGVDb3B5IiwicmVmSWQiLCJ0ZXN0Q29uZmlnIiwiX2dyb3VwUmVzdWx0Iiwid29ya2VyQ29uZmlnIiwic3RhcnR1cERlbGF5IiwicHVzaCIsImNhbGxiYWNrIiwiX2xhdW5jaFdvcmtlckZ1bmMiLCJjYXNlcyIsImNhc2VJbmRleCIsImNhc2VEZWYiLCJjYXNlS2V5Iiwic3RhcnQiLCJEYXRlIiwidG90YWwiLCJjb25zb2xlIiwibG9nIiwicnVubmVyc0lkcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiY2F6ZXMiLCJlbmQiLCJkdXJhdGlvbiIsInRvU3RyaW5nIiwiY2IiLCJlcnJvciIsIl9sYXVuY2hUZXN0IiwidGhlbiIsInJlc3VsdCIsImNhdGNoIiwiX2luc3RhbnRpYXRlUnVubmVyIiwiZnJhbWV3b3JrIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiUnVubmVycyIsIm94eWdlbiIsIl9zbGVlcCIsInJ1bm5lciIsIl9pZCIsImluaXQiLCJkaXNwb3NlIiwic3RhdHVzIiwiZSIsImtpbGwiLCJlcnJNc2ciLCJlcnIiLCJ0eXBlIiwibWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsInZhbHVlcyIsImdldE1vZGUiLCJyZWFkUHJldiIsInJvd3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBOztBQUNBOzs7Ozs7OztBQUNBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVFLEVBQUFBO0FBQUYsSUFBU0YsT0FBTyxDQUFDLE1BQUQsQ0FBdEI7O0FBRWUsTUFBTUcsZ0JBQU4sQ0FBdUI7QUFDbENDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CO0FBQzFCLFNBQUtDLE9BQUwsR0FBZUYsTUFBZjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQWQ7QUFDQSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0g7O0FBRVEsUUFBSEMsR0FBRyxDQUFDQyxPQUFELEVBQVU7QUFDZixVQUFNQyxVQUFVLEdBQUcsRUFBbkI7O0FBRUEsUUFBSSxDQUFDLEtBQUtOLE9BQUwsQ0FBYU8sUUFBbEIsRUFBNEI7QUFDeEIsWUFBTSxJQUFJQyxLQUFKLENBQVUsc0VBQVYsQ0FBTjtBQUNIOztBQUVELFFBQUksQ0FBQyxLQUFLUixPQUFMLENBQWFPLFFBQWIsQ0FBc0JFLElBQTNCLEVBQWlDO0FBQzdCLFdBQUtULE9BQUwsQ0FBYU8sUUFBYixDQUFzQkUsSUFBdEIsR0FBNkIs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SDs7QUFFRFosRUFBQUEsSUFBSSxHQUFHLENBRU47O0FBRURhLEVBQUFBLE9BQU8sR0FBRyxDQUVUOztBQUVEM0QsRUFBQUEsUUFBUSxHQUFHLENBRVY7O0FBRUQ0RCxFQUFBQSxRQUFRLEdBQUcsQ0FFVjs7QUFFRDdELEVBQUFBLFNBQVMsR0FBRztBQUNSLFdBQU8sS0FBSzJELE1BQVo7QUFDSDs7QUFFTyxNQUFKRyxJQUFJLEdBQUc7QUFDUCxXQUFPLENBQVA7QUFDSDs7QUEzQmtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vLyBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgKiBhcyBSdW5uZXJzIGZyb20gJy4uL3J1bm5lcnMnO1xyXG5pbXBvcnQgcGFyYWxsZWxMaW1pdCBmcm9tICdhc3luYy9wYXJhbGxlbExpbWl0JztcclxuY29uc3QgRHVyYXRpb24gPSByZXF1aXJlKCdkdXJhdGlvbicpO1xyXG5jb25zdCBoYXNoID0gcmVxdWlyZSgnb2JqZWN0LWhhc2gnKTtcclxuY29uc3QgeyB2MSB9ID0gcmVxdWlyZSgndXVpZCcpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYWxsZWxMYXVuY2hlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcsIHJlcG9ydGVyKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjtcclxuICAgICAgICB0aGlzLl9xdWV1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ydW5uZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXQgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oY2Fwc1NldCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9jb25maWcucGFyYWxsZWwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHBhcmFsbGVsIHRlc3RpbmcgLSBcInBhcmFsbGVsXCIgc2V0dGluZ3MgYXJlIG1pc3NpbmcuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID0gJ2Nhc2UnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgd29ya2Vyc0NvdW50ID0gIWlzTmFOKHRoaXMuX2NvbmZpZy5wYXJhbGxlbC53b3JrZXJzKSA/IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC53b3JrZXJzIDogMTtcclxuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUgPT09ICdpdGVyYXRpb24nXHJcbiAgICAgICAgICAgID8gJ2l0ZXJhdGlvbicgOiB0aGlzLl9jb25maWcucGFyYWxsZWwubW9kZSA9PT0gJ3N1aXRlJ1xyXG4gICAgICAgICAgICAgICAgPyAnc3VpdGUnIDogJ2Nhc2UnO1xyXG4gICAgICAgIC8vIGZsYXR0ZW4gYWxsIHN1aXRlcyBhbmQgY3JlYXRlIG9uZSB1bmlmaWVkIGFycmF5IG9mIGFsbCB0aGUgdGVzdCBjYXNlc1xyXG4gICAgICAgIGNvbnN0IHN1aXRlcyA9IHRoaXMuX2NvbmZpZy5zdWl0ZXM7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0TmFtZSA9IHRoaXMuX2NvbmZpZy5uYW1lIHx8ICcnO1xyXG4gICAgICAgIGlmICghc3VpdGVzIHx8ICFBcnJheS5pc0FycmF5KHN1aXRlcykpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHBhcmFsbGVsIHRlc3RpbmcgLSBubyBzdWl0ZXMgYXJlIGRlZmluZWQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIG5vIGNhcGFiaWxpdGllcyBhcmUgc3BlY2lmaWVkLCBydW4gc2luZ2xlIGluc3RhbmNlIHdpdGggZGVmYXVsdCBhcmd1bWVudHNcclxuICAgICAgICAvLyBhbHRlcm5hdGl2ZWx5LCBwaWNrIHRoZSBmaXJzdCBjYXBhYmlsaXRpZXMgc2V0IChsb2FkIHRlc3QgaXMgbGltaXRlZCB0byBhIHNpbmdsZSBicm93c2VyIHR5cGUpXHJcbiAgICAgICAgY29uc3QgdGVzdENhcHMgPSBjYXBzU2V0ID8gKEFycmF5LmlzQXJyYXkoY2Fwc1NldCkgPyBjYXBzU2V0WzBdIDogY2Fwc1NldCkgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEhhc2ggPSB0ZXN0Q2FwcyA/IGhhc2godGVzdENhcHMpIDogJyc7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0S2V5ID0gYCR7cmVzdWx0TmFtZX0tJHtyZXN1bHRIYXNofWA7XHJcbiAgICAgICAgLy8gaWYgJ3dvcmtlcnMnIHNldCB0byBtYXggYW5kIHBhcmFtZXRlciBmaWxlIGlzIGRlZmluZWQsIFxyXG4gICAgICAgIC8vIHRoZW4gcnVuIGFzIG1hbnkgcGFyYWxsZWwgdGVzdHMgYXMgcm93cyBpbiB0aGUgZmlsZVxyXG4gICAgICAgIGxldCBzdWl0ZUluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgc3VpdGVzLmZvckVhY2goc3VpdGVEZWYgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdWl0ZUtleSA9IHN1aXRlRGVmLmtleSB8fCBzdWl0ZURlZi5pZCB8fCBzdWl0ZURlZi5uYW1lO1xyXG4gICAgICAgICAgICBjb25zdCBzdWl0ZVJlZklkID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHYxKCk7XHJcbiAgICAgICAgICAgIGlmIChtb2RlID09PSAnaXRlcmF0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGk8PSBzdWl0ZURlZi5pdGVyYXRpb25Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vY2tlZFBhcmFtTWFuYWdlciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3VpdGVEZWYucGFyYW1NYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tlZFBhcmFtTWFuYWdlciA9IG5ldyBQYXJhbU1hbmFnZXJNb2NrKHN1aXRlRGVmLnBhcmFtTWFuYWdlci5nZXRWYWx1ZXMoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlRGVmLnBhcmFtTWFuYWdlci5yZWFkTmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9LyR7aX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlQ29weSA9IHsgLi4uc3VpdGVEZWYsIHJlZklkOiBzdWl0ZVJlZklkLCBpdGVyYXRpb25Db3VudDogMSwgcGFyYW1NYW5hZ2VyOiBtb2NrZWRQYXJhbU1hbmFnZXIgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9jb25maWcsIHN1aXRlczogWyBzdWl0ZUNvcHkgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2dyb3VwUmVzdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckNvbmZpZyA9IHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXk6IDIwMCB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaCgoY2FsbGJhY2spID0+IHRoaXMuX2xhdW5jaFdvcmtlckZ1bmMod29ya2VyQ29uZmlnLCBjYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFueSBvZiBjYXNlcyBoYXZlIHBhcmFtIGZpbGUgYXR0YWNoZWRcclxuICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2Nhc2UnICYmIEFycmF5LmlzQXJyYXkoc3VpdGVEZWYuY2FzZXMpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FzZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHN1aXRlRGVmLmNhc2VzLmZvckVhY2goY2FzZURlZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FzZUtleSA9IGNhc2VEZWYua2V5IHx8IGNhc2VEZWYuaWQgfHwgY2FzZURlZi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlcklkID0gYCR7Y2FzZUtleX0tJHtzdWl0ZUluZGV4fS8ke2Nhc2VJbmRleH1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlQ29weSA9IHsgLi4uc3VpdGVEZWYsIHJlZklkOiBzdWl0ZVJlZklkLCBjYXNlczogWyBjYXNlRGVmIF19O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVzOiBbIHN1aXRlQ29weSBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlS2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAwIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZUluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlS2V5ID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1aXRlczogWyB7IC4uLnN1aXRlRGVmLCByZWZJZDogc3VpdGVSZWZJZCB9IF0sXHJcbiAgICAgICAgICAgICAgICAgICAgX2dyb3VwUmVzdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya2VyQ29uZmlnID0geyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheTogMCB9O1xyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VpdGVJbmRleCsrO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcclxuICAgICAgICBhd2FpdCBwYXJhbGxlbExpbWl0KGNvbGxlY3Rpb24sIHdvcmtlcnNDb3VudCk7XHJcblxyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NyZWF0ZWQgUnVubmVycyBTdGF0JywgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXQpO1xyXG4gICAgICAgIGNvbnN0IHJ1bm5lcnNJZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NyZWF0ZWQgUnVubmVycyBjb3VudCcsIHJ1bm5lcnNJZHMubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgcnVubmVyc0lkcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2F6ZXMgPSB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdFtpdGVtXS5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRvdGFsICs9IGNhemVzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUnVubmVyJywgaXRlbSwgJyBydW4gJywgY2F6ZXMsICcgY2FzZXMnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJ1BhcmFsbGVsIGNvdW50Jywgd29ya2Vyc0NvdW50KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVG90YWw6ICcsIHRvdGFsKTtcclxuICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbmV3IER1cmF0aW9uKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdEdXJhdGlvbjogJywgZHVyYXRpb24udG9TdHJpbmcoMSkpO1xyXG4gICAgICAgIC8vdGhpcy5yZXBvcnRlci5vbkFmdGVyRW5kKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICogUHJpdmF0ZSBtZXRob2RzXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cclxuICAgIF9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBjYiA9IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fbGF1bmNoVGVzdCh3b3JrZXJDb25maWcsIGNiKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaW5zdGFudGlhdGVSdW5uZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5mcmFtZXdvcmsgJiYgdHlwZW9mIHRoaXMuX2NvbmZpZy5mcmFtZXdvcmsgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUnVubmVycywgdGhpcy5fY29uZmlnLmZyYW1ld29yaykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUnVubmVyc1t0aGlzLl9jb25maWcuZnJhbWV3b3JrXSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IFJ1bm5lcnMub3h5Z2VuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2xhdW5jaFRlc3QoeyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheSB9LCBjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLl9zbGVlcChzdGFydHVwRGVsYXkpO1xyXG5cclxuICAgICAgICBsZXQgcnVubmVyID0gdGhpcy5faW5zdGFudGlhdGVSdW5uZXIoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdFtydW5uZXIuX2lkXSA9IFt3b3JrZXJJZF07XHJcblxyXG4gICAgICAgIGlmICghcnVubmVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1ld29yayA9IHRoaXMuX2NvbmZpZy5mcmFtZXdvcms7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcnVubmVyIGZvciB0aGUgc3BlY2lmaWVkIGZyYW1ld29yazogJHtmcmFtZXdvcmt9LmApKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZSBmaXJlZm94IFwicHJvZmlsZVwiIHZhbHVlIGlmIHByb2ZpbGUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkXHJcbiAgICAgICAgICAgIC8vIGF3YWl0IG94dXRpbC5nZW5lcmF0ZUZpcmVmb3hPcHRpb25zUHJvZmlsZSh0ZXN0Q2Fwcyk7XHJcblxyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIG94eWdlblxyXG4gICAgICAgICAgICBhd2FpdCBydW5uZXIuaW5pdCh0ZXN0Q29uZmlnLCB0ZXN0Q2FwcywgdGhpcy5yZXBvcnRlcik7XHJcblxyXG4gICAgICAgICAgICAvLyBydW4gT3h5Z2VuIHRlc3QgXHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bm5lci5ydW4oKTtcclxuICAgICAgICAgICAgYXdhaXQgcnVubmVyLmRpc3Bvc2UocmVzdWx0LnN0YXR1cyB8fCBudWxsKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxhdW5jaCB0aGUgdGVzdDonLCBlKTtcclxuICAgICAgICAgICAgLy8gc3RvcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fcXVldWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLmtpbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGN1c3RvbSBlcnJvciBtZXNzYWdlXHJcbiAgICAgICAgICAgIGlmIChlLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXJyTXNnID0gJyc7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXJyID0gZS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIudHlwZSlcclxuICAgICAgICAgICAgICAgICAgICBlcnJNc2cgKz0gZXJyLnR5cGUgKyAnIC0gJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgICAgICBlcnJNc2cgKz0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnID0gZXJyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoZXJyTXNnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTsgICAgLy8gY2FsbCBiYWNrIHdpdGggdGhlIG9yaWdpbmFsIGV4Y2VwdGlvblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJ1bm5lcnMucHVzaChydW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zbGVlcChkdXJhdGlvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jbGFzcyBQYXJhbU1hbmFnZXJNb2NrIHtcclxuICAgIGNvbnN0cnVjdG9yKHZhbHVlcykge1xyXG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldE1vZGUoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlYWROZXh0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZWFkUHJldigpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFsdWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcm93cygpIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
223
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSdW5uZXJzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX3BhcmFsbGVsTGltaXQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRHVyYXRpb24iLCJoYXNoIiwidjEiLCJQYXJhbGxlbExhdW5jaGVyIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJyZXBvcnRlciIsIl9jb25maWciLCJfcXVldWUiLCJydW5uZXJzIiwiY3JlYXRlZFJ1bm5lcnNTdGF0IiwicnVuIiwiY2Fwc1NldCIsImNvbGxlY3Rpb24iLCJwYXJhbGxlbCIsIkVycm9yIiwibW9kZSIsIndvcmtlcnNDb3VudCIsImlzTmFOIiwid29ya2VycyIsInN1aXRlcyIsInJlc3VsdE5hbWUiLCJuYW1lIiwiQXJyYXkiLCJpc0FycmF5IiwidGVzdENhcHMiLCJyZXN1bHRIYXNoIiwicmVzdWx0S2V5Iiwic3VpdGVJbmRleCIsImZvckVhY2giLCJzdWl0ZURlZiIsInN1aXRlS2V5Iiwia2V5IiwiaWQiLCJzdWl0ZVJlZklkIiwiaXRlcmF0aW9uQ291bnQiLCJtb2NrZWRQYXJhbU1hbmFnZXIiLCJ1bmRlZmluZWQiLCJwYXJhbU1hbmFnZXIiLCJQYXJhbU1hbmFnZXJNb2NrIiwiZ2V0VmFsdWVzIiwicmVhZE5leHQiLCJ3b3JrZXJJZCIsInN1aXRlQ29weSIsInJlZklkIiwidGVzdENvbmZpZyIsIl9ncm91cFJlc3VsdCIsIndvcmtlckNvbmZpZyIsInN0YXJ0dXBEZWxheSIsInB1c2giLCJjYWxsYmFjayIsIl9sYXVuY2hXb3JrZXJGdW5jIiwiY2FzZXMiLCJjYXNlSW5kZXgiLCJjYXNlRGVmIiwiY2FzZUtleSIsInN0YXJ0IiwiRGF0ZSIsInBhcmFsbGVsTGltaXQiLCJ0b3RhbCIsImNvbnNvbGUiLCJsb2ciLCJydW5uZXJzSWRzIiwia2V5cyIsImxlbmd0aCIsIm1hcCIsIml0ZW0iLCJjYXplcyIsImVuZCIsImR1cmF0aW9uIiwidG9TdHJpbmciLCJjYiIsImVycm9yIiwiX2xhdW5jaFRlc3QiLCJ0aGVuIiwicmVzdWx0IiwiY2F0Y2giLCJfaW5zdGFudGlhdGVSdW5uZXIiLCJmcmFtZXdvcmsiLCJwcm90b3R5cGUiLCJveHlnZW4iLCJfc2xlZXAiLCJydW5uZXIiLCJfaWQiLCJpbml0IiwiZGlzcG9zZSIsInN0YXR1cyIsImtpbGwiLCJlcnJNc2ciLCJlcnIiLCJ0eXBlIiwibWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsImV4cG9ydHMiLCJ2YWx1ZXMiLCJnZXRNb2RlIiwicmVhZFByZXYiLCJyb3dzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9wYXJhbGxlbC1sYXVuY2hlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8vIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCAqIGFzIFJ1bm5lcnMgZnJvbSAnLi4vcnVubmVycyc7XHJcbmltcG9ydCBwYXJhbGxlbExpbWl0IGZyb20gJ2FzeW5jL3BhcmFsbGVsTGltaXQnO1xyXG5jb25zdCBEdXJhdGlvbiA9IHJlcXVpcmUoJ2R1cmF0aW9uJyk7XHJcbmNvbnN0IGhhc2ggPSByZXF1aXJlKCdvYmplY3QtaGFzaCcpO1xyXG5jb25zdCB7IHYxIH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQYXJhbGxlbExhdW5jaGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZywgcmVwb3J0ZXIpIHtcclxuICAgICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgICAgICAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gbnVsbDtcclxuICAgICAgICB0aGlzLnJ1bm5lcnMgPSBbXTtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdCA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJ1bihjYXBzU2V0KSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IFtdO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJhbGxlbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgcGFyYWxsZWwgdGVzdGluZyAtIFwicGFyYWxsZWxcIiBzZXR0aW5ncyBhcmUgbWlzc2luZy4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUgPSAnY2FzZSc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB3b3JrZXJzQ291bnQgPSAhaXNOYU4odGhpcy5fY29uZmlnLnBhcmFsbGVsLndvcmtlcnMpID8gdGhpcy5fY29uZmlnLnBhcmFsbGVsLndvcmtlcnMgOiAxO1xyXG4gICAgICAgIGNvbnN0IG1vZGUgPSB0aGlzLl9jb25maWcucGFyYWxsZWwubW9kZSA9PT0gJ2l0ZXJhdGlvbidcclxuICAgICAgICAgICAgPyAnaXRlcmF0aW9uJyA6IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID09PSAnc3VpdGUnXHJcbiAgICAgICAgICAgICAgICA/ICdzdWl0ZScgOiAnY2FzZSc7XHJcbiAgICAgICAgLy8gZmxhdHRlbiBhbGwgc3VpdGVzIGFuZCBjcmVhdGUgb25lIHVuaWZpZWQgYXJyYXkgb2YgYWxsIHRoZSB0ZXN0IGNhc2VzXHJcbiAgICAgICAgY29uc3Qgc3VpdGVzID0gdGhpcy5fY29uZmlnLnN1aXRlcztcclxuICAgICAgICBjb25zdCByZXN1bHROYW1lID0gdGhpcy5fY29uZmlnLm5hbWUgfHwgJyc7XHJcbiAgICAgICAgaWYgKCFzdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkoc3VpdGVzKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgcGFyYWxsZWwgdGVzdGluZyAtIG5vIHN1aXRlcyBhcmUgZGVmaW5lZC4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgbm8gY2FwYWJpbGl0aWVzIGFyZSBzcGVjaWZpZWQsIHJ1biBzaW5nbGUgaW5zdGFuY2Ugd2l0aCBkZWZhdWx0IGFyZ3VtZW50c1xyXG4gICAgICAgIC8vIGFsdGVybmF0aXZlbHksIHBpY2sgdGhlIGZpcnN0IGNhcGFiaWxpdGllcyBzZXQgKGxvYWQgdGVzdCBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIGJyb3dzZXIgdHlwZSlcclxuICAgICAgICBjb25zdCB0ZXN0Q2FwcyA9IGNhcHNTZXQgPyAoQXJyYXkuaXNBcnJheShjYXBzU2V0KSA/IGNhcHNTZXRbMF0gOiBjYXBzU2V0KSA6IG51bGw7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0SGFzaCA9IHRlc3RDYXBzID8gaGFzaCh0ZXN0Q2FwcykgOiAnJztcclxuICAgICAgICBjb25zdCByZXN1bHRLZXkgPSBgJHtyZXN1bHROYW1lfS0ke3Jlc3VsdEhhc2h9YDtcclxuICAgICAgICAvLyBpZiAnd29ya2Vycycgc2V0IHRvIG1heCBhbmQgcGFyYW1ldGVyIGZpbGUgaXMgZGVmaW5lZCwgXHJcbiAgICAgICAgLy8gdGhlbiBydW4gYXMgbWFueSBwYXJhbGxlbCB0ZXN0cyBhcyByb3dzIGluIHRoZSBmaWxlXHJcbiAgICAgICAgbGV0IHN1aXRlSW5kZXggPSAwO1xyXG5cclxuICAgICAgICBzdWl0ZXMuZm9yRWFjaChzdWl0ZURlZiA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1aXRlS2V5ID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1aXRlUmVmSWQgPSBzdWl0ZURlZi5rZXkgfHwgc3VpdGVEZWYuaWQgfHwgdjEoKTtcclxuICAgICAgICAgICAgaWYgKG1vZGUgPT09ICdpdGVyYXRpb24nKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaTw9IHN1aXRlRGVmLml0ZXJhdGlvbkNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbW9ja2VkUGFyYW1NYW5hZ2VyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWl0ZURlZi5wYXJhbU1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9ja2VkUGFyYW1NYW5hZ2VyID0gbmV3IFBhcmFtTWFuYWdlck1vY2soc3VpdGVEZWYucGFyYW1NYW5hZ2VyLmdldFZhbHVlcygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVEZWYucGFyYW1NYW5hZ2VyLnJlYWROZXh0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlcklkID0gYCR7c3VpdGVLZXl9LSR7c3VpdGVJbmRleH0vJHtpfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVDb3B5ID0geyAuLi5zdWl0ZURlZiwgcmVmSWQ6IHN1aXRlUmVmSWQsIGl0ZXJhdGlvbkNvdW50OiAxLCBwYXJhbU1hbmFnZXI6IG1vY2tlZFBhcmFtTWFuYWdlciB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZywgc3VpdGVzOiBbIHN1aXRlQ29weSBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VyQ29uZmlnID0geyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheTogMjAwIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgYW55IG9mIGNhc2VzIGhhdmUgcGFyYW0gZmlsZSBhdHRhY2hlZFxyXG4gICAgICAgICAgICBlbHNlIGlmIChtb2RlID09PSAnY2FzZScgJiYgQXJyYXkuaXNBcnJheShzdWl0ZURlZi5jYXNlcykpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjYXNlSW5kZXggPSAwO1xyXG4gICAgICAgICAgICAgICAgc3VpdGVEZWYuY2FzZXMuZm9yRWFjaChjYXNlRGVmID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYXNlS2V5ID0gY2FzZURlZi5rZXkgfHwgY2FzZURlZi5pZCB8fCBjYXNlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29ya2VySWQgPSBgJHtjYXNlS2V5fS0ke3N1aXRlSW5kZXh9LyR7Y2FzZUluZGV4fWA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVDb3B5ID0geyAuLi5zdWl0ZURlZiwgcmVmSWQ6IHN1aXRlUmVmSWQsIGNhc2VzOiBbIGNhc2VEZWYgXX07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZXM6IFsgc3VpdGVDb3B5IF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9ncm91cFJlc3VsdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckNvbmZpZyA9IHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXk6IDAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goKGNhbGxiYWNrKSA9PiB0aGlzLl9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spKTtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlSW5kZXgrKztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVLZXkgPSBzdWl0ZURlZi5rZXkgfHwgc3VpdGVEZWYuaWQgfHwgc3VpdGVEZWYubmFtZTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlcklkID0gYCR7c3VpdGVLZXl9LSR7c3VpdGVJbmRleH1gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9jb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VpdGVzOiBbIHsgLi4uc3VpdGVEZWYsIHJlZklkOiBzdWl0ZVJlZklkIH0gXSxcclxuICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0S2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAwIH07XHJcbiAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLnB1c2goKGNhbGxiYWNrKSA9PiB0aGlzLl9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdWl0ZUluZGV4Kys7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGF3YWl0IHBhcmFsbGVsTGltaXQoY29sbGVjdGlvbiwgd29ya2Vyc0NvdW50KTtcclxuXHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICBjb25zb2xlLmxvZygnQ3JlYXRlZCBSdW5uZXJzIFN0YXQnLCB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdCk7XHJcbiAgICAgICAgY29uc3QgcnVubmVyc0lkcyA9IE9iamVjdC5rZXlzKHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnQ3JlYXRlZCBSdW5uZXJzIGNvdW50JywgcnVubmVyc0lkcy5sZW5ndGgpO1xyXG5cclxuICAgICAgICBydW5uZXJzSWRzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjYXplcyA9IHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0W2l0ZW1dLmxlbmd0aDtcclxuICAgICAgICAgICAgdG90YWwgKz0gY2F6ZXM7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdSdW5uZXInLCBpdGVtLCAnIHJ1biAnLCBjYXplcywgJyBjYXNlcycpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnUGFyYWxsZWwgY291bnQnLCB3b3JrZXJzQ291bnQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUb3RhbDogJywgdG90YWwpO1xyXG4gICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgY29uc3QgZHVyYXRpb24gPSBuZXcgRHVyYXRpb24oc3RhcnQsIGVuZCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0R1cmF0aW9uOiAnLCBkdXJhdGlvbi50b1N0cmluZygxKSk7XHJcbiAgICAgICAgLy90aGlzLnJlcG9ydGVyLm9uQWZ0ZXJFbmQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICAgKiBQcml2YXRlIG1ldGhvZHNcclxuICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcblxyXG4gICAgX2xhdW5jaFdvcmtlckZ1bmMod29ya2VyQ29uZmlnLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGNvbnN0IGNiID0gKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIG51bGwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl9sYXVuY2hUZXN0KHdvcmtlckNvbmZpZywgY2IpLnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xyXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIG51bGwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIF9pbnN0YW50aWF0ZVJ1bm5lcigpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgdGhpcy5fY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSdW5uZXJzLCB0aGlzLl9jb25maWcuZnJhbWV3b3JrKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSdW5uZXJzW3RoaXMuX2NvbmZpZy5mcmFtZXdvcmtdKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgUnVubmVycy5veHlnZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfbGF1bmNoVGVzdCh7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5IH0sIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgaWYgKCFjYWxsYmFjaykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuX3NsZWVwKHN0YXJ0dXBEZWxheSk7XHJcblxyXG4gICAgICAgIGxldCBydW5uZXIgPSB0aGlzLl9pbnN0YW50aWF0ZVJ1bm5lcigpO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0W3J1bm5lci5faWRdID0gW3dvcmtlcklkXTtcclxuXHJcbiAgICAgICAgaWYgKCFydW5uZXIpIHtcclxuICAgICAgICAgICAgY29uc3QgZnJhbWV3b3JrID0gdGhpcy5fY29uZmlnLmZyYW1ld29yaztcclxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBDYW5ub3QgZmluZCBydW5uZXIgZm9yIHRoZSBzcGVjaWZpZWQgZnJhbWV3b3JrOiAke2ZyYW1ld29ya30uYCkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGZpcmVmb3ggXCJwcm9maWxlXCIgdmFsdWUgaWYgcHJvZmlsZSBvcHRpb25zIGFyZSBzcGVjaWZpZWRcclxuICAgICAgICAgICAgLy8gYXdhaXQgb3h1dGlsLmdlbmVyYXRlRmlyZWZveE9wdGlvbnNQcm9maWxlKHRlc3RDYXBzKTtcclxuXHJcbiAgICAgICAgICAgIC8vIGluaXRpYWxpemUgb3h5Z2VuXHJcbiAgICAgICAgICAgIGF3YWl0IHJ1bm5lci5pbml0KHRlc3RDb25maWcsIHRlc3RDYXBzLCB0aGlzLnJlcG9ydGVyKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHJ1biBPeHlnZW4gdGVzdCBcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVubmVyLnJ1bigpO1xyXG4gICAgICAgICAgICBhd2FpdCBydW5uZXIuZGlzcG9zZShyZXN1bHQuc3RhdHVzIHx8IG51bGwpO1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbGF1bmNoIHRoZSB0ZXN0OicsIGUpO1xyXG4gICAgICAgICAgICAvLyBzdG9wIHByb2Nlc3NpbmcgdGhlIHF1ZXVlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9xdWV1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcXVldWUua2lsbCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgY3VzdG9tIGVycm9yIG1lc3NhZ2VcclxuICAgICAgICAgICAgaWYgKGUuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIHZhciBlcnJNc2cgPSAnJztcclxuICAgICAgICAgICAgICAgIHZhciBlcnIgPSBlLmVycm9yO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci50eXBlKVxyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyArPSBlcnIudHlwZSArICcgLSAnO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlKVxyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyArPSBlcnIubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICAgICBlcnJNc2cgPSBlcnIudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihlcnJNc2cpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpOyAgICAvLyBjYWxsIGJhY2sgd2l0aCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucnVubmVycy5wdXNoKHJ1bm5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgX3NsZWVwKGR1cmF0aW9uKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIGR1cmF0aW9uKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIFBhcmFtTWFuYWdlck1vY2sge1xyXG4gICAgY29uc3RydWN0b3IodmFsdWVzKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TW9kZSgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZE5leHQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlYWRQcmV2KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBnZXRWYWx1ZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCByb3dzKCkge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVVBLElBQUFBLE9BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGNBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUFnRCxTQUFBRSx1QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUFBLFNBQUFKLHdCQUFBSSxDQUFBLEVBQUFHLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBUix1QkFBQSxZQUFBQSxDQUFBSSxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFTLENBQUEsTUFBQUYsQ0FBQSxHQUFBSixDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRSxDQUFBLENBQUFJLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTyxDQUFBLENBQUFLLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTyxDQUFBLENBQUFNLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUyxDQUFBLGdCQUFBTixDQUFBLElBQUFILENBQUEsZ0JBQUFHLENBQUEsT0FBQVcsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENB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
|
|
@@ -1,38 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("source-map-support/register");
|
|
4
|
-
|
|
5
4
|
var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
8
|
-
|
|
5
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
6
|
module.exports = function (filePath, mode, fileType) {
|
|
10
7
|
var defer = require('when').defer;
|
|
11
|
-
|
|
12
8
|
var path = require('path');
|
|
13
|
-
|
|
14
9
|
var ExcelReader = require('./param-reader-excel');
|
|
15
|
-
|
|
16
10
|
var CsvReader = require('./param-reader-csv');
|
|
17
|
-
|
|
18
11
|
var JsonReader = require('./param-reader-json');
|
|
19
|
-
|
|
20
12
|
var errHelper = require('../errors/helper');
|
|
21
|
-
|
|
22
13
|
var module = {};
|
|
23
|
-
|
|
24
14
|
var _whenInitialized = defer();
|
|
25
|
-
|
|
26
15
|
module.init = function () {
|
|
27
16
|
var ext = path.extname(filePath);
|
|
28
|
-
|
|
29
17
|
if (fileType) {
|
|
30
18
|
ext = fileType;
|
|
31
19
|
}
|
|
32
|
-
|
|
33
20
|
var reader = null;
|
|
34
21
|
var self = this;
|
|
35
|
-
|
|
36
22
|
if (ext === '.xlsx' || ext === '.xls') {
|
|
37
23
|
reader = new ExcelReader();
|
|
38
24
|
} else if (ext === '.csv' || ext === '.txt') {
|
|
@@ -41,15 +27,12 @@ module.exports = function (filePath, mode, fileType) {
|
|
|
41
27
|
reader = new JsonReader();
|
|
42
28
|
} else {
|
|
43
29
|
_whenInitialized.reject(new _OxygenError.default(errHelper.errorCode.PARAMETERS_ERROR, 'Unsupported parameters file type: ' + ext));
|
|
44
|
-
|
|
45
30
|
return _whenInitialized.promise;
|
|
46
31
|
}
|
|
47
|
-
|
|
48
32
|
this.mode = mode;
|
|
49
33
|
reader.read(filePath, fileType || null).then(function (result) {
|
|
50
34
|
self.table = result;
|
|
51
35
|
self.currentRow = self.mode === 'random' ? random(0, self.table.length) : 0;
|
|
52
|
-
|
|
53
36
|
_whenInitialized.resolve(null);
|
|
54
37
|
}).catch(function (err) {
|
|
55
38
|
_whenInitialized.reject(new _OxygenError.default(errHelper.errorCode.PARAMETERS_ERROR, `${errHelper.errorCode.PARAMETERS_ERROR}: Unable to load parameters file.
|
|
@@ -57,47 +40,37 @@ ${err.message}`));
|
|
|
57
40
|
});
|
|
58
41
|
return _whenInitialized.promise;
|
|
59
42
|
};
|
|
60
|
-
|
|
61
43
|
module.getMode = function () {
|
|
62
44
|
return this.mode;
|
|
63
45
|
};
|
|
64
|
-
|
|
65
46
|
module.readNext = function () {
|
|
66
47
|
this.prevRow = this.currentRow;
|
|
67
|
-
|
|
68
48
|
if (this.mode === 'random') {
|
|
69
49
|
this.currentRow = random(0, this.table.length);
|
|
70
50
|
} else {
|
|
71
51
|
this.currentRow++;
|
|
72
52
|
}
|
|
73
|
-
|
|
74
53
|
if (this.currentRow > this.table.length - 1) {
|
|
75
54
|
this.currentRow = 0;
|
|
76
55
|
}
|
|
77
56
|
};
|
|
78
|
-
|
|
79
57
|
module.readPrev = function () {
|
|
80
58
|
if (typeof this.prevRow !== 'undefined') {
|
|
81
59
|
this.currentRow = this.prevRow;
|
|
82
60
|
}
|
|
83
61
|
};
|
|
84
|
-
|
|
85
62
|
module.getValues = function () {
|
|
86
63
|
if (!this.table || this.table.length === 0) {
|
|
87
64
|
throw new _OxygenError.default(errHelper.errorCode.PARAMETERS_ERROR, 'Parameters table is empty');
|
|
88
65
|
}
|
|
89
|
-
|
|
90
66
|
return this.table[this.currentRow];
|
|
91
67
|
};
|
|
92
|
-
|
|
93
68
|
module.__defineGetter__('rows', function () {
|
|
94
69
|
return this.table.length;
|
|
95
70
|
});
|
|
96
|
-
|
|
97
71
|
function random(min, max) {
|
|
98
72
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
99
73
|
}
|
|
100
|
-
|
|
101
74
|
return module;
|
|
102
75
|
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfT3h5Z2VuRXJyb3IiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm1vZHVsZSIsImV4cG9ydHMiLCJmaWxlUGF0aCIsIm1vZGUiLCJmaWxlVHlwZSIsImRlZmVyIiwicGF0aCIsIkV4Y2VsUmVhZGVyIiwiQ3N2UmVhZGVyIiwiSnNvblJlYWRlciIsImVyckhlbHBlciIsIl93aGVuSW5pdGlhbGl6ZWQiLCJpbml0IiwiZXh0IiwiZXh0bmFtZSIsInJlYWRlciIsInNlbGYiLCJyZWplY3QiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiUEFSQU1FVEVSU19FUlJPUiIsInByb21pc2UiLCJyZWFkIiwidGhlbiIsInJlc3VsdCIsInRhYmxlIiwiY3VycmVudFJvdyIsInJhbmRvbSIsImxlbmd0aCIsInJlc29sdmUiLCJjYXRjaCIsImVyciIsIm1lc3NhZ2UiLCJnZXRNb2RlIiwicmVhZE5leHQiLCJwcmV2Um93IiwicmVhZFByZXYiLCJnZXRWYWx1ZXMiLCJfX2RlZmluZUdldHRlcl9fIiwibWluIiwibWF4IiwiTWF0aCIsImZsb29yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9wYXJhbS1tYW5hZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmaWxlUGF0aCwgbW9kZSwgZmlsZVR5cGUgLypvcHRpb25hbCovKSB7XHJcbiAgICB2YXIgZGVmZXIgPSByZXF1aXJlKCd3aGVuJykuZGVmZXI7XHJcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuICAgIHZhciBFeGNlbFJlYWRlciA9IHJlcXVpcmUoJy4vcGFyYW0tcmVhZGVyLWV4Y2VsJyk7XHJcbiAgICB2YXIgQ3N2UmVhZGVyID0gcmVxdWlyZSgnLi9wYXJhbS1yZWFkZXItY3N2Jyk7XHJcbiAgICB2YXIgSnNvblJlYWRlciA9IHJlcXVpcmUoJy4vcGFyYW0tcmVhZGVyLWpzb24nKTtcclxuICAgIHZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcbiAgICB2YXIgbW9kdWxlID0ge307XHJcbiAgICB2YXIgX3doZW5Jbml0aWFsaXplZCA9IGRlZmVyKCk7XHJcblxyXG4gICAgbW9kdWxlLmluaXQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcclxuXHJcbiAgICAgICAgaWYgKGZpbGVUeXBlKSB7XHJcbiAgICAgICAgICAgIGV4dCA9IGZpbGVUeXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcmVhZGVyID0gbnVsbDtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgLy8gY2hvb3NlIHRoZSByaWdodCBjb252ZXJ0ZXIgYmFzZWQgb24gZWl0aGVyIHhscyBvciB4bHN4IGZpbGUgZXh0ZW5zaW9uXHJcbiAgICAgICAgaWYgKGV4dCA9PT0gJy54bHN4JyB8fCBleHQgPT09ICcueGxzJykge1xyXG4gICAgICAgICAgICByZWFkZXIgPSBuZXcgRXhjZWxSZWFkZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXh0ID09PSAnLmNzdicgfHwgZXh0ID09PSAnLnR4dCcpIHtcclxuICAgICAgICAgICAgcmVhZGVyID0gbmV3IENzdlJlYWRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChleHQgPT09ICcuanNvbicgfHwgZXh0ID09PSAnLmpzJykge1xyXG4gICAgICAgICAgICByZWFkZXIgPSBuZXcgSnNvblJlYWRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgX3doZW5Jbml0aWFsaXplZC5yZWplY3QobmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLCAnVW5zdXBwb3J0ZWQgcGFyYW1ldGVycyBmaWxlIHR5cGU6ICcgKyBleHQpKTtcclxuICAgICAgICAgICAgcmV0dXJuIF93aGVuSW5pdGlhbGl6ZWQucHJvbWlzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubW9kZSA9IG1vZGU7XHJcblxyXG4gICAgICAgIHJlYWRlci5yZWFkKGZpbGVQYXRoLCBmaWxlVHlwZSB8fCBudWxsKVxyXG4gICAgICAgICAgICAudGhlbihmdW5jdGlvbihyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgIHNlbGYudGFibGUgPSByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGN1cnJlbnRSb3cgYWNjb3JkaW5nIHdpdGggcGFyYW1ldGVyIHJlYWRpbmcgbW9kZSAocmFuZG9tIG9yIHNlcXVlbnRpYWwpXHJcbiAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnRSb3cgPSBzZWxmLm1vZGUgPT09ICdyYW5kb20nID8gcmFuZG9tKDAsIHNlbGYudGFibGUubGVuZ3RoKSA6IDA7XHJcbiAgICAgICAgICAgICAgICBfd2hlbkluaXRpYWxpemVkLnJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgICAgICAgIF93aGVuSW5pdGlhbGl6ZWQucmVqZWN0KFxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBPeEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJIZWxwZXIuZXJyb3JDb2RlLlBBUkFNRVRFUlNfRVJST1IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2VyckhlbHBlci5lcnJvckNvZGUuUEFSQU1FVEVSU19FUlJPUn06IFVuYWJsZSB0byBsb2FkIHBhcmFtZXRlcnMgZmlsZS4gXHJcbiR7ZXJyLm1lc3NhZ2V9YFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gX3doZW5Jbml0aWFsaXplZC5wcm9taXNlO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuZ2V0TW9kZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5yZWFkTmV4dCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLnByZXZSb3cgPSB0aGlzLmN1cnJlbnRSb3c7XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3JhbmRvbScpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93ID0gcmFuZG9tKDAsIHRoaXMudGFibGUubGVuZ3RoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSb3crKztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRSb3cgPiB0aGlzLnRhYmxlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5yZWFkUHJldiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJldlJvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93ID0gdGhpcy5wcmV2Um93O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLmdldFZhbHVlcyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGhpcy50YWJsZSB8fCB0aGlzLnRhYmxlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlBBUkFNRVRFUlNfRVJST1IsICdQYXJhbWV0ZXJzIHRhYmxlIGlzIGVtcHR5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlW3RoaXMuY3VycmVudFJvd107XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fX2RlZmluZUdldHRlcl9fKCdyb3dzJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGUubGVuZ3RoO1xyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gcmFuZG9tKG1pbiwgbWF4KSB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pKSArIG1pbjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXSwibWFwcGluZ3MiOiI7OztBQVFBLElBQUFBLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUE0QyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUM1Q0csTUFBTSxDQUFDQyxPQUFPLEdBQUcsVUFBVUMsUUFBUSxFQUFFQyxJQUFJLEVBQUVDLFFBQVEsRUFBZTtFQUM5RCxJQUFJQyxLQUFLLEdBQUdULE9BQU8sQ0FB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
|
|
@@ -1,43 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("source-map-support/register");
|
|
4
|
-
|
|
5
4
|
module.exports = function () {
|
|
6
5
|
var module = {};
|
|
7
|
-
|
|
8
6
|
const parse = require('csv-parse/lib/sync');
|
|
9
|
-
|
|
10
7
|
var fs = require('fs');
|
|
11
|
-
|
|
12
8
|
var path = require('path');
|
|
13
|
-
|
|
14
9
|
module.read = function (filePath, extOverride) {
|
|
15
10
|
return new Promise((resolve, reject) => {
|
|
16
11
|
var ext = path.extname(filePath);
|
|
17
|
-
|
|
18
12
|
if (extOverride) {
|
|
19
13
|
ext = extOverride;
|
|
20
14
|
}
|
|
21
|
-
|
|
22
15
|
if (ext !== '.csv' && ext !== '.txt') {
|
|
23
16
|
reject(new Error('Unsupported file extension: ' + ext));
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
var data;
|
|
27
|
-
|
|
28
19
|
try {
|
|
29
20
|
data = fs.readFileSync(filePath, 'utf8');
|
|
30
21
|
} catch (e) {
|
|
31
22
|
reject(new Error('Unable to read parameters file: ' + e));
|
|
32
23
|
}
|
|
33
|
-
|
|
34
24
|
data = data.replace(/\r\r/g, '\r');
|
|
35
25
|
var bom = false;
|
|
36
|
-
|
|
37
26
|
if (data.charCodeAt(0) === 0xFEFF) {
|
|
38
27
|
bom = true;
|
|
39
28
|
}
|
|
40
|
-
|
|
41
29
|
try {
|
|
42
30
|
var table = parse(data, {
|
|
43
31
|
bom: bom,
|
|
@@ -47,11 +35,9 @@ module.exports = function () {
|
|
|
47
35
|
} catch (e) {
|
|
48
36
|
reject(e);
|
|
49
37
|
}
|
|
50
|
-
|
|
51
38
|
resolve(table);
|
|
52
39
|
});
|
|
53
40
|
};
|
|
54
|
-
|
|
55
41
|
return module;
|
|
56
42
|
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImRhdGEiLCJyZWFkRmlsZVN5bmMiLCJlIiwicmVwbGFjZSIsImJvbSIsImNoYXJDb2RlQXQiLCJ0YWJsZSIsImNvbHVtbnMiLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9wYXJhbS1yZWFkZXItY3N2LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbW9kdWxlID0ge307XHJcbiAgICBjb25zdCBwYXJzZSA9IHJlcXVpcmUoJ2Nzdi1wYXJzZS9saWIvc3luYycpO1xyXG4gICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcclxuICAgIHZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuICAgIG1vZHVsZS5yZWFkID0gZnVuY3Rpb24oZmlsZVBhdGgsIGV4dE92ZXJyaWRlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdmFyIGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgIGlmIChleHRPdmVycmlkZSkge1xyXG4gICAgICAgICAgICAgICAgZXh0ID0gZXh0T3ZlcnJpZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV4dCAhPT0gJy5jc3YnICYmIGV4dCAhPT0gJy50eHQnKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbjogJyArIGV4dCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgZGF0YTtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4Jyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFkIHBhcmFtZXRlcnMgZmlsZTogJyArIGUpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQ1NWcyBwcm9kdWNlZCBieSBPUyBYIEV4Y2VsIGhhdmUgaGVhZGVyIHRlcm1pbmF0ZWQgd2l0aCAwZDBkMGFcclxuICAgICAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvXFxyXFxyL2csICdcXHInKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0cmlwIEJPTSBmb3IgVVRGLThcclxuICAgICAgICAgICAgdmFyIGJvbSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBjYXRjaGVzIDB4RUZCQkJGIChVVEYtOCBCT00pIGJlY2F1c2UgdGhlIGJ1ZmZlci10by1zdHJpbmdcclxuICAgICAgICAgICAgLy8gY29udmVyc2lvbiB0cmFuc2xhdGVzIGl0IHRvIDB4RkVGRiAoVVRGLTE2IEJPTSlcclxuICAgICAgICAgICAgaWYgKGRhdGEuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XHJcbiAgICAgICAgICAgICAgICBib20gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gcGFyc2UoZGF0YSwgeyBib206IGJvbSwgY29sdW1uczogdHJ1ZSwgdHJpbTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKHRhYmxlKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7QUFTQUEsTUFBTSxDQUFDQyxPQUFPLEdBQUcsWUFBWTtFQUN6QixJQUFJRCxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ2YsTUFBTUUsS0FBSyxHQUFHQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7RUFDM0MsSUFBSUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBSSxDQUFDO0VBQ3RCLElBQUlFLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQU0sQ0FBQztFQUUxQkgsTUFBTSxDQUFDTSxJQUFJLEdBQUcsVUFBU0MsUUFBUSxFQUFFQyxXQUFXLEVBQUU7SUFDMUMsT0FBTyxJQUFJQyxPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7TUFDcEMsSUFBSUMsR0FBRyxHQUFHUCxJQUFJLENBQUNRLE9BQU8sQ0FBQ04sUUFBUSxDQUFDO01BQ2hDLElBQUlDLFdBQVcsRUFBRTtRQUNiSSxHQUFHLEdBQUdKLFdBQVc7TUFDckI7TUFDQSxJQUFJSSxHQUFHLEtBQUssTUFBTSxJQUFJQSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQ2xDRCxNQUFNLENBQUMsSUFBSUcsS0FBSyxDQUFDLDhCQUE4QixHQUFHRixHQUFHLENBQUMsQ0FBQztNQUMzRDtNQUVBLElBQUlHLElBQUk7TUFDUixJQUFJO1FBQ0FBLElBQUksR0FBR1gsRUFBRSxDQUFDWSxZQUFZLENBQUNULFFBQVEsRUFBRSxNQUFNLENBQUM7TUFDNUMsQ0FBQyxDQUFDLE9BQU9VLENBQUMsRUFBRTtRQUNSTixNQUFNLENBQUMsSUFBSUcsS0FBSyxDQUFDLGtDQUFrQyxHQUFHRyxDQUFDLENBQUMsQ0FBQztNQUM3RDtNQUdBRixJQUFJLEdBQUdBLElBQUksQ0FBQ0csT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7TUFHbEMsSUFBSUMsR0FBRyxHQUFHLEtBQUs7TUFHZixJQUFJSixJQUFJLENBQUNLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUU7UUFDL0JELEdBQUcsR0FBRyxJQUFJO01BQ2Q7TUFFQSxJQUFJO1FBQ0EsSUFBSUUsS0FBSyxHQUFHbkIsS0FBSyxDQUFDYSxJQUFJLEVBQUU7VUFBRUksR0FBRyxFQUFFQSxHQUFHO1VBQUVHLE9BQU8sRUFBRSxJQUFJO1VBQUVDLElBQUksRUFBRTtRQUFLLENBQUMsQ0FBQztNQUNwRSxDQUFDLENBQUMsT0FBT04sQ0FBQyxFQUFFO1FBQ1JOLE1BQU0sQ0FBQ00sQ0FBQyxDQUFDO01BQ2I7TUFFQVAsT0FBTyxDQUFDVyxLQUFLLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELE9BQU9yQixNQUFNO0FBQ2pCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|