UNPKG

guardz-axios

Version:

Type-safe HTTP client built on top of Axios with runtime validation using guardz. Part of the guardz ecosystem for comprehensive TypeScript type safety.

138 lines 4.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StatusValidators = exports.isStatus503 = exports.isStatus502 = exports.isStatus500 = exports.isStatus429 = exports.isStatus422 = exports.isStatus404 = exports.isStatus403 = exports.isStatus401 = exports.isStatus400 = exports.isStatus204 = exports.isStatus201 = exports.isStatus200 = exports.isServerErrorStatus = exports.isClientErrorStatus = exports.isRedirectStatus = exports.isSuccessStatus = exports.isHttpStatus = void 0; exports.createStatusGuard = createStatusGuard; exports.getStatusCategory = getStatusCategory; exports.isRetryableStatus = isRetryableStatus; exports.hasResponseBody = hasResponseBody; /** * Type guard for valid HTTP status codes */ const isHttpStatus = function (value, _config) { if (typeof value !== "number") { return false; } return value >= 100 && value < 600; }; exports.isHttpStatus = isHttpStatus; /** * Type guard for success status codes (2xx) */ const isSuccessStatus = function (value, _config) { if (!(0, exports.isHttpStatus)(value, _config)) { return false; } return value >= 200 && value < 300; }; exports.isSuccessStatus = isSuccessStatus; /** * Type guard for redirect status codes (3xx) */ const isRedirectStatus = function (value, _config) { if (!(0, exports.isHttpStatus)(value, _config)) { return false; } return value >= 300 && value < 400; }; exports.isRedirectStatus = isRedirectStatus; /** * Type guard for client error status codes (4xx) */ const isClientErrorStatus = function (value, _config) { if (!(0, exports.isHttpStatus)(value, _config)) { return false; } return value >= 400 && value < 500; }; exports.isClientErrorStatus = isClientErrorStatus; /** * Type guard for server error status codes (5xx) */ const isServerErrorStatus = function (value, _config) { if (!(0, exports.isHttpStatus)(value, _config)) { return false; } return value >= 500 && value < 600; }; exports.isServerErrorStatus = isServerErrorStatus; /** * Type guard for specific status codes */ const isStatus200 = (value, _config) => value === 200; exports.isStatus200 = isStatus200; const isStatus201 = (value, _config) => value === 201; exports.isStatus201 = isStatus201; const isStatus204 = (value, _config) => value === 204; exports.isStatus204 = isStatus204; const isStatus400 = (value, _config) => value === 400; exports.isStatus400 = isStatus400; const isStatus401 = (value, _config) => value === 401; exports.isStatus401 = isStatus401; const isStatus403 = (value, _config) => value === 403; exports.isStatus403 = isStatus403; const isStatus404 = (value, _config) => value === 404; exports.isStatus404 = isStatus404; const isStatus422 = (value, _config) => value === 422; exports.isStatus422 = isStatus422; const isStatus429 = (value, _config) => value === 429; exports.isStatus429 = isStatus429; const isStatus500 = (value, _config) => value === 500; exports.isStatus500 = isStatus500; const isStatus502 = (value, _config) => value === 502; exports.isStatus502 = isStatus502; const isStatus503 = (value, _config) => value === 503; exports.isStatus503 = isStatus503; /** * Creates a type guard for a specific status code */ function createStatusGuard(statusCode) { return function (value, _config) { return value === statusCode; }; } /** * Status code category checker */ function getStatusCategory(status) { if ((0, exports.isSuccessStatus)(status)) return "success"; if ((0, exports.isRedirectStatus)(status)) return "redirect"; if ((0, exports.isClientErrorStatus)(status)) return "client-error"; if ((0, exports.isServerErrorStatus)(status)) return "server-error"; return "unknown"; } /** * Check if status indicates retryable error */ function isRetryableStatus(status) { const retryableStatuses = [408, 429, 500, 502, 503, 504]; return retryableStatuses.includes(status); } /** * Check if status indicates success that might have response body */ function hasResponseBody(status) { // 204 No Content and 304 Not Modified typically don't have response body return status !== 204 && status !== 304; } /** * Common status code validators */ exports.StatusValidators = Object.freeze({ isOk: exports.isStatus200, isCreated: exports.isStatus201, isNoContent: exports.isStatus204, isBadRequest: exports.isStatus400, isUnauthorized: exports.isStatus401, isForbidden: exports.isStatus403, isNotFound: exports.isStatus404, isValidationError: exports.isStatus422, isRateLimit: exports.isStatus429, isInternalServerError: exports.isStatus500, isBadGateway: exports.isStatus502, isServiceUnavailable: exports.isStatus503, }); //# sourceMappingURL=status-guards.js.map