mirror of
https://github.com/cachix/install-nix-action.git
synced 2025-06-08 18:04:29 +00:00
v7
This commit is contained in:
parent
033d472283
commit
49df04613e
6774 changed files with 1602535 additions and 1 deletions
141
node_modules/error-ex/index.js
generated
vendored
Normal file
141
node_modules/error-ex/index.js
generated
vendored
Normal file
|
@ -0,0 +1,141 @@
|
|||
'use strict';
|
||||
|
||||
var util = require('util');
|
||||
var isArrayish = require('is-arrayish');
|
||||
|
||||
var errorEx = function errorEx(name, properties) {
|
||||
if (!name || name.constructor !== String) {
|
||||
properties = name || {};
|
||||
name = Error.name;
|
||||
}
|
||||
|
||||
var errorExError = function ErrorEXError(message) {
|
||||
if (!this) {
|
||||
return new ErrorEXError(message);
|
||||
}
|
||||
|
||||
message = message instanceof Error
|
||||
? message.message
|
||||
: (message || this.message);
|
||||
|
||||
Error.call(this, message);
|
||||
Error.captureStackTrace(this, errorExError);
|
||||
|
||||
this.name = name;
|
||||
|
||||
Object.defineProperty(this, 'message', {
|
||||
configurable: true,
|
||||
enumerable: false,
|
||||
get: function () {
|
||||
var newMessage = message.split(/\r?\n/g);
|
||||
|
||||
for (var key in properties) {
|
||||
if (!properties.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var modifier = properties[key];
|
||||
|
||||
if ('message' in modifier) {
|
||||
newMessage = modifier.message(this[key], newMessage) || newMessage;
|
||||
if (!isArrayish(newMessage)) {
|
||||
newMessage = [newMessage];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return newMessage.join('\n');
|
||||
},
|
||||
set: function (v) {
|
||||
message = v;
|
||||
}
|
||||
});
|
||||
|
||||
var overwrittenStack = null;
|
||||
|
||||
var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');
|
||||
var stackGetter = stackDescriptor.get;
|
||||
var stackValue = stackDescriptor.value;
|
||||
delete stackDescriptor.value;
|
||||
delete stackDescriptor.writable;
|
||||
|
||||
stackDescriptor.set = function (newstack) {
|
||||
overwrittenStack = newstack;
|
||||
};
|
||||
|
||||
stackDescriptor.get = function () {
|
||||
var stack = (overwrittenStack || ((stackGetter)
|
||||
? stackGetter.call(this)
|
||||
: stackValue)).split(/\r?\n+/g);
|
||||
|
||||
// starting in Node 7, the stack builder caches the message.
|
||||
// just replace it.
|
||||
if (!overwrittenStack) {
|
||||
stack[0] = this.name + ': ' + this.message;
|
||||
}
|
||||
|
||||
var lineCount = 1;
|
||||
for (var key in properties) {
|
||||
if (!properties.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var modifier = properties[key];
|
||||
|
||||
if ('line' in modifier) {
|
||||
var line = modifier.line(this[key]);
|
||||
if (line) {
|
||||
stack.splice(lineCount++, 0, ' ' + line);
|
||||
}
|
||||
}
|
||||
|
||||
if ('stack' in modifier) {
|
||||
modifier.stack(this[key], stack);
|
||||
}
|
||||
}
|
||||
|
||||
return stack.join('\n');
|
||||
};
|
||||
|
||||
Object.defineProperty(this, 'stack', stackDescriptor);
|
||||
};
|
||||
|
||||
if (Object.setPrototypeOf) {
|
||||
Object.setPrototypeOf(errorExError.prototype, Error.prototype);
|
||||
Object.setPrototypeOf(errorExError, Error);
|
||||
} else {
|
||||
util.inherits(errorExError, Error);
|
||||
}
|
||||
|
||||
return errorExError;
|
||||
};
|
||||
|
||||
errorEx.append = function (str, def) {
|
||||
return {
|
||||
message: function (v, message) {
|
||||
v = v || def;
|
||||
|
||||
if (v) {
|
||||
message[0] += ' ' + str.replace('%s', v.toString());
|
||||
}
|
||||
|
||||
return message;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
errorEx.line = function (str, def) {
|
||||
return {
|
||||
line: function (v) {
|
||||
v = v || def;
|
||||
|
||||
if (v) {
|
||||
return str.replace('%s', v.toString());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = errorEx;
|
Loading…
Add table
Add a link
Reference in a new issue