| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 'use strict'var __extends =	(this && this.__extends) ||	(function () {		var extendStatics = function (d, b) {			extendStatics =				Object.setPrototypeOf ||				({ __proto__: [] } instanceof Array &&					function (d, b) {						d.__proto__ = b					}) ||				function (d, b) {					for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]				}			return extendStatics(d, b)		}		return function (d, b) {			extendStatics(d, b)			function __() {				this.constructor = d			}			d.prototype =				b === null ? Object.create(b) : ((__.prototype = b.prototype), new __())		}	})()Object.defineProperty(exports, '__esModule', { value: true })/** Only accept codes that are numbers, otherwise discard them */function parseCode(code) {	var number = Number(code)	if (isNaN(number)) return null	return number}/** Fetch the code from the value */function fetchCode(value) {	return (		value &&		(parseCode(value.exitCode) ||			parseCode(value.errno) ||			parseCode(value.code))	)}/** Prevent [a weird error on node version 4](https://github.com/bevry/errlop/issues/1) and below. */function isValid(value) {	/* eslint no-use-before-define:0 */	return value instanceof Error || Errlop.isErrlop(value)}var Errlop = /** @class */ (function (_super) {	__extends(Errlop, _super)	/**	 * Create an instance of an error, using a message, as well as an optional parent.	 * If the parent is provided, then the `fullStack` property will include its stack too	 */	function Errlop(input, parent) {		var _this = this		if (!input) throw new Error('Attempted to create an Errlop without a input')		// Instantiate with the above		_this = _super.call(this, input.message || input) || this		// Apply		_this.klass = Errlop		_this.parent = parent || input.parent		_this.ancestors = []		var ancestor = _this.parent		while (ancestor) {			_this.ancestors.push(ancestor)			ancestor = ancestor.parent		}		// this code must support node 0.8, as well as prevent a weird bug in node v4		// https://travis-ci.org/bevry/editions/jobs/408828147		var exitCode = fetchCode(input)		if (exitCode == null) exitCode = fetchCode(_this)		for (			var index = 0;			index < _this.ancestors.length && exitCode == null;			++index		) {			var error = _this.ancestors[index]			if (isValid(error)) exitCode = fetchCode(error)		}		// Apply		if (exitCode != null) {			_this.exitCode = exitCode		}		_this.orphanStack = (input.stack || _this.stack).toString()		_this.stack = _this.ancestors.reduce(function (accumulator, error) {			return (				accumulator + '\n\u21B3 ' + (error.orphanStack || error.stack || error)			)		}, _this.orphanStack)		return _this	}	/**	 * Syntatic sugar for Errlop class creation.	 * Enables `Errlop.create(...args)` to achieve `new Errlop(...args)`	 */	Errlop.create = function (input, parent) {		return new this(input, parent)	}	/** Check whether or not the value is an Errlop instance */	Errlop.isErrlop = function (value) {		return value && (value instanceof this || value.klass === this)	}	/** Ensure that the value is an Errlop instance */	Errlop.ensure = function (value) {		return this.isErrlop(value) ? value : this.create(value)	}	return Errlop})(Error)exports.default = Errlop
 |