dankgrinder 8.98.0 → 8.100.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/grinder.js +28 -29
- package/package.json +1 -1
package/lib/grinder.js
CHANGED
|
@@ -3172,7 +3172,6 @@ async function start(apiKey, apiUrl, opts = {}) {
|
|
|
3172
3172
|
let shutdownInProgress = false;
|
|
3173
3173
|
|
|
3174
3174
|
async function gracefulShutdown(signal) {
|
|
3175
|
-
const chalk = require('chalk');
|
|
3176
3175
|
if (shutdownInProgress) return;
|
|
3177
3176
|
shutdownInProgress = true;
|
|
3178
3177
|
shutdownCalled = true;
|
|
@@ -3187,46 +3186,42 @@ async function start(apiKey, apiUrl, opts = {}) {
|
|
|
3187
3186
|
// Build the stats table visually gracefully
|
|
3188
3187
|
let finalCoins = 0;
|
|
3189
3188
|
let finalCmds = 0;
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
table
|
|
3197
|
-
table +=
|
|
3189
|
+
|
|
3190
|
+
let figlet;
|
|
3191
|
+
try { figlet = require('figlet'); } catch {}
|
|
3192
|
+
|
|
3193
|
+
const divLine = '────────────────────────────────────────────────────────────────────────────────────────────────';
|
|
3194
|
+
|
|
3195
|
+
let table = '\n';
|
|
3196
|
+
table += ` ${c.dim}${divLine}${c.reset}\n\n`;
|
|
3197
|
+
table += ` ${c.dim}${'ACCOUNT'.padEnd(25)}${'GAINED'.padEnd(15)}${'COMMANDS'.padEnd(10)}${'OK %'}${c.reset}\n\n`;
|
|
3198
3198
|
|
|
3199
3199
|
for (const wk of workers) {
|
|
3200
3200
|
const rate = wk.stats.commands > 0 ? ((wk.stats.successes / wk.stats.commands) * 100).toFixed(0) : 0;
|
|
3201
3201
|
finalCoins += wk.stats.coins || 0;
|
|
3202
3202
|
finalCmds += wk.stats.commands || 0;
|
|
3203
|
-
|
|
3204
|
-
const
|
|
3205
|
-
const
|
|
3206
|
-
const
|
|
3207
|
-
const
|
|
3208
|
-
|
|
3209
|
-
const un = unRaw.padEnd(25);
|
|
3210
|
-
const coins = coinsRaw.substring(0, 14).padEnd(15);
|
|
3211
|
-
const cmds = cmdsRaw.substring(0, 8).padEnd(10);
|
|
3212
|
-
const ok = okRaw.substring(0, 6).padEnd(6);
|
|
3213
|
-
|
|
3203
|
+
|
|
3204
|
+
const un = (wk.username || '?').substring(0, 23).padEnd(25);
|
|
3205
|
+
const coins = ('+⏣' + (wk.stats.coins || 0).toLocaleString()).substring(0, 14).padEnd(15);
|
|
3206
|
+
const cmds = String(wk.stats.commands || 0).substring(0, 8).padEnd(10);
|
|
3207
|
+
const ok = (rate + '%').substring(0, 6).padEnd(6);
|
|
3208
|
+
|
|
3214
3209
|
table += ` ${c.cyan}${un}${c.reset} ${c.green}${coins}${c.reset} ${cmds} ${ok}\n`;
|
|
3215
3210
|
}
|
|
3216
|
-
|
|
3211
|
+
|
|
3217
3212
|
if (workers.length === 0) {
|
|
3218
|
-
table += ` ${c.dim}${'No workers...'.padEnd(25)}${c.reset}
|
|
3213
|
+
table += ` ${c.dim}${'No workers...'.padEnd(25)}${c.reset}\n`;
|
|
3219
3214
|
}
|
|
3220
|
-
|
|
3221
|
-
table +=
|
|
3215
|
+
|
|
3216
|
+
table += `\n ${c.dim}${divLine}${c.reset}\n`;
|
|
3222
3217
|
process.stdout.write(table);
|
|
3223
3218
|
|
|
3224
3219
|
const memFinal = Math.round((process.memoryUsage?.rss?.() ?? process.memoryUsage().rss) / 1048576);
|
|
3225
3220
|
const cpm = globalCmdRate.getRate().toFixed(1);
|
|
3226
|
-
|
|
3227
|
-
console.log(
|
|
3228
|
-
console.log(
|
|
3229
|
-
console.log('
|
|
3221
|
+
|
|
3222
|
+
console.log(`\n ${c.magenta}◆${c.reset} ${c.bold}TOTAL${c.reset} ${c.green}+⏣${finalCoins.toLocaleString()}${c.reset} ${c.dim}in ${ui.formatUptime()}${c.reset}`);
|
|
3223
|
+
console.log(` ${c.cyan}◆${c.reset} ${c.bold}STATS${c.reset} ${finalCmds}${c.dim} cmds │ ${c.reset}~${cpm}${c.dim} cmd/m │ ${c.reset}${memFinal}${c.dim}MB RAM${c.reset}`);
|
|
3224
|
+
console.log('');
|
|
3230
3225
|
|
|
3231
3226
|
|
|
3232
3227
|
// Stop workers immediately (don't wait) — instant shutdown
|
|
@@ -3258,7 +3253,11 @@ const figlet = require('figlet');
|
|
|
3258
3253
|
|
|
3259
3254
|
const disResult = redis?.disconnect?.();
|
|
3260
3255
|
if (disResult && typeof disResult.catch === 'function') disResult.catch(() => {});
|
|
3261
|
-
|
|
3256
|
+
if (figlet) {
|
|
3257
|
+
console.log(c.magenta + figlet.textSync('GOODBYE!', { font: 'ANSI Shadow' }) + c.reset + '\n');
|
|
3258
|
+
} else {
|
|
3259
|
+
console.log(`${c.magenta}${c.bold}GOODBYE!${c.reset}\n`);
|
|
3260
|
+
}
|
|
3262
3261
|
// Force exit so Ctrl+C always terminates immediately
|
|
3263
3262
|
setTimeout(() => process.exit(0), 2000);
|
|
3264
3263
|
process.exit(0);
|