1.0.0 • Published 8 years ago

utils-error-to-json v1.0.0

Weekly downloads
448
License
MIT
Repository
github
Last release
8 years ago

toJSON

NPM version Build Status Coverage Status Dependencies

Returns a JSON representation of an error object.

Installation

$ npm install utils-error-to-json

Usage

var toJSON = require( 'utils-error-to-json' );

toJSON()

Returns a JSON representation of an error object.

var err = new Error( 'beep' );

var json = toJSON( err );
/*
  {
	"type": "Error",
	"name": "Error", // if present
	"message": "beep",
	"stack": "<stack>" // if present
  }
*/

The JSON object is guaranteed to have the following properties:

  • type: error type
  • message: error message

The only standardized cross-platform property is message. Depending on the platform, the following properties may be present:

  • name: error name
  • stack: stack trace
  • code: error code (Node.js system errors)
  • errno: error code string (Node.js system errors)
  • syscall: string representing the failed system call (Node.js system errors)

The function also serializes all enumerable properties.

var err = new Error( 'beep' );
err.a = 'b';
err.c = { 'd': 'e' };

var json = toJSON( err );
/*
  {
	"type": "Error",
	"name": "Error", // if present
	"message": "beep",
	"stack": "<stack>", // if present
	"a": "b",
	"c": {
      "d": "e"
    }
  }
*/

Notes

  • Supported built-in error types:
  • The implementation supports custom error types and sets the type field to the closest built-in error type.

    function CustomError( msg ) {
    	this.name = 'CustomError';
    	this.message = msg || '';
    	this.stack = ( new TypeError() ).stack;
    	return this;
    }
    CustomError.prototype = Object.create( TypeError.prototype );
    CustomError.prototype.constructor = CustomError;
    
    var err = new CustomError( 'boop' );
    
    var json = toJSON( err );
    /*
      {
        "type": "TypeError",
        "name": "CustomError", 
        "message": "boop",
        "stack": "<stack>"
      }
    */

Examples

var toJSON = require( 'utils-error-to-json' );

var err = new Error( 'beep' );
console.log( toJSON( err ) );
/*
  {
	"type": "Error",
	"name": "Error",
	"message": "beep",
	"stack": "<stack>"
  }
*/

err = new TypeError( 'invalid type' );
console.log( toJSON( err ) );
/*
  {
	"type": "TypeError",
	"name": "TypeError",
	"message": "invalid type",
	"stack": "<stack>"
  }
*/

err = new SyntaxError( 'bad syntax' );
console.log( toJSON( err ) );
/*
  {
	"type": "SyntaxError",
	"name": "SyntaxError",
	"message": "bad syntax",
	"stack": "<stack>"
  }
*/

err = new ReferenceError( 'unknown variable' );
console.log( toJSON( err ) );
/*
  {
	"type": "ReferenceError",
	"name": "ReferenceError",
	"message": "unknown variable",
	"stack": "<stack>"
  }
*/

err = new URIError( 'bad URI' );
console.log( toJSON( err ) );
/*
  {
	"type": "URIError",
	"name": "URIError",
	"message": "bad URI",
	"stack": "<stack>"
  }
*/

err = new RangeError( 'value out-of-range' );
console.log( toJSON( err ) );
/*
  {
	"type": "RangeError",
	"name": "RangeError",
	"message": "value out-of-range",
	"stack": "<stack>"
  }
*/

err = new EvalError( 'eval error' );
console.log( toJSON( err ) );
/*
  {
	"type": "EvalError",
	"name": "EvalError",
	"message": "eval error",
	"stack": "<stack>"
  }
*/

To run the example code from the top-level application directory,

$ node ./examples/index.js

Tests

Unit

This repository uses tape for unit tests. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov

Browser Support

This repository uses Testling for browser testing. To run the tests in a (headless) local web browser, execute the following command in the top-level application directory:

$ make test-browsers

To view the tests in a local web browser,

$ make view-browser-tests

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.