israeli-bank-scrapers 4.2.2 → 4.3.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/README.md +14 -0
- package/lib/assertNever.js +1 -2
- package/lib/constants.js +1 -1
- package/lib/definitions.d.ts +5 -0
- package/lib/definitions.js +7 -4
- package/lib/helpers/dates.js +1 -7
- package/lib/helpers/debug.js +1 -4
- package/lib/helpers/elements-interactions.js +5 -27
- package/lib/helpers/fetch.js +1 -21
- package/lib/helpers/navigation.js +1 -9
- package/lib/helpers/storage.js +1 -3
- package/lib/helpers/transactions.js +1 -17
- package/lib/helpers/waiting.js +4 -12
- package/lib/index.js +2 -12
- package/lib/scrapers/amex.js +1 -7
- package/lib/scrapers/amex.test.js +1 -14
- package/lib/scrapers/base-beinleumi-group.js +4 -67
- package/lib/scrapers/base-isracard-amex.js +1 -75
- package/lib/scrapers/base-scraper-with-browser.js +14 -82
- package/lib/scrapers/base-scraper-with-browser.test.js +13 -23
- package/lib/scrapers/base-scraper.js +13 -36
- package/lib/scrapers/behatsdaa.js +5 -26
- package/lib/scrapers/behatsdaa.test.js +1 -10
- package/lib/scrapers/beinleumi.js +1 -11
- package/lib/scrapers/beinleumi.test.js +1 -14
- package/lib/scrapers/beyahad-bishvilha.js +1 -35
- package/lib/scrapers/beyahad-bishvilha.test.js +1 -14
- package/lib/scrapers/discount.js +1 -31
- package/lib/scrapers/discount.test.js +1 -14
- package/lib/scrapers/errors.js +1 -5
- package/lib/scrapers/factory.js +4 -39
- package/lib/scrapers/factory.test.js +2 -4
- package/lib/scrapers/hapoalim.js +4 -50
- package/lib/scrapers/hapoalim.test.js +1 -14
- package/lib/scrapers/interface.js +1 -1
- package/lib/scrapers/isracard.js +1 -7
- package/lib/scrapers/isracard.test.js +1 -14
- package/lib/scrapers/leumi.js +12 -44
- package/lib/scrapers/leumi.test.js +1 -14
- package/lib/scrapers/massad.js +1 -11
- package/lib/scrapers/max.d.ts +20 -0
- package/lib/scrapers/max.js +76 -111
- package/lib/scrapers/max.test.js +21 -16
- package/lib/scrapers/mercantile.d.ts +20 -0
- package/lib/scrapers/mercantile.js +21 -0
- package/lib/scrapers/mercantile.test.d.ts +1 -0
- package/lib/scrapers/mercantile.test.js +48 -0
- package/lib/scrapers/mizrahi.js +14 -40
- package/lib/scrapers/mizrahi.test.js +1 -15
- package/lib/scrapers/one-zero-queries.js +1 -1
- package/lib/scrapers/one-zero.js +2 -54
- package/lib/scrapers/one-zero.test.js +1 -14
- package/lib/scrapers/otsar-hahayal.js +9 -47
- package/lib/scrapers/otsar-hahayal.test.js +1 -14
- package/lib/scrapers/union-bank.js +2 -60
- package/lib/scrapers/union-bank.test.js +1 -14
- package/lib/scrapers/visa-cal.js +3 -55
- package/lib/scrapers/visa-cal.test.js +3 -16
- package/lib/scrapers/yahav.js +25 -52
- package/lib/scrapers/yahav.test.js +1 -14
- package/lib/transactions.js +1 -4
- package/package.json +2 -7
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.promise");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.string.trim");
|
|
6
|
-
|
|
7
5
|
var _isracard = _interopRequireDefault(require("./isracard"));
|
|
8
|
-
|
|
9
6
|
var _testsUtils = require("../tests/tests-utils");
|
|
10
|
-
|
|
11
7
|
var _definitions = require("../definitions");
|
|
12
|
-
|
|
13
8
|
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
14
|
-
|
|
15
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
-
|
|
17
10
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
-
|
|
19
11
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
20
|
-
|
|
21
12
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
|
-
|
|
23
13
|
const COMPANY_ID = 'isracard'; // TODO this property should be hard-coded in the provider
|
|
24
|
-
|
|
25
14
|
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
26
15
|
describe('Isracard legacy scraper', () => {
|
|
27
16
|
beforeAll(() => {
|
|
@@ -37,7 +26,6 @@ describe('Isracard legacy scraper', () => {
|
|
|
37
26
|
const options = _objectSpread({}, testsConfig.options, {
|
|
38
27
|
companyId: COMPANY_ID
|
|
39
28
|
});
|
|
40
|
-
|
|
41
29
|
const scraper = new _isracard.default(options);
|
|
42
30
|
const result = await scraper.scrape({
|
|
43
31
|
id: 'e10s12',
|
|
@@ -52,7 +40,6 @@ describe('Isracard legacy scraper', () => {
|
|
|
52
40
|
const options = _objectSpread({}, testsConfig.options, {
|
|
53
41
|
companyId: COMPANY_ID
|
|
54
42
|
});
|
|
55
|
-
|
|
56
43
|
const scraper = new _isracard.default(options);
|
|
57
44
|
const result = await scraper.scrape(testsConfig.credentials.isracard);
|
|
58
45
|
expect(result).toBeDefined();
|
|
@@ -62,4 +49,4 @@ describe('Isracard legacy scraper', () => {
|
|
|
62
49
|
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
63
50
|
});
|
|
64
51
|
});
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaXNyYWNhcmQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0c1V0aWxzIiwiX2RlZmluaXRpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiZm9yRWFjaCIsImtleSIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiQ09NUEFOWV9JRCIsInRlc3RzQ29uZmlnIiwiZ2V0VGVzdHNDb25maWciLCJkZXNjcmliZSIsImJlZm9yZUFsbCIsImV4dGVuZEFzeW5jVGltZW91dCIsInRlc3QiLCJleHBlY3QiLCJTQ1JBUEVSUyIsImlzcmFjYXJkIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJJc3JhY2FyZFNjcmFwZXIiLCJyZXN1bHQiLCJzY3JhcGUiLCJpZCIsInBhc3N3b3JkIiwiY2FyZDZEaWdpdHMiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImV4cG9ydFRyYW5zYWN0aW9ucyIsImFjY291bnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2lzcmFjYXJkLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IElzcmFjYXJkU2NyYXBlciBmcm9tICcuL2lzcmFjYXJkJztcbmltcG9ydCB7XG4gIG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyxcbn0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ2lzcmFjYXJkJzsgLy8gVE9ETyB0aGlzIHByb3BlcnR5IHNob3VsZCBiZSBoYXJkLWNvZGVkIGluIHRoZSBwcm92aWRlclxuY29uc3QgdGVzdHNDb25maWcgPSBnZXRUZXN0c0NvbmZpZygpO1xuXG5kZXNjcmliZSgnSXNyYWNhcmQgbGVnYWN5IHNjcmFwZXInLCAoKSA9PiB7XG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgZXh0ZW5kQXN5bmNUaW1lb3V0KCk7IC8vIFRoZSBkZWZhdWx0IHRpbWVvdXQgaXMgNSBzZWNvbmRzIHBlciBhc3luYyB0ZXN0LCB0aGlzIGZ1bmN0aW9uIGV4dGVuZHMgdGhlIHRpbWVvdXQgdmFsdWVcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIGV4cG9zZSBsb2dpbiBmaWVsZHMgaW4gc2NyYXBlcnMgY29uc3RhbnQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmlzcmFjYXJkKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5pc3JhY2FyZC5sb2dpbkZpZWxkcykudG9Db250YWluKCdpZCcpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5pc3JhY2FyZC5sb2dpbkZpZWxkcykudG9Db250YWluKCdjYXJkNkRpZ2l0cycpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5pc3JhY2FyZC5sb2dpbkZpZWxkcykudG9Db250YWluKCdwYXNzd29yZCcpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQsIChjb25maWcpID0+IGNvbmZpZy5jb21wYW55QVBJLmludmFsaWRQYXNzd29yZCkoJ3Nob3VsZCBmYWlsIG9uIGludmFsaWQgdXNlci9wYXNzd29yZFwiJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IElzcmFjYXJkU2NyYXBlcihvcHRpb25zKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgaWQ6ICdlMTBzMTInLCBwYXNzd29yZDogJzNmM3NzM2QnLCBjYXJkNkRpZ2l0czogJzEyMzQ1NicgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChyZXN1bHQuc3VjY2VzcykudG9CZUZhbHN5KCk7XG4gICAgZXhwZWN0KHJlc3VsdC5lcnJvclR5cGUpLnRvQmUoTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZCk7XG4gIH0pO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCkoJ3Nob3VsZCBzY3JhcGUgdHJhbnNhY3Rpb25zXCInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgSXNyYWNhcmRTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHRlc3RzQ29uZmlnLmNyZWRlbnRpYWxzLmlzcmFjYXJkKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHVCQUFBLEdBQUFILE9BQUE7QUFBMkQsU0FBQUQsdUJBQUFLLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxRQUFBQyxNQUFBLEVBQUFDLGNBQUEsUUFBQUMsSUFBQSxHQUFBQyxNQUFBLENBQUFELElBQUEsQ0FBQUYsTUFBQSxPQUFBRyxNQUFBLENBQUFDLHFCQUFBLFFBQUFDLE9BQUEsR0FBQUYsTUFBQSxDQUFBQyxxQkFBQSxDQUFBSixNQUFBLE9BQUFDLGNBQUEsRUFBQUksT0FBQSxHQUFBQSxPQUFBLENBQUFDLE1BQUEsV0FBQUMsR0FBQSxXQUFBSixNQUFBLENBQUFLLHdCQUFBLENBQUFSLE1BQUEsRUFBQU8sR0FBQSxFQUFBRSxVQUFBLE1BQUFQLElBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFB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
|
package/lib/scrapers/leumi.js
CHANGED
|
@@ -1,32 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.array.iterator");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.promise");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.string.replace");
|
|
8
|
-
|
|
9
6
|
Object.defineProperty(exports, "__esModule", {
|
|
10
7
|
value: true
|
|
11
8
|
});
|
|
12
9
|
exports.default = void 0;
|
|
13
|
-
|
|
14
10
|
var _moment = _interopRequireDefault(require("moment"));
|
|
15
|
-
|
|
16
11
|
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
17
|
-
|
|
18
12
|
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
19
|
-
|
|
20
13
|
var _constants = require("../constants");
|
|
21
|
-
|
|
22
14
|
var _transactions = require("../transactions");
|
|
23
|
-
|
|
24
15
|
var _navigation = require("../helpers/navigation");
|
|
25
|
-
|
|
26
16
|
var _debug = require("../helpers/debug");
|
|
27
|
-
|
|
28
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
-
|
|
30
18
|
const debug = (0, _debug.getDebug)('leumi');
|
|
31
19
|
const BASE_URL = 'https://hb2.bankleumi.co.il';
|
|
32
20
|
const LOGIN_URL = 'https://www.leumi.co.il/';
|
|
@@ -35,7 +23,6 @@ const FILTERED_TRANSACTIONS_URL = `${BASE_URL}/ChannelWCF/Broker.svc/ProcessRequ
|
|
|
35
23
|
const DATE_FORMAT = 'DD.MM.YY';
|
|
36
24
|
const ACCOUNT_BLOCKED_MSG = 'המנוי חסום';
|
|
37
25
|
const INVALID_PASSWORD_MSG = 'אחד או יותר מפרטי ההזדהות שמסרת שגויים. ניתן לנסות שוב';
|
|
38
|
-
|
|
39
26
|
function getPossibleLoginResults() {
|
|
40
27
|
const urls = {
|
|
41
28
|
[_baseScraperWithBrowser.LoginResults.Success]: [/ebanking\/SO\/SPA.aspx/i],
|
|
@@ -43,33 +30,28 @@ function getPossibleLoginResults() {
|
|
|
43
30
|
if (!options || !options.page) {
|
|
44
31
|
throw new Error('missing page options argument');
|
|
45
32
|
}
|
|
46
|
-
|
|
47
33
|
const errorMessage = await (0, _elementsInteractions.pageEvalAll)(options.page, 'svg#Capa_1', '', element => {
|
|
48
34
|
var _ref, _element$, _element$$parentEleme;
|
|
49
|
-
|
|
50
35
|
return (_ref = (_element$ = element[0]) === null || _element$ === void 0 ? void 0 : (_element$$parentEleme = _element$.parentElement) === null || _element$$parentEleme === void 0 ? void 0 : _element$$parentEleme.children[1]) === null || _ref === void 0 ? void 0 : _ref.innerText;
|
|
51
36
|
});
|
|
52
37
|
return errorMessage === null || errorMessage === void 0 ? void 0 : errorMessage.startsWith(INVALID_PASSWORD_MSG);
|
|
53
38
|
}],
|
|
54
|
-
[_baseScraperWithBrowser.LoginResults.AccountBlocked]: [
|
|
39
|
+
[_baseScraperWithBrowser.LoginResults.AccountBlocked]: [
|
|
40
|
+
// NOTICE - might not be relevant starting the Leumi re-design during 2022 Sep
|
|
55
41
|
async options => {
|
|
56
42
|
if (!options || !options.page) {
|
|
57
43
|
throw new Error('missing page options argument');
|
|
58
44
|
}
|
|
59
|
-
|
|
60
45
|
const errorMessage = await (0, _elementsInteractions.pageEvalAll)(options.page, '.errHeader', '', label => {
|
|
61
46
|
var _ref2;
|
|
62
|
-
|
|
63
47
|
return (_ref2 = label[0]) === null || _ref2 === void 0 ? void 0 : _ref2.innerText;
|
|
64
48
|
});
|
|
65
49
|
return errorMessage === null || errorMessage === void 0 ? void 0 : errorMessage.startsWith(ACCOUNT_BLOCKED_MSG);
|
|
66
50
|
}],
|
|
67
51
|
[_baseScraperWithBrowser.LoginResults.ChangePassword]: ['https://hb2.bankleumi.co.il/authenticate'] // NOTICE - might not be relevant starting the Leumi re-design during 2022 Sep
|
|
68
|
-
|
|
69
52
|
};
|
|
70
53
|
return urls;
|
|
71
54
|
}
|
|
72
|
-
|
|
73
55
|
function createLoginFields(credentials) {
|
|
74
56
|
return [{
|
|
75
57
|
selector: 'input[placeholder="שם משתמש"]',
|
|
@@ -79,12 +61,10 @@ function createLoginFields(credentials) {
|
|
|
79
61
|
value: credentials.password
|
|
80
62
|
}];
|
|
81
63
|
}
|
|
82
|
-
|
|
83
64
|
function extractTransactionsFromPage(transactions, status) {
|
|
84
65
|
if (transactions === null || transactions.length === 0) {
|
|
85
66
|
return [];
|
|
86
67
|
}
|
|
87
|
-
|
|
88
68
|
const result = transactions.map(rawTransaction => {
|
|
89
69
|
const date = (0, _moment.default)(rawTransaction.DateUTC).milliseconds(0).toISOString();
|
|
90
70
|
const newTransaction = {
|
|
@@ -103,7 +83,6 @@ function extractTransactionsFromPage(transactions, status) {
|
|
|
103
83
|
});
|
|
104
84
|
return result;
|
|
105
85
|
}
|
|
106
|
-
|
|
107
86
|
function hangProcess(timeout) {
|
|
108
87
|
return new Promise(resolve => {
|
|
109
88
|
setTimeout(() => {
|
|
@@ -111,7 +90,6 @@ function hangProcess(timeout) {
|
|
|
111
90
|
}, timeout);
|
|
112
91
|
});
|
|
113
92
|
}
|
|
114
|
-
|
|
115
93
|
async function clickByXPath(page, xpath) {
|
|
116
94
|
await page.waitForXPath(xpath, {
|
|
117
95
|
timeout: 30000,
|
|
@@ -120,11 +98,9 @@ async function clickByXPath(page, xpath) {
|
|
|
120
98
|
const elm = await page.$x(xpath);
|
|
121
99
|
await elm[0].click();
|
|
122
100
|
}
|
|
123
|
-
|
|
124
101
|
function removeSpecialCharacters(str) {
|
|
125
102
|
return str.replace(/[^0-9/-]/g, '');
|
|
126
103
|
}
|
|
127
|
-
|
|
128
104
|
async function fetchTransactionsForAccount(page, startDate, accountId) {
|
|
129
105
|
// DEVELOPER NOTICE the account number received from the server is being altered at
|
|
130
106
|
// runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
|
|
@@ -134,8 +110,9 @@ async function fetchTransactionsForAccount(page, startDate, accountId) {
|
|
|
134
110
|
await (0, _elementsInteractions.waitUntilElementFound)(page, 'bll-radio-button', true);
|
|
135
111
|
await (0, _elementsInteractions.clickButton)(page, 'bll-radio-button:not([checked])');
|
|
136
112
|
await (0, _elementsInteractions.waitUntilElementFound)(page, 'input[formcontrolname="txtInputFrom"]', true);
|
|
137
|
-
await (0, _elementsInteractions.fillInput)(page, 'input[formcontrolname="txtInputFrom"]', startDate.format(DATE_FORMAT));
|
|
113
|
+
await (0, _elementsInteractions.fillInput)(page, 'input[formcontrolname="txtInputFrom"]', startDate.format(DATE_FORMAT));
|
|
138
114
|
|
|
115
|
+
// we must blur the from control otherwise the search will use the previous value
|
|
139
116
|
await page.focus("button[aria-label='סנן']");
|
|
140
117
|
await (0, _elementsInteractions.clickButton)(page, "button[aria-label='סנן']");
|
|
141
118
|
const finalResponse = await page.waitForResponse(response => {
|
|
@@ -156,31 +133,29 @@ async function fetchTransactionsForAccount(page, startDate, accountId) {
|
|
|
156
133
|
txns
|
|
157
134
|
};
|
|
158
135
|
}
|
|
159
|
-
|
|
160
136
|
async function fetchTransactions(page, startDate) {
|
|
161
|
-
const accounts = [];
|
|
162
|
-
// runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
|
|
137
|
+
const accounts = [];
|
|
163
138
|
|
|
139
|
+
// DEVELOPER NOTICE the account number received from the server is being altered at
|
|
140
|
+
// runtime for some accounts after 1-2 seconds so we need to hang the process for a short while.
|
|
164
141
|
await hangProcess(4000);
|
|
165
|
-
const accountsIds = await page.evaluate(() => Array.from(document.querySelectorAll('app-masked-number-combo span.display-number-li'), e => e.textContent));
|
|
142
|
+
const accountsIds = await page.evaluate(() => Array.from(document.querySelectorAll('app-masked-number-combo span.display-number-li'), e => e.textContent));
|
|
143
|
+
|
|
144
|
+
// due to a bug, the altered value might include undesired signs like & that should be removed
|
|
166
145
|
|
|
167
146
|
if (!accountsIds.length) {
|
|
168
147
|
throw new Error('Failed to extract or parse the account number');
|
|
169
148
|
}
|
|
170
|
-
|
|
171
149
|
for (const accountId of accountsIds) {
|
|
172
150
|
if (accountsIds.length > 1) {
|
|
173
151
|
// get list of accounts and check accountId
|
|
174
152
|
await clickByXPath(page, '//*[contains(@class, "number") and contains(@class, "combo-inner")]');
|
|
175
153
|
await clickByXPath(page, `//span[contains(text(), '${accountId}')]`);
|
|
176
154
|
}
|
|
177
|
-
|
|
178
|
-
accounts.push((await fetchTransactionsForAccount(page, startDate, removeSpecialCharacters(accountId))));
|
|
155
|
+
accounts.push(await fetchTransactionsForAccount(page, startDate, removeSpecialCharacters(accountId)));
|
|
179
156
|
}
|
|
180
|
-
|
|
181
157
|
return accounts;
|
|
182
158
|
}
|
|
183
|
-
|
|
184
159
|
async function navigateToLogin(page) {
|
|
185
160
|
const loginButtonSelector = '.enter-account a[originaltitle="כניסה לחשבונך"]';
|
|
186
161
|
debug('wait for homepage to click on login button');
|
|
@@ -198,12 +173,10 @@ async function navigateToLogin(page) {
|
|
|
198
173
|
debug('waiting for components of login to enter credentials');
|
|
199
174
|
await Promise.all([(0, _elementsInteractions.waitUntilElementFound)(page, 'input[placeholder="שם משתמש"]', true), (0, _elementsInteractions.waitUntilElementFound)(page, 'input[placeholder="סיסמה"]', true), (0, _elementsInteractions.waitUntilElementFound)(page, 'button[type="submit"]', true)]);
|
|
200
175
|
}
|
|
201
|
-
|
|
202
176
|
async function waitForPostLogin(page) {
|
|
203
177
|
await Promise.race([(0, _elementsInteractions.waitUntilElementFound)(page, 'a[title="דלג לחשבון"]', true, 60000), (0, _elementsInteractions.waitUntilElementFound)(page, 'div.main-content', true, 60000), page.waitForXPath(`//div[contains(string(),"${INVALID_PASSWORD_MSG}")]`), (0, _elementsInteractions.waitUntilElementFound)(page, 'form[action="/changepassword"]', true, 60000) // not sure if they kept this one
|
|
204
178
|
]);
|
|
205
179
|
}
|
|
206
|
-
|
|
207
180
|
class LeumiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
208
181
|
getLoginOptions(credentials) {
|
|
209
182
|
return {
|
|
@@ -215,14 +188,11 @@ class LeumiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
215
188
|
possibleResults: getPossibleLoginResults()
|
|
216
189
|
};
|
|
217
190
|
}
|
|
218
|
-
|
|
219
191
|
async fetchData() {
|
|
220
192
|
const minimumStartMoment = (0, _moment.default)().subtract(3, 'years').add(1, 'day');
|
|
221
193
|
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(1, 'day');
|
|
222
194
|
const startDate = this.options.startDate || defaultStartMoment.toDate();
|
|
223
|
-
|
|
224
195
|
const startMoment = _moment.default.max(minimumStartMoment, (0, _moment.default)(startDate));
|
|
225
|
-
|
|
226
196
|
await this.navigateTo(TRANSACTIONS_URL);
|
|
227
197
|
const accounts = await fetchTransactions(this.page, startMoment);
|
|
228
198
|
return {
|
|
@@ -230,9 +200,7 @@ class LeumiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
230
200
|
accounts
|
|
231
201
|
};
|
|
232
202
|
}
|
|
233
|
-
|
|
234
203
|
}
|
|
235
|
-
|
|
236
204
|
var _default = LeumiScraper;
|
|
237
205
|
exports.default = _default;
|
|
238
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9sZXVtaS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkJBU0VfVVJMIiwiTE9HSU5fVVJMIiwiVFJBTlNBQ1RJT05TX1VSTCIsIkZJTFRFUkVEX1RSQU5TQUNUSU9OU19VUkwiLCJEQVRFX0ZPUk1BVCIsIkFDQ09VTlRfQkxPQ0tFRF9NU0ciLCJJTlZBTElEX1BBU1NXT1JEX01TRyIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwicGFnZSIsIkVycm9yIiwiZXJyb3JNZXNzYWdlIiwiZWxlbWVudCIsInBhcmVudEVsZW1lbnQiLCJjaGlsZHJlbiIsImlubmVyVGV4dCIsInN0YXJ0c1dpdGgiLCJBY2NvdW50QmxvY2tlZCIsImxhYmVsIiwiQ2hhbmdlUGFzc3dvcmQiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVBhZ2UiLCJ0cmFuc2FjdGlvbnMiLCJzdGF0dXMiLCJsZW5ndGgiLCJyZXN1bHQiLCJtYXAiLCJyYXdUcmFuc2FjdGlvbiIsImRhdGUiLCJEYXRlVVRDIiwibWlsbGlzZWNvbmRzIiwidG9JU09TdHJpbmciLCJuZXdUcmFuc2FjdGlvbiIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwicHJvY2Vzc2VkRGF0ZSIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJpZGVudGlmaWVyIiwiUmVmZXJlbmNlTnVtYmVyTG9uZyIsIm1lbW8iLCJBZGRpdGlvbmFsRGF0YSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50IiwiQW1vdW50Iiwib3JpZ2luYWxBbW91bnQiLCJoYW5nUHJvY2VzcyIsInRpbWVvdXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJjbGlja0J5WFBhdGgiLCJ4cGF0aCIsIndhaXRGb3JYUGF0aCIsInZpc2libGUiLCJlbG0iLCIkeCIsImNsaWNrIiwicmVtb3ZlU3BlY2lhbENoYXJhY3RlcnMiLCJzdHIiLCJyZXBsYWNlIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwiYWNjb3VudElkIiwiZm9ybWF0IiwiZm9jdXMiLCJmaW5hbFJlc3BvbnNlIiwid2FpdEZvclJlc3BvbnNlIiwicmVzcG9uc2UiLCJ1cmwiLCJyZXF1ZXN0IiwibWV0aG9kIiwicmVzcG9uc2VKc29uIiwianNvbiIsImFjY291bnROdW1iZXIiLCJKU09OIiwicGFyc2UiLCJqc29uUmVzcCIsInBlbmRpbmdUcmFuc2FjdGlvbnMiLCJUb2RheVRyYW5zYWN0aW9uc0l0ZW1zIiwiSGlzdG9yeVRyYW5zYWN0aW9uc0l0ZW1zIiwiYmFsYW5jZSIsIkJhbGFuY2VEaXNwbGF5IiwicGFyc2VGbG9hdCIsInVuZGVmaW5lZCIsInBlbmRpbmdUeG5zIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJjb21wbGV0ZWRUeG5zIiwiQ29tcGxldGVkIiwidHhucyIsImZldGNoVHJhbnNhY3Rpb25zIiwiYWNjb3VudHMiLCJhY2NvdW50c0lkcyIsImV2YWx1YXRlIiwiQXJyYXkiLCJmcm9tIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZSIsInRleHRDb250ZW50IiwicHVzaCIsIm5hdmlnYXRlVG9Mb2dpbiIsImxvZ2luQnV0dG9uU2VsZWN0b3IiLCJsb2dpblVybCIsImhyZWYiLCJnb3RvIiwid2FpdFVudGlsIiwiYWxsIiwid2FpdEZvclBvc3RMb2dpbiIsInJhY2UiLCJMZXVtaVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJtaW5pbXVtU3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsImRlZmF1bHRTdGFydE1vbWVudCIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibW9tZW50IiwibWF4IiwibmF2aWdhdGVUbyIsInN1Y2Nlc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFJQTs7QUFDQTs7OztBQUVBLE1BQU1BLEtBQUssR0FBRyxxQkFBUyxPQUFULENBQWQ7QUFDQSxNQUFNQyxRQUFRLEdBQUcsNkJBQWpCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLDBCQUFsQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFJLEdBQUVGLFFBQVMsMERBQXJDO0FBQ0EsTUFBTUcseUJBQXlCLEdBQUksR0FBRUgsUUFBUyxpRkFBOUM7QUFFQSxNQUFNSSxXQUFXLEdBQUcsVUFBcEI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLHdEQUE3Qjs7QUFHQSxTQUFTQyx1QkFBVCxHQUFtQztBQUNqQyxRQUFNQyxJQUFxQyxHQUFHO0FBQzVDLEtBQUNDLHFDQUFhQyxPQUFkLEdBQXdCLENBQUMseUJBQUQsQ0FEb0I7QUFFNUMsS0FBQ0QscUNBQWFFLGVBQWQsR0FBZ0MsQ0FDOUIsTUFBT0MsT0FBUCxJQUFtQjtBQUNqQixVQUFJLENBQUNBLE9BQUQsSUFBWSxDQUFDQSxPQUFPLENBQUNDLElBQXpCLEVBQStCO0FBQzdCLGNBQU0sSUFBSUMsS0FBSixDQUFVLCtCQUFWLENBQU47QUFDRDs7QUFDRCxZQUFNQyxZQUFZLEdBQUcsTUFBTSx1Q0FBWUgsT0FBTyxDQUFDQyxJQUFwQixFQUEwQixZQUExQixFQUF3QyxFQUF4QyxFQUE2Q0csT0FBRCxJQUFhO0FBQUE7O0FBQ2xGLG9DQUFRQSxPQUFPLENBQUMsQ0FBRCxDQUFmLHVFQUFRLFVBQVlDLGFBQXBCLDBEQUFRLHNCQUEyQkMsUUFBM0Is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bWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIExvZ2luT3B0aW9ucyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQge1xuICBmaWxsSW5wdXQsXG4gIGNsaWNrQnV0dG9uLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHBhZ2VFdmFsQWxsLCBwYWdlRXZhbCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbGV1bWknKTtcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vaGIyLmJhbmtsZXVtaS5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cubGV1bWkuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19VUkwgPSBgJHtCQVNFX1VSTH0vZUJhbmtpbmcvU08vU1BBLmFzcHgjL3RzL0J1c2luZXNzQWNjb3VudFRyeD9XaWRnZXRQYXI9MWA7XG5jb25zdCBGSUxURVJFRF9UUkFOU0FDVElPTlNfVVJMID0gYCR7QkFTRV9VUkx9L0NoYW5uZWxXQ0YvQnJva2VyLnN2Yy9Qcm9jZXNzUmVxdWVzdD9tb2R1bGVOYW1lPVVDX1NPXzI3X0dldEJ1c2luZXNzQWNjb3VudFRyeGA7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0RELk1NLllZJztcbmNvbnN0IEFDQ09VTlRfQkxPQ0tFRF9NU0cgPSAn15TXnteg15XXmSDXl9eh15XXnSc7XG5jb25zdCBJTlZBTElEX1BBU1NXT1JEX01TRyA9ICfXkNeX15Mg15DXlSDXmdeV16rXqCDXntek16jXmNeZINeU15TXlteT15TXldeqINep157Xodeo16og16nXkteV15nXmdedLiDXoNeZ16rXnyDXnNeg16HXldeqINep15XXkSc7XG5cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSB7XG4gIGNvbnN0IHVybHM6IExvZ2luT3B0aW9uc1sncG9zc2libGVSZXN1bHRzJ10gPSB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogWy9lYmFua2luZ1xcL1NPXFwvU1BBLmFzcHgvaV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbXG4gICAgICBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucGFnZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwYWdlIG9wdGlvbnMgYXJndW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBhd2FpdCBwYWdlRXZhbEFsbChvcHRpb25zLnBhZ2UsICdzdmcjQ2FwYV8xJywgJycsIChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChlbGVtZW50WzBdPy5wYXJlbnRFbGVtZW50Py5jaGlsZHJlblsxXSBhcyBIVE1MRGl2RWxlbWVudCk/LmlubmVyVGV4dDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZT8uc3RhcnRzV2l0aChJTlZBTElEX1BBU1NXT1JEX01TRyk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW0xvZ2luUmVzdWx0cy5BY2NvdW50QmxvY2tlZF06IFsgLy8gTk9USUNFIC0gbWlnaHQgbm90IGJlIHJlbGV2YW50IHN0YXJ0aW5nIHRoZSBMZXVtaSByZS1kZXNpZ24gZHVyaW5nIDIwMjIgU2VwXG4gICAgICBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucGFnZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwYWdlIG9wdGlvbnMgYXJndW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBhd2FpdCBwYWdlRXZhbEFsbChvcHRpb25zLnBhZ2UsICcuZXJySGVhZGVyJywgJycsIChsYWJlbCkgPT4ge1xuICAgICAgICAgIHJldHVybiAobGFiZWxbMF0gYXMgSFRNTEVsZW1lbnQpPy5pbm5lclRleHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U/LnN0YXJ0c1dpdGgoQUNDT1VOVF9CTE9DS0VEX01TRyk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFsnaHR0cHM6Ly9oYjIuYmFua2xldW1pLmNvLmlsL2F1dGhlbnRpY2F0ZSddLCAvLyBOT1RJQ0UgLSBtaWdodCBub3QgYmUgcmVsZXZhbnQgc3RhcnRpbmcgdGhlIExldW1pIHJlLWRlc2lnbiBkdXJpbmcgMjAyMiBTZXBcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdpbnB1dFtwbGFjZWhvbGRlcj1cItep150g157Xqdeq157XqVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdpbnB1dFtwbGFjZWhvbGRlcj1cIteh15nXodee15RcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHRyYW5zYWN0aW9uczogYW55W10sIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAodHJhbnNhY3Rpb25zID09PSBudWxsIHx8IHRyYW5zYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uW10gPSB0cmFuc2FjdGlvbnMubWFwKChyYXdUcmFuc2FjdGlvbikgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQocmF3VHJhbnNhY3Rpb24uRGF0ZVVUQykubWlsbGlzZWNvbmRzKDApLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5EZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIGlkZW50aWZpZXI6IHJhd1RyYW5zYWN0aW9uLlJlZmVyZW5jZU51bWJlckxvbmcsXG4gICAgICBtZW1vOiByYXdUcmFuc2FjdGlvbi5BZGRpdGlvbmFsRGF0YSB8fCAnJyxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IHJhd1RyYW5zYWN0aW9uLkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiByYXdUcmFuc2FjdGlvbi5BbW91bnQsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXdUcmFuc2FjdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaGFuZ1Byb2Nlc3ModGltZW91dDogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0sIHRpbWVvdXQpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xpY2tCeVhQYXRoKHBhZ2U6IFBhZ2UsIHhwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgcGFnZS53YWl0Rm9yWFBhdGgoeHBhdGgsIHsgdGltZW91dDogMzAwMDAsIHZpc2libGU6IHRydWUgfSk7XG4gIGNvbnN0IGVsbSA9IGF3YWl0IHBhZ2UuJHgoeHBhdGgpO1xuICBhd2FpdCBlbG1bMF0uY2xpY2soKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teMC05Ly1dL2csICcnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBhY2NvdW50SWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudD4ge1xuICAvLyBERVZFTE9QRVIgTk9USUNFIHRoZSBhY2NvdW50IG51bWJlciByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaXMgYmVpbmcgYWx0ZXJlZCBhdFxuICAvLyBydW50aW1lIGZvciBzb21lIGFjY291bnRzIGFmdGVyIDEtMiBzZWNvbmRzIHNvIHdlIG5lZWQgdG8gaGFuZyB0aGUgcHJvY2VzcyBmb3IgYSBzaG9ydCB3aGlsZS5cbiAgYXdhaXQgaGFuZ1Byb2Nlc3MoNDAwMCk7XG5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdidXR0b25bdGl0bGU9XCLXl9eZ16TXldepINee16rXp9eT151cIl0nLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2J1dHRvblt0aXRsZT1cIteX15nXpNeV16kg157Xqten15PXnVwiXScpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2JsbC1yYWRpby1idXR0b24nLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2JsbC1yYWRpby1idXR0b246bm90KFtjaGVja2VkXSknKTtcblxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W2Zvcm1jb250cm9sbmFtZT1cInR4dElucHV0RnJvbVwiXScsIHRydWUpO1xuXG4gIGF3YWl0IGZpbGxJbnB1dChcbiAgICBwYWdlLFxuICAgICdpbnB1dFtmb3JtY29udHJvbG5hbWU9XCJ0eHRJbnB1dEZyb21cIl0nLFxuICAgIHN0YXJ0RGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICApO1xuXG4gIC8vIHdlIG11c3QgYmx1ciB0aGUgZnJvbSBjb250cm9sIG90aGVyd2lzZSB0aGUgc2VhcmNoIHdpbGwgdXNlIHRoZSBwcmV2aW91cyB2YWx1ZVxuICBhd2FpdCBwYWdlLmZvY3VzKFwiYnV0dG9uW2FyaWEtbGFiZWw9J9eh16DXnyddXCIpO1xuXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIFwiYnV0dG9uW2FyaWEtbGFiZWw9J9eh16DXnyddXCIpO1xuICBjb25zdCBmaW5hbFJlc3BvbnNlID0gYXdhaXQgcGFnZS53YWl0Rm9yUmVzcG9uc2UoKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnVybCgpID09PSBGSUxURVJFRF9UUkFOU0FDVElPTlNfVVJMICYmXG4gICAgICByZXNwb25zZS5yZXF1ZXN0KCkubWV0aG9kKCkgPT09ICdQT1NUJztcbiAgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2VKc29uOiBhbnkgPSBhd2FpdCBmaW5hbFJlc3BvbnNlLmpzb24oKTtcblxuICBjb25zdCBhY2NvdW50TnVtYmVyID0gYWNjb3VudElkLnJlcGxhY2UoJy8nLCAnXycpLnJlcGxhY2UoL1teXFxkLV9dL2csICcnKTtcblxuICBjb25zdCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2VKc29uLmpzb25SZXNwKTtcblxuICBjb25zdCBwZW5kaW5nVHJhbnNhY3Rpb25zID0gcmVzcG9uc2UuVG9kYXlUcmFuc2FjdGlvbnNJdGVtcztcbiAgY29uc3QgdHJhbnNhY3Rpb25zID0gcmVzcG9uc2UuSGlzdG9yeVRyYW5zYWN0aW9uc0l0ZW1zO1xuICBjb25zdCBiYWxhbmNlID0gcmVzcG9uc2UuQmFsYW5jZURpc3BsYXkgPyBwYXJzZUZsb2F0KHJlc3BvbnNlLkJhbGFuY2VEaXNwbGF5KSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBwZW5kaW5nVHhucyA9IGV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tUGFnZShwZW5kaW5nVHJhbnNhY3Rpb25zLCBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcpO1xuICBjb25zdCBjb21wbGV0ZWRUeG5zID0gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHRyYW5zYWN0aW9ucywgVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQpO1xuICBjb25zdCB0eG5zID0gW1xuICAgIC4uLnBlbmRpbmdUeG5zLFxuICAgIC4uLmNvbXBsZXRlZFR4bnMsXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50TnVtYmVyLFxuICAgIGJhbGFuY2UsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnRbXT4ge1xuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgLy8gREVWRUxPUEVSIE5PVElDRSB0aGUgYWNjb3VudCBudW1iZXIgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIGlzIGJlaW5nIGFsdGVyZWQgYXRcbiAgLy8gcnVudGltZSBmb3Igc29tZSBhY2NvdW50cyBhZnRlciAxLTIgc2Vjb25kcyBzbyB3ZSBuZWVkIHRvIGhhbmcgdGhlIHByb2Nlc3MgZm9yIGEgc2hvcnQgd2hpbGUuXG4gIGF3YWl0IGhhbmdQcm9jZXNzKDQwMDApO1xuXG4gIGNvbnN0IGFjY291bnRzSWRzID0gYXdhaXQgcGFnZS5ldmFsdWF0ZSgoKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FwcC1tYXNrZWQtbnVtYmVyLWNvbWJvIHNwYW4uZGlzcGxheS1udW1iZXItbGknKSwgKGUpID0+IGUudGV4dENvbnRlbnQpKSBhcyBzdHJpbmdbXTtcblxuICAvLyBkdWUgdG8gYSBidWcsIHRoZSBhbHRlcmVkIHZhbHVlIG1pZ2h0IGluY2x1ZGUgdW5kZXNpcmVkIHNpZ25zIGxpa2UgJiB0aGF0IHNob3VsZCBiZSByZW1vdmVkXG5cbiAgaWYgKCFhY2NvdW50c0lkcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBleHRyYWN0IG9yIHBhcnNlIHRoZSBhY2NvdW50IG51bWJlcicpO1xuICB9XG5cbiAgZm9yIChjb25zdCBhY2NvdW50SWQgb2YgYWNjb3VudHNJZHMpIHtcbiAgICBpZiAoYWNjb3VudHNJZHMubGVuZ3RoID4gMSkge1xuICAgICAgLy8gZ2V0IGxpc3Qgb2YgYWNjb3VudHMgYW5kIGNoZWNrIGFjY291bnRJZFxuICAgICAgYXdhaXQgY2xpY2tCeVhQYXRoKHBhZ2UsICcvLypbY29udGFpbnMoQGNsYXNzLCBcIm51bWJlclwiKSBhbmQgY29udGFpbnMoQGNsYXNzLCBcImNvbWJvLWlubmVyXCIpXScpO1xuICAgICAgYXdhaXQgY2xpY2tCeVhQYXRoKHBhZ2UsIGAvL3NwYW5bY29udGFpbnModGV4dCgpLCAnJHthY2NvdW50SWR9JyldYCk7XG4gICAgfVxuXG4gICAgYWNjb3VudHMucHVzaChhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZSwgc3RhcnREYXRlLCByZW1vdmVTcGVjaWFsQ2hhcmFjdGVycyhhY2NvdW50SWQpKSk7XG4gIH1cblxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVUb0xvZ2luKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbG9naW5CdXR0b25TZWxlY3RvciA9ICcuZW50ZXItYWNjb3VudCBhW29yaWdpbmFsdGl0bGU9XCLXm9eg15nXodeUINec15fXqdeR15XXoNeaXCJdJztcbiAgZGVidWcoJ3dhaXQgZm9yIGhvbWVwYWdlIHRvIGNsaWNrIG9uIGxvZ2luIGJ1dHRvbicpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgbG9naW5CdXR0b25TZWxlY3Rvcik7XG4gIGRlYnVnKCduYXZpZ2F0ZSB0byBsb2dpbiBwYWdlJyk7XG4gIGNvbnN0IGxvZ2luVXJsID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgbG9naW5CdXR0b25TZWxlY3RvciwgbnVsbCwgKGVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gKGVsZW1lbnQgYXMgYW55KS5ocmVmO1xuICB9KTtcbiAgZGVidWcoYG5hdmlnYXRpbmcgdG8gcGFnZSAoJHtsb2dpblVybH0pYCk7XG4gIHBhZ2UuZ290byhsb2dpblVybCk7XG4gIGRlYnVnKCd3YWl0aW5nIGZvciBwYWdlIHRvIGJlIGxvYWRlZCAobmV0d29ya2lkbGUyKScpO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlLCB7IHdhaXRVbnRpbDogJ25ldHdvcmtpZGxlMicgfSk7XG4gIGRlYnVnKCd3YWl0aW5nIGZvciBjb21wb25lbnRzIG9mIGxvZ2luIHRvIGVudGVyIGNyZWRlbnRpYWxzJyk7XG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W3BsYWNlaG9sZGVyPVwi16nXnSDXntep16rXntepXCJdJywgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdpbnB1dFtwbGFjZWhvbGRlcj1cIteh15nXodee15RcIl0nLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJywgdHJ1ZSksXG4gIF0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2FbdGl0bGU9XCLXk9ec15Ig15zXl9ep15HXldefXCJdJywgdHJ1ZSwgNjAwMDApLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2Lm1haW4tY29udGVudCcsIHRydWUsIDYwMDAwKSxcbiAgICBwYWdlLndhaXRGb3JYUGF0aChgLy9kaXZbY29udGFpbnMoc3RyaW5nKCksXCIke0lOVkFMSURfUEFTU1dPUkRfTVNHfVwiKV1gKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2Zvcm1bYWN0aW9uPVwiL2NoYW5nZXBhc3N3b3JkXCJdJywgdHJ1ZSwgNjAwMDApLCAvLyBub3Qgc3VyZSBpZiB0aGV5IGtlcHQgdGhpcyBvbmVcbiAgXSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmd9O1xuXG5jbGFzcyBMZXVtaVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IFwiYnV0dG9uW3R5cGU9J3N1Ym1pdCddXCIsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gbmF2aWdhdGVUb0xvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IG1pbmltdW1TdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDMsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgobWluaW11bVN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oVFJBTlNBQ1RJT05TX1VSTCk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExldW1pU2NyYXBlcjtcbiJdfQ==
|
|
206
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9lbGVtZW50c0ludGVyYWN0aW9ucyIsIl9jb25zdGFudHMiLCJfdHJhbnNhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfZGVidWciLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX1VSTCIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19VUkwiLCJGSUxURVJFRF9UUkFOU0FDVElPTlNfVVJMIiwiREFURV9GT1JNQVQiLCJBQ0NPVU5UX0JMT0NLRURfTVNHIiwiSU5WQUxJRF9QQVNTV09SRF9NU0ciLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsInBhZ2UiLCJFcnJvciIsImVycm9yTWVzc2FnZSIsInBhZ2VFdmFsQWxsIiwiZWxlbWVudCIsIl9yZWYiLCJfZWxlbWVudCQiLCJfZWxlbWVudCQkcGFyZW50RWxlbWUiLCJwYXJlbnRFbGVtZW50IiwiY2hpbGRyZW4iLCJpbm5lclRleHQiLCJzdGFydHNXaXRoIiwiQWNjb3VudEJsb2NrZWQiLCJsYWJlbCIsIl9yZWYyIiwiQ2hhbmdlUGFzc3dvcmQiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVBhZ2UiLCJ0cmFuc2FjdGlvbnMiLCJzdGF0dXMiLCJsZW5ndGgiLCJyZXN1bHQiLCJtYXAiLCJyYXdUcmFuc2FjdGlvbiIsImRhdGUiLCJtb21lbnQiLCJEYXRlVVRDIiwibWlsbGlzZWNvbmRzIiwidG9JU09TdHJpbmciLCJuZXdUcmFuc2FjdGlvbiIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwicHJvY2Vzc2VkRGF0ZSIsImRlc2NyaXB0aW9uIiwiRGVzY3JpcHRpb24iLCJpZGVudGlmaWVyIiwiUmVmZXJlbmNlTnVtYmVyTG9uZyIsIm1lbW8iLCJBZGRpdGlvbmFsRGF0YSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50IiwiQW1vdW50Iiwib3JpZ2luYWxBbW91bnQiLCJoYW5nUHJvY2VzcyIsInRpbWVvdXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJjbGlja0J5WFBhdGgiLCJ4cGF0aCIsIndhaXRGb3JYUGF0aCIsInZpc2libGUiLCJlbG0iLCIkeCIsImNsaWNrIiwicmVtb3ZlU3BlY2lhbENoYXJhY3RlcnMiLCJzdHIiLCJyZXBsYWNlIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwiYWNjb3VudElkIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiY2xpY2tCdXR0b24iLCJmaWxsSW5wdXQiLCJmb3JtYXQiLCJmb2N1cyIsImZpbmFsUmVzcG9uc2UiLCJ3YWl0Rm9yUmVzcG9uc2UiLCJyZXNwb25zZSIsInVybCIsInJlcXVlc3QiLCJtZXRob2QiLCJyZXNwb25zZUpzb24iLCJqc29uIiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJwYXJzZSIsImpzb25SZXNwIiwicGVuZGluZ1RyYW5zYWN0aW9ucyIsIlRvZGF5VHJhbnNhY3Rpb25zSXRlbXMiLCJIaXN0b3J5VHJhbnNhY3Rpb25zSXRlbXMiLCJiYWxhbmNlIiwiQmFsYW5jZURpc3BsYXkiLCJwYXJzZUZsb2F0IiwidW5kZWZpbmVkIiwicGVuZGluZ1R4bnMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsImNvbXBsZXRlZFR4bnMiLCJDb21wbGV0ZWQiLCJ0eG5zIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJhY2NvdW50cyIsImFjY291bnRzSWRzIiwiZXZhbHVhdGUiLCJBcnJheSIsImZyb20iLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJlIiwidGV4dENvbnRlbnQiLCJwdXNoIiwibmF2aWdhdGVUb0xvZ2luIiwibG9naW5CdXR0b25TZWxlY3RvciIsImxvZ2luVXJsIiwicGFnZUV2YWwiLCJocmVmIiwiZ290byIsIndhaXRGb3JOYXZpZ2F0aW9uIiwid2FpdFVudGlsIiwiYWxsIiwid2FpdEZvclBvc3RMb2dpbiIsInJhY2UiLCJMZXVtaVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJjaGVja1JlYWRpbmVzcyIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJtaW5pbXVtU3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsImRlZmF1bHRTdGFydE1vbWVudCIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwibmF2aWdhdGVUbyIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbGV1bWkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIExvZ2luT3B0aW9ucyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQge1xuICBmaWxsSW5wdXQsXG4gIGNsaWNrQnV0dG9uLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHBhZ2VFdmFsQWxsLCBwYWdlRXZhbCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uc0FjY291bnQsIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbGV1bWknKTtcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vaGIyLmJhbmtsZXVtaS5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cubGV1bWkuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19VUkwgPSBgJHtCQVNFX1VSTH0vZUJhbmtpbmcvU08vU1BBLmFzcHgjL3RzL0J1c2luZXNzQWNjb3VudFRyeD9XaWRnZXRQYXI9MWA7XG5jb25zdCBGSUxURVJFRF9UUkFOU0FDVElPTlNfVVJMID0gYCR7QkFTRV9VUkx9L0NoYW5uZWxXQ0YvQnJva2VyLnN2Yy9Qcm9jZXNzUmVxdWVzdD9tb2R1bGVOYW1lPVVDX1NPXzI3X0dldEJ1c2luZXNzQWNjb3VudFRyeGA7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0RELk1NLllZJztcbmNvbnN0IEFDQ09VTlRfQkxPQ0tFRF9NU0cgPSAn15TXnteg15XXmSDXl9eh15XXnSc7XG5jb25zdCBJTlZBTElEX1BBU1NXT1JEX01TRyA9ICfXkNeX15Mg15DXlSDXmdeV16rXqCDXntek16jXmNeZINeU15TXlteT15TXldeqINep157Xodeo16og16nXkteV15nXmdedLiDXoNeZ16rXnyDXnNeg16HXldeqINep15XXkSc7XG5cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSB7XG4gIGNvbnN0IHVybHM6IExvZ2luT3B0aW9uc1sncG9zc2libGVSZXN1bHRzJ10gPSB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogWy9lYmFua2luZ1xcL1NPXFwvU1BBLmFzcHgvaV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbXG4gICAgICBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucGFnZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwYWdlIG9wdGlvbnMgYXJndW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBhd2FpdCBwYWdlRXZhbEFsbChvcHRpb25zLnBhZ2UsICdzdmcjQ2FwYV8xJywgJycsIChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChlbGVtZW50WzBdPy5wYXJlbnRFbGVtZW50Py5jaGlsZHJlblsxXSBhcyBIVE1MRGl2RWxlbWVudCk/LmlubmVyVGV4dDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZT8uc3RhcnRzV2l0aChJTlZBTElEX1BBU1NXT1JEX01TRyk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW0xvZ2luUmVzdWx0cy5BY2NvdW50QmxvY2tlZF06IFsgLy8gTk9USUNFIC0gbWlnaHQgbm90IGJlIHJlbGV2YW50IHN0YXJ0aW5nIHRoZSBMZXVtaSByZS1kZXNpZ24gZHVyaW5nIDIwMjIgU2VwXG4gICAgICBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucGFnZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBwYWdlIG9wdGlvbnMgYXJndW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBhd2FpdCBwYWdlRXZhbEFsbChvcHRpb25zLnBhZ2UsICcuZXJySGVhZGVyJywgJycsIChsYWJlbCkgPT4ge1xuICAgICAgICAgIHJldHVybiAobGFiZWxbMF0gYXMgSFRNTEVsZW1lbnQpPy5pbm5lclRleHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U/LnN0YXJ0c1dpdGgoQUNDT1VOVF9CTE9DS0VEX01TRyk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFsnaHR0cHM6Ly9oYjIuYmFua2xldW1pLmNvLmlsL2F1dGhlbnRpY2F0ZSddLCAvLyBOT1RJQ0UgLSBtaWdodCBub3QgYmUgcmVsZXZhbnQgc3RhcnRpbmcgdGhlIExldW1pIHJlLWRlc2lnbiBkdXJpbmcgMjAyMiBTZXBcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdpbnB1dFtwbGFjZWhvbGRlcj1cItep150g157Xqdeq157XqVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdpbnB1dFtwbGFjZWhvbGRlcj1cIteh15nXodee15RcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHRyYW5zYWN0aW9uczogYW55W10sIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAodHJhbnNhY3Rpb25zID09PSBudWxsIHx8IHRyYW5zYWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uW10gPSB0cmFuc2FjdGlvbnMubWFwKChyYXdUcmFuc2FjdGlvbikgPT4ge1xuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQocmF3VHJhbnNhY3Rpb24uRGF0ZVVUQykubWlsbGlzZWNvbmRzKDApLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgbmV3VHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5EZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIGlkZW50aWZpZXI6IHJhd1RyYW5zYWN0aW9uLlJlZmVyZW5jZU51bWJlckxvbmcsXG4gICAgICBtZW1vOiByYXdUcmFuc2FjdGlvbi5BZGRpdGlvbmFsRGF0YSB8fCAnJyxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IHJhd1RyYW5zYWN0aW9uLkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiByYXdUcmFuc2FjdGlvbi5BbW91bnQsXG4gICAgfTtcblxuICAgIHJldHVybiBuZXdUcmFuc2FjdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gaGFuZ1Byb2Nlc3ModGltZW91dDogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcmVzb2x2ZSgpO1xuICAgIH0sIHRpbWVvdXQpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xpY2tCeVhQYXRoKHBhZ2U6IFBhZ2UsIHhwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgcGFnZS53YWl0Rm9yWFBhdGgoeHBhdGgsIHsgdGltZW91dDogMzAwMDAsIHZpc2libGU6IHRydWUgfSk7XG4gIGNvbnN0IGVsbSA9IGF3YWl0IHBhZ2UuJHgoeHBhdGgpO1xuICBhd2FpdCBlbG1bMF0uY2xpY2soKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3BlY2lhbENoYXJhY3RlcnMoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1teMC05Ly1dL2csICcnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBhY2NvdW50SWQ6IHN0cmluZyk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudD4ge1xuICAvLyBERVZFTE9QRVIgTk9USUNFIHRoZSBhY2NvdW50IG51bWJlciByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaXMgYmVpbmcgYWx0ZXJlZCBhdFxuICAvLyBydW50aW1lIGZvciBzb21lIGFjY291bnRzIGFmdGVyIDEtMiBzZWNvbmRzIHNvIHdlIG5lZWQgdG8gaGFuZyB0aGUgcHJvY2VzcyBmb3IgYSBzaG9ydCB3aGlsZS5cbiAgYXdhaXQgaGFuZ1Byb2Nlc3MoNDAwMCk7XG5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdidXR0b25bdGl0bGU9XCLXl9eZ16TXldepINee16rXp9eT151cIl0nLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2J1dHRvblt0aXRsZT1cIteX15nXpNeV16kg157Xqten15PXnVwiXScpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2JsbC1yYWRpby1idXR0b24nLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2JsbC1yYWRpby1idXR0b246bm90KFtjaGVja2VkXSknKTtcblxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W2Zvcm1jb250cm9sbmFtZT1cInR4dElucHV0RnJvbVwiXScsIHRydWUpO1xuXG4gIGF3YWl0IGZpbGxJbnB1dChcbiAgICBwYWdlLFxuICAgICdpbnB1dFtmb3JtY29udHJvbG5hbWU9XCJ0eHRJbnB1dEZyb21cIl0nLFxuICAgIHN0YXJ0RGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICApO1xuXG4gIC8vIHdlIG11c3QgYmx1ciB0aGUgZnJvbSBjb250cm9sIG90aGVyd2lzZSB0aGUgc2VhcmNoIHdpbGwgdXNlIHRoZSBwcmV2aW91cyB2YWx1ZVxuICBhd2FpdCBwYWdlLmZvY3VzKFwiYnV0dG9uW2FyaWEtbGFiZWw9J9eh16DXnyddXCIpO1xuXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIFwiYnV0dG9uW2FyaWEtbGFiZWw9J9eh16DXnyddXCIpO1xuICBjb25zdCBmaW5hbFJlc3BvbnNlID0gYXdhaXQgcGFnZS53YWl0Rm9yUmVzcG9uc2UoKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnVybCgpID09PSBGSUxURVJFRF9UUkFOU0FDVElPTlNfVVJMICYmXG4gICAgICByZXNwb25zZS5yZXF1ZXN0KCkubWV0aG9kKCkgPT09ICdQT1NUJztcbiAgfSk7XG5cbiAgY29uc3QgcmVzcG9uc2VKc29uOiBhbnkgPSBhd2FpdCBmaW5hbFJlc3BvbnNlLmpzb24oKTtcblxuICBjb25zdCBhY2NvdW50TnVtYmVyID0gYWNjb3VudElkLnJlcGxhY2UoJy8nLCAnXycpLnJlcGxhY2UoL1teXFxkLV9dL2csICcnKTtcblxuICBjb25zdCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2VKc29uLmpzb25SZXNwKTtcblxuICBjb25zdCBwZW5kaW5nVHJhbnNhY3Rpb25zID0gcmVzcG9uc2UuVG9kYXlUcmFuc2FjdGlvbnNJdGVtcztcbiAgY29uc3QgdHJhbnNhY3Rpb25zID0gcmVzcG9uc2UuSGlzdG9yeVRyYW5zYWN0aW9uc0l0ZW1zO1xuICBjb25zdCBiYWxhbmNlID0gcmVzcG9uc2UuQmFsYW5jZURpc3BsYXkgPyBwYXJzZUZsb2F0KHJlc3BvbnNlLkJhbGFuY2VEaXNwbGF5KSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBwZW5kaW5nVHhucyA9IGV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tUGFnZShwZW5kaW5nVHJhbnNhY3Rpb25zLCBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcpO1xuICBjb25zdCBjb21wbGV0ZWRUeG5zID0gZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21QYWdlKHRyYW5zYWN0aW9ucywgVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQpO1xuICBjb25zdCB0eG5zID0gW1xuICAgIC4uLnBlbmRpbmdUeG5zLFxuICAgIC4uLmNvbXBsZXRlZFR4bnMsXG4gIF07XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50TnVtYmVyLFxuICAgIGJhbGFuY2UsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnRbXT4ge1xuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgLy8gREVWRUxPUEVSIE5PVElDRSB0aGUgYWNjb3VudCBudW1iZXIgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyIGlzIGJlaW5nIGFsdGVyZWQgYXRcbiAgLy8gcnVudGltZSBmb3Igc29tZSBhY2NvdW50cyBhZnRlciAxLTIgc2Vjb25kcyBzbyB3ZSBuZWVkIHRvIGhhbmcgdGhlIHByb2Nlc3MgZm9yIGEgc2hvcnQgd2hpbGUuXG4gIGF3YWl0IGhhbmdQcm9jZXNzKDQwMDApO1xuXG4gIGNvbnN0IGFjY291bnRzSWRzID0gYXdhaXQgcGFnZS5ldmFsdWF0ZSgoKSA9PiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FwcC1tYXNrZWQtbnVtYmVyLWNvbWJvIHNwYW4uZGlzcGxheS1udW1iZXItbGknKSwgKGUpID0+IGUudGV4dENvbnRlbnQpKSBhcyBzdHJpbmdbXTtcblxuICAvLyBkdWUgdG8gYSBidWcsIHRoZSBhbHRlcmVkIHZhbHVlIG1pZ2h0IGluY2x1ZGUgdW5kZXNpcmVkIHNpZ25zIGxpa2UgJiB0aGF0IHNob3VsZCBiZSByZW1vdmVkXG5cbiAgaWYgKCFhY2NvdW50c0lkcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBleHRyYWN0IG9yIHBhcnNlIHRoZSBhY2NvdW50IG51bWJlcicpO1xuICB9XG5cbiAgZm9yIChjb25zdCBhY2NvdW50SWQgb2YgYWNjb3VudHNJZHMpIHtcbiAgICBpZiAoYWNjb3VudHNJZHMubGVuZ3RoID4gMSkge1xuICAgICAgLy8gZ2V0IGxpc3Qgb2YgYWNjb3VudHMgYW5kIGNoZWNrIGFjY291bnRJZFxuICAgICAgYXdhaXQgY2xpY2tCeVhQYXRoKHBhZ2UsICcvLypbY29udGFpbnMoQGNsYXNzLCBcIm51bWJlclwiKSBhbmQgY29udGFpbnMoQGNsYXNzLCBcImNvbWJvLWlubmVyXCIpXScpO1xuICAgICAgYXdhaXQgY2xpY2tCeVhQYXRoKHBhZ2UsIGAvL3NwYW5bY29udGFpbnModGV4dCgpLCAnJHthY2NvdW50SWR9JyldYCk7XG4gICAgfVxuXG4gICAgYWNjb3VudHMucHVzaChhd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZSwgc3RhcnREYXRlLCByZW1vdmVTcGVjaWFsQ2hhcmFjdGVycyhhY2NvdW50SWQpKSk7XG4gIH1cblxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVUb0xvZ2luKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbG9naW5CdXR0b25TZWxlY3RvciA9ICcuZW50ZXItYWNjb3VudCBhW29yaWdpbmFsdGl0bGU9XCLXm9eg15nXodeUINec15fXqdeR15XXoNeaXCJdJztcbiAgZGVidWcoJ3dhaXQgZm9yIGhvbWVwYWdlIHRvIGNsaWNrIG9uIGxvZ2luIGJ1dHRvbicpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgbG9naW5CdXR0b25TZWxlY3Rvcik7XG4gIGRlYnVnKCduYXZpZ2F0ZSB0byBsb2dpbiBwYWdlJyk7XG4gIGNvbnN0IGxvZ2luVXJsID0gYXdhaXQgcGFnZUV2YWwocGFnZSwgbG9naW5CdXR0b25TZWxlY3RvciwgbnVsbCwgKGVsZW1lbnQpID0+IHtcbiAgICByZXR1cm4gKGVsZW1lbnQgYXMgYW55KS5ocmVmO1xuICB9KTtcbiAgZGVidWcoYG5hdmlnYXRpbmcgdG8gcGFnZSAoJHtsb2dpblVybH0pYCk7XG4gIHBhZ2UuZ290byhsb2dpblVybCk7XG4gIGRlYnVnKCd3YWl0aW5nIGZvciBwYWdlIHRvIGJlIGxvYWRlZCAobmV0d29ya2lkbGUyKScpO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlLCB7IHdhaXRVbnRpbDogJ25ldHdvcmtpZGxlMicgfSk7XG4gIGRlYnVnKCd3YWl0aW5nIGZvciBjb21wb25lbnRzIG9mIGxvZ2luIHRvIGVudGVyIGNyZWRlbnRpYWxzJyk7XG4gIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0W3BsYWNlaG9sZGVyPVwi16nXnSDXntep16rXntepXCJdJywgdHJ1ZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdpbnB1dFtwbGFjZWhvbGRlcj1cIteh15nXodee15RcIl0nLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJywgdHJ1ZSksXG4gIF0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2FbdGl0bGU9XCLXk9ec15Ig15zXl9ep15HXldefXCJdJywgdHJ1ZSwgNjAwMDApLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2Lm1haW4tY29udGVudCcsIHRydWUsIDYwMDAwKSxcbiAgICBwYWdlLndhaXRGb3JYUGF0aChgLy9kaXZbY29udGFpbnMoc3RyaW5nKCksXCIke0lOVkFMSURfUEFTU1dPUkRfTVNHfVwiKV1gKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2Zvcm1bYWN0aW9uPVwiL2NoYW5nZXBhc3N3b3JkXCJdJywgdHJ1ZSwgNjAwMDApLCAvLyBub3Qgc3VyZSBpZiB0aGV5IGtlcHQgdGhpcyBvbmVcbiAgXSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmd9O1xuXG5jbGFzcyBMZXVtaVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IExPR0lOX1VSTCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IFwiYnV0dG9uW3R5cGU9J3N1Ym1pdCddXCIsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gbmF2aWdhdGVUb0xvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IG1pbmltdW1TdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDMsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgobWluaW11bVN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oVFJBTlNBQ1RJT05TX1VSTCk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExldW1pU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsdUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFJQSxJQUFBSyxXQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFBNEMsU0FBQUQsdUJBQUFRLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFFNUMsTUFBTUcsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxPQUFPLENBQUM7QUFDL0IsTUFBTUMsUUFBUSxHQUFHLDZCQUE2QjtBQUM5QyxNQUFNQyxTQUFTLEdBQUcsMEJBQTBCO0FBQzVDLE1BQU1DLGdCQUFnQixH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
|
|
@@ -1,27 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.promise");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.string.trim");
|
|
6
|
-
|
|
7
5
|
var _leumi = _interopRequireDefault(require("./leumi"));
|
|
8
|
-
|
|
9
6
|
var _testsUtils = require("../tests/tests-utils");
|
|
10
|
-
|
|
11
7
|
var _definitions = require("../definitions");
|
|
12
|
-
|
|
13
8
|
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
14
|
-
|
|
15
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
-
|
|
17
10
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
-
|
|
19
11
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
20
|
-
|
|
21
12
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
22
|
-
|
|
23
13
|
const COMPANY_ID = 'leumi'; // TODO this property should be hard-coded in the provider
|
|
24
|
-
|
|
25
14
|
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
26
15
|
describe('Leumi legacy scraper', () => {
|
|
27
16
|
beforeAll(() => {
|
|
@@ -36,7 +25,6 @@ describe('Leumi legacy scraper', () => {
|
|
|
36
25
|
const options = _objectSpread({}, testsConfig.options, {
|
|
37
26
|
companyId: COMPANY_ID
|
|
38
27
|
});
|
|
39
|
-
|
|
40
28
|
const scraper = new _leumi.default(options);
|
|
41
29
|
const result = await scraper.scrape({
|
|
42
30
|
username: 'e10s12',
|
|
@@ -50,7 +38,6 @@ describe('Leumi legacy scraper', () => {
|
|
|
50
38
|
const options = _objectSpread({}, testsConfig.options, {
|
|
51
39
|
companyId: COMPANY_ID
|
|
52
40
|
});
|
|
53
|
-
|
|
54
41
|
const scraper = new _leumi.default(options);
|
|
55
42
|
const result = await scraper.scrape(testsConfig.credentials.leumi);
|
|
56
43
|
expect(result).toBeDefined();
|
|
@@ -60,4 +47,4 @@ describe('Leumi legacy scraper', () => {
|
|
|
60
47
|
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
61
48
|
});
|
|
62
49
|
});
|
|
63
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGV1bWkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0c1V0aWxzIiwiX2RlZmluaXRpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiZm9yRWFjaCIsImtleSIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiQ09NUEFOWV9JRCIsInRlc3RzQ29uZmlnIiwiZ2V0VGVzdHNDb25maWciLCJkZXNjcmliZSIsImJlZm9yZUFsbCIsImV4dGVuZEFzeW5jVGltZW91dCIsInRlc3QiLCJleHBlY3QiLCJTQ1JBUEVSUyIsImxldW1pIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJMZXVtaVNjcmFwZXIiLCJyZXN1bHQiLCJzY3JhcGUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwic3VjY2VzcyIsInRvQmVGYWxzeSIsImVycm9yVHlwZSIsInRvQmUiLCJMb2dpblJlc3VsdHMiLCJJbnZhbGlkUGFzc3dvcmQiLCJjcmVkZW50aWFscyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwidHJpbSIsInRvQmVUcnV0aHkiLCJleHBvcnRUcmFuc2FjdGlvbnMiLCJhY2NvdW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9sZXVtaS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMZXVtaVNjcmFwZXIgZnJvbSAnLi9sZXVtaSc7XG5pbXBvcnQge1xuICBtYXliZVRlc3RDb21wYW55QVBJLCBleHRlbmRBc3luY1RpbWVvdXQsIGdldFRlc3RzQ29uZmlnLCBleHBvcnRUcmFuc2FjdGlvbnMsXG59IGZyb20gJy4uL3Rlc3RzL3Rlc3RzLXV0aWxzJztcbmltcG9ydCB7IFNDUkFQRVJTIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgQ09NUEFOWV9JRCA9ICdsZXVtaSc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ0xldW1pIGxlZ2FjeSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy5sZXVtaSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMubGV1bWkubG9naW5GaWVsZHMpLnRvQ29udGFpbigndXNlcm5hbWUnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMubGV1bWkubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lELCAoY29uZmlnKSA9PiBjb25maWcuY29tcGFueUFQSS5pbnZhbGlkUGFzc3dvcmQpKCdzaG91bGQgZmFpbCBvbiBpbnZhbGlkIHVzZXIvcGFzc3dvcmRcIicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBMZXVtaVNjcmFwZXIob3B0aW9ucyk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh7IHVzZXJuYW1lOiAnZTEwczEyJywgcGFzc3dvcmQ6ICczZjNzczNkJyB9KTtcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICBleHBlY3QocmVzdWx0LmVycm9yVHlwZSkudG9CZShMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lEKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgTGV1bWlTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHRlc3RzQ29uZmlnLmNyZWRlbnRpYWxzLmxldW1pKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHVCQUFBLEdBQUFILE9BQUE7QUFBMkQsU0FBQUQsdUJBQUFLLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxRQUFBQyxNQUFBLEVBQUFDLGNBQUEsUUFBQUMsSUFBQSxHQUFBQyxNQUFBLENBQUFELElBQUEsQ0FBQUYsTUFBQSxPQUFBRyxNQUFBLENBQUFDLHFCQUFBLFFBQUFDLE9BQUEsR0FBQUYsTUFBQSxDQUFBQyxxQkFBQSxDQUFBSixNQUFBLE9BQUFDLGNBQUEsRUFBQUksT0FBQSxHQUFBQSxPQUFBLENBQUFDLE1BQUEsV0FBQUMsR0FBQSxXQUFBSixNQUFBLENBQUFLLHdCQUFBLENBQUFSLE1BQUEsRUFBQU8sR0FBQSxFQUFBRSxVQUFBLE1BQUFQLElBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULElBQUEsRUFBQUcsT0FBQSxZQUFBSCxJQUFBO0FBQUEsU0FBQVUsY0FBQUMsTUFBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLEVBQUFGLENBQUEsVUFBQUcsTUFBQSxHQUFBRixTQUFB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
|
package/lib/scrapers/massad.js
CHANGED
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.array.iterator");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _baseBeinleumiGroup = _interopRequireDefault(require("./base-beinleumi-group"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
-
|
|
16
11
|
class MassadScraper extends _baseBeinleumiGroup.default {
|
|
17
12
|
constructor(...args) {
|
|
18
13
|
super(...args);
|
|
19
|
-
|
|
20
14
|
_defineProperty(this, "BASE_URL", 'https://online.bankmassad.co.il');
|
|
21
|
-
|
|
22
15
|
_defineProperty(this, "LOGIN_URL", `${this.BASE_URL}/MatafLoginService/MatafLoginServlet?bankId=MASADPRTAL&site=Private&KODSAFA=HE`);
|
|
23
|
-
|
|
24
16
|
_defineProperty(this, "TRANSACTIONS_URL", `${this.BASE_URL}/wps/myportal/FibiMenu/Online/OnAccountMngment/OnBalanceTrans/PrivateAccountFlow`);
|
|
25
17
|
}
|
|
26
|
-
|
|
27
18
|
}
|
|
28
|
-
|
|
29
19
|
var _default = MassadScraper;
|
|
30
20
|
exports.default = _default;
|
|
31
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUJlaW5sZXVtaUdyb3VwIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZpbmVQcm9wZXJ0eSIsImtleSIsInZhbHVlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJNYXNzYWRTY3JhcGVyIiwiQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwiYXJncyIsIkJBU0VfVVJMIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21hc3NhZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciBmcm9tICcuL2Jhc2UtYmVpbmxldW1pLWdyb3VwJztcblxuXG5jbGFzcyBNYXNzYWRTY3JhcGVyIGV4dGVuZHMgQmVpbmxldW1pR3JvdXBCYXNlU2NyYXBlciB7XG4gIEJBU0VfVVJMID0gJ2h0dHBzOi8vb25saW5lLmJhbmttYXNzYWQuY28uaWwnO1xuXG4gIExPR0lOX1VSTCA9IGAke3RoaXMuQkFTRV9VUkx9L01hdGFmTG9naW5TZXJ2aWNlL01hdGFmTG9naW5TZXJ2bGV0P2JhbmtJZD1NQVNBRFBSVEFMJnNpdGU9UHJpdmF0ZSZLT0RTQUZBPUhFYDtcblxuICBUUkFOU0FDVElPTlNfVVJMID0gYCR7dGhpcy5CQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZS9PbkFjY291bnRNbmdtZW50L09uQmFsYW5jZVRyYW5zL1ByaXZhdGVBY2NvdW50Rmxvd2A7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hc3NhZFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxtQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQStELFNBQUFELHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcsZ0JBQUFILEdBQUEsRUFBQUksR0FBQSxFQUFBQyxLQUFBLFFBQUFELEdBQUEsSUFBQUosR0FBQSxJQUFBTSxNQUFBLENBQUFDLGNBQUEsQ0FBQVAsR0FBQSxFQUFBSSxHQUFBLElBQUFDLEtBQUEsRUFBQUEsS0FBQSxFQUFBRyxVQUFBLFFBQUFDLFlBQUEsUUFBQUMsUUFBQSxvQkFBQVYsR0FBQSxDQUFBSSxHQUFBLElBQUFDLEtBQUEsV0FBQUwsR0FBQTtBQUcvRCxNQUFNVyxhQUFhLFNBQVNDLDJCQUF5QixDQUFDO0VBQUFDLFlBQUEsR0FBQUMsSUFBQTtJQUFBLFNBQUFBLElBQUE7SUFBQVgsZUFBQSxtQkFDekMsaUNBQWlDO0lBQUFBLGVBQUEsb0JBRS9CLEdBQUUsSUFBSSxDQUFDWSxRQUFTLGdGQUErRTtJQUFBWixlQUFBLDJCQUV4RixHQUFFLElBQUksQ0FBQ1ksUUFBUyxrRkFBaUY7RUFBQTtBQUN2SDtBQUFDLElBQUFDLFFBQUEsR0FFY0wsYUFBYTtBQUFBTSxPQUFBLENBQUFmLE9BQUEsR0FBQWMsUUFBQSJ9
|
package/lib/scrapers/max.d.ts
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { LoadEvent } from 'puppeteer';
|
|
2
2
|
import { BaseScraperWithBrowser, PossibleLoginResults } from './base-scraper-with-browser';
|
|
3
3
|
import { Transaction } from '../transactions';
|
|
4
|
+
export interface ScrapedTransaction {
|
|
5
|
+
shortCardNumber: string;
|
|
6
|
+
paymentDate?: string;
|
|
7
|
+
purchaseDate: string;
|
|
8
|
+
actualPaymentAmount: string;
|
|
9
|
+
paymentCurrency: number | null;
|
|
10
|
+
originalCurrency: string;
|
|
11
|
+
originalAmount: number;
|
|
12
|
+
planName: string;
|
|
13
|
+
planTypeId: number;
|
|
14
|
+
comments: string;
|
|
15
|
+
merchantName: string;
|
|
16
|
+
categoryId: number;
|
|
17
|
+
fundsTransferComment?: string;
|
|
18
|
+
fundsTransferReceiverOrTransfer?: string;
|
|
19
|
+
dealData?: {
|
|
20
|
+
arn: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare function getMemo({ comments, fundsTransferReceiverOrTransfer, fundsTransferComment, }: Pick<ScrapedTransaction, 'comments' | 'fundsTransferReceiverOrTransfer' | 'fundsTransferComment'>): string;
|
|
4
24
|
declare type ScraperSpecificCredentials = {
|
|
5
25
|
username: string;
|
|
6
26
|
password: string;
|