From ffb3ec453bd57719965cb5418f515bbc09f0b3ee Mon Sep 17 00:00:00 2001 From: biodiscus Date: Thu, 8 May 2025 23:25:06 +0200 Subject: [PATCH] refactor: replace chalk with smaller alternative --- bun.lock | 4 +++- constants.js | 2 +- examples/sourcemap-auto-resolve/API.js | 2 +- lib/API.js | 2 +- lib/API/Configuration.js | 2 +- lib/API/Containerizer.js | 4 ++-- lib/API/Extra.js | 6 +++--- lib/API/Log.js | 10 +++++----- lib/API/LogManagement.js | 8 ++++---- lib/API/Modules/LOCAL.js | 2 +- lib/API/Modules/NPM.js | 2 +- lib/API/Modules/index.js | 2 +- lib/API/Monit.js | 2 +- lib/API/Startup.js | 2 +- lib/API/UX/helpers.js | 2 +- lib/API/UX/pm2-describe.js | 2 +- lib/API/UX/pm2-ls.js | 6 +++--- lib/API/pm2-plus/PM2IO.js | 2 +- lib/API/pm2-plus/auth-strategies/CliAuth.js | 2 +- lib/API/pm2-plus/helpers.js | 2 +- lib/API/pm2-plus/link.js | 2 +- lib/Common.js | 2 +- lib/binaries/CLI.js | 4 ++-- lib/binaries/DevCLI.js | 2 +- package.json | 2 +- test/parallel.js | 2 +- 26 files changed, 41 insertions(+), 39 deletions(-) diff --git a/bun.lock b/bun.lock index 0edfe19a..26fe4069 100644 --- a/bun.lock +++ b/bun.lock @@ -8,9 +8,9 @@ "@pm2/io": "~6.1.0", "@pm2/js-api": "~0.8.0", "@pm2/pm2-version-check": "latest", + "ansis": "4.0.0", "async": "~3.2.6", "blessed": "0.1.81", - "chalk": "3.0.0", "chokidar": "^3.5.3", "cli-tableau": "^2.0.0", "commander": "2.15.1", @@ -66,6 +66,8 @@ "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, ""], + "ansis": ["ansis@4.0.0", "", {}, "sha512-P8nrHI1EyW9OfBt1X7hMSwGN2vwRuqHSKJAT1gbLWZRzDa24oHjYwGHvEgHeBepupzk878yS/HBZ0NMPYtbolw=="], + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, ""], "argparse": ["argparse@2.0.1", "", {}, ""], diff --git a/constants.js b/constants.js index 66f61efe..1483b6e6 100644 --- a/constants.js +++ b/constants.js @@ -7,7 +7,7 @@ var debug = require('debug')('pm2:conf'); var p = require('path'); var util = require('util'); -var chalk = require('chalk'); +var chalk = require('ansis'); /** * Get PM2 path structure diff --git a/examples/sourcemap-auto-resolve/API.js b/examples/sourcemap-auto-resolve/API.js index 99ed0592..fbc86119 100644 --- a/examples/sourcemap-auto-resolve/API.js +++ b/examples/sourcemap-auto-resolve/API.js @@ -11,7 +11,7 @@ var eachLimit = require('async/eachLimit'); var series = require('async/series'); var debug = require('debug')('pm2:cli'); var util = require('util'); -var chalk = require('chalk'); +var chalk = require('ansis'); var fclone = require('fclone'); var IMMUTABLE_MSG = chalk.bold.blue('Use --update-env to update environment variables'); diff --git a/lib/API.js b/lib/API.js index 8b7bf2fa..ced8e6f1 100644 --- a/lib/API.js +++ b/lib/API.js @@ -12,7 +12,7 @@ const eachLimit = require('async/eachLimit'); const series = require('async/series'); const debug = require('debug')('pm2:cli'); const util = require('util'); -const chalk = require('chalk'); +const chalk = require('ansis'); const fclone = require('fclone'); var DockerMgmt = require('./API/ExtraMgmt/Docker.js') diff --git a/lib/API/Configuration.js b/lib/API/Configuration.js index e97bcc81..66f682bc 100644 --- a/lib/API/Configuration.js +++ b/lib/API/Configuration.js @@ -2,7 +2,7 @@ var Common = require('../Common.js'); var cst = require('../../constants.js'); var UX = require('./UX'); -var chalk = require('chalk'); +var chalk = require('ansis'); var Configuration = require('../Configuration.js'); module.exports = function(CLI) { diff --git a/lib/API/Containerizer.js b/lib/API/Containerizer.js index 6a8ffe41..e4c82dcf 100644 --- a/lib/API/Containerizer.js +++ b/lib/API/Containerizer.js @@ -1,7 +1,7 @@ var spawn = require('child_process').spawn; var exec = require('child_process').exec; -var chalk = require('chalk'); +var chalk = require('ansis'); var util = require('util'); var fmt = require('../tools/fmt.js'); var fs = require('fs'); @@ -322,7 +322,7 @@ module.exports = function(CLI) { }) .catch(function(err) { console.log(); - console.log(chalk.grey('Raw error=', err.message)); + console.log(chalk.gray('Raw error=', err.message)); self.disconnect(); }); diff --git a/lib/API/Extra.js b/lib/API/Extra.js index e30aba12..e65d8422 100644 --- a/lib/API/Extra.js +++ b/lib/API/Extra.js @@ -8,7 +8,7 @@ var cst = require('../../constants.js'); var Common = require('../Common.js'); var UX = require('./UX'); -var chalk = require('chalk'); +var chalk = require('ansis'); var path = require('path'); var fs = require('fs'); var fmt = require('../tools/fmt.js'); @@ -258,10 +258,10 @@ module.exports = function(CLI) { isInner = false else if (isInner == false) isInner = true - console.log(chalk.grey(l)) + console.log(chalk.gray(l)) } else if (l.startsWith('`')) - console.log(chalk.grey(l)) + console.log(chalk.gray(l)) else console.log(l) }) diff --git a/lib/API/Log.js b/lib/API/Log.js index ba72fe7c..805a5515 100644 --- a/lib/API/Log.js +++ b/lib/API/Log.js @@ -5,7 +5,7 @@ */ var fs = require('fs'), util = require('util'), - chalk = require('chalk'), + chalk = require('ansis'), forEachLimit = require('async/forEachLimit'), dayjs = require('dayjs'); @@ -53,7 +53,7 @@ Log.tail = function(apps_list, lines, raw, callback) { return next(); getLastLines(app.path, lines, function(output) { - console.log(chalk.grey('%s last %d lines:'), app.path, lines); + console.log(chalk.gray('%s last %d lines:'), app.path, lines); output.forEach(function(out) { if (raw) return app.type === 'err' ? console.error(out) : console.log(out); @@ -89,7 +89,7 @@ Log.stream = function(Client, id, raw, timestamp, exclusive, highlight) { socket.on('reconnect attempt', function() { if (global._auto_exit === true) { if (timestamp) - process.stdout.write(chalk['dim'](chalk.grey(dayjs().format(timestamp) + ' '))); + process.stdout.write(chalk['dim'](chalk.gray(dayjs().format(timestamp) + ' '))); process.stdout.write(chalk.blue(pad(DEFAULT_PADDING, 'PM2') + ' | ') + '[[[ Target PM2 killed. ]]]'); process.exit(0); } @@ -125,7 +125,7 @@ Log.stream = function(Client, id, raw, timestamp, exclusive, highlight) { return type === 'err' ? process.stderr.write(util.format(line) + '\n') : process.stdout.write(util.format(line) + '\n'); if (timestamp) - process.stdout.write(chalk['dim'](chalk.grey(dayjs().format(timestamp) + ' '))); + process.stdout.write(chalk['dim'](chalk.gray(dayjs().format(timestamp) + ' '))); var name = packet.process.pm_id + '|' + packet.process.name; @@ -191,7 +191,7 @@ Log.devStream = function(Client, id, raw, timestamp, exclusive) { return process.stdout.write(util.format(line) + '\n'); if (timestamp) - process.stdout.write(chalk['dim'](chalk.grey(dayjs().format(timestamp) + ' '))); + process.stdout.write(chalk['dim'](chalk.gray(dayjs().format(timestamp) + ' '))); var name = packet.process.name + '-' + packet.process.pm_id; diff --git a/lib/API/LogManagement.js b/lib/API/LogManagement.js index 55bae435..cdfbef15 100644 --- a/lib/API/LogManagement.js +++ b/lib/API/LogManagement.js @@ -1,4 +1,4 @@ -var chalk = require('chalk'); +var chalk = require('ansis'); var util = require('util'); var fs = require('fs'); var exec = require('child_process').exec; @@ -72,7 +72,7 @@ module.exports = function(CLI) { if (process.getuid() != 0) { return exec('whoami', function(err, stdout, stderr) { Common.printError(cst.PREFIX_MSG + 'You have to run this command as root. Execute the following command:'); - Common.printError(cst.PREFIX_MSG + chalk.grey(' sudo env PATH=$PATH:' + path.dirname(process.execPath) + ' pm2 logrotate -u ' + stdout.trim())); + Common.printError(cst.PREFIX_MSG + chalk.gray(' sudo env PATH=$PATH:' + path.dirname(process.execPath) + ' pm2 logrotate -u ' + stdout.trim())); cb ? cb(Common.retErr('You have to run this with elevated rights')) : that.exitCli(cst.ERROR_EXIT); }); @@ -171,7 +171,7 @@ module.exports = function(CLI) { if (lines === 0) return Log.stream(that.Client, id, raw, timestamp, exclusive, highlight); - Common.printOut(chalk.bold.grey(util.format.call(this, '[TAILING] Tailing last %d lines for [%s] process%s (change the value with --lines option)', lines, id, id === 'all' ? 'es' : ''))); + Common.printOut(chalk.bold.gray(util.format.call(this, '[TAILING] Tailing last %d lines for [%s] process%s (change the value with --lines option)', lines, id, id === 'all' ? 'es' : ''))); // Populate the array `files_list` with the paths of all files we need to tail list.forEach(function(proc) { @@ -312,7 +312,7 @@ module.exports = function(CLI) { return that.exitCli(cst.SUCCESS_EXIT) } - Common.printOut(chalk.bold.grey(util.format.call(this, '[TAILING] Tailing last %d lines for [%s] process%s (change the value with --lines option)', lines, id, id === 'all' ? 'es' : ''))); + Common.printOut(chalk.bold.gray(util.format.call(this, '[TAILING] Tailing last %d lines for [%s] process%s (change the value with --lines option)', lines, id, id === 'all' ? 'es' : ''))); // Populate the array `files_list` with the paths of all files we need to tail list.forEach(function(proc) { diff --git a/lib/API/Modules/LOCAL.js b/lib/API/Modules/LOCAL.js index 19d52197..b5141bd2 100644 --- a/lib/API/Modules/LOCAL.js +++ b/lib/API/Modules/LOCAL.js @@ -3,7 +3,7 @@ var path = require('path'); var fs = require('fs'); var os = require('os'); var spawn = require('child_process').spawn; -var chalk = require('chalk'); +var chalk = require('ansis'); var parallel = require('async/parallel'); var Configuration = require('../../Configuration.js'); diff --git a/lib/API/Modules/NPM.js b/lib/API/Modules/NPM.js index 8cbcb5c2..153a539f 100644 --- a/lib/API/Modules/NPM.js +++ b/lib/API/Modules/NPM.js @@ -2,7 +2,7 @@ const path = require('path'); const fs = require('fs'); const os = require('os'); const spawn = require('child_process').spawn; -const chalk = require('chalk'); +const chalk = require('ansis'); const readline = require('readline') const which = require('../../tools/which.js') diff --git a/lib/API/Modules/index.js b/lib/API/Modules/index.js index d05b9307..358a1288 100644 --- a/lib/API/Modules/index.js +++ b/lib/API/Modules/index.js @@ -7,7 +7,7 @@ var cst = require('../../../constants.js'); var Common = require('../../Common.js'); -var chalk = require('chalk'); +var chalk = require('ansis'); var forEachLimit = require('async/forEachLimit'); var Modularizer = require('./Modularizer.js'); diff --git a/lib/API/Monit.js b/lib/API/Monit.js index 51115785..5f2fa294 100644 --- a/lib/API/Monit.js +++ b/lib/API/Monit.js @@ -10,7 +10,7 @@ var multimeter = require('pm2-multimeter'); var os = require('os'); var p = require('path'); -var chalk = require('chalk'); +var chalk = require('ansis'); var UX = require('./UX'); diff --git a/lib/API/Startup.js b/lib/API/Startup.js index a7514595..b8773a40 100644 --- a/lib/API/Startup.js +++ b/lib/API/Startup.js @@ -3,7 +3,7 @@ * Use of this source code is governed by a license that * can be found in the LICENSE file. */ -var chalk = require('chalk'); +var chalk = require('ansis'); var path = require('path'); var fs = require('fs'); var forEachLimit = require('async/forEachLimit'); diff --git a/lib/API/UX/helpers.js b/lib/API/UX/helpers.js index 4c48c487..70d427d6 100644 --- a/lib/API/UX/helpers.js +++ b/lib/API/UX/helpers.js @@ -1,4 +1,4 @@ -const chalk = require('chalk') +const chalk = require('ansis') const Helpers = {} /** diff --git a/lib/API/UX/pm2-describe.js b/lib/API/UX/pm2-describe.js index 3c3c5b68..ec177382 100644 --- a/lib/API/UX/pm2-describe.js +++ b/lib/API/UX/pm2-describe.js @@ -1,5 +1,5 @@ const Table = require('cli-tableau') -const chalk = require('chalk') +const chalk = require('ansis') const UxHelpers = require('./helpers.js') const Common = require('../../Common.js') diff --git a/lib/API/UX/pm2-ls.js b/lib/API/UX/pm2-ls.js index e49615fe..e5a46080 100644 --- a/lib/API/UX/pm2-ls.js +++ b/lib/API/UX/pm2-ls.js @@ -3,7 +3,7 @@ const cst = require('../../../constants') const Common = require('../../Common') const Configuration = require('../../Configuration') const UxHelpers = require('./helpers.js') -const chalk = require('chalk') +const chalk = require('ansis') const Table = require('cli-tableau') const Passwd = require('../../tools/passwd.js') @@ -280,7 +280,7 @@ function listModulesAndAppsManaged(list, commander) { // Watch status if (!CONDENSED_MODE) - obj[key].push(l.pm2_env.watch ? chalk.green.bold('enabled') : chalk.grey('disabled')) + obj[key].push(l.pm2_env.watch ? chalk.green.bold('enabled') : chalk.gray('disabled')) UxHelpers.safe_push(app_table, obj) } @@ -452,7 +452,7 @@ function miniMonitBar(sys_infos) { disks.forEach(fs => { let use = sys_metrics[`fs:use:${fs}`].value if (use > 60) - sys_summary_line += `${chalk.grey(fs)} ${UxHelpers.colorizedMetric(use, 80, 90, '%')} ` + sys_summary_line += `${chalk.gray(fs)} ${UxHelpers.colorizedMetric(use, 80, 90, '%')} ` }) } diff --git a/lib/API/pm2-plus/PM2IO.js b/lib/API/pm2-plus/PM2IO.js index 6c49def8..02a92e29 100644 --- a/lib/API/pm2-plus/PM2IO.js +++ b/lib/API/pm2-plus/PM2IO.js @@ -1,7 +1,7 @@ 'use strict' var cst = require('../../../constants.js'); -const chalk = require('chalk'); +const chalk = require('ansis'); const path = require('path'); const fs = require('fs'); const Table = require('cli-tableau'); diff --git a/lib/API/pm2-plus/auth-strategies/CliAuth.js b/lib/API/pm2-plus/auth-strategies/CliAuth.js index f026f221..cf52c2b5 100644 --- a/lib/API/pm2-plus/auth-strategies/CliAuth.js +++ b/lib/API/pm2-plus/auth-strategies/CliAuth.js @@ -11,7 +11,7 @@ const tryEach = require('async/tryEach') const path = require('path') const os = require('os') const needle = require('needle') -const chalk = require('chalk') +const chalk = require('ansis') const cst = require('../../../../constants.js') const promptly = require('promptly') diff --git a/lib/API/pm2-plus/helpers.js b/lib/API/pm2-plus/helpers.js index a312a365..67d18119 100644 --- a/lib/API/pm2-plus/helpers.js +++ b/lib/API/pm2-plus/helpers.js @@ -2,7 +2,7 @@ var cst = require('../../../constants.js'); var Common = require('../../Common.js'); -const chalk = require('chalk'); +const chalk = require('ansis'); const forEach = require('async/forEach'); const open = require('../../tools/open.js'); const Modules = require('../Modules'); diff --git a/lib/API/pm2-plus/link.js b/lib/API/pm2-plus/link.js index 969bf7d0..593251a3 100644 --- a/lib/API/pm2-plus/link.js +++ b/lib/API/pm2-plus/link.js @@ -1,7 +1,7 @@ var cst = require('../../../constants.js'); var Common = require('../../Common.js'); -var chalk = require('chalk'); +var chalk = require('ansis'); var fs = require('fs'); var KMDaemon = require('@pm2/agent/src/InteractorClient'); var pkg = require('../../../package.json') diff --git a/lib/Common.js b/lib/Common.js index 64978e68..4107dca7 100644 --- a/lib/Common.js +++ b/lib/Common.js @@ -12,7 +12,7 @@ var fs = require('fs'); var path = require('path'); var os = require('os'); var util = require('util'); -var chalk = require('chalk'); +var chalk = require('ansis'); var fclone = require('fclone'); var semver = require('semver'); var dayjs = require('dayjs'); diff --git a/lib/binaries/CLI.js b/lib/binaries/CLI.js index 2ef3523e..05eeae9c 100644 --- a/lib/binaries/CLI.js +++ b/lib/binaries/CLI.js @@ -5,7 +5,7 @@ process.env.PM2_USAGE = 'CLI'; var cst = require('../../constants.js'); var commander = require('commander'); -var chalk = require('chalk'); +var chalk = require('ansis'); var forEachLimit = require('async/forEachLimit'); var debug = require('debug')('pm2:cli'); @@ -1013,7 +1013,7 @@ commander.command('autoinstall') commander.command('examples') .description('display pm2 usage examples') .action(() => { - console.log(cst.PREFIX_MSG + chalk.grey('pm2 usage examples:\n')); + console.log(cst.PREFIX_MSG + chalk.gray('pm2 usage examples:\n')); displayExamples(); process.exit(cst.SUCCESS_EXIT); }) diff --git a/lib/binaries/DevCLI.js b/lib/binaries/DevCLI.js index afac0424..cb0b97ec 100644 --- a/lib/binaries/DevCLI.js +++ b/lib/binaries/DevCLI.js @@ -11,7 +11,7 @@ var PM2 = require('../..'); var Log = require('../API/Log'); var cst = require('../../constants.js'); var pkg = require('../../package.json'); -var chalk = require('chalk'); +var chalk = require('ansis'); var path = require('path'); var fmt = require('../tools/fmt.js'); var exec = require('child_process').exec; diff --git a/package.json b/package.json index 9fd0fdee..7a73955d 100644 --- a/package.json +++ b/package.json @@ -172,9 +172,9 @@ "@pm2/js-api": "~0.8.0", "@pm2/io": "~6.1.0", "@pm2/pm2-version-check": "latest", + "ansis": "4.0.0", "async": "~3.2.6", "blessed": "0.1.81", - "chalk": "3.0.0", "chokidar": "^3.5.3", "cli-tableau": "^2.0.0", "commander": "2.15.1", diff --git a/test/parallel.js b/test/parallel.js index a001a3b5..1820e67e 100644 --- a/test/parallel.js +++ b/test/parallel.js @@ -3,7 +3,7 @@ const forEachLimit = require('async/forEachLimit') const fs = require('fs') const exec = require('child_process').exec const path = require('path') -const chalk = require('chalk') +const chalk = require('ansis') const Table = require('cli-table-redemption'); const testFolder = './test/e2e/'