@goa/statuses

1.0.1 • Public • Published

@goa/statuses

npm version

@goa/statuses is HTTP status utility.

yarn add @goa/statuses

Table Of Contents

API

The package is available by importing its default function and additional objects populated with status codes:

import status, { STATUS_CODES } from '@goa/statuses'

status(
  code: number|string,
): number

Get the status code.

Given a number, this will throw if it is not a known status code, otherwise the code will be returned. Given a string, the string will be parsed for a number and return the code if valid, otherwise will lookup the code assuming this is the status message.

  • code* (number | string): The code or phrase.
import status from '@goa/statuses'

console.log(status(403)) // => 403
console.log(status('403')) // => 403
console.log(status('forbidden')) // => 403
console.log(status('Forbidden')) // => 403
try {
  status(5000) // throws, as it's not supported by Node.JS
} catch (err) {
  console.log(err.message)
}
403
403
403
403
invalid status code: 5000

Codes Objects

Additional exports are populated with codes directly.

!Object<string, string> STATUS_CODES

Returns an object which maps status codes to status messages, in the same format as the Node.JS http module.

import { STATUS_CODES } from '@goa/statuses'

console.log(STATUS_CODES)
{ '100': 'Continue',
  '101': 'Switching Protocols',
  '102': 'Processing',
  '103': 'Early Hints',
  '200': 'OK',
  '201': 'Created',
  '202': 'Accepted',
  '203': 'Non-Authoritative Information',
  '204': 'No Content',
  '205': 'Reset Content',
  '206': 'Partial Content',
  '207': 'Multi-Status',
  '208': 'Already Reported',
  '226': 'IM Used',
  '300': 'Multiple Choices',
  '301': 'Moved Permanently',
  '302': 'Found',
  '303': 'See Other',
  '304': 'Not Modified',
  '305': 'Use Proxy',
  '306': '(Unused)',
  '307': 'Temporary Redirect',
  '308': 'Permanent Redirect',
  '400': 'Bad Request',
  '401': 'Unauthorized',
  '402': 'Payment Required',
  '403': 'Forbidden',
  '404': 'Not Found',
  '405': 'Method Not Allowed',
  '406': 'Not Acceptable',
  '407': 'Proxy Authentication Required',
  '408': 'Request Timeout',
  '409': 'Conflict',
  '410': 'Gone',
  '411': 'Length Required',
  '412': 'Precondition Failed',
  '413': 'Payload Too Large',
  '414': 'URI Too Long',
  '415': 'Unsupported Media Type',
  '416': 'Range Not Satisfiable',
  '417': 'Expectation Failed',
  '418': 'I\'m a teapot',
  '421': 'Misdirected Request',
  '422': 'Unprocessable Entity',
  '423': 'Locked',
  '424': 'Failed Dependency',
  '425': 'Unordered Collection',
  '426': 'Upgrade Required',
  '428': 'Precondition Required',
  '429': 'Too Many Requests',
  '431': 'Request Header Fields Too Large',
  '451': 'Unavailable For Legal Reasons',
  '500': 'Internal Server Error',
  '501': 'Not Implemented',
  '502': 'Bad Gateway',
  '503': 'Service Unavailable',
  '504': 'Gateway Timeout',
  '505': 'HTTP Version Not Supported',
  '506': 'Variant Also Negotiates',
  '507': 'Insufficient Storage',
  '508': 'Loop Detected',
  '509': 'Bandwidth Limit Exceeded',
  '510': 'Not Extended',
  '511': 'Network Authentication Required' }

!Array<number> codes

Returns an array of all the status codes as numbers.

import { codes } from '@goa/statuses'

console.log(codes)
[ 100,
  101,
  102,
  103,
  200,
  201,
  202,
  203,
  204,
  205,
  206,
  207,
  208,
  226,
  300,
  301,
  302,
  303,
  304,
  305,
  306,
  307,
  308,
  400,
  401,
  402,
  403,
  404,
  405,
  406,
  407,
  408,
  409,
  410,
  411,
  412,
  413,
  414,
  415,
  416,
  417,
  418,
  421,
  422,
  423,
  424,
  425,
  426,
  428,
  429,
  431,
  451,
  500,
  501,
  502,
  503,
  504,
  505,
  506,
  507,
  508,
  509,
  510,
  511 ]

status[code]

Map of code to status message. Returns undefined for invalid codes.

Source Output
import status from '@goa/statuses'

console.log(status[404])
Not Found

status[message]

Map of status message to code. msg can either be title-cased or lower-cased. Returns undefined for invalid status messages.

Source Output
import status from '@goa/statuses'

console.log(status['not found'])
console.log(status['Not Found'])
404
404

redirect[code]

Returns true if a status code is a valid redirect status.

Source Output
import { redirect } from '@goa/statuses'

console.log(redirect[200])
console.log(redirect[301])
undefined
true

empty[code]

Returns true if a status code expects an empty body.

Source Output
import { empty } from '@goa/statuses'

console.log(empty[200])
console.log(empty[204])
console.log(empty[304])
undefined
true
true

retry[code]

Returns true if you should retry the rest.

Source Output
import { retry } from '@goa/statuses'

console.log(retry[501])
console.log(retry[503])
undefined
true

Copyright & License

GNU Affero General Public License v3.0

Original work by Jonathan Ong and Douglas Christopher Wilson under MIT license found in COPYING.

idiocc © Art Deco™ 2019

Dependencies (0)

    Dev Dependencies (7)

    Package Sidebar

    Install

    npm i @goa/statuses

    Homepage

    www.idio.cc/

    Weekly Downloads

    3

    Version

    1.0.1

    License

    AGPL-3.0

    Unpacked Size

    60.5 kB

    Total Files

    16

    Last publish

    Collaborators

    • zvr