@httpland/range-request-middleware
Version:
HTTP range request middleware
257 lines (256 loc) • 11 kB
JavaScript
"use strict";
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
// This module is browser compatible.
Object.defineProperty(exports, "__esModule", { value: true });
exports.isErrorStatus = exports.isServerErrorStatus = exports.isClientErrorStatus = exports.isRedirectStatus = exports.isSuccessfulStatus = exports.isInformationalStatus = exports.STATUS_TEXT = exports.Status = void 0;
/**
* Contains the enum {@linkcode Status} which enumerates standard HTTP status
* codes and provides several type guards for handling status codes with type
* safety.
*
* @example
* ```ts
* import {
* Status,
* STATUS_TEXT,
* } from "https://deno.land/std@$STD_VERSION/http/http_status.ts";
*
* console.log(Status.NotFound); //=> 404
* console.log(STATUS_TEXT[Status.NotFound]); //=> "Not Found"
* ```
*
* ```ts
* import { isErrorStatus } from "https://deno.land/std@$STD_VERSION/http/http_status.ts";
*
* const res = await fetch("https://example.com/");
*
* if (isErrorStatus(res.status)) {
* // error handling here...
* }
* ```
*
* @module
*/
/** Standard HTTP status codes. */
var Status;
(function (Status) {
/** RFC 7231, 6.2.1 */
Status[Status["Continue"] = 100] = "Continue";
/** RFC 7231, 6.2.2 */
Status[Status["SwitchingProtocols"] = 101] = "SwitchingProtocols";
/** RFC 2518, 10.1 */
Status[Status["Processing"] = 102] = "Processing";
/** RFC 8297 **/
Status[Status["EarlyHints"] = 103] = "EarlyHints";
/** RFC 7231, 6.3.1 */
Status[Status["OK"] = 200] = "OK";
/** RFC 7231, 6.3.2 */
Status[Status["Created"] = 201] = "Created";
/** RFC 7231, 6.3.3 */
Status[Status["Accepted"] = 202] = "Accepted";
/** RFC 7231, 6.3.4 */
Status[Status["NonAuthoritativeInfo"] = 203] = "NonAuthoritativeInfo";
/** RFC 7231, 6.3.5 */
Status[Status["NoContent"] = 204] = "NoContent";
/** RFC 7231, 6.3.6 */
Status[Status["ResetContent"] = 205] = "ResetContent";
/** RFC 7233, 4.1 */
Status[Status["PartialContent"] = 206] = "PartialContent";
/** RFC 4918, 11.1 */
Status[Status["MultiStatus"] = 207] = "MultiStatus";
/** RFC 5842, 7.1 */
Status[Status["AlreadyReported"] = 208] = "AlreadyReported";
/** RFC 3229, 10.4.1 */
Status[Status["IMUsed"] = 226] = "IMUsed";
/** RFC 7231, 6.4.1 */
Status[Status["MultipleChoices"] = 300] = "MultipleChoices";
/** RFC 7231, 6.4.2 */
Status[Status["MovedPermanently"] = 301] = "MovedPermanently";
/** RFC 7231, 6.4.3 */
Status[Status["Found"] = 302] = "Found";
/** RFC 7231, 6.4.4 */
Status[Status["SeeOther"] = 303] = "SeeOther";
/** RFC 7232, 4.1 */
Status[Status["NotModified"] = 304] = "NotModified";
/** RFC 7231, 6.4.5 */
Status[Status["UseProxy"] = 305] = "UseProxy";
/** RFC 7231, 6.4.7 */
Status[Status["TemporaryRedirect"] = 307] = "TemporaryRedirect";
/** RFC 7538, 3 */
Status[Status["PermanentRedirect"] = 308] = "PermanentRedirect";
/** RFC 7231, 6.5.1 */
Status[Status["BadRequest"] = 400] = "BadRequest";
/** RFC 7235, 3.1 */
Status[Status["Unauthorized"] = 401] = "Unauthorized";
/** RFC 7231, 6.5.2 */
Status[Status["PaymentRequired"] = 402] = "PaymentRequired";
/** RFC 7231, 6.5.3 */
Status[Status["Forbidden"] = 403] = "Forbidden";
/** RFC 7231, 6.5.4 */
Status[Status["NotFound"] = 404] = "NotFound";
/** RFC 7231, 6.5.5 */
Status[Status["MethodNotAllowed"] = 405] = "MethodNotAllowed";
/** RFC 7231, 6.5.6 */
Status[Status["NotAcceptable"] = 406] = "NotAcceptable";
/** RFC 7235, 3.2 */
Status[Status["ProxyAuthRequired"] = 407] = "ProxyAuthRequired";
/** RFC 7231, 6.5.7 */
Status[Status["RequestTimeout"] = 408] = "RequestTimeout";
/** RFC 7231, 6.5.8 */
Status[Status["Conflict"] = 409] = "Conflict";
/** RFC 7231, 6.5.9 */
Status[Status["Gone"] = 410] = "Gone";
/** RFC 7231, 6.5.10 */
Status[Status["LengthRequired"] = 411] = "LengthRequired";
/** RFC 7232, 4.2 */
Status[Status["PreconditionFailed"] = 412] = "PreconditionFailed";
/** RFC 7231, 6.5.11 */
Status[Status["RequestEntityTooLarge"] = 413] = "RequestEntityTooLarge";
/** RFC 7231, 6.5.12 */
Status[Status["RequestURITooLong"] = 414] = "RequestURITooLong";
/** RFC 7231, 6.5.13 */
Status[Status["UnsupportedMediaType"] = 415] = "UnsupportedMediaType";
/** RFC 7233, 4.4 */
Status[Status["RequestedRangeNotSatisfiable"] = 416] = "RequestedRangeNotSatisfiable";
/** RFC 7231, 6.5.14 */
Status[Status["ExpectationFailed"] = 417] = "ExpectationFailed";
/** RFC 7168, 2.3.3 */
Status[Status["Teapot"] = 418] = "Teapot";
/** RFC 7540, 9.1.2 */
Status[Status["MisdirectedRequest"] = 421] = "MisdirectedRequest";
/** RFC 4918, 11.2 */
Status[Status["UnprocessableEntity"] = 422] = "UnprocessableEntity";
/** RFC 4918, 11.3 */
Status[Status["Locked"] = 423] = "Locked";
/** RFC 4918, 11.4 */
Status[Status["FailedDependency"] = 424] = "FailedDependency";
/** RFC 8470, 5.2 */
Status[Status["TooEarly"] = 425] = "TooEarly";
/** RFC 7231, 6.5.15 */
Status[Status["UpgradeRequired"] = 426] = "UpgradeRequired";
/** RFC 6585, 3 */
Status[Status["PreconditionRequired"] = 428] = "PreconditionRequired";
/** RFC 6585, 4 */
Status[Status["TooManyRequests"] = 429] = "TooManyRequests";
/** RFC 6585, 5 */
Status[Status["RequestHeaderFieldsTooLarge"] = 431] = "RequestHeaderFieldsTooLarge";
/** RFC 7725, 3 */
Status[Status["UnavailableForLegalReasons"] = 451] = "UnavailableForLegalReasons";
/** RFC 7231, 6.6.1 */
Status[Status["InternalServerError"] = 500] = "InternalServerError";
/** RFC 7231, 6.6.2 */
Status[Status["NotImplemented"] = 501] = "NotImplemented";
/** RFC 7231, 6.6.3 */
Status[Status["BadGateway"] = 502] = "BadGateway";
/** RFC 7231, 6.6.4 */
Status[Status["ServiceUnavailable"] = 503] = "ServiceUnavailable";
/** RFC 7231, 6.6.5 */
Status[Status["GatewayTimeout"] = 504] = "GatewayTimeout";
/** RFC 7231, 6.6.6 */
Status[Status["HTTPVersionNotSupported"] = 505] = "HTTPVersionNotSupported";
/** RFC 2295, 8.1 */
Status[Status["VariantAlsoNegotiates"] = 506] = "VariantAlsoNegotiates";
/** RFC 4918, 11.5 */
Status[Status["InsufficientStorage"] = 507] = "InsufficientStorage";
/** RFC 5842, 7.2 */
Status[Status["LoopDetected"] = 508] = "LoopDetected";
/** RFC 2774, 7 */
Status[Status["NotExtended"] = 510] = "NotExtended";
/** RFC 6585, 6 */
Status[Status["NetworkAuthenticationRequired"] = 511] = "NetworkAuthenticationRequired";
})(Status = exports.Status || (exports.Status = {}));
/** A record of all the status codes text. */
exports.STATUS_TEXT = {
[]: "Accepted",
[]: "Already Reported",
[]: "Bad Gateway",
[]: "Bad Request",
[]: "Conflict",
[]: "Continue",
[]: "Created",
[]: "Early Hints",
[]: "Expectation Failed",
[]: "Failed Dependency",
[]: "Forbidden",
[]: "Found",
[]: "Gateway Timeout",
[]: "Gone",
[]: "HTTP Version Not Supported",
[]: "IM Used",
[]: "Insufficient Storage",
[]: "Internal Server Error",
[]: "Length Required",
[]: "Locked",
[]: "Loop Detected",
[]: "Method Not Allowed",
[]: "Misdirected Request",
[]: "Moved Permanently",
[]: "Multi Status",
[]: "Multiple Choices",
[]: "Network Authentication Required",
[]: "No Content",
[]: "Non Authoritative Info",
[]: "Not Acceptable",
[]: "Not Extended",
[]: "Not Found",
[]: "Not Implemented",
[]: "Not Modified",
[]: "OK",
[]: "Partial Content",
[]: "Payment Required",
[]: "Permanent Redirect",
[]: "Precondition Failed",
[]: "Precondition Required",
[]: "Processing",
[]: "Proxy Auth Required",
[]: "Request Entity Too Large",
[]: "Request Header Fields Too Large",
[]: "Request Timeout",
[]: "Request URI Too Long",
[]: "Requested Range Not Satisfiable",
[]: "Reset Content",
[]: "See Other",
[]: "Service Unavailable",
[]: "Switching Protocols",
[]: "I'm a teapot",
[]: "Temporary Redirect",
[]: "Too Early",
[]: "Too Many Requests",
[]: "Unauthorized",
[]: "Unavailable For Legal Reasons",
[]: "Unprocessable Entity",
[]: "Unsupported Media Type",
[]: "Upgrade Required",
[]: "Use Proxy",
[]: "Variant Also Negotiates",
};
/** A type guard that determines if the status code is informational. */
function isInformationalStatus(status) {
return status >= 100 && status < 200;
}
exports.isInformationalStatus = isInformationalStatus;
/** A type guard that determines if the status code is successful. */
function isSuccessfulStatus(status) {
return status >= 200 && status < 300;
}
exports.isSuccessfulStatus = isSuccessfulStatus;
/** A type guard that determines if the status code is a redirection. */
function isRedirectStatus(status) {
return status >= 300 && status < 400;
}
exports.isRedirectStatus = isRedirectStatus;
/** A type guard that determines if the status code is a client error. */
function isClientErrorStatus(status) {
return status >= 400 && status < 500;
}
exports.isClientErrorStatus = isClientErrorStatus;
/** A type guard that determines if the status code is a server error. */
function isServerErrorStatus(status) {
return status >= 500 && status < 600;
}
exports.isServerErrorStatus = isServerErrorStatus;
/** A type guard that determines if the status code is an error. */
function isErrorStatus(status) {
return status >= 400 && status < 600;
}
exports.isErrorStatus = isErrorStatus;