You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.1 KiB
75 lines
2.1 KiB
const npm = {
|
|
stream: require('stream'),
|
|
util: require('util')
|
|
};
|
|
|
|
/////////////////////////////////////
|
|
// Checks if the value is a promise;
|
|
function isPromise(value) {
|
|
return value && typeof value.then === 'function';
|
|
}
|
|
|
|
////////////////////////////////////////////
|
|
// Checks object for being a readable stream;
|
|
|
|
function isReadableStream(obj) {
|
|
return obj instanceof npm.stream.Stream &&
|
|
typeof obj._read === 'function' &&
|
|
typeof obj._readableState === 'object';
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////
|
|
// Sets an object property as read-only and non-enumerable.
|
|
function extend(obj, name, value) {
|
|
Object.defineProperty(obj, name, {
|
|
value: value,
|
|
configurable: false,
|
|
enumerable: false,
|
|
writable: false
|
|
});
|
|
}
|
|
|
|
///////////////////////////////////////////
|
|
// Returns a space gap for console output;
|
|
function messageGap(level) {
|
|
return ' '.repeat(level * 4);
|
|
}
|
|
|
|
function formatError(error, level) {
|
|
const names = ['BatchError', 'PageError', 'SequenceError'];
|
|
let msg = npm.util.inspect(error);
|
|
if (error instanceof Error) {
|
|
if (names.indexOf(error.name) === -1) {
|
|
const gap = messageGap(level);
|
|
msg = msg.split('\n').map((line, index) => {
|
|
return (index ? gap : '') + line;
|
|
}).join('\n');
|
|
} else {
|
|
msg = error.toString(level);
|
|
}
|
|
}
|
|
return msg;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////
|
|
// Adds prototype inspection, with support of the newer
|
|
// Custom Inspection, which was added in Node.js 6.x
|
|
function addInspection(type, cb) {
|
|
// istanbul ignore next;
|
|
if (npm.util.inspect.custom) {
|
|
// Custom inspection is supported:
|
|
type.prototype[npm.util.inspect.custom] = cb;
|
|
} else {
|
|
// Use classic inspection:
|
|
type.prototype.inspect = cb;
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
addInspection: addInspection,
|
|
formatError: formatError,
|
|
isPromise: isPromise,
|
|
isReadableStream: isReadableStream,
|
|
messageGap: messageGap,
|
|
extend: extend
|
|
};
|
|
|