1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 'use strict';
- var captureStackTrace = require('capture-stack-trace');
- function inherits(ctor, superCtor) {
- ctor.super_ = superCtor;
- ctor.prototype = Object.create(superCtor.prototype, {
- constructor: {
- value: ctor,
- enumerable: false,
- writable: true,
- configurable: true
- }
- });
- }
- module.exports = function createErrorClass(className, setup) {
- if (typeof className !== 'string') {
- throw new TypeError('Expected className to be a string');
- }
- if (/[^0-9a-zA-Z_$]/.test(className)) {
- throw new Error('className contains invalid characters');
- }
- setup = setup || function (message) {
- this.message = message;
- };
- var ErrorClass = function () {
- Object.defineProperty(this, 'name', {
- configurable: true,
- value: className,
- writable: true
- });
- captureStackTrace(this, this.constructor);
- setup.apply(this, arguments);
- };
- inherits(ErrorClass, Error);
- return ErrorClass;
- };
|