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