Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
standard-error
Advanced tools
Changelog
1.1.0 (Jun 15, 2014)
Allows overwriting the stack
property if given in the object:
new StandardError({stack: stackOverflow})
Fixes stack's first line when name given in the object:
new StandardError({name: "UnknownError"})
Allows overriding name
explicitly through the subclass's prototype.
Previously StandardError got the name only from the constructor function's
name
property or from the passed-in object.
function ChildError(msg, props) { StandardError.apply(this, arguments) }
ChildError.prototype = Object.create(StandardError.prototype, {
constructor: {value: ChildError, configurable: true, writeable: true}
})
ChildError.prototype.name = "FallacyError"
Sets StandardError.prototype.name
explicitly for cases where the code is
minified.
If you don't minify your code (like when using it on the server side) you
don't need to set name
explicitly on your subclasses and can depend on
StandardError.js finding it out from the constructor function.
Uses Error.captureStackTrace
only if available, so it'll work in non-V8
JavaScript engines.
Readme
![NPM version][npm-badge] [npm-badge]: https://badge.fury.io/js/standard-error.png
StandardError.js is a tiny JavaScript library that simplifies creating
subclasses of Error
for custom error classes with the correct name
and
stack
property. Saves you from writing a few lines of boilerplate.
Error
behavior in tact.Error
with Object.create
breaks the stack trace.StandardError
instance is also an instance of Error
.JSON.stringify
.Error
object serializes to an empty object
({}
)?Error.captureStackTrace
where available.npm install standard-error
Just require StandardError.js and either use it directly or inherit from it for your custom error class.
Like Error
, StandardError
takes a message argument, but in addition to that,
you may give it an object with other properties to be set:
var StandardError = require("standard-error")
throw new StandardError("Not Found", {code: 404})
The thrown instance of StandardError
will then have both the message
and the
code
property.
It'll also also have a name
property set to "StandardError"
.
You can skip the explicit message
argument and give everything as an
object of properties:
new StandardError({message: "Not Found", code: 404})
Note: All properties besides stack
will be enumerable for easier
serialization with JSON.stringify
. That includes the name
property which
will be set from the constructor's name (defaults to "StandardError"
).
The real benefit of StandardError.js comes from subclassing it to create new error classes and adding custom behavior to them.
Let's create an HttpError
that we can instantiate with the HTTP status code
(new HttpError(404)
) and have it set the message automatically based on that:
var Http = require("http")
var StandardError = require("standard-error")
function HttpError(code, msg) {
StandardError.call(this, msg || Http.STATUS_CODES[code], {code: code})
}
HttpError.prototype = Object.create(StandardError.prototype, {
constructor: {value: HttpError, configurable: true, writable: true}
})
Note that you must set the constructor
property like in the above
example. First, that's the proper way to subclass in JavaScript and second,
StandardError.js depends on that to know which functions to skip in the stack
trace.
StandardError.js finds out the name (err.name
) of your subclassed error from
its constructor function. However, if you minify your code, you can also set or
change it explicitly:
ChildError.prototype.name = "FallacyError"
Now that you've inherited, you can, for example, customize stringifying by
overwriting toString
on your subclass. To get new HttpError(404)
to print
itself as 404 Not Found
:
HttpError.prototype.toString = function() {
return this.code + " " + this.message
}
StandardError.js is released under a Lesser GNU Affero General Public License, which in summary means:
For more convoluted language, see the LICENSE
file.
Andri Möll typed this and the code.
Monday Calendar supported the engineering work.
If you find StandardError.js needs improving, please don't hesitate to type to me now at andri@dot.ee or create an issue online.
FAQs
Tiny library that simplifies subclassing and inheriting from Error while keeping the correct name and stack. Also supports constructing from an object of properties. Saves you from boilerplate.
The npm package standard-error receives a total of 26,748 weekly downloads. As such, standard-error popularity was classified as popular.
We found that standard-error demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.