injektor
Version:
The simple dependency injection for Devebot
40 lines (39 loc) • 1.25 kB
JavaScript
;
var util = require("util");
var errors = {};
var stackTraceLimit = parseInt(process.env.ERROR_STACK_TRACE_LIMIT) || 100;
Object.defineProperty(errors, "stackTraceLimit", {
get: function () {
return stackTraceLimit;
},
set: function (a) {
if (typeof a === "number") {
stackTraceLimit = a;
}
}
});
var AbstractError = function (a, b) {
Error.call(this, a);
this.message = a;
this.payload = b;
var c = Error.stackTraceLimit;
Error.stackTraceLimit = stackTraceLimit;
Error.captureStackTrace(this, this.constructor);
Error.stackTraceLimit = c;
};
util.inherits(AbstractError, Error);
errors.isDerivative = function (a) {
return typeof a === "function" && a.prototype instanceof AbstractError;
};
errors.isDescendant = function (a) {
return a instanceof AbstractError;
};
var errorNames = ["DependencyNotFoundError", "DependencyCombinationError", "DependencyCycleDetectedError", "DuplicatedRelativeNameError", "InvalidMethodArgumentError", "InvalidArgumentSchemaError", "ValidatingArgumentError"];
errorNames.forEach(function (a) {
errors[a] = function () {
AbstractError.apply(this, arguments);
this.name = a;
};
util.inherits(errors[a], AbstractError);
});
module.exports = errors;