utils-error-to-json

Returns a JSON representation of an error object.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
utils-error-to-json
1.0.08 years ago8 years agoMinified + gzip package size for utils-error-to-json in KB

Readme

toJSON
!NPM versionnpm-imagenpm-url !Build Statusbuild-imagebuild-url !Coverage Statuscoverage-imagecoverage-url !Dependenciesdependencies-imagedependencies-url
Returns a JSONjson representation of an errorjs-error object.

Installation

$ npm install utils-error-to-json

Usage

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

toJSON()

Returns a JSONjson representation of an errorjs-error object.
var err = new Error( 'beep' );

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

The JSONjson 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:

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

-	[`Error`][js-error]
-	[`TypeError`][js-type-error]
-	[`SyntaxError`][js-syntax-error]
-	[`ReferenceError`][js-reference-error]
-	[`RangeError`][js-range-error]
-	[`URIError`][js-uri-error]
-	[`EvalError`][js-eval-error]
  • The implementation supports custom error types and sets the type field to the closest built-in errorjs-error type.
``` javascript
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 tapetape 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 Istanbulistanbul 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 Testlingtestling 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.