npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@softvisio/result

v6.5.7

Published

Result object

Downloads

1,263

Readme

:information_source: Please, see the full project documentation here:https://softvisio-node.github.io/result/

Introduction

Serializable result object, that encapsulates operation status, statusText and returned data.

Install

npm install @softvisio/result

Under node environment it also register itself as global.result, so you don;t need to import it into all modules;

Usage

import result from "@softvisio/result";

var res = result( 200 );

res = result( [ 200, "Completed" ] ); // custom status text

res = result( 200, { data } ); // with some data

try {
    res = result.try( await someFunctionCall() );
}
catch ( e ) {
    res = result.catch( e );
}

result( status, data?, meta? )

  • status {integer|Array|Error} Status code, {Error} object, result-like object (has status and statusText properties, for example, node-fetch result) or {Array}:
    • {integer} Status code.
    • {string} Status text.
  • data? {any} arbitrary Data that represents returned value. This data is accesible via result.data property.
  • meta? {Object} Additional meta properties, that will be stored in the result object.
  • Returns: {Result}.

Creates new result object.

Example:

const res = result( 500, { "a": 1 }, { "meta": "some data" } );

console.log( res.ok ); // false
console.log( res.status ); // 500
console.log( res.statustext ); // internal server error
console.log( res.data ); // {"a": 1}
console.log( res.meta ); // "some data"

result.exception( status, data?, meta? )

  • status {integer|Array} Status code or {Array} [status code, status text].
  • data? {any} arbitrary Data that represents returned value. This data is accesible via result.data property.
  • meta? {Object} Additional meta properties, that will be stored in the result object.
  • Returns: {Result}.

Creates new result exception object. Same, as result( status, data, properties ), but also set result.exception to the true in case if result is not successuful.

result.try( res?, options? )

  • res? {any} Value to check.
  • options? {Object}:
    • allowUndefined {boolean} Returns error if set to false. Default: false.
    • keepError {boolean} If res is instance of the {Error} set error message as result statusText.
  • Returns: {Result}.

Checks, that res is instance of {Result}. If res is:

  • {undefined}: returns result( 200 ).
  • {Result}: returns res as is.
  • Result-like object (object, that has status and statusText properties): returns result( [res.status, res.statusText] ).
  • {Error}: returns result( [500, error.message] ).
  • Any other value: returns result( 500 ).

result.catch( res, options? )

  • res {any} Value to check.
  • options? {Object}:
    • keepError {boolean} If res is instance of {Error} set error message as result statusText.
    • log {boolean} Do not print error to the console.
  • Returns: {Result}.

Checks, that res is instance of {Result}. If res is:

  • {Result}: returns res as is;
  • Result-like object (object, that has status and statusText properties): returns result( [res.status, res.statusText] ).
  • {Error}: returns result( [500, error.message] ).
  • Any other value converted to the {Error} object (Error( res )) and processed as described above.

result.fromJson( res )

  • res {Object} Result object data, produced by Result.toJSON().
  • Returns: {Result}.

result.fromJsonRpc)

  • msg {Object} JSON RPC 2.0 message.
  • Returns: {Result}.

Converts JSON RPC response message to the {Result} object.

result.getHttpStatus( status )

  • status {integer} Status code.
  • Returns: {integer} Status code.

Returns status code in range, supported by HTTP protocol.

result.getStatusText( status )

  • status {integer} Status code.
  • Returns: {string} Status text.

Resolves status text by the status code.

Class: Result

result.status

  • {integer} Status code.

result.statusText

  • {string} Status text.

result.isException

  • {boolean} Returns true if result is exception.

result.ok

  • {boolean} Returns true if result is successful, otherwise returns false.

result.error

  • {boolean} Returns true if result is error.

result.is1xx

  • {boolean} Returns true if result code is in range: 100 - 199.

result.is2xx

  • {boolean} Returns true if result code is in range: 200 - 299.

result.is3xx

  • {boolean} Returns true if result code is in range: 300 - 399.

result.is4xx

  • {boolean} Returns true if result code is in range: 400 - 499.

result.is5xx

  • {boolean} Returns true if result code >= 500.

result.toString()

  • Returns: {string}.

result.toJSON()

  • Returns: {string}.

result.toJsonRpc( id )

  • id {integer} JSON RPC message id.
  • Returns: {Object} JSON RPC response.

Converts result object to the JSON RPC response.

Status codes

RPC status codes

RPC request errors

| Status Code | Status Text | | ----------: | ---------------------------------------------------- | | -32800 | RPC calls are not supported | | -32802 | Too many requests | | -32803 | Unsupported content type | | -32804 | HTTP method not allowed | | -32807 | Unable to decode RPC message body | | -32808 | Parameters validation error | | -32809 | API method not found | | -32810 | Persistent connection is required to call API method | | -32811 | Access denied | | -32812 | Authorization is required | | -32813 | Session is disabled | | -32814 | Backend is down | | -32815 | Session was deleted | | -32816 | Service is shutting down | | -32817 | Request aborted |

HTTP status codes

Informational

| Status Code | Status Text | | ----------: | ------------------- | | 100 | Continue | | 101 | Switching Protocols | | 102 | Processing | | 103 | Early Hints |

Success

| Status Code | Status Text | | ----------: | ----------------------------- | | 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 |

Redirect

| Status Code | Status Text | | ----------: | ------------------ | | 300 | Multiple Choices | | 301 | Moved Permanently | | 302 | Found | | 303 | See Other | | 304 | Not Modified | | 305 | Use Proxy | | 307 | Temporary Redirect | | 308 | Permanent Redirect |

Client error

| Status Code | Status Text | | ----------: | ------------------------------- | | 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 | Too Early | | 426 | Upgrade Required | | 428 | Precondition Required | | 429 | Too Many Requests | | 431 | Request Header Fields Too Large | | 451 | Unavailable For Legal Reasons |

Server error

| Status Code | Status Text | | ----------: | ------------------------------- | | 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 |

WebSockets status codes

| Status Code | Status Text | | ----------: | ------------------- | | 1000 | Normal Closure | | 1001 | Going Away | | 1002 | Protocol error | | 1003 | Unsupported Data | | 1004 | Reserved | | 1005 | No Status Rcvd | | 1006 | Abnormal Closure | | 1007 | Invalid Payload | | 1008 | Policy Violation | | 1009 | Message Too Big | | 1010 | Mandatory Extension | | 1011 | Internal Error | | 1012 | Service Restart | | 1013 | Try Again Later | | 1014 | Bad Gateway | | 1015 | TLS Handshake |