@tomerh2001/israeli-bank-scrapers 6.3.11

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.
Files changed (121) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +425 -0
  3. package/lib/assertNever.d.ts +1 -0
  4. package/lib/assertNever.js +10 -0
  5. package/lib/constants.d.ts +10 -0
  6. package/lib/constants.js +17 -0
  7. package/lib/definitions.d.ts +105 -0
  8. package/lib/definitions.js +116 -0
  9. package/lib/helpers/browser.d.ts +10 -0
  10. package/lib/helpers/browser.js +21 -0
  11. package/lib/helpers/dates.d.ts +2 -0
  12. package/lib/helpers/dates.js +22 -0
  13. package/lib/helpers/debug.d.ts +2 -0
  14. package/lib/helpers/debug.js +12 -0
  15. package/lib/helpers/elements-interactions.d.ts +17 -0
  16. package/lib/helpers/elements-interactions.js +111 -0
  17. package/lib/helpers/fetch.d.ts +6 -0
  18. package/lib/helpers/fetch.js +111 -0
  19. package/lib/helpers/navigation.d.ts +6 -0
  20. package/lib/helpers/navigation.js +39 -0
  21. package/lib/helpers/storage.d.ts +2 -0
  22. package/lib/helpers/storage.js +14 -0
  23. package/lib/helpers/transactions.d.ts +5 -0
  24. package/lib/helpers/transactions.js +47 -0
  25. package/lib/helpers/waiting.d.ts +13 -0
  26. package/lib/helpers/waiting.js +58 -0
  27. package/lib/index.d.ts +7 -0
  28. package/lib/index.js +85 -0
  29. package/lib/scrapers/amex.d.ts +6 -0
  30. package/lib/scrapers/amex.js +17 -0
  31. package/lib/scrapers/amex.test.d.ts +1 -0
  32. package/lib/scrapers/amex.test.js +49 -0
  33. package/lib/scrapers/base-beinleumi-group.d.ts +66 -0
  34. package/lib/scrapers/base-beinleumi-group.js +428 -0
  35. package/lib/scrapers/base-isracard-amex.d.ts +23 -0
  36. package/lib/scrapers/base-isracard-amex.js +324 -0
  37. package/lib/scrapers/base-scraper-with-browser.d.ts +57 -0
  38. package/lib/scrapers/base-scraper-with-browser.js +291 -0
  39. package/lib/scrapers/base-scraper-with-browser.test.d.ts +1 -0
  40. package/lib/scrapers/base-scraper-with-browser.test.js +53 -0
  41. package/lib/scrapers/base-scraper.d.ts +19 -0
  42. package/lib/scrapers/base-scraper.js +91 -0
  43. package/lib/scrapers/behatsdaa.d.ts +11 -0
  44. package/lib/scrapers/behatsdaa.js +113 -0
  45. package/lib/scrapers/behatsdaa.test.d.ts +1 -0
  46. package/lib/scrapers/behatsdaa.test.js +46 -0
  47. package/lib/scrapers/beinleumi.d.ts +7 -0
  48. package/lib/scrapers/beinleumi.js +15 -0
  49. package/lib/scrapers/beinleumi.test.d.ts +1 -0
  50. package/lib/scrapers/beinleumi.test.js +47 -0
  51. package/lib/scrapers/beyahad-bishvilha.d.ts +30 -0
  52. package/lib/scrapers/beyahad-bishvilha.js +149 -0
  53. package/lib/scrapers/beyahad-bishvilha.test.d.ts +1 -0
  54. package/lib/scrapers/beyahad-bishvilha.test.js +47 -0
  55. package/lib/scrapers/discount.d.ts +22 -0
  56. package/lib/scrapers/discount.js +120 -0
  57. package/lib/scrapers/discount.test.d.ts +1 -0
  58. package/lib/scrapers/discount.test.js +49 -0
  59. package/lib/scrapers/errors.d.ts +16 -0
  60. package/lib/scrapers/errors.js +32 -0
  61. package/lib/scrapers/factory.d.ts +2 -0
  62. package/lib/scrapers/factory.js +70 -0
  63. package/lib/scrapers/factory.test.d.ts +1 -0
  64. package/lib/scrapers/factory.test.js +19 -0
  65. package/lib/scrapers/hapoalim.d.ts +24 -0
  66. package/lib/scrapers/hapoalim.js +198 -0
  67. package/lib/scrapers/hapoalim.test.d.ts +1 -0
  68. package/lib/scrapers/hapoalim.test.js +47 -0
  69. package/lib/scrapers/interface.d.ts +186 -0
  70. package/lib/scrapers/interface.js +6 -0
  71. package/lib/scrapers/isracard.d.ts +6 -0
  72. package/lib/scrapers/isracard.js +17 -0
  73. package/lib/scrapers/isracard.test.d.ts +1 -0
  74. package/lib/scrapers/isracard.test.js +49 -0
  75. package/lib/scrapers/leumi.d.ts +21 -0
  76. package/lib/scrapers/leumi.js +200 -0
  77. package/lib/scrapers/leumi.test.d.ts +1 -0
  78. package/lib/scrapers/leumi.test.js +47 -0
  79. package/lib/scrapers/massad.d.ts +7 -0
  80. package/lib/scrapers/massad.js +15 -0
  81. package/lib/scrapers/max.d.ts +37 -0
  82. package/lib/scrapers/max.js +299 -0
  83. package/lib/scrapers/max.test.d.ts +1 -0
  84. package/lib/scrapers/max.test.js +64 -0
  85. package/lib/scrapers/mercantile.d.ts +20 -0
  86. package/lib/scrapers/mercantile.js +18 -0
  87. package/lib/scrapers/mercantile.test.d.ts +1 -0
  88. package/lib/scrapers/mercantile.test.js +45 -0
  89. package/lib/scrapers/mizrahi.d.ts +35 -0
  90. package/lib/scrapers/mizrahi.js +265 -0
  91. package/lib/scrapers/mizrahi.test.d.ts +1 -0
  92. package/lib/scrapers/mizrahi.test.js +56 -0
  93. package/lib/scrapers/one-zero-queries.d.ts +2 -0
  94. package/lib/scrapers/one-zero-queries.js +560 -0
  95. package/lib/scrapers/one-zero.d.ts +36 -0
  96. package/lib/scrapers/one-zero.js +238 -0
  97. package/lib/scrapers/one-zero.test.d.ts +1 -0
  98. package/lib/scrapers/one-zero.test.js +51 -0
  99. package/lib/scrapers/otsar-hahayal.d.ts +7 -0
  100. package/lib/scrapers/otsar-hahayal.js +15 -0
  101. package/lib/scrapers/otsar-hahayal.test.d.ts +1 -0
  102. package/lib/scrapers/otsar-hahayal.test.js +47 -0
  103. package/lib/scrapers/pagi.d.ts +7 -0
  104. package/lib/scrapers/pagi.js +15 -0
  105. package/lib/scrapers/pagi.test.d.ts +1 -0
  106. package/lib/scrapers/pagi.test.js +47 -0
  107. package/lib/scrapers/union-bank.d.ts +23 -0
  108. package/lib/scrapers/union-bank.js +242 -0
  109. package/lib/scrapers/union-bank.test.d.ts +1 -0
  110. package/lib/scrapers/union-bank.test.js +47 -0
  111. package/lib/scrapers/visa-cal.d.ts +20 -0
  112. package/lib/scrapers/visa-cal.js +318 -0
  113. package/lib/scrapers/visa-cal.test.d.ts +1 -0
  114. package/lib/scrapers/visa-cal.test.js +49 -0
  115. package/lib/scrapers/yahav.d.ts +25 -0
  116. package/lib/scrapers/yahav.js +247 -0
  117. package/lib/scrapers/yahav.test.d.ts +1 -0
  118. package/lib/scrapers/yahav.test.js +49 -0
  119. package/lib/transactions.d.ts +47 -0
  120. package/lib/transactions.js +17 -0
  121. package/package.json +91 -0
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _lodash = _interopRequireDefault(require("lodash"));
8
+ var _moment = _interopRequireDefault(require("moment"));
9
+ var _elementsInteractions = require("../helpers/elements-interactions");
10
+ var _fetch = require("../helpers/fetch");
11
+ var _navigation = require("../helpers/navigation");
12
+ var _transactions = require("../transactions");
13
+ var _baseScraperWithBrowser = require("./base-scraper-with-browser");
14
+ var _errors = require("./errors");
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
+ const BASE_URL = 'https://start.telebank.co.il';
17
+ const DATE_FORMAT = 'YYYYMMDD';
18
+ function convertTransactions(txns, txnStatus) {
19
+ if (!txns) {
20
+ return [];
21
+ }
22
+ return txns.map(txn => {
23
+ return {
24
+ type: _transactions.TransactionTypes.Normal,
25
+ identifier: txn.OperationNumber,
26
+ date: (0, _moment.default)(txn.OperationDate, DATE_FORMAT).toISOString(),
27
+ processedDate: (0, _moment.default)(txn.ValueDate, DATE_FORMAT).toISOString(),
28
+ originalAmount: txn.OperationAmount,
29
+ originalCurrency: 'ILS',
30
+ chargedAmount: txn.OperationAmount,
31
+ description: txn.OperationDescriptionToDisplay,
32
+ status: txnStatus
33
+ };
34
+ });
35
+ }
36
+ async function fetchAccountData(page, options) {
37
+ const apiSiteUrl = `${BASE_URL}/Titan/gatewayAPI`;
38
+ const accountDataUrl = `${apiSiteUrl}/userAccountsData`;
39
+ const accountInfo = await (0, _fetch.fetchGetWithinPage)(page, accountDataUrl);
40
+ if (!accountInfo) {
41
+ return {
42
+ success: false,
43
+ errorType: _errors.ScraperErrorTypes.Generic,
44
+ errorMessage: 'failed to get account data'
45
+ };
46
+ }
47
+ const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(2, 'day');
48
+ const startDate = options.startDate || defaultStartMoment.toDate();
49
+ const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
50
+ const startDateStr = startMoment.format(DATE_FORMAT);
51
+ const accounts = accountInfo.UserAccountsData.UserAccounts.map(acc => acc.NewAccountInfo.AccountID);
52
+ const accountsData = [];
53
+ for (const accountNumber of accounts) {
54
+ const txnsUrl = `${apiSiteUrl}/lastTransactions/${accountNumber}/Date?IsCategoryDescCode=True&IsTransactionDetails=True&IsEventNames=True&IsFutureTransactionFlag=True&FromDate=${startDateStr}`;
55
+ const txnsResult = await (0, _fetch.fetchGetWithinPage)(page, txnsUrl);
56
+ if (!txnsResult || txnsResult.Error || !txnsResult.CurrentAccountLastTransactions) {
57
+ return {
58
+ success: false,
59
+ errorType: _errors.ScraperErrorTypes.Generic,
60
+ errorMessage: txnsResult && txnsResult.Error ? txnsResult.Error.MsgText : 'unknown error'
61
+ };
62
+ }
63
+ const accountCompletedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed);
64
+ const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
65
+ const accountPendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending);
66
+ accountsData.push({
67
+ accountNumber,
68
+ balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
69
+ txns: [...accountCompletedTxns, ...accountPendingTxns]
70
+ });
71
+ }
72
+ const accountData = {
73
+ success: true,
74
+ accounts: accountsData
75
+ };
76
+ return accountData;
77
+ }
78
+ async function navigateOrErrorLabel(page) {
79
+ try {
80
+ await (0, _navigation.waitForNavigation)(page);
81
+ } catch (e) {
82
+ await (0, _elementsInteractions.waitUntilElementFound)(page, '#general-error', false, 100);
83
+ }
84
+ }
85
+ function getPossibleLoginResults() {
86
+ const urls = {};
87
+ urls[_baseScraperWithBrowser.LoginResults.Success] = [`${BASE_URL}/apollo/retail/#/MY_ACCOUNT_HOMEPAGE`, `${BASE_URL}/apollo/retail2/#/MY_ACCOUNT_HOMEPAGE`];
88
+ urls[_baseScraperWithBrowser.LoginResults.InvalidPassword] = [`${BASE_URL}/apollo/core/templates/lobby/masterPage.html#/LOGIN_PAGE`];
89
+ urls[_baseScraperWithBrowser.LoginResults.ChangePassword] = [`${BASE_URL}/apollo/core/templates/lobby/masterPage.html#/PWD_RENEW`];
90
+ return urls;
91
+ }
92
+ function createLoginFields(credentials) {
93
+ return [{
94
+ selector: '#tzId',
95
+ value: credentials.id
96
+ }, {
97
+ selector: '#tzPassword',
98
+ value: credentials.password
99
+ }, {
100
+ selector: '#aidnum',
101
+ value: credentials.num
102
+ }];
103
+ }
104
+ class DiscountScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
105
+ getLoginOptions(credentials) {
106
+ return {
107
+ loginUrl: `${BASE_URL}/login/#/LOGIN_PAGE`,
108
+ checkReadiness: async () => (0, _elementsInteractions.waitUntilElementFound)(this.page, '#tzId'),
109
+ fields: createLoginFields(credentials),
110
+ submitButtonSelector: '.sendBtn',
111
+ postAction: async () => navigateOrErrorLabel(this.page),
112
+ possibleResults: getPossibleLoginResults()
113
+ };
114
+ }
115
+ async fetchData() {
116
+ return fetchAccountData(this.page, this.options);
117
+ }
118
+ }
119
+ var _default = exports.default = DiscountScraper;
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwiYWRkIiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJzdGFydERhdGVTdHIiLCJmb3JtYXQiLCJhY2NvdW50cyIsIlVzZXJBY2NvdW50c0RhdGEiLCJVc2VyQWNjb3VudHMiLCJhY2MiLCJOZXdBY2NvdW50SW5mbyIsIkFjY291bnRJRCIsImFjY291bnRzRGF0YSIsImFjY291bnROdW1iZXIiLCJ0eG5zVXJsIiwidHhuc1Jlc3VsdCIsIkVycm9yIiwiQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zIiwiTXNnVGV4dCIsImFjY291bnRDb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJhY2NvdW50UGVuZGluZ1R4bnMiLCJQZW5kaW5nIiwicHVzaCIsImJhbGFuY2UiLCJDdXJyZW50QWNjb3VudEluZm8iLCJBY2NvdW50QmFsYW5jZSIsImFjY291bnREYXRhIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3N0YXJ0LnRlbGViYW5rLmNvLmlsJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIE9wZXJhdGlvbk51bWJlcjogbnVtYmVyO1xuICBPcGVyYXRpb25EYXRlOiBzdHJpbmc7XG4gIFZhbHVlRGF0ZTogc3RyaW5nO1xuICBPcGVyYXRpb25BbW91bnQ6IG51bWJlcjtcbiAgT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnJlbnRBY2NvdW50SW5mbyB7XG4gIEFjY291bnRCYWxhbmNlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudERhdGEge1xuICBVc2VyQWNjb3VudHNEYXRhOiB7XG4gICAgRGVmYXVsdEFjY291bnROdW1iZXI6IHN0cmluZztcbiAgICBVc2VyQWNjb3VudHM6IEFycmF5PHtcbiAgICAgIE5ld0FjY291bnRJbmZvOiB7XG4gICAgICAgIEFjY291bnRJRDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9PjtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBFcnJvcj86IHsgTXNnVGV4dDogc3RyaW5nIH07XG4gIEN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucz86IHtcbiAgICBPcGVyYXRpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgQ3VycmVudEFjY291bnRJbmZvOiBDdXJyZW50QWNjb3VudEluZm87XG4gICAgRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2s6IHtcbiAgICAgIEZ1dHVyZVRyYW5zYWN0aW9uRW50cnk6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAoIXR4bnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDIsICdkYXknKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnRNb21lbnQuZm9ybWF0KERBVEVfRk9STUFUKTtcblxuICBjb25zdCBhY2NvdW50czogc3RyaW5nW10gPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLlVzZXJBY2NvdW50cy5tYXAoYWNjID0+IGFjYy5OZXdBY2NvdW50SW5mby5BY2NvdW50SUQpO1xuICBjb25zdCBhY2NvdW50c0RhdGE6IEFycmF5PHsgYWNjb3VudE51bWJlcjogc3RyaW5nOyBiYWxhbmNlOiBudW1iZXI7IHR4bnM6IFRyYW5zYWN0aW9uW10gfT4gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnROdW1iZXIgb2YgYWNjb3VudHMpIHtcbiAgICBjb25zdCB0eG5zVXJsID0gYCR7YXBpU2l0ZVVybH0vbGFzdFRyYW5zYWN0aW9ucy8ke2FjY291bnROdW1iZXJ9L0RhdGU/SXNDYXRlZ29yeURlc2NDb2RlPVRydWUmSXNUcmFuc2FjdGlvbkRldGFpbHM9VHJ1ZSZJc0V2ZW50TmFtZXM9VHJ1ZSZJc0Z1dHVyZVRyYW5zYWN0aW9uRmxhZz1UcnVlJkZyb21EYXRlPSR7c3RhcnREYXRlU3RyfWA7XG4gICAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgICBpZiAoIXR4bnNSZXN1bHQgfHwgdHhuc1Jlc3VsdC5FcnJvciB8fCAhdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogdHhuc1Jlc3VsdCAmJiB0eG5zUmVzdWx0LkVycm9yID8gdHhuc1Jlc3VsdC5FcnJvci5Nc2dUZXh0IDogJ3Vua25vd24gZXJyb3InLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50Q29tcGxldGVkVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zUmVzdWx0LkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucy5PcGVyYXRpb25FbnRyeSxcbiAgICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICk7XG4gICAgY29uc3QgcmF3RnV0dXJlVHhucyA9IF8uZ2V0KFxuICAgICAgdHhuc1Jlc3VsdCxcbiAgICAgICdDdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2suRnV0dXJlVHJhbnNhY3Rpb25FbnRyeScsXG4gICAgKSBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICBjb25zdCBhY2NvdW50UGVuZGluZ1R4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHJhd0Z1dHVyZVR4bnMsIFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyk7XG5cbiAgICBhY2NvdW50c0RhdGEucHVzaCh7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgYmFsYW5jZTogdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuQ3VycmVudEFjY291bnRJbmZvLkFjY291bnRCYWxhbmNlLFxuICAgICAgdHhuczogWy4uLmFjY291bnRDb21wbGV0ZWRUeG5zLCAuLi5hY2NvdW50UGVuZGluZ1R4bnNdLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgYWNjb3VudERhdGEgPSB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50czogYWNjb3VudHNEYXRhLFxuICB9O1xuXG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVPckVycm9yTGFiZWwocGFnZTogUGFnZSkge1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjZ2VuZXJhbC1lcnJvcicsIGZhbHNlLCAxMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbXG4gICAgYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYCxcbiAgICBgJHtCQVNFX1VSTH0vYXBvbGxvL3JldGFpbDIvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYCxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtgJHtCQVNFX1VSTH0vYXBvbGxvL2NvcmUvdGVtcGxhdGVzL2xvYmJ5L21hc3RlclBhZ2UuaHRtbCMvTE9HSU5fUEFHRWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL1BXRF9SRU5FV2BdO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN0eklkJywgdmFsdWU6IGNyZWRlbnRpYWxzLmlkIH0sXG4gICAgeyBzZWxlY3RvcjogJyN0elBhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gICAgeyBzZWxlY3RvcjogJyNhaWRudW0nLCB2YWx1ZTogY3JlZGVudGlhbHMubnVtIH0sXG4gIF07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH07XG5cbmNsYXNzIERpc2NvdW50U2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7QkFTRV9VUkx9L2xvZ2luLyMvTE9HSU5fUEFHRWAsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyN0eklkJyksXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnLnNlbmRCdG4nLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gbmF2aWdhdGVPckVycm9yTGFiZWwodGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIHJldHVybiBmZXRjaEFjY291bnREYXRhKHRoaXMucGFnZSwgdGhpcy5vcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEaXNjb3VudFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQTZDLFNBQUFELHVCQUFBUyxDQUFBLFdBQUFBLENBQUEs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QUNyQ0EsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxPQUFPLENBQUMsR0FBRyxDQUMzQixHQUFHL0UsUUFBUSxzQ0FBc0MsRUFDakQsR0FBR0EsUUFBUSx1Q0FBdUMsQ0FDbkQ7RUFDRDZFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0UsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHaEYsUUFBUSwwREFBMEQsQ0FBQztFQUM1RzZFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0csY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHakYsUUFBUSx5REFBeUQsQ0FBQztFQUMxRyxPQUFPNkUsSUFBSTtBQUNiO0FBRUEsU0FBU0ssaUJBQWlCQSxDQUFDQyxXQUF1QyxFQUFFO0VBQ2xFLE9BQU8sQ0FDTDtJQUFFQyxRQUFRLEVBQUUsT0FBTztJQUFFQyxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0c7RUFBRyxDQUFDLEVBQzVDO0lBQUVGLFFBQVEsRUFBRSxhQUFhO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDSTtFQUFTLENBQUMsRUFDeEQ7SUFBRUgsUUFBUSxFQUFFLFNBQVM7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNLO0VBQUksQ0FBQyxDQUNoRDtBQUNIO0FBSUEsTUFBTUMsZUFBZSxTQUFTQyw4Q0FBc0IsQ0FBNkI7RUFDL0VDLGVBQWVBLENBQUNSLFdBQXVDLEVBQUU7SUFDdkQsT0FBTztNQUNMUyxRQUFRLEVBQUUsR0FBRzVGLFFBQVEscUJBQXFCO01BQzFDNkYsY0FBYyxFQUFFLE1BQUFBLENBQUEsS0FBWSxJQUFBbEIsMkNBQXFCLEVBQUMsSUFBSSxDQUFDakQsSUFBSSxFQUFFLE9BQU8sQ0FBQztNQUNyRW9FLE1BQU0sRUFBRVosaUJBQWlCLENBQUNDLFdBQVcsQ0FBQztNQUN0Q1ksb0JBQW9CLEVBQUUsVUFBVTtNQUNoQ0MsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWXZCLG9CQUFvQixDQUFDLElBQUksQ0FBQy9DLElBQUksQ0FBQztNQUN2RHVFLGVBQWUsRUFBRXJCLHVCQUF1QixDQUFDO0lBQzNDLENBQUM7RUFDSDtFQUVBLE1BQU1zQixTQUFTQSxDQUFBLEVBQUc7SUFDaEIsT0FBT3pFLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsSUFBSSxFQUFFLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQyxJQUFBd0UsUUFBQSxHQUFBQyxPQUFBLENBQUFyRyxPQUFBLEdBRWMwRixlQUFlIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _discount = _interopRequireDefault(require("./discount"));
4
+ var _testsUtils = require("../tests/tests-utils");
5
+ var _definitions = require("../definitions");
6
+ var _baseScraperWithBrowser = require("./base-scraper-with-browser");
7
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
+ const COMPANY_ID = 'discount'; // TODO this property should be hard-coded in the provider
9
+ const testsConfig = (0, _testsUtils.getTestsConfig)();
10
+ describe('Discount legacy scraper', () => {
11
+ beforeAll(() => {
12
+ (0, _testsUtils.extendAsyncTimeout)(); // The default timeout is 5 seconds per async test, this function extends the timeout value
13
+ });
14
+ test('should expose login fields in scrapers constant', () => {
15
+ expect(_definitions.SCRAPERS.discount).toBeDefined();
16
+ expect(_definitions.SCRAPERS.discount.loginFields).toContain('id');
17
+ expect(_definitions.SCRAPERS.discount.loginFields).toContain('password');
18
+ expect(_definitions.SCRAPERS.discount.loginFields).toContain('num');
19
+ });
20
+ (0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID, config => config.companyAPI.invalidPassword)('should fail on invalid user/password"', async () => {
21
+ const options = {
22
+ ...testsConfig.options,
23
+ companyId: COMPANY_ID
24
+ };
25
+ const scraper = new _discount.default(options);
26
+ const result = await scraper.scrape({
27
+ id: 'e10s12',
28
+ password: '3f3ss3d',
29
+ num: '1234'
30
+ });
31
+ expect(result).toBeDefined();
32
+ expect(result.success).toBeFalsy();
33
+ expect(result.errorType).toBe(_baseScraperWithBrowser.LoginResults.InvalidPassword);
34
+ });
35
+ (0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions"', async () => {
36
+ const options = {
37
+ ...testsConfig.options,
38
+ companyId: COMPANY_ID
39
+ };
40
+ const scraper = new _discount.default(options);
41
+ const result = await scraper.scrape(testsConfig.credentials.discount);
42
+ expect(result).toBeDefined();
43
+ const error = `${result.errorType || ''} ${result.errorMessage || ''}`.trim();
44
+ expect(error).toBe('');
45
+ expect(result.success).toBeTruthy();
46
+ (0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
47
+ });
48
+ });
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGlzY291bnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0c1V0aWxzIiwiX2RlZmluaXRpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT01QQU5ZX0lEIiwidGVzdHNDb25maWciLCJnZXRUZXN0c0NvbmZpZyIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiZXh0ZW5kQXN5bmNUaW1lb3V0IiwidGVzdCIsImV4cGVjdCIsIlNDUkFQRVJTIiwiZGlzY291bnQiLCJ0b0JlRGVmaW5lZCIsImxvZ2luRmllbGRzIiwidG9Db250YWluIiwibWF5YmVUZXN0Q29tcGFueUFQSSIsImNvbmZpZyIsImNvbXBhbnlBUEkiLCJpbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY29tcGFueUlkIiwic2NyYXBlciIsIkRpc2NvdW50U2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsImlkIiwicGFzc3dvcmQiLCJudW0iLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImV4cG9ydFRyYW5zYWN0aW9ucyIsImFjY291bnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpc2NvdW50U2NyYXBlciBmcm9tICcuL2Rpc2NvdW50JztcbmltcG9ydCB7IG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL3Rlc3RzL3Rlc3RzLXV0aWxzJztcbmltcG9ydCB7IFNDUkFQRVJTIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgQ09NUEFOWV9JRCA9ICdkaXNjb3VudCc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ0Rpc2NvdW50IGxlZ2FjeSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy5kaXNjb3VudCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuZGlzY291bnQubG9naW5GaWVsZHMpLnRvQ29udGFpbignaWQnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuZGlzY291bnQubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuZGlzY291bnQubG9naW5GaWVsZHMpLnRvQ29udGFpbignbnVtJyk7XG4gIH0pO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCwgY29uZmlnID0+IGNvbmZpZy5jb21wYW55QVBJLmludmFsaWRQYXNzd29yZCkoXG4gICAgJ3Nob3VsZCBmYWlsIG9uIGludmFsaWQgdXNlci9wYXNzd29yZFwiJyxcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzY3JhcGVyID0gbmV3IERpc2NvdW50U2NyYXBlcihvcHRpb25zKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUoeyBpZDogJ2UxMHMxMicsIHBhc3N3b3JkOiAnM2Yzc3MzZCcsIG51bTogJzEyMzQnIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICAgIH0sXG4gICk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lEKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnNcIicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBEaXNjb3VudFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUodGVzdHNDb25maWcuY3JlZGVudGlhbHMuZGlzY291bnQpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgY29uc3QgZXJyb3IgPSBgJHtyZXN1bHQuZXJyb3JUeXBlIHx8ICcnfSAke3Jlc3VsdC5lcnJvck1lc3NhZ2UgfHwgJyd9YC50cmltKCk7XG4gICAgZXhwZWN0KGVycm9yKS50b0JlKCcnKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVUcnV0aHkoKTtcblxuICAgIGV4cG9ydFRyYW5zYWN0aW9ucyhDT01QQU5ZX0lELCByZXN1bHQuYWNjb3VudHMgfHwgW10pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLFNBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHVCQUFBLEdBQUFILE9BQUE7QUFBMkQsU0FBQUQsdUJBQUFLLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFM0QsTUFBTUcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQy9CLE1BQU1DLFdBQVcsR0FBRyxJQUFBQywwQkFBYyxFQUFDLENBQUM7QUFFcENDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxNQUFNO0VBQ3hDQyxTQUFTLENBQUMsTUFBTTtJQUNkLElBQUFDLDhCQUFrQixFQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3hCLENBQUMsQ0FBQztFQUVGQyxJQUFJLENBQUMsaURBQWlELEVBQUUsTUFBTTtJQUM1REMsTUFBTSxDQUFDQyxxQkFBUSxDQUFDQyxRQUFRLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDdkNILE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MsUUFBUSxDQUFDRSxXQUFXLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQztJQUNyREwsTUFBTSxDQUFDQyxxQkFBUSxDQUFDQyxRQUFRLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQzNETCxNQUFNLENBQUNDLHFCQUFRLENBQUNDLFFBQVEsQ0FBQ0UsV0FBVyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxLQUFLLENBQUM7RUFDeEQsQ0FBQyxDQUFDO0VBRUYsSUFBQUMsK0JBQW1CLEVBQUNiLFVBQVUsRUFBRWMsTUFBTSxJQUFJQSxNQUFNLENBQUNDLFVBQVUsQ0FBQ0MsZUFBZSxDQUFDLENBQzFFLHVDQUF1QyxFQUN2QyxZQUFZO0lBQ1YsTUFBTUMsT0FBTyxHQUFHO01BQ2QsR0FBR2hCLFdBQVcsQ0FBQ2dCLE9BQU87TUFDdEJDLFNBQVMsRUFBRWxCO0lBQ2IsQ0FBQztJQUVELE1BQU1tQixPQUFPLEdBQUcsSUFBSUMsaUJBQWUsQ0FBQ0gsT0FBTyxDQUFDO0lBRTVDLE1BQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQU0sQ0FBQztNQUFFQyxFQUFFLEVBQUUsUUFBUTtNQUFFQyxRQUFRLEVBQUUsU0FBUztNQUFFQyxHQUFHLEVBQUU7SUFBTyxDQUFDLENBQUM7SUFFdkZsQixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QkgsTUFBTSxDQUFDYyxNQUFNLENBQUNLLE9BQU8sQ0FBQyxDQUFDQyxTQUFTLENBQUMsQ0FBQztJQUNsQ3BCLE1BQU0sQ0FBQ2MsTUFBTSxDQUFDTyxTQUFTLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxlQUFlLENBQUM7RUFDN0QsQ0FDRixDQUFDO0VBRUQsSUFBQWxCLCtCQUFtQixFQUFDYixVQUFVLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxZQUFZO0lBQ3pFLE1BQU1pQixPQUFPLEdBQUc7TUFDZCxHQUFHaEIsV0FBVyxDQUFDZ0IsT0FBTztNQUN0QkMsU0FBUyxFQUFFbEI7SUFDYixDQUFDO0lBRUQsTUFBTW1CLE9BQU8sR0FBRyxJQUFJQyxpQkFBZSxDQUFDSCxPQUFPLENBQUM7SUFDNUMsTUFBTUksTUFBTSxHQUFHLE1BQU1GLE9BQU8sQ0FBQ0csTUFBTSxDQUFDckIsV0FBVyxDQUFDK0IsV0FBVyxDQUFDdkIsUUFBUSxDQUFDO0lBQ3JFRixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QixNQUFNdUIsS0FBSyxHQUFHLEdBQUdaLE1BQU0sQ0FBQ08sU0FBUyxJQUFJLEVBQUUsSUFBSVAsTUFBTSxDQUFDYSxZQUFZLElBQUksRUFBRSxFQUFFLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQzdFNUIsTUFBTSxDQUFDMEIsS0FBSyxDQUFDLENBQUNKLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEJ0QixNQUFNLENBQUNjLE1BQU0sQ0FBQ0ssT0FBTyxDQUFDLENBQUNVLFVBQVUsQ0FBQyxDQUFDO0lBRW5DLElBQUFDLDhCQUFrQixFQUFDckMsVUFBVSxFQUFFcUIsTUFBTSxDQUFDaUIsUUFBUSxJQUFJLEVBQUUsQ0FBQztFQUN2RCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,16 @@
1
+ export declare enum ScraperErrorTypes {
2
+ TwoFactorRetrieverMissing = "TWO_FACTOR_RETRIEVER_MISSING",
3
+ InvalidPassword = "INVALID_PASSWORD",
4
+ ChangePassword = "CHANGE_PASSWORD",
5
+ Timeout = "TIMEOUT",
6
+ AccountBlocked = "ACCOUNT_BLOCKED",
7
+ Generic = "GENERIC",
8
+ General = "GENERAL_ERROR"
9
+ }
10
+ export type ErrorResult = {
11
+ success: false;
12
+ errorType: ScraperErrorTypes;
13
+ errorMessage: string;
14
+ };
15
+ export declare function createTimeoutError(errorMessage: string): ErrorResult;
16
+ export declare function createGenericError(errorMessage: string): ErrorResult;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ScraperErrorTypes = void 0;
7
+ exports.createGenericError = createGenericError;
8
+ exports.createTimeoutError = createTimeoutError;
9
+ let ScraperErrorTypes = exports.ScraperErrorTypes = /*#__PURE__*/function (ScraperErrorTypes) {
10
+ ScraperErrorTypes["TwoFactorRetrieverMissing"] = "TWO_FACTOR_RETRIEVER_MISSING";
11
+ ScraperErrorTypes["InvalidPassword"] = "INVALID_PASSWORD";
12
+ ScraperErrorTypes["ChangePassword"] = "CHANGE_PASSWORD";
13
+ ScraperErrorTypes["Timeout"] = "TIMEOUT";
14
+ ScraperErrorTypes["AccountBlocked"] = "ACCOUNT_BLOCKED";
15
+ ScraperErrorTypes["Generic"] = "GENERIC";
16
+ ScraperErrorTypes["General"] = "GENERAL_ERROR";
17
+ return ScraperErrorTypes;
18
+ }({});
19
+ function createErrorResult(errorType, errorMessage) {
20
+ return {
21
+ success: false,
22
+ errorType,
23
+ errorMessage
24
+ };
25
+ }
26
+ function createTimeoutError(errorMessage) {
27
+ return createErrorResult(ScraperErrorTypes.Timeout, errorMessage);
28
+ }
29
+ function createGenericError(errorMessage) {
30
+ return createErrorResult(ScraperErrorTypes.Generic, errorMessage);
31
+ }
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTY3JhcGVyRXJyb3JUeXBlcyIsImV4cG9ydHMiLCJjcmVhdGVFcnJvclJlc3VsdCIsImVycm9yVHlwZSIsImVycm9yTWVzc2FnZSIsInN1Y2Nlc3MiLCJjcmVhdGVUaW1lb3V0RXJyb3IiLCJUaW1lb3V0IiwiY3JlYXRlR2VuZXJpY0Vycm9yIiwiR2VuZXJpYyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9lcnJvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gU2NyYXBlckVycm9yVHlwZXMge1xuICBUd29GYWN0b3JSZXRyaWV2ZXJNaXNzaW5nID0gJ1RXT19GQUNUT1JfUkVUUklFVkVSX01JU1NJTkcnLFxuICBJbnZhbGlkUGFzc3dvcmQgPSAnSU5WQUxJRF9QQVNTV09SRCcsXG4gIENoYW5nZVBhc3N3b3JkID0gJ0NIQU5HRV9QQVNTV09SRCcsXG4gIFRpbWVvdXQgPSAnVElNRU9VVCcsXG4gIEFjY291bnRCbG9ja2VkID0gJ0FDQ09VTlRfQkxPQ0tFRCcsXG4gIEdlbmVyaWMgPSAnR0VORVJJQycsXG4gIEdlbmVyYWwgPSAnR0VORVJBTF9FUlJPUicsXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yUmVzdWx0ID0ge1xuICBzdWNjZXNzOiBmYWxzZTtcbiAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBjcmVhdGVFcnJvclJlc3VsdChlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLCBlcnJvck1lc3NhZ2U6IHN0cmluZyk6IEVycm9yUmVzdWx0IHtcbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBlcnJvclR5cGUsXG4gICAgZXJyb3JNZXNzYWdlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGltZW91dEVycm9yKGVycm9yTWVzc2FnZTogc3RyaW5nKTogRXJyb3JSZXN1bHQge1xuICByZXR1cm4gY3JlYXRlRXJyb3JSZXN1bHQoU2NyYXBlckVycm9yVHlwZXMuVGltZW91dCwgZXJyb3JNZXNzYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdlbmVyaWNFcnJvcihlcnJvck1lc3NhZ2U6IHN0cmluZyk6IEVycm9yUmVzdWx0IHtcbiAgcmV0dXJuIGNyZWF0ZUVycm9yUmVzdWx0KFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsIGVycm9yTWVzc2FnZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0lBQVlBLGlCQUFpQixHQUFBQyxPQUFBLENBQUFELGlCQUFBLDBCQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUI7RUFBakJBLGlCQUFpQjtFQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUI7RUFBakJBLGlCQUFpQjtFQUFqQkEsaUJBQWlCO0VBQWpCQSxpQkFBaUI7RUFBQSxPQUFqQkEsaUJBQWlCO0FBQUE7QUFnQjdCLFNBQVNFLGlCQUFpQkEsQ0FBQ0MsU0FBNEIsRUFBRUMsWUFBb0IsRUFBZTtFQUMxRixPQUFPO0lBQ0xDLE9BQU8sRUFBRSxLQUFLO0lBQ2RGLFNBQVM7SUFDVEM7RUFDRixDQUFDO0FBQ0g7QUFFTyxTQUFTRSxrQkFBa0JBLENBQUNGLFlBQW9CLEVBQWU7RUFDcEUsT0FBT0YsaUJBQWlCLENBQUNGLGlCQUFpQixDQUFDTyxPQUFPLEVBQUVILFlBQVksQ0FBQztBQUNuRTtBQUVPLFNBQVNJLGtCQUFrQkEsQ0FBQ0osWUFBb0IsRUFBZTtFQUNwRSxPQUFPRixpQkFBaUIsQ0FBQ0YsaUJBQWlCLENBQUNTLE9BQU8sRUFBRUwsWUFBWSxDQUFDO0FBQ25FIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,2 @@
1
+ import { type Scraper, type ScraperCredentials, type ScraperOptions } from './interface';
2
+ export default function createScraper(options: ScraperOptions): Scraper<ScraperCredentials>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = createScraper;
7
+ var _assertNever = require("../assertNever");
8
+ var _definitions = require("../definitions");
9
+ var _amex = _interopRequireDefault(require("./amex"));
10
+ var _behatsdaa = _interopRequireDefault(require("./behatsdaa"));
11
+ var _beinleumi = _interopRequireDefault(require("./beinleumi"));
12
+ var _beyahadBishvilha = _interopRequireDefault(require("./beyahad-bishvilha"));
13
+ var _discount = _interopRequireDefault(require("./discount"));
14
+ var _hapoalim = _interopRequireDefault(require("./hapoalim"));
15
+ var _isracard = _interopRequireDefault(require("./isracard"));
16
+ var _leumi = _interopRequireDefault(require("./leumi"));
17
+ var _massad = _interopRequireDefault(require("./massad"));
18
+ var _max = _interopRequireDefault(require("./max"));
19
+ var _mercantile = _interopRequireDefault(require("./mercantile"));
20
+ var _mizrahi = _interopRequireDefault(require("./mizrahi"));
21
+ var _oneZero = _interopRequireDefault(require("./one-zero"));
22
+ var _otsarHahayal = _interopRequireDefault(require("./otsar-hahayal"));
23
+ var _pagi = _interopRequireDefault(require("./pagi"));
24
+ var _unionBank = _interopRequireDefault(require("./union-bank"));
25
+ var _visaCal = _interopRequireDefault(require("./visa-cal"));
26
+ var _yahav = _interopRequireDefault(require("./yahav"));
27
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
28
+ function createScraper(options) {
29
+ switch (options.companyId) {
30
+ case _definitions.CompanyTypes.hapoalim:
31
+ return new _hapoalim.default(options);
32
+ case _definitions.CompanyTypes.leumi:
33
+ return new _leumi.default(options);
34
+ case _definitions.CompanyTypes.beyahadBishvilha:
35
+ return new _beyahadBishvilha.default(options);
36
+ case _definitions.CompanyTypes.mizrahi:
37
+ return new _mizrahi.default(options);
38
+ case _definitions.CompanyTypes.discount:
39
+ return new _discount.default(options);
40
+ case _definitions.CompanyTypes.mercantile:
41
+ return new _mercantile.default(options);
42
+ case _definitions.CompanyTypes.otsarHahayal:
43
+ return new _otsarHahayal.default(options);
44
+ case _definitions.CompanyTypes.visaCal:
45
+ return new _visaCal.default(options);
46
+ case _definitions.CompanyTypes.max:
47
+ return new _max.default(options);
48
+ case _definitions.CompanyTypes.isracard:
49
+ return new _isracard.default(options);
50
+ case _definitions.CompanyTypes.amex:
51
+ return new _amex.default(options);
52
+ case _definitions.CompanyTypes.union:
53
+ return new _unionBank.default(options);
54
+ case _definitions.CompanyTypes.beinleumi:
55
+ return new _beinleumi.default(options);
56
+ case _definitions.CompanyTypes.massad:
57
+ return new _massad.default(options);
58
+ case _definitions.CompanyTypes.yahav:
59
+ return new _yahav.default(options);
60
+ case _definitions.CompanyTypes.oneZero:
61
+ return new _oneZero.default(options);
62
+ case _definitions.CompanyTypes.behatsdaa:
63
+ return new _behatsdaa.default(options);
64
+ case _definitions.CompanyTypes.pagi:
65
+ return new _pagi.default(options);
66
+ default:
67
+ return (0, _assertNever.assertNever)(options.companyId, `unknown company id ${options.companyId}`);
68
+ }
69
+ }
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0TmV2ZXIiLCJyZXF1aXJlIiwiX2RlZmluaXRpb25zIiwiX2FtZXgiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2JlaGF0c2RhYSIsIl9iZWlubGV1bWkiLCJfYmV5YWhhZEJpc2h2aWxoYSIsIl9kaXNjb3VudCIsIl9oYXBvYWxpbSIsIl9pc3JhY2FyZCIsIl9sZXVtaSIsIl9tYXNzYWQiLCJfbWF4IiwiX21lcmNhbnRpbGUiLCJfbWl6cmFoaSIsIl9vbmVaZXJvIiwiX290c2FySGFoYXlhbCIsIl9wYWdpIiwiX3VuaW9uQmFuayIsIl92aXNhQ2FsIiwiX3lhaGF2IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY3JlYXRlU2NyYXBlciIsIm9wdGlvbnMiLCJjb21wYW55SWQiLCJDb21wYW55VHlwZXMiLCJoYXBvYWxpbSIsIkhhcG9hbGltU2NyYXBlciIsImxldW1pIiwiTGV1bWlTY3JhcGVyIiwiYmV5YWhhZEJpc2h2aWxoYSIsIkJleWFoYWRCaXNodmlsaGFTY3JhcGVyIiwibWl6cmFoaSIsIk1penJhaGlTY3JhcGVyIiwiZGlzY291bnQiLCJEaXNjb3VudFNjcmFwZXIiLCJtZXJjYW50aWxlIiwiTWVyY2FudGlsZVNjcmFwZXIiLCJvdHNhckhhaGF5YWwiLCJPdHNhckhhaGF5YWxTY3JhcGVyIiwidmlzYUNhbCIsIlZpc2FDYWxTY3JhcGVyIiwibWF4IiwiTWF4U2NyYXBlciIsImlzcmFjYXJkIiwiSXNyYWNhcmRTY3JhcGVyIiwiYW1leCIsIkFtZXhTY3JhcGVyIiwidW5pb24iLCJVbmlvbkJhbmtTY3JhcGVyIiwiYmVpbmxldW1pIiwiQmVpbmxldW1pU2NyYXBlciIsIm1hc3NhZCIsIk1hc3NhZFNjcmFwZXIiLCJ5YWhhdiIsIllhaGF2U2NyYXBlciIsIm9uZVplcm8iLCJPbmVaZXJvU2NyYXBlciIsImJlaGF0c2RhYSIsIkJlaGF0c2RhYVNjcmFwZXIiLCJwYWdpIiwiUGFnaVNjcmFwZXIiLCJhc3NlcnROZXZlciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9mYWN0b3J5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydE5ldmVyIH0gZnJvbSAnLi4vYXNzZXJ0TmV2ZXInO1xuaW1wb3J0IHsgQ29tcGFueVR5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IEFtZXhTY3JhcGVyIGZyb20gJy4vYW1leCc7XG5pbXBvcnQgQmVoYXRzZGFhU2NyYXBlciBmcm9tICcuL2JlaGF0c2RhYSc7XG5pbXBvcnQgQmVpbmxldW1pU2NyYXBlciBmcm9tICcuL2JlaW5sZXVtaSc7XG5pbXBvcnQgQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXIgZnJvbSAnLi9iZXlhaGFkLWJpc2h2aWxoYSc7XG5pbXBvcnQgRGlzY291bnRTY3JhcGVyIGZyb20gJy4vZGlzY291bnQnO1xuaW1wb3J0IEhhcG9hbGltU2NyYXBlciBmcm9tICcuL2hhcG9hbGltJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlciwgdHlwZSBTY3JhcGVyQ3JlZGVudGlhbHMsIHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgSXNyYWNhcmRTY3JhcGVyIGZyb20gJy4vaXNyYWNhcmQnO1xuaW1wb3J0IExldW1pU2NyYXBlciBmcm9tICcuL2xldW1pJztcbmltcG9ydCBNYXNzYWRTY3JhcGVyIGZyb20gJy4vbWFzc2FkJztcbmltcG9ydCBNYXhTY3JhcGVyIGZyb20gJy4vbWF4JztcbmltcG9ydCBNZXJjYW50aWxlU2NyYXBlciBmcm9tICcuL21lcmNhbnRpbGUnO1xuaW1wb3J0IE1penJhaGlTY3JhcGVyIGZyb20gJy4vbWl6cmFoaSc7XG5pbXBvcnQgT25lWmVyb1NjcmFwZXIgZnJvbSAnLi9vbmUtemVybyc7XG5pbXBvcnQgT3RzYXJIYWhheWFsU2NyYXBlciBmcm9tICcuL290c2FyLWhhaGF5YWwnO1xuaW1wb3J0IFBhZ2lTY3JhcGVyIGZyb20gJy4vcGFnaSc7XG5pbXBvcnQgVW5pb25CYW5rU2NyYXBlciBmcm9tICcuL3VuaW9uLWJhbmsnO1xuaW1wb3J0IFZpc2FDYWxTY3JhcGVyIGZyb20gJy4vdmlzYS1jYWwnO1xuaW1wb3J0IFlhaGF2U2NyYXBlciBmcm9tICcuL3lhaGF2JztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU2NyYXBlcihvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFNjcmFwZXI8U2NyYXBlckNyZWRlbnRpYWxzPiB7XG4gIHN3aXRjaCAob3B0aW9ucy5jb21wYW55SWQpIHtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5oYXBvYWxpbTpcbiAgICAgIHJldHVybiBuZXcgSGFwb2FsaW1TY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLmxldW1pOlxuICAgICAgcmV0dXJuIG5ldyBMZXVtaVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuYmV5YWhhZEJpc2h2aWxoYTpcbiAgICAgIHJldHVybiBuZXcgQmV5YWhhZEJpc2h2aWxoYVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMubWl6cmFoaTpcbiAgICAgIHJldHVybiBuZXcgTWl6cmFoaVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuZGlzY291bnQ6XG4gICAgICByZXR1cm4gbmV3IERpc2NvdW50U2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5tZXJjYW50aWxlOlxuICAgICAgcmV0dXJuIG5ldyBNZXJjYW50aWxlU2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5vdHNhckhhaGF5YWw6XG4gICAgICByZXR1cm4gbmV3IE90c2FySGFoYXlhbFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMudmlzYUNhbDpcbiAgICAgIHJldHVybiBuZXcgVmlzYUNhbFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMubWF4OlxuICAgICAgcmV0dXJuIG5ldyBNYXhTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLmlzcmFjYXJkOlxuICAgICAgcmV0dXJuIG5ldyBJc3JhY2FyZFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuYW1leDpcbiAgICAgIHJldHVybiBuZXcgQW1leFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMudW5pb246XG4gICAgICByZXR1cm4gbmV3IFVuaW9uQmFua1NjcmFwZXIob3B0aW9ucyk7XG4gICAgY2FzZSBDb21wYW55VHlwZXMuYmVpbmxldW1pOlxuICAgICAgcmV0dXJuIG5ldyBCZWlubGV1bWlTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLm1hc3NhZDpcbiAgICAgIHJldHVybiBuZXcgTWFzc2FkU2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy55YWhhdjpcbiAgICAgIHJldHVybiBuZXcgWWFoYXZTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLm9uZVplcm86XG4gICAgICByZXR1cm4gbmV3IE9uZVplcm9TY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNhc2UgQ29tcGFueVR5cGVzLmJlaGF0c2RhYTpcbiAgICAgIHJldHVybiBuZXcgQmVoYXRzZGFhU2NyYXBlcihvcHRpb25zKTtcbiAgICBjYXNlIENvbXBhbnlUeXBlcy5wYWdpOlxuICAgICAgcmV0dXJuIG5ldyBQYWdpU2NyYXBlcihvcHRpb25zKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFzc2VydE5ldmVyKG9wdGlvbnMuY29tcGFueUlkLCBgdW5rbm93biBjb21wYW55IGlkICR7b3B0aW9ucy5jb21wYW55SWR9YCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFB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
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _definitions = require("../definitions");
4
+ var _factory = _interopRequireDefault(require("./factory"));
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
6
+ /* eslint-disable @typescript-eslint/unbound-method */
7
+
8
+ describe('Factory', () => {
9
+ test('should return a scraper instance', () => {
10
+ const scraper = (0, _factory.default)({
11
+ companyId: _definitions.CompanyTypes.hapoalim,
12
+ startDate: new Date()
13
+ });
14
+ expect(scraper).toBeDefined();
15
+ expect(scraper.scrape).toBeInstanceOf(Function);
16
+ expect(scraper.onProgress).toBeInstanceOf(Function);
17
+ });
18
+ });
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmaW5pdGlvbnMiLCJyZXF1aXJlIiwiX2ZhY3RvcnkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVzY3JpYmUiLCJ0ZXN0Iiwic2NyYXBlciIsImNyZWF0ZVNjcmFwZXIiLCJjb21wYW55SWQiLCJDb21wYW55VHlwZXMiLCJoYXBvYWxpbSIsInN0YXJ0RGF0ZSIsIkRhdGUiLCJleHBlY3QiLCJ0b0JlRGVmaW5lZCIsInNjcmFwZSIsInRvQmVJbnN0YW5jZU9mIiwiRnVuY3Rpb24iLCJvblByb2dyZXNzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ZhY3RvcnkudGVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cbmltcG9ydCB7IENvbXBhbnlUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCBjcmVhdGVTY3JhcGVyIGZyb20gJy4vZmFjdG9yeSc7XG5cbmRlc2NyaWJlKCdGYWN0b3J5JywgKCkgPT4ge1xuICB0ZXN0KCdzaG91bGQgcmV0dXJuIGEgc2NyYXBlciBpbnN0YW5jZScsICgpID0+IHtcbiAgICBjb25zdCBzY3JhcGVyID0gY3JlYXRlU2NyYXBlcih7XG4gICAgICBjb21wYW55SWQ6IENvbXBhbnlUeXBlcy5oYXBvYWxpbSxcbiAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcbiAgICB9KTtcbiAgICBleHBlY3Qoc2NyYXBlcikudG9CZURlZmluZWQoKTtcblxuICAgIGV4cGVjdChzY3JhcGVyLnNjcmFwZSkudG9CZUluc3RhbmNlT2YoRnVuY3Rpb24pO1xuICAgIGV4cGVjdChzY3JhcGVyLm9uUHJvZ3Jlc3MpLnRvQmVJbnN0YW5jZU9mKEZ1bmN0aW9uKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxZQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFBc0MsU0FBQUUsdUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFGdEM7O0FBSUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTTtFQUN4QkMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLE1BQU07SUFDN0MsTUFBTUMsT0FBTyxHQUFHLElBQUFDLGdCQUFhLEVBQUM7TUFDNUJDLFNBQVMsRUFBRUMseUJBQVksQ0FBQ0MsUUFBUTtNQUNoQ0MsU0FBUyxFQUFFLElBQUlDLElBQUksQ0FBQztJQUN0QixDQUFDLENBQUM7SUFDRkMsTUFBTSxDQUFDUCxPQUFPLENBQUMsQ0FBQ1EsV0FBVyxDQUFDLENBQUM7SUFFN0JELE1BQU0sQ0FBQ1AsT0FBTyxDQUFDUyxNQUFNLENBQUMsQ0FBQ0MsY0FBYyxDQUFDQyxRQUFRLENBQUM7SUFDL0NKLE1BQU0sQ0FBQ1AsT0FBTyxDQUFDWSxVQUFVLENBQUMsQ0FBQ0YsY0FBYyxDQUFDQyxRQUFRLENBQUM7RUFDckQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,24 @@
1
+ import { type TransactionsAccount } from '../transactions';
2
+ import { BaseScraperWithBrowser, type PossibleLoginResults } from './base-scraper-with-browser';
3
+ type ScraperSpecificCredentials = {
4
+ userCode: string;
5
+ password: string;
6
+ };
7
+ declare class HapoalimScraper extends BaseScraperWithBrowser<ScraperSpecificCredentials> {
8
+ get baseUrl(): string;
9
+ getLoginOptions(credentials: ScraperSpecificCredentials): {
10
+ loginUrl: string;
11
+ fields: {
12
+ selector: string;
13
+ value: string;
14
+ }[];
15
+ submitButtonSelector: string;
16
+ postAction: () => Promise<void>;
17
+ possibleResults: PossibleLoginResults;
18
+ };
19
+ fetchData(): Promise<{
20
+ success: boolean;
21
+ accounts: TransactionsAccount[];
22
+ }>;
23
+ }
24
+ export default HapoalimScraper;