@poppanator/http-constants
Version:
This package contains various HTTP constants: http status codes and texts, HTTP header names and HTTP methods, and a few related utility function.
42 lines (33 loc) • 1.2 kB
text/typescript
import type { Maybe } from './_type-types.js'
import * as tuples from './tuples.js'
const is =
(res: number) =>
(code: number): boolean =>
Math.floor(code / 100) === res
/** Returns true if `code` is an "informational" status code, e.g. 100-199 */
export const isInformational = is(1)
/** Returns true if `code` is a "successful" status code, e.g. 200-299 */
export const isSuccess = is(2)
/** Returns true if `code` is a "redirection" status code, e.g. 300-399 */
export const isRedirect = is(3)
/** Returns true if `code` is a "client error" status code, e.g. 400-499 */
export const isClientError = is(4)
/** Returns true if `code` is a "server error" status code, e.g. 500-599 */
export const isServerError = is(5)
/**
* Check if `code` is an existing HTTP status code
*/
export function isHttpStatus(code: number): boolean {
return Object.values(tuples).some(([status]) => code === status)
}
/**
* Returns the associated message with the status code `status`, or `undefined`
* if not found
*/
export function getStatusText(status: number): Maybe<string> {
for (const [code, text] of Object.values(tuples)) {
if (code === status) {
return text
}
}
}