advanced-retry
Version:
A retry library with advanced features
57 lines (56 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toErrorFilter = toErrorFilter;
exports.allErrorFilter = allErrorFilter;
exports.anyErrorFilter = anyErrorFilter;
exports.noneErrorFilter = noneErrorFilter;
function toErrorFilter(p) {
if (typeof p === 'function') {
return { canHandleError: p };
}
return p;
}
/**
* Creates a filter that requires all provided filters to pass
* @param filters Array of filters or filter functions
*/
function allErrorFilter(filters) {
return {
canHandleError: (error, attempt, context) => {
return filters.every(filter => {
if (typeof filter === 'function') {
return filter(error, attempt, context);
}
return filter.canHandleError(error, attempt, context);
});
},
};
}
/**
* Creates a filter that requires any of the provided filters to pass
* @param filters Array of filters or filter functions
*/
function anyErrorFilter(filters) {
return {
canHandleError: (error, attempt, context) => {
return filters.some(filter => {
if (typeof filter === 'function') {
return filter(error, attempt, context);
}
return filter.canHandleError(error, attempt, context);
});
},
};
}
function noneErrorFilter(filters) {
return {
canHandleError: (error, attempt, context) => {
return !filters.some(filter => {
if (typeof filter === 'function') {
return filter(error, attempt, context);
}
return filter.canHandleError(error, attempt, context);
});
},
};
}