israeli-bank-scrapers
Version:
Provide scrapers for all major Israeli banks and credit card companies
63 lines (61 loc) • 7.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TimeoutError = exports.SECOND = void 0;
exports.raceTimeout = raceTimeout;
exports.randomDelay = randomDelay;
exports.runSerial = runSerial;
exports.sleep = sleep;
exports.waitUntil = waitUntil;
class TimeoutError extends Error {}
exports.TimeoutError = TimeoutError;
const SECOND = exports.SECOND = 1000;
function timeoutPromise(ms, promise, description) {
const timeout = new Promise((_, reject) => {
const id = setTimeout(() => {
clearTimeout(id);
const error = new TimeoutError(description);
reject(error);
}, ms);
});
return Promise.race([promise,
// casting to avoid type error- safe since this promise will always reject
timeout]);
}
/**
* Wait until a promise resolves with a truthy value or reject after a timeout
*/
function waitUntil(asyncTest, description = '', timeout = 10000, interval = 100) {
const promise = new Promise((resolve, reject) => {
function wait() {
asyncTest().then(value => {
if (value) {
resolve(value);
} else {
setTimeout(wait, interval);
}
}).catch(() => {
reject();
});
}
wait();
});
return timeoutPromise(timeout, promise, description);
}
function raceTimeout(ms, promise) {
return timeoutPromise(ms, promise, 'timeout').catch(err => {
if (!(err instanceof TimeoutError)) throw err;
});
}
function runSerial(actions) {
return actions.reduce((m, a) => m.then(async x => [...x, await a()]), Promise.resolve(new Array()));
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function randomDelay(min = 500, max = 2000) {
const delay = Math.floor(Math.random() * (max - min + 1)) + min;
return new Promise(resolve => setTimeout(resolve, delay));
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUaW1lb3V0RXJyb3IiLCJFcnJvciIsImV4cG9ydHMiLCJTRUNPTkQiLCJ0aW1lb3V0UHJvbWlzZSIsIm1zIiwicHJvbWlzZSIsImRlc2NyaXB0aW9uIiwidGltZW91dCIsIlByb21pc2UiLCJfIiwicmVqZWN0IiwiaWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiZXJyb3IiLCJyYWNlIiwid2FpdFVudGlsIiwiYXN5bmNUZXN0IiwiaW50ZXJ2YWwiLCJyZXNvbHZlIiwid2FpdCIsInRoZW4iLCJ2YWx1ZSIsImNhdGNoIiwicmFjZVRpbWVvdXQiLCJlcnIiLCJydW5TZXJpYWwiLCJhY3Rpb25zIiwicmVkdWNlIiwibSIsImEiLCJ4IiwiQXJyYXkiLCJzbGVlcCIsInJhbmRvbURlbGF5IiwibWluIiwibWF4IiwiZGVsYXkiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy93YWl0aW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRmFsc3kgPSBmYWxzZSB8ICcnIHwgMCB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgY29uc3QgU0VDT05EID0gMTAwMDtcblxudHlwZSBXYWl0VW50aWxSZXR1cm48VD4gPSBUIGV4dGVuZHMgRmFsc3kgPyBuZXZlciA6IFByb21pc2U8Tm9uTnVsbGFibGU8VD4+O1xuXG5mdW5jdGlvbiB0aW1lb3V0UHJvbWlzZTxUPihtczogbnVtYmVyLCBwcm9taXNlOiBQcm9taXNlPFQ+LCBkZXNjcmlwdGlvbjogc3RyaW5nKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IHRpbWVvdXQgPSBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChpZCk7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBUaW1lb3V0RXJyb3IoZGVzY3JpcHRpb24pO1xuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9LCBtcyk7XG4gIH0pO1xuXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHByb21pc2UsXG4gICAgLy8gY2FzdGluZyB0byBhdm9pZCB0eXBlIGVycm9yLSBzYWZlIHNpbmNlIHRoaXMgcHJvbWlzZSB3aWxsIGFsd2F5cyByZWplY3RcbiAgICB0aW1lb3V0IGFzIFByb21pc2U8VD4sXG4gIF0pO1xufVxuXG4vKipcbiAqIFdhaXQgdW50aWwgYSBwcm9taXNlIHJlc29sdmVzIHdpdGggYSB0cnV0aHkgdmFsdWUgb3IgcmVqZWN0IGFmdGVyIGEgdGltZW91dFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2FpdFVudGlsPFQ+KFxuICBhc3luY1Rlc3Q6ICgpID0+IFByb21pc2U8VD4sXG4gIGRlc2NyaXB0aW9uID0gJycsXG4gIHRpbWVvdXQgPSAxMDAwMCxcbiAgaW50ZXJ2YWwgPSAxMDAsXG4pOiBXYWl0VW50aWxSZXR1cm48VD4ge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8Tm9uTnVsbGFibGU8VD4+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBmdW5jdGlvbiB3YWl0KCkge1xuICAgICAgYXN5bmNUZXN0KClcbiAgICAgICAgLnRoZW4odmFsdWUgPT4ge1xuICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQod2FpdCwgaW50ZXJ2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHdhaXQoKTtcbiAgfSk7XG4gIHJldHVybiB0aW1lb3V0UHJvbWlzZSh0aW1lb3V0LCBwcm9taXNlLCBkZXNjcmlwdGlvbikgYXMgV2FpdFVudGlsUmV0dXJuPFQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFjZVRpbWVvdXQobXM6IG51bWJlciwgcHJvbWlzZTogUHJvbWlzZTxhbnk+KSB7XG4gIHJldHVybiB0aW1lb3V0UHJvbWlzZShtcywgcHJvbWlzZSwgJ3RpbWVvdXQnKS5jYXRjaChlcnIgPT4ge1xuICAgIGlmICghKGVyciBpbnN0YW5jZW9mIFRpbWVvdXRFcnJvcikpIHRocm93IGVycjtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5TZXJpYWw8VD4oYWN0aW9uczogKCgpID0+IFByb21pc2U8VD4pW10pOiBQcm9taXNlPFRbXT4ge1xuICByZXR1cm4gYWN0aW9ucy5yZWR1Y2UoKG0sIGEpID0+IG0udGhlbihhc3luYyB4ID0+IFsuLi54LCBhd2FpdCBhKCldKSwgUHJvbWlzZS5yZXNvbHZlPFRbXT4obmV3IEFycmF5PFQ+KCkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tRGVsYXkobWluOiBudW1iZXIgPSA1MDAsIG1heDogbnVtYmVyID0gMjAwMCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBkZWxheSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4gKyAxKSkgKyBtaW47XG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZGVsYXkpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFTyxNQUFNQSxZQUFZLFNBQVNDLEtBQUssQ0FBQztBQUFFQyxPQUFBLENBQUFGLFlBQUEsR0FBQUEsWUFBQTtBQUVuQyxNQUFNRyxNQUFNLEdBQUFELE9BQUEsQ0FBQUMsTUFBQSxHQUFHLElBQUk7QUFJMUIsU0FBU0MsY0FBY0EsQ0FBSUMsRUFBVSxFQUFFQyxP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