UNPKG

advanced-retry

Version:
57 lines (56 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.redirectErrorFilter = exports.clientErrorErrorFilter = exports.serverErrorErrorFilter = exports.statusCodeErrorFilterRange = exports.statusCodeErrorFilterAny = void 0; exports.errorToStatusCode = errorToStatusCode; function errorToStatusCode(error) { // Check for standard response object with status if (typeof error === 'object' && error !== null) { const err = error; // Check common status/statusCode properties if ('status' in err && typeof err.status === 'number') return err.status; if ('statusCode' in err && typeof err.statusCode === 'number') return err.statusCode; // Check for nested response object if ('response' in err && typeof err.response === 'object' && err.response && 'status' in err.response && typeof err.response.status === 'number') { return err.response.status; } // Check for nested response object if ('response' in err && typeof err.response === 'object' && err.response && 'statusCode' in err.response && typeof err.response.statusCode === 'number') { return err.response.statusCode; } } return null; } /** * Creates a filter that matches if the error has any of the specified status codes */ const statusCodeErrorFilterAny = (statusCodes) => ({ canHandleError: error => { const status = errorToStatusCode(error); return status !== null && statusCodes.includes(status); }, }); exports.statusCodeErrorFilterAny = statusCodeErrorFilterAny; /** * Creates a filter that matches errors within a status code range (inclusive) */ const statusCodeErrorFilterRange = (min, max) => ({ canHandleError: error => { const status = errorToStatusCode(error); return status !== null && status >= min && status <= max; }, }); exports.statusCodeErrorFilterRange = statusCodeErrorFilterRange; // Common status code ranges exports.serverErrorErrorFilter = (0, exports.statusCodeErrorFilterRange)(500, 599); exports.clientErrorErrorFilter = (0, exports.statusCodeErrorFilterRange)(400, 499); exports.redirectErrorFilter = (0, exports.statusCodeErrorFilterRange)(300, 399);