Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions index.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -39,17 +39,17 @@ exports = module.exports = function httpError() {
}

// constructor
var HttpError = exports[status]
var StatusError = exports[status]

if (!err) {
// create error
err = HttpError
? new HttpError(msg)
err = StatusError
? new StatusError(msg)
: new Error(msg || statuses[status])
Error.captureStackTrace(err, httpError)
}

if (!HttpError || !(err instanceof HttpError)) {
if (!StatusError || !(err instanceof StatusError)) {
// add properties to generic error
err.expose = status < 500
err.status = err.statusCode = status
Expand All@@ -63,6 +63,10 @@ exports = module.exports = function httpError() {

return err;
};
var HttpError = exports;

inherits(HttpError, Error);


// create generic error objects
var codes = statuses.codes.filter(function (num) {
Expand All@@ -86,7 +90,7 @@ codes.forEach(function (code) {
})
return self
}
inherits(ServerError, Error);
inherits(ServerError, HttpError);
ServerError.prototype.status =
ServerError.prototype.statusCode = code;
ServerError.prototype.expose = false;
Expand All@@ -107,7 +111,7 @@ codes.forEach(function (code) {
})
return self
}
inherits(ClientError, Error);
inherits(ClientError, HttpError);
ClientError.prototype.status =
ClientError.prototype.statusCode = code;
ClientError.prototype.expose = true;
Expand Down
12 changes: 12 additions & 0 deletions test/test.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -226,6 +226,18 @@ describe('HTTP Errors', function () {
assert((new create['500']()) instanceof Error);
})

it('should support err instanceof for individual statuses', function () {
assert(create(404) instanceof create['404']);
assert((new create['404']()) instanceof create['404']);
assert((new create['500']()) instanceof create['500']);
})

it('should support err instanceof HttpError', function () {
assert(create(404) instanceof create);
assert((new create['404']()) instanceof create);
assert((new create['500']()) instanceof create);
})

it('should support util.isError()', function () {
assert(util.isError(create(404)));
assert(util.isError(new create['404']()));
Expand Down