| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 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.xfunction 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};
 |