mirror of
https://github.com/fooflington/selfdefined.git
synced 2025-06-10 21:01:41 +00:00
update
This commit is contained in:
57
node_modules/errno/custom.js
generated
vendored
Normal file
57
node_modules/errno/custom.js
generated
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
var prr = require('prr')
|
||||
|
||||
function init (type, message, cause) {
|
||||
if (!!message && typeof message != 'string') {
|
||||
message = message.message || message.name
|
||||
}
|
||||
prr(this, {
|
||||
type : type
|
||||
, name : type
|
||||
// can be passed just a 'cause'
|
||||
, cause : typeof message != 'string' ? message : cause
|
||||
, message : message
|
||||
}, 'ewr')
|
||||
}
|
||||
|
||||
// generic prototype, not intended to be actually used - helpful for `instanceof`
|
||||
function CustomError (message, cause) {
|
||||
Error.call(this)
|
||||
if (Error.captureStackTrace)
|
||||
Error.captureStackTrace(this, this.constructor)
|
||||
init.call(this, 'CustomError', message, cause)
|
||||
}
|
||||
|
||||
CustomError.prototype = new Error()
|
||||
|
||||
function createError (errno, type, proto) {
|
||||
var err = function (message, cause) {
|
||||
init.call(this, type, message, cause)
|
||||
//TODO: the specificity here is stupid, errno should be available everywhere
|
||||
if (type == 'FilesystemError') {
|
||||
this.code = this.cause.code
|
||||
this.path = this.cause.path
|
||||
this.errno = this.cause.errno
|
||||
this.message =
|
||||
(errno.errno[this.cause.errno]
|
||||
? errno.errno[this.cause.errno].description
|
||||
: this.cause.message)
|
||||
+ (this.cause.path ? ' [' + this.cause.path + ']' : '')
|
||||
}
|
||||
Error.call(this)
|
||||
if (Error.captureStackTrace)
|
||||
Error.captureStackTrace(this, err)
|
||||
}
|
||||
err.prototype = !!proto ? new proto() : new CustomError()
|
||||
return err
|
||||
}
|
||||
|
||||
module.exports = function (errno) {
|
||||
var ce = function (type, proto) {
|
||||
return createError(errno, type, proto)
|
||||
}
|
||||
return {
|
||||
CustomError : CustomError
|
||||
, FilesystemError : ce('FilesystemError')
|
||||
, createError : ce
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user