pedding
Version:
Just pending for callback.
55 lines • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pedding = exports.ExecuteTooManyTimesError = void 0;
exports.pending = pending;
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);
}
}
exports.ExecuteTooManyTimesError = ExecuteTooManyTimesError;
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
*/
exports.pedding = pending;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUJBLDBCQWdDQztBQS9DRCxNQUFhLHdCQUF5QixTQUFRLEtBQUs7SUFDakQsUUFBUSxDQUFTO0lBQ2pCLE1BQU0sQ0FBUztJQUVmLFlBQVksUUFBZ0IsRUFBRSxNQUFjO1FBQzFDLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxtQkFBbUIsTUFBTSxRQUFRLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQVhELDREQVdDO0FBSUQsU0FBZ0IsT0FBTyxDQUFDLENBQW9CLEVBQUUsRUFBcUI7SUFDakUsSUFBSSxHQUFhLENBQUM7SUFDbEIsSUFBSSxPQUFPLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM1QixxQ0FBcUM7UUFDckMsaUJBQWlCO1FBQ2pCLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDUixDQUFDLEdBQUcsRUFBWSxDQUFDO0lBQ25CLENBQUM7U0FBTSxDQUFDO1FBQ04sR0FBRyxHQUFHLEVBQWMsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ25CLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLE1BQU0sU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7SUFDOUIsU0FBUyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7SUFDN0IsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQ3JCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2QsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQztRQUNELEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEIsR0FBRyxFQUFFLENBQUM7UUFDUixDQUFDO2FBQU0sSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkQsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNwQyxNQUFNLEdBQUcsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLE9BQU8sR0FBRyxPQUFPLENBQUMifQ==