oxygen-cli 1.22.0 → 1.99.0-alpha.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 +0 -50
- package/build/core/OxygenCore.js +56 -145
- package/build/errors/OxygenError.js +5 -15
- package/build/errors/helper.js +45 -49
- package/build/index.js +14 -6
- package/build/lib/cli-util.js +19 -19
- package/build/lib/cli.js +4 -2
- package/build/lib/parallel-launcher.js +333 -0
- package/build/lib/param-manager.js +66 -47
- package/build/lib/util.js +38 -9
- package/build/ox_modules/index.js +1 -97
- package/build/ox_modules/module-assert.js +19 -9
- package/build/ox_modules/module-dns.js +220 -0
- package/build/ox_modules/module-http.js +39 -51
- package/build/ox_modules/module-shell.js +19 -75
- package/build/ox_modules/module-utils.js +1 -108
- package/build/ox_modules/utils.js +1 -357
- package/build/reporter/FileReporterBase.js +5 -5
- package/build/reporter/ReportAggregator.js +127 -4
- package/build/runners/WorkerProcess.js +15 -28
- package/build/runners/index.js +2 -6
- package/build/runners/oxygen/OxygenWorker.js +8 -8
- package/build/runners/oxygen/index.js +17 -18
- package/build/runners/oxygen/worker.js +10 -8
- package/package.json +12 -46
- package/build/lib/img-merge.js +0 -163
- package/build/ox_modules/module-db.js +0 -146
- package/build/ox_modules/module-email.js +0 -212
- package/build/ox_modules/module-eyes.js +0 -189
- package/build/ox_modules/module-mailinator.js +0 -207
- package/build/ox_modules/module-mob/commands/alertAccept.js +0 -35
- package/build/ox_modules/module-mob/commands/alertDismiss.js +0 -35
- package/build/ox_modules/module-mob/commands/assertAlert.js +0 -56
- package/build/ox_modules/module-mob/commands/assertText.js +0 -45
- package/build/ox_modules/module-mob/commands/assertTitle.js +0 -43
- package/build/ox_modules/module-mob/commands/assertValue.js +0 -66
- package/build/ox_modules/module-mob/commands/back.js +0 -27
- package/build/ox_modules/module-mob/commands/clear.js +0 -40
- package/build/ox_modules/module-mob/commands/click.js +0 -35
- package/build/ox_modules/module-mob/commands/clickHidden.js +0 -52
- package/build/ox_modules/module-mob/commands/clickLong.js +0 -34
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +0 -37
- package/build/ox_modules/module-mob/commands/closeApp.js +0 -27
- package/build/ox_modules/module-mob/commands/debug.js +0 -26
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +0 -38
- package/build/ox_modules/module-mob/commands/enableNetwork.js +0 -75
- package/build/ox_modules/module-mob/commands/execute.js +0 -32
- package/build/ox_modules/module-mob/commands/findElement.js +0 -36
- package/build/ox_modules/module-mob/commands/findElements.js +0 -39
- package/build/ox_modules/module-mob/commands/getAlertText.js +0 -31
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +0 -26
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +0 -66
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +0 -26
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +0 -26
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +0 -57
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +0 -27
- package/build/ox_modules/module-mob/commands/getLocation.js +0 -32
- package/build/ox_modules/module-mob/commands/getSource.js +0 -26
- package/build/ox_modules/module-mob/commands/getText.js +0 -36
- package/build/ox_modules/module-mob/commands/getTitle.js +0 -24
- package/build/ox_modules/module-mob/commands/getUrl.js +0 -28
- package/build/ox_modules/module-mob/commands/getValue.js +0 -50
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +0 -27
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +0 -33
- package/build/ox_modules/module-mob/commands/index.js +0 -594
- package/build/ox_modules/module-mob/commands/installApp.js +0 -28
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +0 -28
- package/build/ox_modules/module-mob/commands/isCheckable.js +0 -31
- package/build/ox_modules/module-mob/commands/isChecked.js +0 -31
- package/build/ox_modules/module-mob/commands/isClickable.js +0 -31
- package/build/ox_modules/module-mob/commands/isExist.js +0 -36
- package/build/ox_modules/module-mob/commands/isSelected.js +0 -36
- package/build/ox_modules/module-mob/commands/isVisible.js +0 -36
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +0 -27
- package/build/ox_modules/module-mob/commands/launchApp.js +0 -26
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +0 -30
- package/build/ox_modules/module-mob/commands/open.js +0 -43
- package/build/ox_modules/module-mob/commands/pause.js +0 -27
- package/build/ox_modules/module-mob/commands/removeApp.js +0 -28
- package/build/ox_modules/module-mob/commands/resetApp.js +0 -26
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +0 -86
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +0 -40
- package/build/ox_modules/module-mob/commands/select.js +0 -54
- package/build/ox_modules/module-mob/commands/selectFrame.js +0 -53
- package/build/ox_modules/module-mob/commands/selectWindow.js +0 -149
- package/build/ox_modules/module-mob/commands/sendKeys.js +0 -84
- package/build/ox_modules/module-mob/commands/setContext.js +0 -28
- package/build/ox_modules/module-mob/commands/setNativeContext.js +0 -26
- package/build/ox_modules/module-mob/commands/setTimeout.js +0 -33
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +0 -39
- package/build/ox_modules/module-mob/commands/shake.js +0 -27
- package/build/ox_modules/module-mob/commands/smsClickLink.js +0 -32
- package/build/ox_modules/module-mob/commands/smsGetText.js +0 -45
- package/build/ox_modules/module-mob/commands/swipe.js +0 -58
- package/build/ox_modules/module-mob/commands/swipeElement.js +0 -58
- package/build/ox_modules/module-mob/commands/swipeScreen.js +0 -56
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +0 -27
- package/build/ox_modules/module-mob/commands/tap.js +0 -34
- package/build/ox_modules/module-mob/commands/type.js +0 -67
- package/build/ox_modules/module-mob/commands/unlockPattern.js +0 -92
- package/build/ox_modules/module-mob/commands/waitForExist.js +0 -29
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +0 -42
- package/build/ox_modules/module-mob/commands/waitForVisible.js +0 -28
- package/build/ox_modules/module-mob.js +0 -699
- package/build/ox_modules/module-pdf.js +0 -328
- package/build/ox_modules/module-proxy.js +0 -324
- package/build/ox_modules/module-serial.js +0 -187
- package/build/ox_modules/module-soap.js +0 -260
- package/build/ox_modules/module-twilio.js +0 -192
- package/build/ox_modules/module-web/commands/alertAccept.js +0 -35
- package/build/ox_modules/module-web/commands/alertDismiss.js +0 -35
- package/build/ox_modules/module-web/commands/assertAlert.js +0 -55
- package/build/ox_modules/module-web/commands/assertExist.js +0 -28
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +0 -51
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +0 -45
- package/build/ox_modules/module-web/commands/assertText.js +0 -45
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +0 -56
- package/build/ox_modules/module-web/commands/assertTextPresent.js +0 -52
- package/build/ox_modules/module-web/commands/assertTitle.js +0 -42
- package/build/ox_modules/module-web/commands/assertValue.js +0 -44
- package/build/ox_modules/module-web/commands/back.js +0 -27
- package/build/ox_modules/module-web/commands/clear.js +0 -41
- package/build/ox_modules/module-web/commands/click.js +0 -112
- package/build/ox_modules/module-web/commands/clickHidden.js +0 -79
- package/build/ox_modules/module-web/commands/closeWindow.js +0 -25
- package/build/ox_modules/module-web/commands/debug.js +0 -25
- package/build/ox_modules/module-web/commands/deleteCookies.js +0 -22
- package/build/ox_modules/module-web/commands/deselect.js +0 -34
- package/build/ox_modules/module-web/commands/doubleClick.js +0 -65
- package/build/ox_modules/module-web/commands/dragAndDrop.js +0 -36
- package/build/ox_modules/module-web/commands/execute.js +0 -36
- package/build/ox_modules/module-web/commands/fileBrowse.js +0 -72
- package/build/ox_modules/module-web/commands/findElement.js +0 -35
- package/build/ox_modules/module-web/commands/findElements.js +0 -38
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +0 -24
- package/build/ox_modules/module-web/commands/getAlertText.js +0 -30
- package/build/ox_modules/module-web/commands/getAttribute.js +0 -38
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +0 -34
- package/build/ox_modules/module-web/commands/getCookies.js +0 -23
- package/build/ox_modules/module-web/commands/getCssValue.js +0 -38
- package/build/ox_modules/module-web/commands/getElementCount.js +0 -29
- package/build/ox_modules/module-web/commands/getHTML.js +0 -30
- package/build/ox_modules/module-web/commands/getSource.js +0 -26
- package/build/ox_modules/module-web/commands/getText.js +0 -36
- package/build/ox_modules/module-web/commands/getTitle.js +0 -22
- package/build/ox_modules/module-web/commands/getUrl.js +0 -26
- package/build/ox_modules/module-web/commands/getValue.js +0 -43
- package/build/ox_modules/module-web/commands/getWindowHandles.js +0 -26
- package/build/ox_modules/module-web/commands/getWindowSize.js +0 -26
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +0 -51
- package/build/ox_modules/module-web/commands/index.js +0 -634
- package/build/ox_modules/module-web/commands/isAlertPresent.js +0 -31
- package/build/ox_modules/module-web/commands/isChecked.js +0 -30
- package/build/ox_modules/module-web/commands/isExist.js +0 -36
- package/build/ox_modules/module-web/commands/isSelected.js +0 -35
- package/build/ox_modules/module-web/commands/isVisible.js +0 -36
- package/build/ox_modules/module-web/commands/makeVisible.js +0 -74
- package/build/ox_modules/module-web/commands/maximizeWindow.js +0 -24
- package/build/ox_modules/module-web/commands/minimizeWindow.js +0 -24
- package/build/ox_modules/module-web/commands/newWindow.js +0 -27
- package/build/ox_modules/module-web/commands/open.js +0 -42
- package/build/ox_modules/module-web/commands/pause.js +0 -26
- package/build/ox_modules/module-web/commands/point.js +0 -37
- package/build/ox_modules/module-web/commands/pointJS.js +0 -56
- package/build/ox_modules/module-web/commands/refresh.js +0 -26
- package/build/ox_modules/module-web/commands/rightClick.js +0 -61
- package/build/ox_modules/module-web/commands/rightClickActions.js +0 -57
- package/build/ox_modules/module-web/commands/scrollToElement.js +0 -33
- package/build/ox_modules/module-web/commands/select.js +0 -55
- package/build/ox_modules/module-web/commands/selectFrame.js +0 -52
- package/build/ox_modules/module-web/commands/selectWindow.js +0 -148
- package/build/ox_modules/module-web/commands/sendKeys.js +0 -56
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +0 -33
- package/build/ox_modules/module-web/commands/setTimeout.js +0 -33
- package/build/ox_modules/module-web/commands/setWindowSize.js +0 -29
- package/build/ox_modules/module-web/commands/takeScreenshot.js +0 -37
- package/build/ox_modules/module-web/commands/type.js +0 -52
- package/build/ox_modules/module-web/commands/waitForAngular.js +0 -83
- package/build/ox_modules/module-web/commands/waitForExist.js +0 -28
- package/build/ox_modules/module-web/commands/waitForInteractable.js +0 -31
- package/build/ox_modules/module-web/commands/waitForNotExist.js +0 -57
- package/build/ox_modules/module-web/commands/waitForNotText.js +0 -45
- package/build/ox_modules/module-web/commands/waitForNotValue.js +0 -45
- package/build/ox_modules/module-web/commands/waitForText.js +0 -45
- package/build/ox_modules/module-web/commands/waitForValue.js +0 -45
- package/build/ox_modules/module-web/commands/waitForVisible.js +0 -28
- package/build/ox_modules/module-web/commands/waitForWindow.js +0 -118
- package/build/ox_modules/module-web.js +0 -909
- package/build/ox_modules/module-win/commands/assertText.js +0 -41
- package/build/ox_modules/module-win/commands/assertTitle.js +0 -38
- package/build/ox_modules/module-win/commands/assertValue.js +0 -62
- package/build/ox_modules/module-win/commands/back.js +0 -21
- package/build/ox_modules/module-win/commands/clear.js +0 -34
- package/build/ox_modules/module-win/commands/click.js +0 -25
- package/build/ox_modules/module-win/commands/clickLong.js +0 -30
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +0 -33
- package/build/ox_modules/module-win/commands/findElement.js +0 -31
- package/build/ox_modules/module-win/commands/findElements.js +0 -31
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +0 -22
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +0 -25
- package/build/ox_modules/module-win/commands/getLocation.js +0 -26
- package/build/ox_modules/module-win/commands/getSource.js +0 -22
- package/build/ox_modules/module-win/commands/getText.js +0 -32
- package/build/ox_modules/module-win/commands/getValue.js +0 -46
- package/build/ox_modules/module-win/commands/getWindowHandles.js +0 -25
- package/build/ox_modules/module-win/commands/index.js +0 -298
- package/build/ox_modules/module-win/commands/isCheckable.js +0 -26
- package/build/ox_modules/module-win/commands/isChecked.js +0 -26
- package/build/ox_modules/module-win/commands/isClickable.js +0 -26
- package/build/ox_modules/module-win/commands/isExist.js +0 -32
- package/build/ox_modules/module-win/commands/isSelected.js +0 -26
- package/build/ox_modules/module-win/commands/isVisible.js +0 -32
- package/build/ox_modules/module-win/commands/open.js +0 -24
- package/build/ox_modules/module-win/commands/pause.js +0 -23
- package/build/ox_modules/module-win/commands/rightClick.js +0 -30
- package/build/ox_modules/module-win/commands/selectWindow.js +0 -97
- package/build/ox_modules/module-win/commands/sendKeys.js +0 -50
- package/build/ox_modules/module-win/commands/setTimeout.js +0 -29
- package/build/ox_modules/module-win/commands/takeScreenshot.js +0 -26
- package/build/ox_modules/module-win/commands/tap.js +0 -29
- package/build/ox_modules/module-win/commands/type.js +0 -38
- package/build/ox_modules/module-win/commands/waitForExist.js +0 -25
- package/build/ox_modules/module-win/commands/waitForInteractable.js +0 -43
- package/build/ox_modules/module-win/commands/waitForVisible.js +0 -24
- package/build/ox_modules/module-win.js +0 -367
- package/build/ox_services/service-devtools/submodule-network.js +0 -338
- package/build/ox_services/service-devtools.js +0 -83
- package/build/runners/cucumber/CucumberEventListener.js +0 -181
- package/build/runners/cucumber/CucumberReporter.js +0 -277
- package/build/runners/cucumber/CucumberWorker.js +0 -337
- package/build/runners/cucumber/index.js +0 -159
- package/build/runners/cucumber/worker.js +0 -184
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
|
|
6
|
-
|
|
7
|
-
var _utils = _interopRequireDefault(require("./utils"));
|
|
8
|
-
|
|
9
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
|
-
|
|
11
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
-
|
|
13
|
-
/*
|
|
14
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
15
|
-
*
|
|
16
|
-
* This program is free software: you can redistribute it and/or modify
|
|
17
|
-
* it under the terms of the GNU General Public License as published by
|
|
18
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
19
|
-
* (at your option) any later version.
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @name email
|
|
24
|
-
* @description Provides methods for working with email via IMAP.
|
|
25
|
-
*/
|
|
26
|
-
var errHelper = require('../errors/helper');
|
|
27
|
-
|
|
28
|
-
module.exports = function () {
|
|
29
|
-
var imaps = require('imap-simple');
|
|
30
|
-
|
|
31
|
-
const simpleParser = require('mailparser').simpleParser;
|
|
32
|
-
|
|
33
|
-
var _config;
|
|
34
|
-
|
|
35
|
-
module.isInitialized = function () {
|
|
36
|
-
return _config !== undefined;
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* @summary Set email connection details.
|
|
40
|
-
* @function init
|
|
41
|
-
* @param {String} user - Username (e.g. 'your@email.address').
|
|
42
|
-
* @param {String} password - Password.
|
|
43
|
-
* @param {String} host - Host name (e.g. 'imap.gmail.com').
|
|
44
|
-
* @param {Number} port - Port number (e.g. 993).
|
|
45
|
-
* @param {Boolean} tls - true to use TLS, false otherwise.
|
|
46
|
-
* @param {Number} authTimeout - Authentication timeout in milliseconds.
|
|
47
|
-
* @param {Boolean=} enableSNI - Enable sending SNI when establishing the connection. This is required for some mail servers. Default is false.
|
|
48
|
-
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
module.init = function (user, password, host, port, tls, authTimeout, enableSNI) {
|
|
52
|
-
_utils.default.assertArgumentNonEmptyString(user, 'user');
|
|
53
|
-
|
|
54
|
-
_utils.default.assertArgumentNonEmptyString(password, 'password');
|
|
55
|
-
|
|
56
|
-
_utils.default.assertArgumentNonEmptyString(host, 'host');
|
|
57
|
-
|
|
58
|
-
_utils.default.assertArgumentNumberNonNegative(port, 'port');
|
|
59
|
-
|
|
60
|
-
_utils.default.assertArgumentBool(tls, 'tls');
|
|
61
|
-
|
|
62
|
-
_utils.default.assertArgumentNumberNonNegative(authTimeout, 'authTimeout');
|
|
63
|
-
|
|
64
|
-
_config = {
|
|
65
|
-
imap: {
|
|
66
|
-
user: user,
|
|
67
|
-
password: password,
|
|
68
|
-
host: host,
|
|
69
|
-
port: port,
|
|
70
|
-
tls: tls,
|
|
71
|
-
authTimeout: authTimeout
|
|
72
|
-
}
|
|
73
|
-
}; // set servername if SNI is enabled or we are using Gmail
|
|
74
|
-
|
|
75
|
-
if (enableSNI || host === 'imap.gmail.com') {
|
|
76
|
-
_config.imap.tlsOptions = {
|
|
77
|
-
servername: host
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* @summary Retrieves last unseen email.
|
|
83
|
-
* @function getLastEmail
|
|
84
|
-
* @param {Number} sinceMinutes - Search for emails received since the specified amount of minutes into past.
|
|
85
|
-
* @param {String|Regex} subject - Return email matching the specified subject.
|
|
86
|
-
* @param {Number} timeout - Timeout (in milliseconds) for waiting for the message to arrive.
|
|
87
|
-
* @return {Object} Email body, text, textAsHtml, attachments if any, and TO, FROM, SUBJECT, DATE headers.
|
|
88
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
89
|
-
* email.init('[YOUR_EMAIL]@gmail.com', 'password', 'imap.gmail.com', 993, true, 3000);
|
|
90
|
-
* var mail = email.getLastEmail(60, 'email subject', 5000);
|
|
91
|
-
* log.info(mail);
|
|
92
|
-
*
|
|
93
|
-
* if(r.attachments && r.attachments.length > 0){
|
|
94
|
-
* const fs = require('fs');
|
|
95
|
-
* r.attachments.map((attachment) => {
|
|
96
|
-
* let fileDescriptor;
|
|
97
|
-
* try{
|
|
98
|
-
* fileDescriptor = fs.openSync(attachment.filename, 'w');
|
|
99
|
-
* } catch(e) {
|
|
100
|
-
* throw 'could not open file: ' + e;
|
|
101
|
-
* }
|
|
102
|
-
*
|
|
103
|
-
* try{
|
|
104
|
-
* fs.writeFileSync(fileDescriptor, attachment.data);
|
|
105
|
-
* } catch(e) {
|
|
106
|
-
* throw 'error writing file: ' + e;
|
|
107
|
-
* }
|
|
108
|
-
*
|
|
109
|
-
* fs.closeSync(fileDescriptor);
|
|
110
|
-
* });
|
|
111
|
-
* }
|
|
112
|
-
*/
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
module.getLastEmail = async function (sinceMinutes, subject, timeout) {
|
|
116
|
-
_utils.default.assertArgumentNumberNonNegative(sinceMinutes, 'sinceMinutes');
|
|
117
|
-
|
|
118
|
-
_utils.default.assertArgumentNumberNonNegative(timeout, 'timeout');
|
|
119
|
-
|
|
120
|
-
var mail;
|
|
121
|
-
var now = new Date().getTime();
|
|
122
|
-
var err;
|
|
123
|
-
|
|
124
|
-
while (!err && !mail && new Date().getTime() - now < timeout) {
|
|
125
|
-
try {
|
|
126
|
-
const connection = await imaps.connect(_config);
|
|
127
|
-
await connection.openBox('INBOX'); // fetch unseen emails from the last sinceMinutes
|
|
128
|
-
|
|
129
|
-
var startDate = new Date();
|
|
130
|
-
startDate.setTime(Date.now() - sinceMinutes * 60 * 1000);
|
|
131
|
-
startDate = startDate.toISOString();
|
|
132
|
-
var searchCriteria = ['UNSEEN', ['SINCE', startDate]]; // fetch certain headers and stripped down body
|
|
133
|
-
|
|
134
|
-
var fetchOptions = {
|
|
135
|
-
bodies: ['HEADER.FIELDS (FROM TO SUBJECT DATE)', 'TEXT'],
|
|
136
|
-
struct: true,
|
|
137
|
-
markSeen: false
|
|
138
|
-
};
|
|
139
|
-
const results = await connection.search(searchCriteria, fetchOptions);
|
|
140
|
-
|
|
141
|
-
for (var result of results) {
|
|
142
|
-
const headerPart = _lodash.default.find(result.parts, {
|
|
143
|
-
'which': fetchOptions.bodies[0]
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
const bodyPart = _lodash.default.find(result.parts, {
|
|
147
|
-
'which': fetchOptions.bodies[1]
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
const id = result.attributes.uid;
|
|
151
|
-
const idHeader = 'Imap-Id: ' + id + '\r\n';
|
|
152
|
-
const simple = await simpleParser(idHeader + bodyPart.body);
|
|
153
|
-
const attachments = [];
|
|
154
|
-
const parts = imaps.getParts(result.attributes.struct);
|
|
155
|
-
|
|
156
|
-
for (const part of parts) {
|
|
157
|
-
if (part.disposition && part.disposition.type.toUpperCase() === 'ATTACHMENT') {
|
|
158
|
-
const partData = await connection.getPartData(result, part);
|
|
159
|
-
attachments.push({
|
|
160
|
-
filename: part.disposition.params.filename,
|
|
161
|
-
data: partData
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
let body;
|
|
167
|
-
let html;
|
|
168
|
-
let textAsHtml;
|
|
169
|
-
|
|
170
|
-
if (simple.html || simple.text || simple.textAsHtml) {
|
|
171
|
-
// parsed success
|
|
172
|
-
body = bodyPart.text;
|
|
173
|
-
html = simple.html;
|
|
174
|
-
textAsHtml = simple.textAsHtml;
|
|
175
|
-
} else {
|
|
176
|
-
// don't parsed
|
|
177
|
-
body = bodyPart.body;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
if (headerPart) {
|
|
181
|
-
if (subject && (subject.constructor.name === 'RegExp' && subject.test(headerPart.body.subject[0]) || subject === headerPart.body.subject[0])) {
|
|
182
|
-
let to = headerPart.body.to ? headerPart.body.to[0] : null;
|
|
183
|
-
mail = {
|
|
184
|
-
from: headerPart.body.from[0],
|
|
185
|
-
to: to,
|
|
186
|
-
subject: headerPart.body.subject[0],
|
|
187
|
-
date: headerPart.body.date[0],
|
|
188
|
-
body: body,
|
|
189
|
-
attachments: attachments,
|
|
190
|
-
textAsHtml: textAsHtml,
|
|
191
|
-
html: html
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
} catch (e) {
|
|
197
|
-
err = e;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
if (err) {
|
|
202
|
-
throw new _OxygenError.default(errHelper.errorCode.EMAIL_ERROR, err.toString());
|
|
203
|
-
} else if (!mail) {
|
|
204
|
-
throw new _OxygenError.default(errHelper.errorCode.TIMEOUT, "Couldn't get an email within " + timeout + ' ms.');
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
return mail;
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
return module;
|
|
211
|
-
};
|
|
212
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1lbWFpbC5qcyJdLCJuYW1lcyI6WyJlcnJIZWxwZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImltYXBzIiwic2ltcGxlUGFyc2VyIiwiX2NvbmZpZyIsImlzSW5pdGlhbGl6ZWQiLCJ1bmRlZmluZWQiLCJpbml0IiwidXNlciIsInBhc3N3b3JkIiwiaG9zdCIsInBvcnQiLCJ0bHMiLCJhdXRoVGltZW91dCIsImVuYWJsZVNOSSIsInV0aWxzIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudEJvb2wiLCJpbWFwIiwidGxzT3B0aW9ucyIsInNlcnZlcm5hbWUiLCJnZXRMYXN0RW1haWwiLCJzaW5jZU1pbnV0ZXMiLCJzdWJqZWN0IiwidGltZW91dCIsIm1haWwiLCJub3ciLCJEYXRlIiwiZ2V0VGltZSIsImVyciIsImNvbm5lY3Rpb24iLCJjb25uZWN0Iiwib3BlbkJveCIsInN0YXJ0RGF0ZSIsInNldFRpbWUiLCJ0b0lTT1N0cmluZyIsInNlYXJjaENyaXRlcmlhIiwiZmV0Y2hPcHRpb25zIiwiYm9kaWVzIiwic3RydWN0IiwibWFya1NlZW4iLCJyZXN1bHRzIiwic2VhcmNoIiwicmVzdWx0IiwiaGVhZGVyUGFydCIsIl8iLCJmaW5kIiwicGFydHMiLCJib2R5UGFydCIsImlkIiwiYXR0cmlidXRlcyIsInVpZCIsImlkSGVhZGVyIiwic2ltcGxlIiwiYm9keSIsImF0dGFjaG1lbnRzIiwiZ2V0UGFydHMiLCJwYXJ0IiwiZGlzcG9zaXRpb24iLCJ0eXBlIiwidG9VcHBlckNhc2UiLCJwYXJ0RGF0YSIsImdldFBhcnREYXRhIiwicHVzaCIsImZpbGVuYW1lIiwicGFyYW1zIiwiZGF0YSIsImh0bWwiLCJ0ZXh0QXNIdG1sIiwidGV4dCIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJ0byIsImZyb20iLCJkYXRlIiwiZSIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJFTUFJTF9FUlJPUiIsInRvU3RyaW5nIiwiVElNRU9VVCJdLCJtYXBwaW5ncyI6Ijs7OztBQWNBOztBQUNBOztBQUNBOzs7O0FBaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFLQSxJQUFJQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEIsTUFBSUMsS0FBSyxHQUFHSCxPQUFPLENBQUMsYUFBRCxDQUFuQjs7QUFDQSxRQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxZQUFELENBQVAsQ0FBc0JJLFlBQTNDOztBQUNBLE1BQUlDLE9BQUo7O0FBRUFKLEVBQUFBLE1BQU0sQ0FBQ0ssYUFBUCxHQUF1QixZQUFXO0FBQzlCLFdBQU9ELE9BQU8sS0FBS0UsU0FBbkI7QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lOLEVBQUFBLE1BQU0sQ0FBQ08sSUFBUCxHQUFjLFVBQVNDLElBQVQsRUFBZUMsUUFBZixFQUF5QkMsSUFBekIsRUFBK0JDLElBQS9CLEVBQXFDQyxHQUFyQyxFQUEwQ0MsV0FBMUMsRUFBdURDLFNBQXZELEVBQWtFO0FBQzVFQyxtQkFBTUMsNEJBQU4sQ0FBbUNSLElBQW5DLEVBQXlDLE1BQXpDOztBQUNBTyxtQkFBTUMsNEJBQU4sQ0FBbUNQLFFBQW5DLEVBQTZDLFVBQTdDOztBQUNBTSxtQkFBTUMsNEJBQU4sQ0FBbUNOLElBQW5DLEVBQXlDLE1BQXpDOztBQUNBSyxtQkFBTUUsK0JBQU4sQ0FBc0NOLElBQXRDLEVBQTRDLE1BQTVDOztBQUNBSSxtQkFBTUcsa0JBQU4sQ0FBeUJOLEdBQXpCLEVBQThCLEtBQTlCOztBQUNBRyxtQkFBTUUsK0JBQU4sQ0FBc0NKLFdBQXRDLEVBQW1ELGFBQW5EOztB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QUFTO0FBQ0wsWUFBTSxJQUFJZ0Qsb0JBQUosQ0FBWWhGLFNBQVMsQ0FBQ2lGLFNBQVYsQ0FBb0JDLFdBQWhDLEVBQTZDbEQsR0FBRyxDQUFDbUQsUUFBSixFQUE3QyxDQUFOO0FBQ0gsS0FGRCxNQUVPLElBQUksQ0FBQ3ZELElBQUwsRUFBVztBQUNkLFlBQU0sSUFBSW9ELG9CQUFKLENBQVloRixTQUFTLENBQUNpRixTQUFWLENBQW9CRyxPQUFoQyxFQUF5QyxrQ0FBa0N6RCxPQUFsQyxHQUE0QyxNQUFyRixDQUFOO0FBQ0g7O0FBRUQsV0FBT0MsSUFBUDtBQUNILEdBL0ZEOztBQWlHQSxTQUFPMUIsTUFBUDtBQUNILENBL0tEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZW1haWxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBlbWFpbCB2aWEgSU1BUC5cclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbnZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIGltYXBzID0gcmVxdWlyZSgnaW1hcC1zaW1wbGUnKTtcclxuICAgIGNvbnN0IHNpbXBsZVBhcnNlciA9IHJlcXVpcmUoJ21haWxwYXJzZXInKS5zaW1wbGVQYXJzZXI7XHJcbiAgICB2YXIgX2NvbmZpZztcclxuXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBfY29uZmlnICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0IGVtYWlsIGNvbm5lY3Rpb24gZGV0YWlscy5cclxuICAgICAqIEBmdW5jdGlvbiBpbml0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXNlciAtIFVzZXJuYW1lIChlLmcuICd5b3VyQGVtYWlsLmFkZHJlc3MnKS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZCAtIFBhc3N3b3JkLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGhvc3QgLSBIb3N0IG5hbWUgKGUuZy4gJ2ltYXAuZ21haWwuY29tJykuXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gcG9ydCAtIFBvcnQgbnVtYmVyIChlLmcuIDk5MykuXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW59IHRscyAtIHRydWUgdG8gdXNlIFRMUywgZmFsc2Ugb3RoZXJ3aXNlLlxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IGF1dGhUaW1lb3V0IC0gQXV0aGVudGljYXRpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHMuXHJcbiAgICAgKiBAcGFyYW0ge0Jvb2xlYW49fSBlbmFibGVTTkkgLSBFbmFibGUgc2VuZGluZyBTTkkgd2hlbiBlc3RhYmxpc2hpbmcgdGhlIGNvbm5lY3Rpb24uIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHNvbWUgbWFpbCBzZXJ2ZXJzLiBEZWZhdWx0IGlzIGZhbHNlLiBcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmluaXQgPSBmdW5jdGlvbih1c2VyLCBwYXNzd29yZCwgaG9zdCwgcG9ydCwgdGxzLCBhdXRoVGltZW91dCwgZW5hYmxlU05JKSB7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyh1c2VyLCAndXNlcicpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcocGFzc3dvcmQsICdwYXNzd29yZCcpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcoaG9zdCwgJ2hvc3QnKTtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlKHBvcnQsICdwb3J0Jyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnRCb29sKHRscywgJ3RscycpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYXV0aFRpbWVvdXQsICdhdXRoVGltZW91dCcpO1xyXG5cclxuICAgICAgICBfY29uZmlnID0ge1xyXG4gICAgICAgICAgICBpbWFwOiB7XHJcbiAgICAgICAgICAgICAgICB1c2VyOiB1c2VyLFxyXG4gICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgICAgaG9zdDogaG9zdCxcclxuICAgICAgICAgICAgICAgIHBvcnQ6IHBvcnQsXHJcbiAgICAgICAgICAgICAgICB0bHM6IHRscyxcclxuICAgICAgICAgICAgICAgIGF1dGhUaW1lb3V0OiBhdXRoVGltZW91dFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gc2V0IHNlcnZlcm5hbWUgaWYgU05JIGlzIGVuYWJsZWQgb3Igd2UgYXJlIHVzaW5nIEdtYWlsXHJcbiAgICAgICAgaWYgKGVuYWJsZVNOSSB8fCBob3N0ID09PSAnaW1hcC5nbWFpbC5jb20nKSB7XHJcbiAgICAgICAgICAgIF9jb25maWcuaW1hcC50bHNPcHRpb25zID0geyBzZXJ2ZXJuYW1lOiBob3N0IH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHJpZXZlcyBsYXN0IHVuc2VlbiBlbWFpbC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRMYXN0RW1haWxcclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSBzaW5jZU1pbnV0ZXMgLSBTZWFyY2ggZm9yIGVtYWlscyByZWNlaXZlZCBzaW5jZSB0aGUgc3BlY2lmaWVkIGFtb3VudCBvZiBtaW51dGVzIGludG8gcGFzdC5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfFJlZ2V4fSBzdWJqZWN0IC0gUmV0dXJuIGVtYWlsIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgc3ViamVjdC5cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB0aW1lb3V0IC0gVGltZW91dCAoaW4gbWlsbGlzZWNvbmRzKSBmb3Igd2FpdGluZyBmb3IgdGhlIG1lc3NhZ2UgdG8gYXJyaXZlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBFbWFpbCBib2R5LCB0ZXh0LCB0ZXh0QXNIdG1sLCBhdHRhY2htZW50cyBpZiBhbnksIGFuZCBUTywgRlJPTSwgU1VCSkVDVCwgREFURSBoZWFkZXJzLlxyXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAgICAgKiBlbWFpbC5pbml0KCdbWU9VUl9FTUFJTF1AZ21haWwuY29tJywgJ3Bhc3N3b3JkJywgJ2ltYXAuZ21haWwuY29tJywgOTkzLCB0cnVlLCAzMDAwKTtcclxuICAgICAqIHZhciBtYWlsID0gZW1haWwuZ2V0TGFzdEVtYWlsKDYwLCAnZW1haWwgc3ViamVjdCcsIDUwMDApO1xyXG4gICAgICogbG9nLmluZm8obWFpbCk7XHJcbiAgICAgKiBcclxuICAgICAqIGlmKHIuYXR0YWNobWVudHMgJiYgci5hdHRhY2htZW50cy5sZW5ndGggPiAwKXtcclxuICAgICAqIFx0Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xyXG4gICAgICogXHRyLmF0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCkgPT4ge1xyXG4gICAgICogXHRcdGxldCBmaWxlRGVzY3JpcHRvcjtcclxuICAgICAqIFx0XHR0cnl7XHJcbiAgICAgKiBcdFx0XHRmaWxlRGVzY3JpcHRvciA9IGZzLm9wZW5TeW5jKGF0dGFjaG1lbnQuZmlsZW5hbWUsICd3Jyk7XHJcbiAgICAgKiBcdFx0fSBjYXRjaChlKSB7XHJcbiAgICAgKiBcdFx0XHR0aHJvdyAnY291bGQgbm90IG9wZW4gZmlsZTogJyArIGU7XHJcbiAgICAgKiBcdFx0fVxyXG4gICAgICogXHRcdFxyXG4gICAgICogXHRcdHRyeXtcclxuICAgICAqIFx0XHRcdGZzLndyaXRlRmlsZVN5bmMoZmlsZURlc2NyaXB0b3IsIGF0dGFjaG1lbnQuZGF0YSk7XHJcbiAgICAgKiBcdFx0fSBjYXRjaChlKSB7XHJcbiAgICAgKiBcdFx0XHR0aHJvdyAnZXJyb3Igd3JpdGluZyBmaWxlOiAnICsgZTtcclxuICAgICAqIFx0XHR9XHJcbiAgICAgKiBcdFx0XHJcbiAgICAgKiBcdFx0ZnMuY2xvc2VTeW5jKGZpbGVEZXNjcmlwdG9yKTtcclxuICAgICAqIFx0fSk7XHJcbiAgICAgKiB9XHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRMYXN0RW1haWwgPSBhc3luYyBmdW5jdGlvbihzaW5jZU1pbnV0ZXMsIHN1YmplY3QsIHRpbWVvdXQpIHtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlKHNpbmNlTWludXRlcywgJ3NpbmNlTWludXRlcycpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICAgICAgdmFyIG1haWw7XHJcbiAgICAgICAgdmFyIG5vdyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdmFyIGVycjtcclxuXHJcbiAgICAgICAgd2hpbGUgKCFlcnIgJiYgIW1haWwgJiYgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSBub3cpIDwgdGltZW91dCkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IGltYXBzLmNvbm5lY3QoX2NvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLm9wZW5Cb3goJ0lOQk9YJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gZmV0Y2ggdW5zZWVuIGVtYWlscyBmcm9tIHRoZSBsYXN0IHNpbmNlTWludXRlc1xyXG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBzdGFydERhdGUuc2V0VGltZShEYXRlLm5vdygpIC0gKHNpbmNlTWludXRlcyAqIDYwICogMTAwMCkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnREYXRlID0gc3RhcnREYXRlLnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc2VhcmNoQ3JpdGVyaWEgPSBbJ1VOU0VFTicsIFsnU0lOQ0UnLCBzdGFydERhdGVdXTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBmZXRjaCBjZXJ0YWluIGhlYWRlcnMgYW5kIHN0cmlwcGVkIGRvd24gYm9keVxyXG4gICAgICAgICAgICAgICAgdmFyIGZldGNoT3B0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBib2RpZXM6IFsnSEVBREVSLkZJRUxEUyAoRlJPTSBUTyBTVUJKRUNUIERBVEUpJywgJ1RFWFQnXSxcclxuICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Q6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWFya1NlZW46IGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBjb25uZWN0aW9uLnNlYXJjaChzZWFyY2hDcml0ZXJpYSwgZmV0Y2hPcHRpb25zKTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlclBhcnQgPSBfLmZpbmQocmVzdWx0LnBhcnRzLCB7ICd3aGljaCc6IGZldGNoT3B0aW9ucy5ib2RpZXNbMF0gfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keVBhcnQgPSBfLmZpbmQocmVzdWx0LnBhcnRzLCB7ICd3aGljaCc6IGZldGNoT3B0aW9ucy5ib2RpZXNbMV0gfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gcmVzdWx0LmF0dHJpYnV0ZXMudWlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkSGVhZGVyID0gJ0ltYXAtSWQ6ICcraWQrJ1xcclxcbic7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2ltcGxlID0gYXdhaXQgc2ltcGxlUGFyc2VyKGlkSGVhZGVyK2JvZHlQYXJ0LmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpbWFwcy5nZXRQYXJ0cyhyZXN1bHQuYXR0cmlidXRlcy5zdHJ1Y3QpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuZGlzcG9zaXRpb24gJiYgcGFydC5kaXNwb3NpdGlvbi50eXBlLnRvVXBwZXJDYXNlKCkgPT09ICdBVFRBQ0hNRU5UJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydERhdGEgPSBhd2FpdCBjb25uZWN0aW9uLmdldFBhcnREYXRhKHJlc3VsdCwgcGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50cy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZTogcGFydC5kaXNwb3NpdGlvbi5wYXJhbXMuZmlsZW5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcGFydERhdGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYm9keTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dEFzSHRtbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2ltcGxlLmh0bWwgfHwgc2ltcGxlLnRleHQgfHwgc2ltcGxlLnRleHRBc0h0bWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFyc2VkIHN1Y2Nlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGJvZHlQYXJ0LnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSBzaW1wbGUuaHRtbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFzSHRtbCA9IHNpbXBsZS50ZXh0QXNIdG1sO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IHBhcnNlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYm9keVBhcnQuYm9keTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJQYXJ0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmplY3QgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWJqZWN0LmNvbnN0cnVjdG9yLm5hbWUgPT09ICdSZWdFeHAnICYmIHN1YmplY3QudGVzdChoZWFkZXJQYXJ0LmJvZHkuc3ViamVjdFswXSkpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YmplY3QgPT09IGhlYWRlclBhcnQuYm9keS5zdWJqZWN0WzBdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0byA9IGhlYWRlclBhcnQuYm9keS50byA/IGhlYWRlclBhcnQuYm9keS50b1swXSA6IG51bGw7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tOiBoZWFkZXJQYXJ0LmJvZHkuZnJvbVswXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bzogdG8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViamVjdDogaGVhZGVyUGFydC5ib2R5LnN1YmplY3RbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZTogaGVhZGVyUGFydC5ib2R5LmRhdGVbMF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYm9keSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50czogYXR0YWNobWVudHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFzSHRtbDogdGV4dEFzSHRtbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sOiBodG1sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBlcnIgPSBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRU1BSUxfRVJST1IsIGVyci50b1N0cmluZygpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFtYWlsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVElNRU9VVCwgXCJDb3VsZG4ndCBnZXQgYW4gZW1haWwgd2l0aGluIFwiICsgdGltZW91dCArICcgbXMuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWFpbDtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
require("source-map-support/register");
|
|
9
|
-
|
|
10
|
-
var _OxygenModule = _interopRequireDefault(require("../core/OxygenModule"));
|
|
11
|
-
|
|
12
|
-
var _ModuleError = _interopRequireDefault(require("../errors/ModuleError"));
|
|
13
|
-
|
|
14
|
-
var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
|
|
15
|
-
|
|
16
|
-
var _helper = _interopRequireDefault(require("../errors/helper"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
/*
|
|
21
|
-
* Copyright (C) 2015-present 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
|
-
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @name eyes
|
|
31
|
-
* @description Provides access to Applitools Eyes service.
|
|
32
|
-
*/
|
|
33
|
-
const DEFAULT_VIEWPORT = {
|
|
34
|
-
width: 1440,
|
|
35
|
-
height: 900
|
|
36
|
-
};
|
|
37
|
-
const MODULE_NAME = 'eyes';
|
|
38
|
-
|
|
39
|
-
class ApplitoolsModule extends _OxygenModule.default {
|
|
40
|
-
constructor(options, context, rs, logger, modules, services) {
|
|
41
|
-
super(options, context, rs, logger, modules, services); // this module doesn't require calling init() method
|
|
42
|
-
|
|
43
|
-
this._eyes = null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
get name() {
|
|
47
|
-
return MODULE_NAME;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @summary Initializes Applitools Eyes session.
|
|
51
|
-
* @function init
|
|
52
|
-
* @param {string|object} module - A module name or a reference to the mododule to be associated with Eyes current session.
|
|
53
|
-
* @param {apiKey} [apiKey] - An optional Applitools API Key.
|
|
54
|
-
* If this parameter is not provided, API Key must be specified in the test configuration file.
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
async init(module, apiKey = null) {
|
|
59
|
-
this._eyesConfig = this.options.applitoolsOpts;
|
|
60
|
-
|
|
61
|
-
if (!this.options.applitoolsOpts) {
|
|
62
|
-
throw new _ModuleError.default('Applitools settings are missing.');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
this._viewport = Object.assign(DEFAULT_VIEWPORT, this._eyesConfig.viewport || {});
|
|
66
|
-
this._apiKey = apiKey || this.options.applitoolsKey || this._eyesConfig.key || process.env.APPLITOOLS_KEY || null;
|
|
67
|
-
|
|
68
|
-
if (!this._apiKey) {
|
|
69
|
-
throw new _ModuleError.default('API key is missing. To use Applitools service, you must specify Applitools API key.');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (typeof module === 'string') {
|
|
73
|
-
if (Object.prototype.hasOwnProperty.call(this.modules, module)) {
|
|
74
|
-
module = this.modules[module];
|
|
75
|
-
} else {
|
|
76
|
-
throw new _ModuleError.default(`Module not found: ${module}.`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (typeof module.getDriver !== 'function') {
|
|
81
|
-
throw new _ModuleError.default(`The module "${module.name}" does not have "getDriver" function implemented.`);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const driver = module.getDriver();
|
|
85
|
-
this._driver = driver;
|
|
86
|
-
|
|
87
|
-
const Eyes = require('@applitools/eyes-webdriverio').Eyes;
|
|
88
|
-
|
|
89
|
-
this._eyes = new Eyes();
|
|
90
|
-
|
|
91
|
-
this._eyes.setApiKey(this._apiKey);
|
|
92
|
-
|
|
93
|
-
let appName = 'Oxygen App';
|
|
94
|
-
let testName = 'Oxygen Test';
|
|
95
|
-
|
|
96
|
-
if (this.options.appName && typeof this.options.appName === 'string') {
|
|
97
|
-
appName = this.options.appName;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (this.options.name && typeof this.options.name === 'string') {
|
|
101
|
-
testName = this.options.name;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
try {
|
|
105
|
-
await driver.call(() => this._eyes.open(driver, appName, testName, this._viewport));
|
|
106
|
-
} catch (e) {
|
|
107
|
-
throw new _ModuleError.default(`Failed to initialize "eyes" module: ${e.message}`);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
super.init();
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* @summary Closes Applitools Eyes session, terminates the sequence of checkpoints, and then waits for and returns the test results.
|
|
114
|
-
* @function dispose
|
|
115
|
-
* @return {TestResult} Eyes test result.
|
|
116
|
-
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
async dispose() {
|
|
120
|
-
if (!this.isInitialized || !this._eyes) {
|
|
121
|
-
return;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
let results = null;
|
|
125
|
-
|
|
126
|
-
try {
|
|
127
|
-
results = this._eyes.close(false);
|
|
128
|
-
} finally {
|
|
129
|
-
this._eyes.abortIfNotClosed();
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
this._eyes = null;
|
|
133
|
-
super.dispose();
|
|
134
|
-
return results;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* @summary Preform visual validation for a certain target.
|
|
138
|
-
* @function check
|
|
139
|
-
* @param {string} name - A name to be associated with the match.
|
|
140
|
-
* @param {Target} [target] - An optional target instance which describes whether we want a window/region/frame.
|
|
141
|
-
* @return {boolean} A promise which is resolved when the validation is finished.
|
|
142
|
-
*/
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
async check(name, target = null) {
|
|
146
|
-
if (!this._eyes) {
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const Target = require('@applitools/eyes-webdriverio').Target;
|
|
151
|
-
|
|
152
|
-
const result = await this._eyes.check(name, target || Target.window().fully());
|
|
153
|
-
|
|
154
|
-
if (result._asExpected) {
|
|
155
|
-
return true;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, null);
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* @summary Takes a snapshot of the application under test and matches it with
|
|
162
|
-
* the expected output.
|
|
163
|
-
* @function checkWindow
|
|
164
|
-
* @param {string} [name=] - An optional tag to be associated with the snapshot.
|
|
165
|
-
* @param {number} [matchTimeout=-1] - The amount of time to retry matching (Milliseconds).
|
|
166
|
-
* @return {boolean} A promise which is resolved when the validation is finished.
|
|
167
|
-
*/
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
async checkWindow(name, matchTimeout) {
|
|
171
|
-
if (!this._eyes) {
|
|
172
|
-
return false;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const result = await this._driver.call(async () => {
|
|
176
|
-
return await this._eyes.checkWindow(name, matchTimeout);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
if (result._asExpected) {
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, null);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
exports.default = ApplitoolsModule;
|
|
189
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1leWVzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfVklFV1BPUlQiLCJ3aWR0aCIsImhlaWdodCIsIk1PRFVMRV9OQU1FIiwiQXBwbGl0b29sc01vZHVsZSIsIk94eWdlbk1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsIl9leWVzIiwibmFtZSIsImluaXQiLCJtb2R1bGUiLCJhcGlLZXkiLCJfZXllc0NvbmZpZyIsImFwcGxpdG9vbHNPcHRzIiwiTW9kdWxlRXJyb3IiLCJfdmlld3BvcnQiLCJPYmplY3QiLCJhc3NpZ24iLCJ2aWV3cG9ydCIsIl9hcGlLZXkiLCJhcHBsaXRvb2xzS2V5Iiwia2V5IiwicHJvY2VzcyIsImVudiIsIkFQUExJVE9PTFNfS0VZIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0RHJpdmVyIiwiZHJpdmVyIiwiX2RyaXZlciIsIkV5ZXMiLCJyZXF1aXJlIiwic2V0QXBpS2V5IiwiYXBwTmFtZSIsInRlc3ROYW1lIiwib3BlbiIsImUiLCJtZXNzYWdlIiwiZGlzcG9zZSIsImlzSW5pdGlhbGl6ZWQiLCJyZXN1bHRzIiwiY2xvc2UiLCJhYm9ydElmTm90Q2xvc2VkIiwiY2hlY2siLCJ0YXJnZXQiLCJUYXJnZXQiLCJyZXN1bHQiLCJ3aW5kb3ciLCJmdWxseSIsIl9hc0V4cGVjdGVkIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIkFTU0VSVF9FUlJPUiIsImNoZWNrV2luZG93IiwibWF0Y2hUaW1lb3V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFjQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQWpCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBT0EsTUFBTUEsZ0JBQWdCLEdBQUc7QUFDckJD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S0FBS3hDLEtBQUwsQ0FBV3FDLEtBQVgsQ0FBaUJwQyxJQUFqQixFQUF1QnFDLE1BQU0sSUFBSUMsTUFBTSxDQUFDRSxNQUFQLEdBQWdCQyxLQUFoQixFQUFqQyxDQUF0Qjs7QUFDQSxRQUFJRixNQUFNLENBQUNHLFdBQVgsRUFBd0I7QUFDcEIsYUFBTyxJQUFQO0FBQ0g7O0FBQ0QsVUFBTSxJQUFJQyxvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQkMsWUFBaEMsRUFBOEMsSUFBOUMsQ0FBTjtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ3FCLFFBQVhDLFdBQVcsQ0FBQy9DLElBQUQsRUFBT2dELFlBQVAsRUFBcUI7QUFDbEMsUUFBSSxDQUFDLEtBQUtqRCxLQUFWLEVBQWlCO0FBQ2IsYUFBTyxLQUFQO0FBQ0g7O0FBRUQsVUFBTXdDLE1BQU0sR0FBRyxNQUFNLEtBQUtqQixPQUFMLENBQWFILElBQWIsQ0FBa0IsWUFBVztBQUM5QyxhQUFPLE1BQU0sS0FBS3BCLEtBQUwsQ0FBV2dELFdBQVgsQ0FBdUIvQyxJQUF2QixFQUE2QmdELFlBQTdCLENBQWI7QUFDSCxLQUZvQixDQUFyQjs7QUFJQSxRQUFJVCxNQUFNLENBQUNHLFdBQVgsRUFBd0I7QUFDcEIsYUFBTyxJQUFQO0FBQ0g7O0FBQ0QsVUFBTSxJQUFJQyxvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQkMsWUFBaEMsRUFBOEMsSUFBOUMsQ0FBTjtBQUNIOztBQTdIc0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBleWVzXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBhY2Nlc3MgdG8gQXBwbGl0b29scyBFeWVzIHNlcnZpY2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0IE94eWdlbk1vZHVsZSBmcm9tICcuLi9jb3JlL094eWdlbk1vZHVsZSc7XHJcbmltcG9ydCBNb2R1bGVFcnJvciBmcm9tICcuLi9lcnJvcnMvTW9kdWxlRXJyb3InO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5pbXBvcnQgZXJySGVscGVyIGZyb20gJy4uL2Vycm9ycy9oZWxwZXInO1xyXG5cclxuY29uc3QgREVGQVVMVF9WSUVXUE9SVCA9IHtcclxuICAgIHdpZHRoOiAxNDQwLFxyXG4gICAgaGVpZ2h0OiA5MDBcclxufTtcclxuY29uc3QgTU9EVUxFX05BTUUgPSAnZXllcyc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcHBsaXRvb2xzTW9kdWxlIGV4dGVuZHMgT3h5Z2VuTW9kdWxlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpO1xyXG4gICAgICAgIC8vIHRoaXMgbW9kdWxlIGRvZXNuJ3QgcmVxdWlyZSBjYWxsaW5nIGluaXQoKSBtZXRob2RcclxuICAgICAgICB0aGlzLl9leWVzID0gbnVsbDtcclxuICAgIH1cclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBNT0RVTEVfTkFNRTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgSW5pdGlhbGl6ZXMgQXBwbGl0b29scyBFeWVzIHNlc3Npb24uXHJcbiAgICAgKiBAZnVuY3Rpb24gaW5pdFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBtb2R1bGUgLSBBIG1vZHVsZSBuYW1lIG9yIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2RvZHVsZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggRXllcyBjdXJyZW50IHNlc3Npb24uXHJcbiAgICAgKiBAcGFyYW0ge2FwaUtleX0gW2FwaUtleV0gLSBBbiBvcHRpb25hbCBBcHBsaXRvb2xzIEFQSSBLZXkuIFxyXG4gICAgICogSWYgdGhpcyBwYXJhbWV0ZXIgaXMgbm90IHByb3ZpZGVkLCBBUEkgS2V5IG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSB0ZXN0IGNvbmZpZ3VyYXRpb24gZmlsZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgaW5pdChtb2R1bGUsIGFwaUtleSA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLl9leWVzQ29uZmlnID0gdGhpcy5vcHRpb25zLmFwcGxpdG9vbHNPcHRzO1xyXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmFwcGxpdG9vbHNPcHRzKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBNb2R1bGVFcnJvcignQXBwbGl0b29scyBzZXR0aW5ncyBhcmUgbWlzc2luZy4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fdmlld3BvcnQgPSBPYmplY3QuYXNzaWduKERFRkFVTFRfVklFV1BPUlQsIHRoaXMuX2V5ZXNDb25maWcudmlld3BvcnQgfHwge30pO1xyXG4gICAgICAgIHRoaXMuX2FwaUtleSA9IGFwaUtleSB8fCB0aGlzLm9wdGlvbnMuYXBwbGl0b29sc0tleSB8fCB0aGlzLl9leWVzQ29uZmlnLmtleSB8fCBwcm9jZXNzLmVudi5BUFBMSVRPT0xTX0tFWSB8fCBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2FwaUtleSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoJ0FQSSBrZXkgaXMgbWlzc2luZy4gVG8gdXNlIEFwcGxpdG9vbHMgc2VydmljZSwgeW91IG11c3Qgc3BlY2lmeSBBcHBsaXRvb2xzIEFQSSBrZXkuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kdWxlID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMubW9kdWxlcywgbW9kdWxlKSkge1xyXG4gICAgICAgICAgICAgICAgbW9kdWxlID0gdGhpcy5tb2R1bGVzW21vZHVsZV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoYE1vZHVsZSBub3QgZm91bmQ6ICR7bW9kdWxlfS5gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIG1vZHVsZS5nZXREcml2ZXIgIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZUVycm9yKGBUaGUgbW9kdWxlIFwiJHttb2R1bGUubmFtZX1cIiBkb2VzIG5vdCBoYXZlIFwiZ2V0RHJpdmVyXCIgZnVuY3Rpb24gaW1wbGVtZW50ZWQuYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRyaXZlciA9IG1vZHVsZS5nZXREcml2ZXIoKTtcclxuICAgICAgICB0aGlzLl9kcml2ZXIgPSBkcml2ZXI7XHJcblxyXG4gICAgICAgIGNvbnN0IEV5ZXMgPSByZXF1aXJlKCdAYXBwbGl0b29scy9leWVzLXdlYmRyaXZlcmlvJykuRXllcztcclxuICAgICAgICB0aGlzLl9leWVzID0gbmV3IEV5ZXMoKTtcclxuICAgICAgICB0aGlzLl9leWVzLnNldEFwaUtleSh0aGlzLl9hcGlLZXkpO1xyXG5cclxuICAgICAgICBsZXQgYXBwTmFtZSA9ICdPeHlnZW4gQXBwJztcclxuICAgICAgICBsZXQgdGVzdE5hbWUgPSAnT3h5Z2VuIFRlc3QnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmFwcE5hbWUgJiYgdHlwZW9mIHRoaXMub3B0aW9ucy5hcHBOYW1lID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBhcHBOYW1lID0gdGhpcy5vcHRpb25zLmFwcE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubmFtZSAmJiB0eXBlb2YgdGhpcy5vcHRpb25zLm5hbWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRlc3ROYW1lID0gdGhpcy5vcHRpb25zLm5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGRyaXZlci5jYWxsKCgpID0+IHRoaXMuX2V5ZXMub3Blbihkcml2ZXIsIGFwcE5hbWUsIHRlc3ROYW1lLCB0aGlzLl92aWV3cG9ydCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTW9kdWxlRXJyb3IoYEZhaWxlZCB0byBpbml0aWFsaXplIFwiZXllc1wiIG1vZHVsZTogJHtlLm1lc3NhZ2V9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN1cGVyLmluaXQoKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQ2xvc2VzIEFwcGxpdG9vbHMgRXllcyBzZXNzaW9uLCB0ZXJtaW5hdGVzIHRoZSBzZXF1ZW5jZSBvZiBjaGVja3BvaW50cywgYW5kIHRoZW4gd2FpdHMgZm9yIGFuZCByZXR1cm5zIHRoZSB0ZXN0IHJlc3VsdHMuXHJcbiAgICAgKiBAZnVuY3Rpb24gZGlzcG9zZVxyXG4gICAgICogQHJldHVybiB7VGVzdFJlc3VsdH0gRXllcyB0ZXN0IHJlc3VsdC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgZGlzcG9zZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNJbml0aWFsaXplZCB8fCAhdGhpcy5fZXllcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcmVzdWx0cyA9IG51bGw7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLl9leWVzLmNsb3NlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2V5ZXMuYWJvcnRJZk5vdENsb3NlZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9leWVzID0gbnVsbDtcclxuICAgICAgICBzdXBlci5kaXNwb3NlKCk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBQcmVmb3JtIHZpc3VhbCB2YWxpZGF0aW9uIGZvciBhIGNlcnRhaW4gdGFyZ2V0LlxyXG4gICAgICogQGZ1bmN0aW9uIGNoZWNrXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEEgbmFtZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIG1hdGNoLlxyXG4gICAgICogQHBhcmFtIHtUYXJnZXR9IFt0YXJnZXRdIC0gQW4gb3B0aW9uYWwgdGFyZ2V0IGluc3RhbmNlIHdoaWNoIGRlc2NyaWJlcyB3aGV0aGVyIHdlIHdhbnQgYSB3aW5kb3cvcmVnaW9uL2ZyYW1lLlxyXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gQSBwcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIHdoZW4gdGhlIHZhbGlkYXRpb24gaXMgZmluaXNoZWQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNoZWNrKG5hbWUsIHRhcmdldCA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2V5ZXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBUYXJnZXQgPSByZXF1aXJlKCdAYXBwbGl0b29scy9leWVzLXdlYmRyaXZlcmlvJykuVGFyZ2V0O1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9ICBhd2FpdCB0aGlzLl9leWVzLmNoZWNrKG5hbWUsIHRhcmdldCB8fCBUYXJnZXQud2luZG93KCkuZnVsbHkoKSk7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5fYXNFeHBlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgVGFrZXMgYSBzbmFwc2hvdCBvZiB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdCBhbmQgbWF0Y2hlcyBpdCB3aXRoXHJcbiAgICAgKiB0aGUgZXhwZWN0ZWQgb3V0cHV0LlxyXG4gICAgICogQGZ1bmN0aW9uIGNoZWNrV2luZG93XHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW25hbWU9XSAtIEFuIG9wdGlvbmFsIHRhZyB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNuYXBzaG90LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFttYXRjaFRpbWVvdXQ9LTFdIC0gVGhlIGFtb3VudCBvZiB0aW1lIHRvIHJldHJ5IG1hdGNoaW5nIChNaWxsaXNlY29uZHMpLlxyXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gQSBwcm9taXNlIHdoaWNoIGlzIHJlc29sdmVkIHdoZW4gdGhlIHZhbGlkYXRpb24gaXMgZmluaXNoZWQuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGNoZWNrV2luZG93KG5hbWUsIG1hdGNoVGltZW91dCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fZXllcykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLl9kcml2ZXIuY2FsbChhc3luYygpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2V5ZXMuY2hlY2tXaW5kb3cobmFtZSwgbWF0Y2hUaW1lb3V0KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdC5fYXNFeHBlY3RlZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG51bGwpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|