| 'use strict' |
| |
| const { Transform } = require('stream') |
| const { Console } = require('console') |
| |
| /** |
| * Gets the output of `console.table(…)` as a string. |
| */ |
| module.exports = class PendingInterceptorsFormatter { |
| constructor ({ disableColors } = {}) { |
| this.transform = new Transform({ |
| transform (chunk, _enc, cb) { |
| cb(null, chunk) |
| } |
| }) |
| |
| this.logger = new Console({ |
| stdout: this.transform, |
| inspectOptions: { |
| colors: !disableColors && !process.env.CI |
| } |
| }) |
| } |
| |
| format (pendingInterceptors) { |
| const withPrettyHeaders = pendingInterceptors.map( |
| ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({ |
| Method: method, |
| Origin: origin, |
| Path: path, |
| 'Status code': statusCode, |
| Persistent: persist ? '✅' : '❌', |
| Invocations: timesInvoked, |
| Remaining: persist ? Infinity : times - timesInvoked |
| })) |
| |
| this.logger.table(withPrettyHeaders) |
| return this.transform.read().toString() |
| } |
| } |