https://github.com/opentable/spur-errors
Common error builder utility for Node.js. Contains common error types, and stack trace tracking to support more detailed error messages.
https://github.com/opentable/spur-errors
nodejs npm-package renovate spur spur-framework
Last synced: about 1 year ago
JSON representation
Common error builder utility for Node.js. Contains common error types, and stack trace tracking to support more detailed error messages.
- Host: GitHub
- URL: https://github.com/opentable/spur-errors
- Owner: opentable
- License: mit
- Created: 2015-01-11T07:03:34.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2025-05-02T22:55:16.000Z (about 1 year ago)
- Last Synced: 2025-05-12T19:55:39.362Z (about 1 year ago)
- Topics: nodejs, npm-package, renovate, spur, spur-framework
- Language: JavaScript
- Homepage:
- Size: 309 KB
- Stars: 2
- Watchers: 26
- Forks: 2
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

Common error builder utility for [Node.js](http://nodejs.org/). Contains common error types, and stack trace tracking to support more detailed error messages.
[![NPM Version][npm-version-image]][npm-url]
[![NPM Install Size][npm-install-size-image]][npm-install-size-url]
[![NPM Downloads][npm-downloads-image]][npm-downloads-url]
# About the Spur Framework
The Spur Framework is a collection of commonly used Node.JS libraries used to create common application types with shared libraries.
[Visit NPMJS.org for a full list of Spur Framework libraries](https://www.npmjs.com/browse/keyword/spur-framework) >>
# Usage
Supports active Node versions in the [LTS Schedule](https://github.com/nodejs/LTS#lts-schedule). ([view current versions](.travis.yml))
## Install from NPM
```shell
$ npm install --save spur-errors
```
## Require and use the module
```javascript
let SpurErrors = require("spur-errors");
SpurErrors.NotFoundError.create("could not find it");
```
# API
The API is designed to be daisy chained with all of the following base commands that are a part of all of the error types.
## Base Object Commands
#### .create(message, nativeError) -> instance
Creates an instance of a SpurError for the type used.
```javascript
try {
...
}
catch(err) {
SpurErrors.NotFound.create("Some error", err);
}
```
#### .setErrorCode(errorCode) -> instance
Sets an error code to later be used by error handlers.
```javascript
SpurErrors.NotFound.create("Not found").setErrorCode("leaf_error");
```
#### .setMessage(message) -> instance
Overrides the error message passed in.
```javascript
SpurErrors.NotFound.create("Not found").setMessage("Unable to find the restaurant.");
```
#### .setStatusCode(statusCode) -> instance
Setting the response status code to be sent back down to the client.
```javascript
SpurErrors.NotFound.create("Not found").setStatusCode(404);
```
#### .setData(data) -> instance
Sets customizable data that can be used down the error stack chain.
```javascript
SpurErrors.NotFound.create("Not found").setData({headers: req.headers});
```
## Properties
| Property | Description |
| :------------ | :---------------------------------------------------------------------------------- |
| internalError | The original error object passed in |
| message | Either passed in during the create call or during the parsing of the internal error |
| stack | Parsed from the originally passed in internal error |
| errorCode | Custom error code |
| statusCode | Custom status code to be used by the Express.JS response |
| data | Custom data object to be used anyone in the flow |
## Error Types
| Error Type | Status Code | Message | Error Code |
| :---------------------- | :---------- | :------------------------ | :------------------------ |
| ValidationError | 400 | Validation Error | validation_error |
| UnauthorizedError | 401 | Unauthorized Error | unauthorized_error |
| ForbiddenError | 403 | Forbidden Error | forbidden_error |
| NotFoundError | 404 | Not Found Error | not_found_error |
| MethodNotAllowedError | 405 | Method not allowed | method_not_allowed_error |
| RequestTimeoutError | 408 | Request Timeout Error | request_timeout_error |
| AlreadyExistsError | 409 | Already Exists Error | already_exists_error |
| InternalServerError | 500 | Internal Server Error | internal_server_error |
| BadGatewayError | 502 | Bad Gateway Error | bad_gateway_error |
| ServiceUnavailableError | 503 | Service Unavailable Error | service_unavailable_error |
| GatewayTimeoutError | 504 | Gateway Unavailable Error | gateway_timeout_error |
### Error type example
```javascript
SpurErrors.ValidationError.create("Invalid input");
// => {statusCode: 400, message: "Validation Error", errorCode: "validation_error", ....}
```
# Maintainers
This library is maintained by
- Agustin Colchado – ***[@acolchado](https://github.com/acolchado)***
- Ray Peters – ***[@ot-raypeters](https://github.com/ot-raypeters)***
## Collaborators
- Ash – ***[@ssetem](https://github.com/ssetem)***
- Timmy Willison – ***[@timmywil](https://github.com/timmywil)***
# Contributing
## We accept pull requests
Please send in pull requests and they will be reviewed in a timely manner. Please review this [generic guide to submitting a good pull requests](https://github.com/blog/1943-how-to-write-the-perfect-pull-request). The only things we ask in addition are the following:
* Please submit small pull requests
* Provide a good description of the changes
* Code changes must include tests
* Be nice to each other in comments. :innocent:
## Style guide
The majority of the settings are controlled using an [EditorConfig](.editorconfig) configuration file. To use it [please download a plugin](http://editorconfig.org/#download) for your editor of choice.
## All tests should pass
To run the test suite, first install the dependancies, then run `npm test`
```bash
$ npm install
$ npm test
```
# License
[MIT](LICENSE)
[npm-downloads-image]: https://badgen.net/npm/dm/spur-errors
[npm-downloads-url]: https://npmcharts.com/compare/spur-errors?minimal=true
[npm-install-size-image]: https://badgen.net/packagephobia/install/spur-errors
[npm-install-size-url]: https://packagephobia.com/result?p=spur-errors
[npm-url]: https://npmjs.org/package/spur-errors
[npm-version-image]: https://badgen.net/npm/v/spur-errors