UNPKG

pedding

Version:
50 lines 3.06 kB
export class ExecuteTooManyTimesError extends Error { expected; actual; constructor(expected, actual) { super(`Expected to execute ${expected} times, but got ${actual} times`); this.expected = expected; this.actual = actual; this.name = this.constructor.name; Error.captureStackTrace(this, this.constructor); } } export function pending(n, fn) { let _fn; if (typeof n === 'function') { // keep compatibility for old version // pending(fn, n) _fn = n; n = fn; } else { _fn = fn; } let called = false; let times = 0; const callStack = new Error(); callStack.name = 'CallStack'; return (err) => { if (called) { return; } if (err) { called = true; return _fn(err); } times++; if (times === n) { _fn(); } else if (times > n) { const err = new ExecuteTooManyTimesError(n, times); err.stack += '\n' + callStack.stack; throw err; } }; } /** * @deprecated Use `pending` instead */ export const pedding = pending; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHdCQUF5QixTQUFRLEtBQUs7SUFDakQsUUFBUSxDQUFTO0lBQ2pCLE1BQU0sQ0FBUztJQUVmLFlBQVksUUFBZ0IsRUFBRSxNQUFjO1FBQzFDLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxtQkFBbUIsTUFBTSxRQUFRLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQUlELE1BQU0sVUFBVSxPQUFPLENBQUMsQ0FBb0IsRUFBRSxFQUFxQjtJQUNqRSxJQUFJLEdBQWEsQ0FBQztJQUNsQixJQUFJLE9BQU8sQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVCLHFDQUFxQztRQUNyQyxpQkFBaUI7UUFDakIsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNSLENBQUMsR0FBRyxFQUFZLENBQUM7SUFDbkIsQ0FBQztTQUFNLENBQUM7UUFDTixHQUFHLEdBQUcsRUFBYyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsTUFBTSxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUM5QixTQUFTLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztJQUM3QixPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUU7UUFDckIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQixHQUFHLEVBQUUsQ0FBQztRQUNSLENBQUM7YUFBTSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLHdCQUF3QixDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRCxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3BDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMifQ==