Narwhals Prolong Mischief

    @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

    Install

    npm i @goa/statuses

    Homepage

    www.idio.cc/

    DownloadsWeekly Downloads

    0

    Version

    1.0.1

    License

    AGPL-3.0

    Unpacked Size

    60.5 kB

    Total Files

    16

    Last publish

    Collaborators

    • zvr