| |
| |
| |
|
|
| const tty = require('tty'); |
| const util = require('util'); |
|
|
| |
| |
| |
|
|
| exports.init = init; |
| exports.log = log; |
| exports.formatArgs = formatArgs; |
| exports.save = save; |
| exports.load = load; |
| exports.useColors = useColors; |
| exports.destroy = util.deprecate( |
| () => {}, |
| 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' |
| ); |
|
|
| |
| |
| |
|
|
| exports.colors = [6, 2, 3, 4, 5, 1]; |
|
|
| try { |
| |
| |
| const supportsColor = require('supports-color'); |
|
|
| if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { |
| exports.colors = [ |
| 20, |
| 21, |
| 26, |
| 27, |
| 32, |
| 33, |
| 38, |
| 39, |
| 40, |
| 41, |
| 42, |
| 43, |
| 44, |
| 45, |
| 56, |
| 57, |
| 62, |
| 63, |
| 68, |
| 69, |
| 74, |
| 75, |
| 76, |
| 77, |
| 78, |
| 79, |
| 80, |
| 81, |
| 92, |
| 93, |
| 98, |
| 99, |
| 112, |
| 113, |
| 128, |
| 129, |
| 134, |
| 135, |
| 148, |
| 149, |
| 160, |
| 161, |
| 162, |
| 163, |
| 164, |
| 165, |
| 166, |
| 167, |
| 168, |
| 169, |
| 170, |
| 171, |
| 172, |
| 173, |
| 178, |
| 179, |
| 184, |
| 185, |
| 196, |
| 197, |
| 198, |
| 199, |
| 200, |
| 201, |
| 202, |
| 203, |
| 204, |
| 205, |
| 206, |
| 207, |
| 208, |
| 209, |
| 214, |
| 215, |
| 220, |
| 221 |
| ]; |
| } |
| } catch (error) { |
| |
| } |
|
|
| |
| |
| |
| |
| |
|
|
| exports.inspectOpts = Object.keys(process.env).filter(key => { |
| return /^debug_/i.test(key); |
| }).reduce((obj, key) => { |
| |
| const prop = key |
| .substring(6) |
| .toLowerCase() |
| .replace(/_([a-z])/g, (_, k) => { |
| return k.toUpperCase(); |
| }); |
|
|
| |
| let val = process.env[key]; |
| if (/^(yes|on|true|enabled)$/i.test(val)) { |
| val = true; |
| } else if (/^(no|off|false|disabled)$/i.test(val)) { |
| val = false; |
| } else if (val === 'null') { |
| val = null; |
| } else { |
| val = Number(val); |
| } |
|
|
| obj[prop] = val; |
| return obj; |
| }, {}); |
|
|
| |
| |
| |
|
|
| function useColors() { |
| return 'colors' in exports.inspectOpts ? |
| Boolean(exports.inspectOpts.colors) : |
| tty.isatty(process.stderr.fd); |
| } |
|
|
| |
| |
| |
| |
| |
|
|
| function formatArgs(args) { |
| const {namespace: name, useColors} = this; |
|
|
| if (useColors) { |
| const c = this.color; |
| const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); |
| const prefix = ` ${colorCode};1m${name} \u001B[0m`; |
|
|
| args[0] = prefix + args[0].split('\n').join('\n' + prefix); |
| args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); |
| } else { |
| args[0] = getDate() + name + ' ' + args[0]; |
| } |
| } |
|
|
| function getDate() { |
| if (exports.inspectOpts.hideDate) { |
| return ''; |
| } |
| return new Date().toISOString() + ' '; |
| } |
|
|
| |
| |
| |
|
|
| function log(...args) { |
| return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| function save(namespaces) { |
| if (namespaces) { |
| process.env.DEBUG = namespaces; |
| } else { |
| |
| |
| delete process.env.DEBUG; |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| |
|
|
| function load() { |
| return process.env.DEBUG; |
| } |
|
|
| |
| |
| |
| |
| |
| |
|
|
| function init(debug) { |
| debug.inspectOpts = {}; |
|
|
| const keys = Object.keys(exports.inspectOpts); |
| for (let i = 0; i < keys.length; i++) { |
| debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; |
| } |
| } |
|
|
| module.exports = require('./common')(exports); |
|
|
| const {formatters} = module.exports; |
|
|
| |
| |
| |
|
|
| formatters.o = function (v) { |
| this.inspectOpts.colors = this.useColors; |
| return util.inspect(v, this.inspectOpts) |
| .split('\n') |
| .map(str => str.trim()) |
| .join(' '); |
| }; |
|
|
| |
| |
| |
|
|
| formatters.O = function (v) { |
| this.inspectOpts.colors = this.useColors; |
| return util.inspect(v, this.inspectOpts); |
| }; |
|
|