@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.
- package/LICENSE +21 -0
- package/README.md +425 -0
- package/lib/assertNever.d.ts +1 -0
- package/lib/assertNever.js +10 -0
- package/lib/constants.d.ts +10 -0
- package/lib/constants.js +17 -0
- package/lib/definitions.d.ts +105 -0
- package/lib/definitions.js +116 -0
- package/lib/helpers/browser.d.ts +10 -0
- package/lib/helpers/browser.js +21 -0
- package/lib/helpers/dates.d.ts +2 -0
- package/lib/helpers/dates.js +22 -0
- package/lib/helpers/debug.d.ts +2 -0
- package/lib/helpers/debug.js +12 -0
- package/lib/helpers/elements-interactions.d.ts +17 -0
- package/lib/helpers/elements-interactions.js +111 -0
- package/lib/helpers/fetch.d.ts +6 -0
- package/lib/helpers/fetch.js +111 -0
- package/lib/helpers/navigation.d.ts +6 -0
- package/lib/helpers/navigation.js +39 -0
- package/lib/helpers/storage.d.ts +2 -0
- package/lib/helpers/storage.js +14 -0
- package/lib/helpers/transactions.d.ts +5 -0
- package/lib/helpers/transactions.js +47 -0
- package/lib/helpers/waiting.d.ts +13 -0
- package/lib/helpers/waiting.js +58 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +85 -0
- package/lib/scrapers/amex.d.ts +6 -0
- package/lib/scrapers/amex.js +17 -0
- package/lib/scrapers/amex.test.d.ts +1 -0
- package/lib/scrapers/amex.test.js +49 -0
- package/lib/scrapers/base-beinleumi-group.d.ts +66 -0
- package/lib/scrapers/base-beinleumi-group.js +428 -0
- package/lib/scrapers/base-isracard-amex.d.ts +23 -0
- package/lib/scrapers/base-isracard-amex.js +324 -0
- package/lib/scrapers/base-scraper-with-browser.d.ts +57 -0
- package/lib/scrapers/base-scraper-with-browser.js +291 -0
- package/lib/scrapers/base-scraper-with-browser.test.d.ts +1 -0
- package/lib/scrapers/base-scraper-with-browser.test.js +53 -0
- package/lib/scrapers/base-scraper.d.ts +19 -0
- package/lib/scrapers/base-scraper.js +91 -0
- package/lib/scrapers/behatsdaa.d.ts +11 -0
- package/lib/scrapers/behatsdaa.js +113 -0
- package/lib/scrapers/behatsdaa.test.d.ts +1 -0
- package/lib/scrapers/behatsdaa.test.js +46 -0
- package/lib/scrapers/beinleumi.d.ts +7 -0
- package/lib/scrapers/beinleumi.js +15 -0
- package/lib/scrapers/beinleumi.test.d.ts +1 -0
- package/lib/scrapers/beinleumi.test.js +47 -0
- package/lib/scrapers/beyahad-bishvilha.d.ts +30 -0
- package/lib/scrapers/beyahad-bishvilha.js +149 -0
- package/lib/scrapers/beyahad-bishvilha.test.d.ts +1 -0
- package/lib/scrapers/beyahad-bishvilha.test.js +47 -0
- package/lib/scrapers/discount.d.ts +22 -0
- package/lib/scrapers/discount.js +120 -0
- package/lib/scrapers/discount.test.d.ts +1 -0
- package/lib/scrapers/discount.test.js +49 -0
- package/lib/scrapers/errors.d.ts +16 -0
- package/lib/scrapers/errors.js +32 -0
- package/lib/scrapers/factory.d.ts +2 -0
- package/lib/scrapers/factory.js +70 -0
- package/lib/scrapers/factory.test.d.ts +1 -0
- package/lib/scrapers/factory.test.js +19 -0
- package/lib/scrapers/hapoalim.d.ts +24 -0
- package/lib/scrapers/hapoalim.js +198 -0
- package/lib/scrapers/hapoalim.test.d.ts +1 -0
- package/lib/scrapers/hapoalim.test.js +47 -0
- package/lib/scrapers/interface.d.ts +186 -0
- package/lib/scrapers/interface.js +6 -0
- package/lib/scrapers/isracard.d.ts +6 -0
- package/lib/scrapers/isracard.js +17 -0
- package/lib/scrapers/isracard.test.d.ts +1 -0
- package/lib/scrapers/isracard.test.js +49 -0
- package/lib/scrapers/leumi.d.ts +21 -0
- package/lib/scrapers/leumi.js +200 -0
- package/lib/scrapers/leumi.test.d.ts +1 -0
- package/lib/scrapers/leumi.test.js +47 -0
- package/lib/scrapers/massad.d.ts +7 -0
- package/lib/scrapers/massad.js +15 -0
- package/lib/scrapers/max.d.ts +37 -0
- package/lib/scrapers/max.js +299 -0
- package/lib/scrapers/max.test.d.ts +1 -0
- package/lib/scrapers/max.test.js +64 -0
- package/lib/scrapers/mercantile.d.ts +20 -0
- package/lib/scrapers/mercantile.js +18 -0
- package/lib/scrapers/mercantile.test.d.ts +1 -0
- package/lib/scrapers/mercantile.test.js +45 -0
- package/lib/scrapers/mizrahi.d.ts +35 -0
- package/lib/scrapers/mizrahi.js +265 -0
- package/lib/scrapers/mizrahi.test.d.ts +1 -0
- package/lib/scrapers/mizrahi.test.js +56 -0
- package/lib/scrapers/one-zero-queries.d.ts +2 -0
- package/lib/scrapers/one-zero-queries.js +560 -0
- package/lib/scrapers/one-zero.d.ts +36 -0
- package/lib/scrapers/one-zero.js +238 -0
- package/lib/scrapers/one-zero.test.d.ts +1 -0
- package/lib/scrapers/one-zero.test.js +51 -0
- package/lib/scrapers/otsar-hahayal.d.ts +7 -0
- package/lib/scrapers/otsar-hahayal.js +15 -0
- package/lib/scrapers/otsar-hahayal.test.d.ts +1 -0
- package/lib/scrapers/otsar-hahayal.test.js +47 -0
- package/lib/scrapers/pagi.d.ts +7 -0
- package/lib/scrapers/pagi.js +15 -0
- package/lib/scrapers/pagi.test.d.ts +1 -0
- package/lib/scrapers/pagi.test.js +47 -0
- package/lib/scrapers/union-bank.d.ts +23 -0
- package/lib/scrapers/union-bank.js +242 -0
- package/lib/scrapers/union-bank.test.d.ts +1 -0
- package/lib/scrapers/union-bank.test.js +47 -0
- package/lib/scrapers/visa-cal.d.ts +20 -0
- package/lib/scrapers/visa-cal.js +318 -0
- package/lib/scrapers/visa-cal.test.d.ts +1 -0
- package/lib/scrapers/visa-cal.test.js +49 -0
- package/lib/scrapers/yahav.d.ts +25 -0
- package/lib/scrapers/yahav.js +247 -0
- package/lib/scrapers/yahav.test.d.ts +1 -0
- package/lib/scrapers/yahav.test.js +49 -0
- package/lib/transactions.d.ts +47 -0
- package/lib/transactions.js +17 -0
- package/package.json +91 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.filterOldTransactions = filterOldTransactions;
|
|
7
|
+
exports.fixInstallments = fixInstallments;
|
|
8
|
+
exports.sortTransactionsByDate = sortTransactionsByDate;
|
|
9
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
10
|
+
var _moment = _interopRequireDefault(require("moment"));
|
|
11
|
+
var _transactions = require("../transactions");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function isNormalTransaction(txn) {
|
|
14
|
+
return txn && txn.type === _transactions.TransactionTypes.Normal;
|
|
15
|
+
}
|
|
16
|
+
function isInstallmentTransaction(txn) {
|
|
17
|
+
return txn && txn.type === _transactions.TransactionTypes.Installments;
|
|
18
|
+
}
|
|
19
|
+
function isNonInitialInstallmentTransaction(txn) {
|
|
20
|
+
return isInstallmentTransaction(txn) && !!txn.installments && txn.installments.number > 1;
|
|
21
|
+
}
|
|
22
|
+
function isInitialInstallmentTransaction(txn) {
|
|
23
|
+
return isInstallmentTransaction(txn) && !!txn.installments && txn.installments.number === 1;
|
|
24
|
+
}
|
|
25
|
+
function fixInstallments(txns) {
|
|
26
|
+
return txns.map(txn => {
|
|
27
|
+
const clonedTxn = {
|
|
28
|
+
...txn
|
|
29
|
+
};
|
|
30
|
+
if (isInstallmentTransaction(clonedTxn) && isNonInitialInstallmentTransaction(clonedTxn) && clonedTxn.installments) {
|
|
31
|
+
const dateMoment = (0, _moment.default)(clonedTxn.date);
|
|
32
|
+
const actualDateMoment = dateMoment.add(clonedTxn.installments.number - 1, 'month');
|
|
33
|
+
clonedTxn.date = actualDateMoment.toISOString();
|
|
34
|
+
}
|
|
35
|
+
return clonedTxn;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function sortTransactionsByDate(txns) {
|
|
39
|
+
return _lodash.default.sortBy(txns, ['date']);
|
|
40
|
+
}
|
|
41
|
+
function filterOldTransactions(txns, startMoment, combineInstallments) {
|
|
42
|
+
return txns.filter(txn => {
|
|
43
|
+
const combineNeededAndInitialOrNormal = combineInstallments && (isNormalTransaction(txn) || isInitialInstallmentTransaction(txn));
|
|
44
|
+
return !combineInstallments && startMoment.isSameOrBefore(txn.date) || combineNeededAndInitialOrNormal && startMoment.isSameOrBefore(txn.date);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX3RyYW5zYWN0aW9ucyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImlzTm9ybWFsVHJhbnNhY3Rpb24iLCJ0eG4iLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlzSW5zdGFsbG1lbnRUcmFuc2FjdGlvbiIsIkluc3RhbGxtZW50cyIsImlzTm9uSW5pdGlhbEluc3RhbGxtZW50VHJhbnNhY3Rpb24iLCJpbnN0YWxsbWVudHMiLCJudW1iZXIiLCJpc0luaXRpYWxJbnN0YWxsbWVudFRyYW5zYWN0aW9uIiwiZml4SW5zdGFsbG1lbnRzIiwidHhucyIsIm1hcCIsImNsb25lZFR4biIsImRhdGVNb21lbnQiLCJtb21lbnQiLCJkYXRlIiwiYWN0dWFsRGF0ZU1vbWVudCIsImFkZCIsInRvSVNPU3RyaW5nIiwic29ydFRyYW5zYWN0aW9uc0J5RGF0ZSIsIl8iLCJzb3J0QnkiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJzdGFydE1vbWVudCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJmaWx0ZXIiLCJjb21iaW5lTmVlZGVkQW5kSW5pdGlhbE9yTm9ybWFsIiwiaXNTYW1lT3JCZWZvcmUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy90cmFuc2FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5cbmZ1bmN0aW9uIGlzTm9ybWFsVHJhbnNhY3Rpb24odHhuOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR4biAmJiB0eG4udHlwZSA9PT0gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGlzSW5zdGFsbG1lbnRUcmFuc2FjdGlvbih0eG46IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdHhuICYmIHR4bi50eXBlID09PSBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbn1cblxuZnVuY3Rpb24gaXNOb25Jbml0aWFsSW5zdGFsbG1lbnRUcmFuc2FjdGlvbih0eG46IFRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBpc0luc3RhbGxtZW50VHJhbnNhY3Rpb24odHhuKSAmJiAhIXR4bi5pbnN0YWxsbWVudHMgJiYgdHhuLmluc3RhbGxtZW50cy5udW1iZXIgPiAxO1xufVxuXG5mdW5jdGlvbiBpc0luaXRpYWxJbnN0YWxsbWVudFRyYW5zYWN0aW9uKHR4bjogVHJhbnNhY3Rpb24pOiBib29sZWFuIHtcbiAgcmV0dXJuIGlzSW5zdGFsbG1lbnRUcmFuc2FjdGlvbih0eG4pICYmICEhdHhuLmluc3RhbGxtZW50cyAmJiB0eG4uaW5zdGFsbG1lbnRzLm51bWJlciA9PT0gMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpeEluc3RhbGxtZW50cyh0eG5zOiBUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuOiBUcmFuc2FjdGlvbikgPT4ge1xuICAgIGNvbnN0IGNsb25lZFR4biA9IHsgLi4udHhuIH07XG5cbiAgICBpZiAoXG4gICAgICBpc0luc3RhbGxtZW50VHJhbnNhY3Rpb24oY2xvbmVkVHhuKSAmJlxuICAgICAgaXNOb25Jbml0aWFsSW5zdGFsbG1lbnRUcmFuc2FjdGlvbihjbG9uZWRUeG4pICYmXG4gICAgICBjbG9uZWRUeG4uaW5zdGFsbG1lbnRzXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRlTW9tZW50ID0gbW9tZW50KGNsb25lZFR4bi5kYXRlKTtcbiAgICAgIGNvbnN0IGFjdHVhbERhdGVNb21lbnQgPSBkYXRlTW9tZW50LmFkZChjbG9uZWRUeG4uaW5zdGFsbG1lbnRzLm51bWJlciAtIDEsICdtb250aCcpO1xuICAgICAgY2xvbmVkVHhuLmRhdGUgPSBhY3R1YWxEYXRlTW9tZW50LnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBjbG9uZWRUeG47XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZSh0eG5zOiBUcmFuc2FjdGlvbltdKSB7XG4gIHJldHVybiBfLnNvcnRCeSh0eG5zLCBbJ2RhdGUnXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJPbGRUcmFuc2FjdGlvbnModHhuczogVHJhbnNhY3Rpb25bXSwgc3RhcnRNb21lbnQ6IE1vbWVudCwgY29tYmluZUluc3RhbGxtZW50czogYm9vbGVhbikge1xuICByZXR1cm4gdHhucy5maWx0ZXIodHhuID0+IHtcbiAgICBjb25zdCBjb21iaW5lTmVlZGVkQW5kSW5pdGlhbE9yTm9ybWFsID1cbiAgICAgIGNvbWJpbmVJbnN0YWxsbWVudHMgJiYgKGlzTm9ybWFsVHJhbnNhY3Rpb24odHhuKSB8fCBpc0luaXRpYWxJbnN0YWxsbWVudFRyYW5zYWN0aW9uKHR4bikpO1xuICAgIHJldHVybiAoXG4gICAgICAoIWNvbWJpbmVJbnN0YWxsbWVudHMgJiYgc3RhcnRNb21lbnQuaXNTYW1lT3JCZWZvcmUodHhuLmRhdGUpKSB8fFxuICAgICAgKGNvbWJpbmVOZWVkZWRBbmRJbml0aWFsT3JOb3JtYWwgJiYgc3RhcnRNb21lbnQuaXNTYW1lT3JCZWZvcmUodHhuLmRhdGUpKVxuICAgICk7XG4gIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGFBQUEsR0FBQUYsT0FBQTtBQUFxRSxTQUFBRCx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVyRSxTQUFTRyxtQkFBbUJBLENBQUNDLEdBQVEsRUFBVztFQUM5QyxPQUFPQSxHQUFHLElBQUlBLEdBQUcsQ0FBQ0MsSUFBSSxLQUFLQyw4QkFBZ0IsQ0FBQ0MsTUFBTTtBQUNwRDtBQUVBLFNBQVNDLHdCQUF3QkEsQ0FBQ0osR0FBUSxFQUFXO0VBQ25ELE9BQU9BLEdBQUcsSUFBSUEsR0FBRyxDQUFDQyxJQUFJLEtBQUtDLDhCQUFnQixDQUFDRyxZQUFZO0FBQzFEO0FBRUEsU0FBU0Msa0NBQWtDQSxDQUFDTixHQUFnQixFQUFXO0VBQ3JFLE9BQU9JLHdCQUF3QixDQUFDSixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUNBLEdBQUcsQ0FBQ08sWUFBWSxJQUFJUCxHQUFHLENBQUNPLFlBQVksQ0FBQ0MsTUFBTSxHQUFHLENBQUM7QUFDM0Y7QUFFQSxTQUFTQywrQkFBK0JBLENBQUNULEdBQWdCLEVBQVc7RUFDbEUsT0FBT0ksd0JBQXdCLENBQUNKLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQ0EsR0FBRyxDQUFDTyxZQUFZLElBQUlQLEdBQUcsQ0FBQ08sWUFBWSxDQUFDQyxNQUFNLEtBQUssQ0FBQztBQUM3RjtBQUVPLFNBQVNFLGVBQWVBLENBQUNDLElBQW1CLEVBQWlCO0VBQ2xFLE9BQU9BLElBQUksQ0FBQ0MsR0FBRyxDQUFFWixHQUFnQixJQUFLO0lBQ3BDLE1BQU1hLFNBQVMsR0FBRztNQUFFLEdBQUdiO0lBQUksQ0FBQztJQUU1QixJQUNFSSx3QkFBd0IsQ0FBQ1MsU0FBUyxDQUFDLElBQ25DUCxrQ0FBa0MsQ0FBQ08sU0FBUyxDQUFDLElBQzdDQSxTQUFTLENBQUNOLFlBQVksRUFDdEI7TUFDQSxNQUFNTyxVQUFVLEdBQUcsSUFBQUMsZUFBTSxFQUFDRixTQUFTLENBQUNHLElBQUksQ0FBQztNQUN6QyxNQUFNQyxnQkFBZ0IsR0FBR0gsVUFBVSxDQUFDSSxHQUFHLENBQUNMLFNBQVMsQ0FBQ04sWUFBWSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztNQUNuRkssU0FBUyxDQUFDRyxJQUFJLEdBQUdDLGdCQUFnQixDQUFDRSxXQUFXLENBQUMsQ0FBQztJQUNqRDtJQUNBLE9BQU9OLFNBQVM7RUFDbEIsQ0FBQyxDQUFDO0FBQ0o7QUFFTyxTQUFTTyxzQkFBc0JBLENBQUNULElBQW1CLEVBQUU7RUFDMUQsT0FBT1UsZUFBQyxDQUFDQyxNQUFNLENBQUNYLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDO0FBRU8sU0FBU1kscUJBQXFCQSxDQUFDWixJQUFtQixFQUFFYSxXQUFtQixFQUFFQyxtQkFBNEIsRUFBRTtFQUM1RyxPQUFPZCxJQUFJLENBQUNlLE1BQU0sQ0FBQzFCLEdBQUcsSUFBSTtJQUN4QixNQUFNMkIsK0JBQStCLEdBQ25DRixtQkFBbUIsS0FBSzFCLG1CQUFtQixDQUFDQyxHQUFHLENBQUMsSUFBSVMsK0JBQStCLENBQUNULEdBQUcsQ0FBQyxDQUFDO0lBQzNGLE9BQ0csQ0FBQ3lCLG1CQUFtQixJQUFJRCxXQUFXLENBQUNJLGNBQWMsQ0FBQzVCLEdBQUcsQ0FBQ2dCLElBQUksQ0FBQyxJQUM1RFcsK0JBQStCLElBQUlILFdBQVcsQ0FBQ0ksY0FBYyxDQUFDNUIsR0FBRyxDQUFDZ0IsSUFBSSxDQUFFO0VBRTdFLENBQUMsQ0FBQztBQUNKIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Falsy } from 'utility-types';
|
|
2
|
+
export declare class TimeoutError extends Error {
|
|
3
|
+
}
|
|
4
|
+
export declare const SECOND = 1000;
|
|
5
|
+
type WaitUntilReturn<T> = T extends Falsy ? never : Promise<NonNullable<T>>;
|
|
6
|
+
/**
|
|
7
|
+
* Wait until a promise resolves with a truthy value or reject after a timeout
|
|
8
|
+
*/
|
|
9
|
+
export declare function waitUntil<T>(asyncTest: () => Promise<T>, description?: string, timeout?: number, interval?: number): WaitUntilReturn<T>;
|
|
10
|
+
export declare function raceTimeout(ms: number, promise: Promise<any>): Promise<any>;
|
|
11
|
+
export declare function runSerial<T>(actions: (() => Promise<T>)[]): Promise<T[]>;
|
|
12
|
+
export declare function sleep(ms: number): Promise<unknown>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TimeoutError = exports.SECOND = void 0;
|
|
7
|
+
exports.raceTimeout = raceTimeout;
|
|
8
|
+
exports.runSerial = runSerial;
|
|
9
|
+
exports.sleep = sleep;
|
|
10
|
+
exports.waitUntil = waitUntil;
|
|
11
|
+
class TimeoutError extends Error {}
|
|
12
|
+
exports.TimeoutError = TimeoutError;
|
|
13
|
+
const SECOND = exports.SECOND = 1000;
|
|
14
|
+
function timeoutPromise(ms, promise, description) {
|
|
15
|
+
const timeout = new Promise((_, reject) => {
|
|
16
|
+
const id = setTimeout(() => {
|
|
17
|
+
clearTimeout(id);
|
|
18
|
+
const error = new TimeoutError(description);
|
|
19
|
+
reject(error);
|
|
20
|
+
}, ms);
|
|
21
|
+
});
|
|
22
|
+
return Promise.race([promise,
|
|
23
|
+
// casting to avoid type error- safe since this promise will always reject
|
|
24
|
+
timeout]);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Wait until a promise resolves with a truthy value or reject after a timeout
|
|
29
|
+
*/
|
|
30
|
+
function waitUntil(asyncTest, description = '', timeout = 10000, interval = 100) {
|
|
31
|
+
const promise = new Promise((resolve, reject) => {
|
|
32
|
+
function wait() {
|
|
33
|
+
asyncTest().then(value => {
|
|
34
|
+
if (value) {
|
|
35
|
+
resolve(value);
|
|
36
|
+
} else {
|
|
37
|
+
setTimeout(wait, interval);
|
|
38
|
+
}
|
|
39
|
+
}).catch(() => {
|
|
40
|
+
reject();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
wait();
|
|
44
|
+
});
|
|
45
|
+
return timeoutPromise(timeout, promise, description);
|
|
46
|
+
}
|
|
47
|
+
function raceTimeout(ms, promise) {
|
|
48
|
+
return timeoutPromise(ms, promise, 'timeout').catch(err => {
|
|
49
|
+
if (!(err instanceof TimeoutError)) throw err;
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function runSerial(actions) {
|
|
53
|
+
return actions.reduce((m, a) => m.then(async x => [...x, await a()]), Promise.resolve(new Array()));
|
|
54
|
+
}
|
|
55
|
+
function sleep(ms) {
|
|
56
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lb3V0RXJyb3IiLCJFcnJvciIsImV4cG9ydHMiLCJTRUNPTkQiLCJ0aW1lb3V0UHJvbWlzZSIsIm1zIiwicHJvbWlzZSIsImRlc2NyaXB0aW9uIiwidGltZW91dCIsIlByb21pc2UiLCJfIiwicmVqZWN0IiwiaWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZXJyb3IiLCJyYWNlIiwid2FpdFVudGlsIiwiYXN5bmNUZXN0IiwiaW50ZXJ2YWwiLCJyZXNvbHZlIiwid2FpdCIsInRoZW4iLCJ2YWx1ZSIsImNhdGNoIiwicmFjZVRpbWVvdXQiLCJlcnIiLCJydW5TZXJpYWwiLCJhY3Rpb25zIiwicmVkdWNlIiwibSIsImEiLCJ4IiwiQXJyYXkiLCJzbGVlcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3dhaXRpbmcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGYWxzeSB9IGZyb20gJ3V0aWxpdHktdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IGNvbnN0IFNFQ09ORCA9IDEwMDA7XG5cbnR5cGUgV2FpdFVudGlsUmV0dXJuPFQ+ID0gVCBleHRlbmRzIEZhbHN5ID8gbmV2ZXIgOiBQcm9taXNlPE5vbk51bGxhYmxlPFQ+PjtcblxuZnVuY3Rpb24gdGltZW91dFByb21pc2U8VD4obXM6IG51bWJlciwgcHJvbWlzZTogUHJvbWlzZTxUPiwgZGVzY3JpcHRpb246IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICBjb25zdCB0aW1lb3V0ID0gbmV3IFByb21pc2UoKF8sIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGlkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoaWQpO1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgVGltZW91dEVycm9yKGRlc2NyaXB0aW9uKTtcbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSwgbXMpO1xuICB9KTtcblxuICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICBwcm9taXNlLFxuICAgIC8vIGNhc3RpbmcgdG8gYXZvaWQgdHlwZSBlcnJvci0gc2FmZSBzaW5jZSB0aGlzIHByb21pc2Ugd2lsbCBhbHdheXMgcmVqZWN0XG4gICAgdGltZW91dCBhcyBQcm9taXNlPFQ+LFxuICBdKTtcbn1cblxuLyoqXG4gKiBXYWl0IHVudGlsIGEgcHJvbWlzZSByZXNvbHZlcyB3aXRoIGEgdHJ1dGh5IHZhbHVlIG9yIHJlamVjdCBhZnRlciBhIHRpbWVvdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhaXRVbnRpbDxUPihcbiAgYXN5bmNUZXN0OiAoKSA9PiBQcm9taXNlPFQ+LFxuICBkZXNjcmlwdGlvbiA9ICcnLFxuICB0aW1lb3V0ID0gMTAwMDAsXG4gIGludGVydmFsID0gMTAwLFxuKTogV2FpdFVudGlsUmV0dXJuPFQ+IHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPE5vbk51bGxhYmxlPFQ+PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZnVuY3Rpb24gd2FpdCgpIHtcbiAgICAgIGFzeW5jVGVzdCgpXG4gICAgICAgIC50aGVuKHZhbHVlID0+IHtcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHdhaXQsIGludGVydmFsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB3YWl0KCk7XG4gIH0pO1xuICByZXR1cm4gdGltZW91dFByb21pc2UodGltZW91dCwgcHJvbWlzZSwgZGVzY3JpcHRpb24pIGFzIFdhaXRVbnRpbFJldHVybjxUPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhY2VUaW1lb3V0KG1zOiBudW1iZXIsIHByb21pc2U6IFByb21pc2U8YW55Pikge1xuICByZXR1cm4gdGltZW91dFByb21pc2UobXMsIHByb21pc2UsICd0aW1lb3V0JykuY2F0Y2goZXJyID0+IHtcbiAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBUaW1lb3V0RXJyb3IpKSB0aHJvdyBlcnI7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuU2VyaWFsPFQ+KGFjdGlvbnM6ICgoKSA9PiBQcm9taXNlPFQ+KVtdKTogUHJvbWlzZTxUW10+IHtcbiAgcmV0dXJuIGFjdGlvbnMucmVkdWNlKChtLCBhKSA9PiBtLnRoZW4oYXN5bmMgeCA9PiBbLi4ueCwgYXdhaXQgYSgpXSksIFByb21pc2UucmVzb2x2ZTxUW10+KG5ldyBBcnJheTxUPigpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUVPLE1BQU1BLFlBQVksU0FBU0MsS0FBSyxDQUFDO0FBQUVDLE9BQUEsQ0FBQUYsWUFBQSxHQUFBQSxZQUFBO0FBRW5DLE1BQU1HLE1BQU0sR0FBQUQsT0FBQSxDQUFBQyxNQUFBLEdBQUcsSUFBSTtBQUkxQixTQUFTQyxjQUFjQSxDQUFJQyxFQUFVLEVBQUVDLE9BQW1CLEVBQUVDLFdBQW1CLEVBQWM7RUFDM0YsTUFBTUMsT0FBTyxHQUFHLElBQUlDLE9BQU8sQ0FBQyxDQUFDQyxDQUFDLEVBQUVDLE1BQU0sS0FBSztJQUN6QyxNQUFNQyxFQUFFLEdBQUdDLFVBQVUsQ0FBQyxNQUFNO01BQzFCQyxZQUFZLENBQUNGLEVBQUUsQ0FBQztNQUNoQixNQUFNRyxLQUFLLEdBQUcsSUFBSWYsWUFBWSxDQUFDTyxXQUFXLENBQUM7TUFDM0NJLE1BQU0sQ0FBQ0ksS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUFFVixFQUFFLENBQUM7RUFDUixDQUFDLENBQUM7RUFFRixPQUFPSSxPQUFPLENBQUNPLElBQUksQ0FBQyxDQUNsQlYsT0FBTztFQUNQO0VBQ0FFLE9BQU8sQ0FDUixDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU1MsU0FBU0EsQ0FDdkJDLFNBQTJCLEVBQzNCWCxXQUFXLEdBQUcsRUFBRSxFQUNoQkMsT0FBTyxHQUFHLEtBQUssRUFDZlcsUUFBUSxHQUFHLEdBQUcsRUFDTTtFQUNwQixNQUFNYixPQUFPLEdBQUcsSUFBSUcsT0FBTyxDQUFpQixDQUFDVyxPQUFPLEVBQUVULE1BQU0sS0FBSztJQUMvRCxTQUFTVSxJQUFJQSxDQUFBLEVBQUc7TUFDZEgsU0FBUyxDQUFDLENBQUMsQ0FDUkksSUFBSSxDQUFDQyxLQUFLLElBQUk7UUFDYixJQUFJQSxLQUFLLEVBQUU7VUFDVEgsT0FBTyxDQUFDRyxLQUFLLENBQUM7UUFDaEIsQ0FBQyxNQUFNO1VBQ0xWLFVBQVUsQ0FBQ1EsSUFBSSxFQUFFRixRQUFRLENBQUM7UUFDNUI7TUFDRixDQUFDLENBQUMsQ0FDREssS0FBSyxDQUFDLE1BQU07UUFDWGIsTUFBTSxDQUFDLENBQUM7TUFDVixDQUFDLENBQUM7SUFDTjtJQUNBVSxJQUFJLENBQUMsQ0FBQztFQUNSLENBQUMsQ0FBQztFQUNGLE9BQU9qQixjQUFjLENBQUNJLE9BQU8sRUFBRUYsT0FBTyxFQUFFQyxXQUFXLENBQUM7QUFDdEQ7QUFFTyxTQUFTa0IsV0FBV0EsQ0FBQ3BCLEVBQVUsRUFBRUMsT0FBcUIsRUFBRTtFQUM3RCxPQUFPRixjQUFjLENBQUNDLEVBQUUsRUFBRUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDa0IsS0FBSyxDQUFDRSxHQUFHLElBQUk7SUFDekQsSUFBSSxFQUFFQSxHQUFHLFlBQVkxQixZQUFZLENBQUMsRUFBRSxNQUFNMEIsR0FBRztFQUMvQyxDQUFDLENBQUM7QUFDSjtBQUVPLFNBQVNDLFNBQVNBLENBQUlDLE9BQTZCLEVBQWdCO0VBQ3hFLE9BQU9BLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUNDLENBQUMsRUFBRUMsQ0FBQyxLQUFLRCxDQUFDLENBQUNSLElBQUksQ0FBQyxNQUFNVSxDQUFDLElBQUksQ0FBQyxHQUFHQSxDQUFDLEVBQUUsTUFBTUQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUV0QixPQUFPLENBQUNXLE9BQU8sQ0FBTSxJQUFJYSxLQUFLLENBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0c7QUFFTyxTQUFTQyxLQUFLQSxDQUFDN0IsRUFBVSxFQUFFO0VBQ2hDLE9BQU8sSUFBSUksT0FBTyxDQUFDVyxPQUFPLElBQUlQLFVBQVUsQ0FBQ08sT0FBTyxFQUFFZixFQUFFLENBQUMsQ0FBQztBQUN4RCIsImlnbm9yZUxpc3QiOltdfQ==
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CompanyTypes, SCRAPERS } from './definitions';
|
|
2
|
+
export { default as createScraper } from './scrapers/factory';
|
|
3
|
+
export { ScraperLoginResult as ScaperLoginResult, ScraperScrapingResult as ScaperScrapingResult, Scraper, ScraperCredentials, ScraperLoginResult, ScraperOptions, ScraperScrapingResult, } from './scrapers/interface';
|
|
4
|
+
export { default as OneZeroScraper } from './scrapers/one-zero';
|
|
5
|
+
export declare function getPuppeteerConfig(): {
|
|
6
|
+
chromiumRevision: string;
|
|
7
|
+
};
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "CompanyTypes", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _definitions.CompanyTypes;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "OneZeroScraper", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _oneZero.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "SCRAPERS", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _definitions.SCRAPERS;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "ScaperLoginResult", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _interface.ScraperLoginResult;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "ScaperScrapingResult", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _interface.ScraperScrapingResult;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "Scraper", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _interface.Scraper;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "ScraperCredentials", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _interface.ScraperCredentials;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "ScraperLoginResult", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _interface.ScraperLoginResult;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "ScraperOptions", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _interface.ScraperOptions;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "ScraperScrapingResult", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _interface.ScraperScrapingResult;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "createScraper", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _factory.default;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
exports.getPuppeteerConfig = getPuppeteerConfig;
|
|
73
|
+
var _definitions = require("./definitions");
|
|
74
|
+
var _factory = _interopRequireDefault(require("./scrapers/factory"));
|
|
75
|
+
var _interface = require("./scrapers/interface");
|
|
76
|
+
var _oneZero = _interopRequireDefault(require("./scrapers/one-zero"));
|
|
77
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
78
|
+
// Note: the typo ScaperScrapingResult & ScraperLoginResult (sic) are exported here for backward compatibility
|
|
79
|
+
|
|
80
|
+
function getPuppeteerConfig() {
|
|
81
|
+
return {
|
|
82
|
+
chromiumRevision: '1250580'
|
|
83
|
+
}; // https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v22.5.0
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmaW5pdGlvbnMiLCJyZXF1aXJlIiwiX2ZhY3RvcnkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2ludGVyZmFjZSIsIl9vbmVaZXJvIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZ2V0UHVwcGV0ZWVyQ29uZmlnIiwiY2hyb21pdW1SZXZpc2lvbiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDb21wYW55VHlwZXMsIFNDUkFQRVJTIH0gZnJvbSAnLi9kZWZpbml0aW9ucyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZVNjcmFwZXIgfSBmcm9tICcuL3NjcmFwZXJzL2ZhY3RvcnknO1xuXG4vLyBOb3RlOiB0aGUgdHlwbyBTY2FwZXJTY3JhcGluZ1Jlc3VsdCAmIFNjcmFwZXJMb2dpblJlc3VsdCAoc2ljKSBhcmUgZXhwb3J0ZWQgaGVyZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuZXhwb3J0IHtcbiAgU2NyYXBlckxvZ2luUmVzdWx0IGFzIFNjYXBlckxvZ2luUmVzdWx0LFxuICBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgYXMgU2NhcGVyU2NyYXBpbmdSZXN1bHQsXG4gIFNjcmFwZXIsXG4gIFNjcmFwZXJDcmVkZW50aWFscyxcbiAgU2NyYXBlckxvZ2luUmVzdWx0LFxuICBTY3JhcGVyT3B0aW9ucyxcbiAgU2NyYXBlclNjcmFwaW5nUmVzdWx0LFxufSBmcm9tICcuL3NjcmFwZXJzL2ludGVyZmFjZSc7XG5cbmV4cG9ydCB7IGRlZmF1bHQgYXMgT25lWmVyb1NjcmFwZXIgfSBmcm9tICcuL3NjcmFwZXJzL29uZS16ZXJvJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFB1cHBldGVlckNvbmZpZygpIHtcbiAgcmV0dXJuIHsgY2hyb21pdW1SZXZpc2lvbjogJzEyNTA1ODAnIH07IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wdXBwZXRlZXIvcHVwcGV0ZWVyL3JlbGVhc2VzL3RhZy9wdXBwZXRlZXItY29yZS12MjIuNS4wXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLFlBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQVVBLElBQUFJLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUFnRSxTQUFBRSx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQVhoRTs7QUFhTyxTQUFTRyxrQkFBa0JBLENBQUEsRUFBRztFQUNuQyxPQUFPO0lBQUVDLGdCQUFnQixFQUFFO0VBQVUsQ0FBQyxDQUFDLENBQUM7QUFDMUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _baseIsracardAmex = _interopRequireDefault(require("./base-isracard-amex"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
const BASE_URL = 'https://he.americanexpress.co.il';
|
|
10
|
+
const COMPANY_CODE = '77';
|
|
11
|
+
class AmexScraper extends _baseIsracardAmex.default {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super(options, BASE_URL, COMPANY_CODE);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
var _default = exports.default = AmexScraper;
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUlzcmFjYXJkQW1leCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJDT01QQU5ZX0NPREUiLCJBbWV4U2NyYXBlciIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2FtZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIGZyb20gJy4vYmFzZS1pc3JhY2FyZC1hbWV4JztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vaGUuYW1lcmljYW5leHByZXNzLmNvLmlsJztcbmNvbnN0IENPTVBBTllfQ09ERSA9ICc3Nyc7XG5cbmNsYXNzIEFtZXhTY3JhcGVyIGV4dGVuZHMgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMsIEJBU0VfVVJMLCBDT01QQU5ZX0NPREUpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFtZXhTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQTJELFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzNELE1BQU1HLFFBQVEsR0FBRyxrQ0FBa0M7QUFDbkQsTUFBTUMsWUFBWSxHQUFHLElBQUk7QUFFekIsTUFBTUMsV0FBVyxTQUFTQyx5QkFBdUIsQ0FBQztFQUNoREMsV0FBV0EsQ0FBQ0MsT0FBdUIsRUFBRTtJQUNuQyxLQUFLLENBQUNBLE9BQU8sRUFBRUwsUUFBUSxFQUFFQyxZQUFZLENBQUM7RUFDeEM7QUFDRjtBQUFDLElBQUFLLFFBQUEsR0FBQUMsT0FBQSxDQUFBUixPQUFBLEdBRWNHLFdBQVciLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _amex = _interopRequireDefault(require("./amex"));
|
|
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 = 'amex'; // TODO this property should be hard-coded in the provider
|
|
9
|
+
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
10
|
+
describe('AMEX 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.amex).toBeDefined();
|
|
16
|
+
expect(_definitions.SCRAPERS.amex.loginFields).toContain('id');
|
|
17
|
+
expect(_definitions.SCRAPERS.amex.loginFields).toContain('card6Digits');
|
|
18
|
+
expect(_definitions.SCRAPERS.amex.loginFields).toContain('password');
|
|
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 _amex.default(options);
|
|
26
|
+
const result = await scraper.scrape({
|
|
27
|
+
id: 'e10s12',
|
|
28
|
+
card6Digits: '123456',
|
|
29
|
+
password: '3f3ss3d'
|
|
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 _amex.default(options);
|
|
41
|
+
const result = await scraper.scrape(testsConfig.credentials.amex);
|
|
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYW1leCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfZGVmaW5pdGlvbnMiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJhbWV4IiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJBTUVYU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsImlkIiwiY2FyZDZEaWdpdHMiLCJwYXNzd29yZCIsInN1Y2Nlc3MiLCJ0b0JlRmFsc3kiLCJlcnJvclR5cGUiLCJ0b0JlIiwiTG9naW5SZXN1bHRzIiwiSW52YWxpZFBhc3N3b3JkIiwiY3JlZGVudGlhbHMiLCJlcnJvciIsImVycm9yTWVzc2FnZSIsInRyaW0iLCJ0b0JlVHJ1dGh5IiwiZXhwb3J0VHJhbnNhY3Rpb25zIiwiYWNjb3VudHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYW1leC50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBBTUVYU2NyYXBlciBmcm9tICcuL2FtZXgnO1xuaW1wb3J0IHsgbWF5YmVUZXN0Q29tcGFueUFQSSwgZXh0ZW5kQXN5bmNUaW1lb3V0LCBnZXRUZXN0c0NvbmZpZywgZXhwb3J0VHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ2FtZXgnOyAvLyBUT0RPIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGhhcmQtY29kZWQgaW4gdGhlIHByb3ZpZGVyXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdBTUVYIGxlZ2FjeSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy5hbWV4KS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5hbWV4LmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ2lkJyk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLmFtZXgubG9naW5GaWVsZHMpLnRvQ29udGFpbignY2FyZDZEaWdpdHMnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuYW1leC5sb2dpbkZpZWxkcykudG9Db250YWluKCdwYXNzd29yZCcpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQsIGNvbmZpZyA9PiBjb25maWcuY29tcGFueUFQSS5pbnZhbGlkUGFzc3dvcmQpKFxuICAgICdzaG91bGQgZmFpbCBvbiBpbnZhbGlkIHVzZXIvcGFzc3dvcmRcIicsXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2NyYXBlciA9IG5ldyBBTUVYU2NyYXBlcihvcHRpb25zKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUoeyBpZDogJ2UxMHMxMicsIGNhcmQ2RGlnaXRzOiAnMTIzNDU2JywgcGFzc3dvcmQ6ICczZjNzczNkJyB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuc3VjY2VzcykudG9CZUZhbHN5KCk7XG4gICAgICBleHBlY3QocmVzdWx0LmVycm9yVHlwZSkudG9CZShMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkKTtcbiAgICB9LFxuICApO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCkoJ3Nob3VsZCBzY3JhcGUgdHJhbnNhY3Rpb25zXCInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgQU1FWFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUodGVzdHNDb25maWcuY3JlZGVudGlhbHMuYW1leCk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICBjb25zdCBlcnJvciA9IGAke3Jlc3VsdC5lcnJvclR5cGUgfHwgJyd9ICR7cmVzdWx0LmVycm9yTWVzc2FnZSB8fCAnJ31gLnRyaW0oKTtcbiAgICBleHBlY3QoZXJyb3IpLnRvQmUoJycpO1xuICAgIGV4cGVjdChyZXN1bHQuc3VjY2VzcykudG9CZVRydXRoeSgpO1xuXG4gICAgZXhwb3J0VHJhbnNhY3Rpb25zKENPTVBBTllfSUQsIHJlc3VsdC5hY2NvdW50cyB8fCBbXSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsdUJBQUEsR0FBQUgsT0FBQTtBQUEyRCxTQUFBRCx1QkFBQUssQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUzRCxNQUFNRyxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDM0IsTUFBTUMsV0FBVyxHQUFHLElBQUFDLDBCQUFjLEVBQUMsQ0FBQztBQUVwQ0MsUUFBUSxDQUFDLHFCQUFxQixFQUFFLE1BQU07RUFDcENDLFNBQVMsQ0FBQyxNQUFNO0lBQ2QsSUFBQUMsOEJBQWtCLEVBQUMsQ0FBQyxDQUFDLENBQUM7RUFDeEIsQ0FBQyxDQUFDO0VBRUZDLElBQUksQ0FBQyxpREFBaUQsRUFBRSxNQUFNO0lBQzVEQyxNQUFNLENBQUNDLHFCQUFRLENBQUNDLElBQUksQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQztJQUNuQ0gsTUFBTSxDQUFDQyxxQkFBUSxDQUFDQyxJQUFJLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ2pETCxNQUFNLENBQUNDLHFCQUFRLENBQUNDLElBQUksQ0FBQ0UsV0FBVyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxhQUFhLENBQUM7SUFDMURMLE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MsSUFBSSxDQUFDRSxXQUFXLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQztFQUN6RCxDQUFDLENBQUM7RUFFRixJQUFBQywrQkFBbUIsRUFBQ2IsVUFBVSxFQUFFYyxNQUFNLElBQUlBLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDQyxlQUFlLENBQUMsQ0FDMUUsdUNBQXVDLEVBQ3ZDLFlBQVk7SUFDVixNQUFNQyxPQUFPLEdBQUc7TUFDZCxHQUFHaEIsV0FBVyxDQUFDZ0IsT0FBTztNQUN0QkMsU0FBUyxFQUFFbEI7SUFDYixDQUFDO0lBRUQsTUFBTW1CLE9BQU8sR0FBRyxJQUFJQyxhQUFXLENBQUNILE9BQU8sQ0FBQztJQUV4QyxNQUFNSSxNQUFNLEdBQUcsTUFBTUYsT0FBTyxDQUFDRyxNQUFNLENBQUM7TUFBRUMsRUFBRSxFQUFFLFFBQVE7TUFBRUMsV0FBVyxFQUFFLFFBQVE7TUFBRUMsUUFBUSxFQUFFO0lBQVUsQ0FBQyxDQUFDO0lBRWpHbEIsTUFBTSxDQUFDYyxNQUFNLENBQUMsQ0FBQ1gsV0FBVyxDQUFDLENBQUM7SUFDNUJILE1BQU0sQ0FBQ2MsTUFBTSxDQUFDSyxPQUFPLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7SUFDbENwQixNQUFNLENBQUNjLE1BQU0sQ0FBQ08sU0FBUyxDQUFDLENBQUNDLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0MsZUFBZSxDQUFDO0VBQzdELENBQ0YsQ0FBQztFQUVELElBQUFsQiwrQkFBbUIsRUFBQ2IsVUFBVSxDQUFDLENBQUMsNkJBQTZCLEVBQUUsWUFBWTtJQUN6RSxNQUFNaUIsT0FBTyxHQUFHO01BQ2QsR0FBR2hCLFdBQVcsQ0FBQ2dCLE9BQU87TUFDdEJDLFNBQVMsRUFBRWxCO0lBQ2IsQ0FBQztJQUVELE1BQU1tQixPQUFPLEdBQUcsSUFBSUMsYUFBVyxDQUFDSCxPQUFPLENBQUM7SUFDeEMsTUFBTUksTUFBTSxHQUFHLE1BQU1GLE9BQU8sQ0FBQ0csTUFBTSxDQUFDckIsV0FBVyxDQUFDK0IsV0FBVyxDQUFDdkIsSUFBSSxDQUFDO0lBQ2pFRixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QixNQUFNdUIsS0FBSyxHQUFHLEdBQUdaLE1BQU0sQ0FBQ08sU0FBUyxJQUFJLEVBQUUsSUFBSVAsTUFBTSxDQUFDYSxZQUFZLElBQUksRUFBRSxFQUFFLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQzdFNUIsTUFBTSxDQUFDMEIsS0FBSyxDQUFDLENBQUNKLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEJ0QixNQUFNLENBQUNjLE1BQU0sQ0FBQ0ssT0FBTyxDQUFDLENBQUNVLFVBQVUsQ0FBQyxDQUFDO0lBRW5DLElBQUFDLDhCQUFrQixFQUFDckMsVUFBVSxFQUFFcUIsTUFBTSxDQUFDaUIsUUFBUSxJQUFJLEVBQUUsQ0FBQztFQUN2RCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { type Page } from 'puppeteer';
|
|
2
|
+
import { type TransactionsAccount } from '../transactions';
|
|
3
|
+
import { BaseScraperWithBrowser, type PossibleLoginResults } from './base-scraper-with-browser';
|
|
4
|
+
export declare function getPossibleLoginResults(): PossibleLoginResults;
|
|
5
|
+
export declare function createLoginFields(credentials: ScraperSpecificCredentials): {
|
|
6
|
+
selector: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}[];
|
|
9
|
+
export declare function waitForPostLogin(page: Page): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Ensures the account dropdown is open, then returns the available account labels.
|
|
12
|
+
*
|
|
13
|
+
* This method:
|
|
14
|
+
* - Checks if the dropdown is already open.
|
|
15
|
+
* - If not open, clicks the account selector to open it.
|
|
16
|
+
* - Waits for the dropdown to render.
|
|
17
|
+
* - Extracts and returns the list of available account labels.
|
|
18
|
+
*
|
|
19
|
+
* Graceful handling:
|
|
20
|
+
* - If any error occurs (e.g., selectors not found, timing issues, UI version changes),
|
|
21
|
+
* the function returns an empty list.
|
|
22
|
+
*
|
|
23
|
+
* @param page Puppeteer Page object.
|
|
24
|
+
* @returns An array of available account labels (e.g., ["127 | XXXX1", "127 | XXXX2"]),
|
|
25
|
+
* or an empty array if something goes wrong.
|
|
26
|
+
*/
|
|
27
|
+
export declare function clickAccountSelectorGetAccountIds(page: Page): Promise<string[]>;
|
|
28
|
+
/**
|
|
29
|
+
* Selects an account from the dropdown based on the provided account label.
|
|
30
|
+
*
|
|
31
|
+
* This method:
|
|
32
|
+
* - Clicks the account selector button to open the dropdown.
|
|
33
|
+
* - Retrieves the list of available account labels.
|
|
34
|
+
* - Checks if the provided account label exists in the list.
|
|
35
|
+
* - Finds and clicks the matching account option if found.
|
|
36
|
+
*
|
|
37
|
+
* @param page Puppeteer Page object.
|
|
38
|
+
* @param accountLabel The text of the account to select (e.g., "127 | XXXXX").
|
|
39
|
+
* @returns True if the account option was found and clicked; false otherwise.
|
|
40
|
+
*/
|
|
41
|
+
export declare function selectAccountFromDropdown(page: Page, accountLabel: string): Promise<boolean>;
|
|
42
|
+
type ScraperSpecificCredentials = {
|
|
43
|
+
username: string;
|
|
44
|
+
password: string;
|
|
45
|
+
};
|
|
46
|
+
declare class BeinleumiGroupBaseScraper extends BaseScraperWithBrowser<ScraperSpecificCredentials> {
|
|
47
|
+
BASE_URL: string;
|
|
48
|
+
LOGIN_URL: string;
|
|
49
|
+
TRANSACTIONS_URL: string;
|
|
50
|
+
getLoginOptions(credentials: ScraperSpecificCredentials): {
|
|
51
|
+
loginUrl: string;
|
|
52
|
+
fields: {
|
|
53
|
+
selector: string;
|
|
54
|
+
value: string;
|
|
55
|
+
}[];
|
|
56
|
+
submitButtonSelector: string;
|
|
57
|
+
postAction: () => Promise<void>;
|
|
58
|
+
possibleResults: PossibleLoginResults;
|
|
59
|
+
preAction: () => Promise<void>;
|
|
60
|
+
};
|
|
61
|
+
fetchData(): Promise<{
|
|
62
|
+
success: boolean;
|
|
63
|
+
accounts: TransactionsAccount[];
|
|
64
|
+
}>;
|
|
65
|
+
}
|
|
66
|
+
export default BeinleumiGroupBaseScraper;
|