var noop = function () { }; var path = require('path'); const semver = require('semver'); var version = process.versions.node.split('.') || [null, null, null]; var utils = (module.exports = { semver: semver, satisfies: test => semver.satisfies(process.versions.node, test), version: { major: parseInt(version[0] || 0, 10), minor: parseInt(version[1] || 0, 10), patch: parseInt(version[2] || 0, 10), }, clone: require('./clone'), merge: require('./merge'), bus: require('./bus'), isWindows: process.platform === 'win32', isMac: process.platform === 'darwin', isLinux: process.platform === 'linux', isIBMi: require('os').type() === 'OS400', isRequired: (function () { var p = module.parent; while (p) { // in electron.js engine it happens if (!p.filename) { return true; } if (p.filename.indexOf('bin' + path.sep + 'nodemon.js') !== -1) { return false; } p = p.parent; } return true; })(), home: process.env.HOME || process.env.HOMEPATH, quiet: function () { // nukes the logging if (!this.debug) { for (var method in utils.log) { if (typeof utils.log[method] === 'function') { utils.log[method] = noop; } } } }, reset: function () { if (!this.debug) { for (var method in utils.log) { if (typeof utils.log[method] === 'function') { delete utils.log[method]; } } } this.debug = false; }, regexpToText: function (t) { return t .replace(/\.\*\\./g, '*.') .replace(/\\{2}/g, '^^') .replace(/\\/g, '') .replace(/\^\^/g, '\\'); }, stringify: function (exec, args) { // serializes an executable string and array of arguments into a string args = args || []; return [exec] .concat( args.map(function (arg) { // if an argument contains a space, we want to show it with quotes // around it to indicate that it is a single argument if (arg.length > 0 && arg.indexOf(' ') === -1) { return arg; } // this should correctly escape nested quotes return JSON.stringify(arg); }) ) .join(' ') .trim(); }, }); utils.log = require('./log')(utils.isRequired); Object.defineProperty(utils, 'debug', { set: function (value) { this.log.debug = value; }, get: function () { return this.log.debug; }, }); Object.defineProperty(utils, 'colours', { set: function (value) { this.log.useColours = value; }, get: function () { return this.log.useColours; }, });