tuimon 0.2.0 → 0.3.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/README.md +191 -181
- package/dist/cli.js +53 -0
- package/dist/cli.js.map +1 -1
- package/dist/quick/presets/coverage.d.ts +3 -0
- package/dist/quick/presets/coverage.d.ts.map +1 -0
- package/dist/quick/presets/coverage.js +362 -0
- package/dist/quick/presets/coverage.js.map +1 -0
- package/dist/quick/presets/deps.d.ts +3 -0
- package/dist/quick/presets/deps.d.ts.map +1 -0
- package/dist/quick/presets/deps.js +194 -0
- package/dist/quick/presets/deps.js.map +1 -0
- package/dist/quick/presets/docker.d.ts +3 -0
- package/dist/quick/presets/docker.d.ts.map +1 -0
- package/dist/quick/presets/docker.js +100 -0
- package/dist/quick/presets/docker.js.map +1 -0
- package/dist/quick/presets/git.d.ts +3 -0
- package/dist/quick/presets/git.d.ts.map +1 -0
- package/dist/quick/presets/git.js +116 -0
- package/dist/quick/presets/git.js.map +1 -0
- package/dist/quick/presets/ps.d.ts +3 -0
- package/dist/quick/presets/ps.d.ts.map +1 -0
- package/dist/quick/presets/ps.js +168 -0
- package/dist/quick/presets/ps.js.map +1 -0
- package/dist/quick/presets/runner.d.ts +3 -0
- package/dist/quick/presets/runner.d.ts.map +1 -0
- package/dist/quick/presets/runner.js +20 -0
- package/dist/quick/presets/runner.js.map +1 -0
- package/dist/quick/presets/types.d.ts +7 -0
- package/dist/quick/presets/types.d.ts.map +1 -0
- package/dist/quick/presets/types.js +2 -0
- package/dist/quick/presets/types.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
function parsePercent(value) {
|
|
3
|
+
return parseFloat(value.replace('%', '')) || 0;
|
|
4
|
+
}
|
|
5
|
+
function execCommand(cmd) {
|
|
6
|
+
try {
|
|
7
|
+
return execSync(cmd, { encoding: 'utf-8', timeout: 10_000 });
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
11
|
+
if (msg.includes('ENOENT') || msg.includes('not found') || msg.includes('command not found')) {
|
|
12
|
+
throw new Error('[tuimon] Docker not found. Make sure Docker is installed and running.');
|
|
13
|
+
}
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function parseJsonLines(output) {
|
|
18
|
+
return output
|
|
19
|
+
.trim()
|
|
20
|
+
.split('\n')
|
|
21
|
+
.filter((line) => line.trim() !== '')
|
|
22
|
+
.map((line) => JSON.parse(line));
|
|
23
|
+
}
|
|
24
|
+
export function dockerPreset() {
|
|
25
|
+
// Verify docker is available on init
|
|
26
|
+
try {
|
|
27
|
+
execSync('docker --version', { encoding: 'utf-8', stdio: 'pipe' });
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error('[tuimon] Docker not found. Make sure Docker is installed and running.');
|
|
31
|
+
}
|
|
32
|
+
const layout = {
|
|
33
|
+
title: 'Docker',
|
|
34
|
+
stats: [
|
|
35
|
+
{ id: 'containers', label: 'Containers', type: 'stat' },
|
|
36
|
+
{ id: 'running', label: 'Running', type: 'stat' },
|
|
37
|
+
{ id: 'totalCpu', label: 'CPU Usage', type: 'gauge' },
|
|
38
|
+
{ id: 'totalMem', label: 'Memory', type: 'gauge' },
|
|
39
|
+
],
|
|
40
|
+
panels: [
|
|
41
|
+
{ id: 'cpuHistory', label: 'CPU per Container', type: 'line', span: 2 },
|
|
42
|
+
{ id: 'health', label: 'Container Status', type: 'status-grid' },
|
|
43
|
+
{ id: 'memUsage', label: 'Memory per Container', type: 'bar' },
|
|
44
|
+
{ id: 'events', label: 'Recent Events', type: 'event-log', throttle: 3000 },
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
const data = () => {
|
|
48
|
+
const statsOutput = execCommand("docker stats --no-stream --format '{{json .}}'");
|
|
49
|
+
const statsEntries = parseJsonLines(statsOutput);
|
|
50
|
+
const psOutput = execCommand("docker ps --format '{{json .}}'");
|
|
51
|
+
const psEntries = parseJsonLines(psOutput);
|
|
52
|
+
const totalContainers = psEntries.length;
|
|
53
|
+
const runningCount = psEntries.filter((c) => c.State === 'running').length;
|
|
54
|
+
const totalCpu = statsEntries.reduce((sum, e) => sum + parsePercent(e.CPUPerc), 0);
|
|
55
|
+
const totalMem = statsEntries.length > 0
|
|
56
|
+
? statsEntries.reduce((sum, e) => sum + parsePercent(e.MemPerc), 0) / statsEntries.length
|
|
57
|
+
: 0;
|
|
58
|
+
const cpuHistory = {};
|
|
59
|
+
for (const entry of statsEntries) {
|
|
60
|
+
cpuHistory[entry.Name] = parsePercent(entry.CPUPerc);
|
|
61
|
+
}
|
|
62
|
+
const health = psEntries.map((c) => ({
|
|
63
|
+
label: c.Names,
|
|
64
|
+
status: c.State === 'running' ? 'ok' : c.State === 'exited' ? 'error' : 'warn',
|
|
65
|
+
}));
|
|
66
|
+
const memUsage = {};
|
|
67
|
+
for (const entry of statsEntries) {
|
|
68
|
+
memUsage[entry.Name] = parsePercent(entry.MemPerc);
|
|
69
|
+
}
|
|
70
|
+
let events = [];
|
|
71
|
+
try {
|
|
72
|
+
const eventsOutput = execCommand("docker events --since 60s --until 0s --format '{{json .}}'");
|
|
73
|
+
const lines = eventsOutput
|
|
74
|
+
.trim()
|
|
75
|
+
.split('\n')
|
|
76
|
+
.filter((line) => line.trim() !== '');
|
|
77
|
+
events = lines.map((line) => {
|
|
78
|
+
const parsed = JSON.parse(line);
|
|
79
|
+
const name = parsed.Actor?.Attributes?.name ?? 'unknown';
|
|
80
|
+
const action = parsed.Action ?? 'unknown';
|
|
81
|
+
return { text: `${name}: ${action}`, type: 'info' };
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
events = [];
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
containers: totalContainers,
|
|
89
|
+
running: runningCount,
|
|
90
|
+
totalCpu: Math.round(totalCpu * 100) / 100,
|
|
91
|
+
totalMem: Math.round(totalMem * 100) / 100,
|
|
92
|
+
cpuHistory,
|
|
93
|
+
health,
|
|
94
|
+
memUsage,
|
|
95
|
+
events,
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
return { layout, data, refresh: 1000 };
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../../src/quick/presets/docker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/quick/presets/git.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAiB9C,wBAAgB,SAAS,IAAI,YAAY,CA+GxC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
function execGit(cmd) {
|
|
3
|
+
try {
|
|
4
|
+
return execSync(cmd, { encoding: 'utf-8', timeout: 30_000, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
5
|
+
}
|
|
6
|
+
catch (err) {
|
|
7
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
8
|
+
if (msg.includes('not a git repository') || msg.includes('Not a git repository')) {
|
|
9
|
+
throw new Error('[tuimon] Not a git repository. Run this command from inside a git repo.');
|
|
10
|
+
}
|
|
11
|
+
if (msg.includes('ENOENT') || msg.includes('not found') || msg.includes('command not found')) {
|
|
12
|
+
throw new Error('[tuimon] Git not found. Make sure git is installed.');
|
|
13
|
+
}
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function gitPreset() {
|
|
18
|
+
// Verify we're in a git repo on init
|
|
19
|
+
try {
|
|
20
|
+
execSync('git rev-parse --is-inside-work-tree', { encoding: 'utf-8', stdio: 'pipe' });
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw new Error('[tuimon] Not a git repository. Run this command from inside a git repo.');
|
|
24
|
+
}
|
|
25
|
+
const layout = {
|
|
26
|
+
title: 'Git',
|
|
27
|
+
stats: [
|
|
28
|
+
{ id: 'commits', label: 'Total Commits', type: 'stat' },
|
|
29
|
+
{ id: 'contributors', label: 'Contributors', type: 'stat' },
|
|
30
|
+
{ id: 'branches', label: 'Branches', type: 'stat' },
|
|
31
|
+
{ id: 'filesChanged', label: 'Files Changed (30d)', type: 'stat' },
|
|
32
|
+
],
|
|
33
|
+
panels: [
|
|
34
|
+
{ id: 'frequency', label: 'Commits per Day (30 days)', type: 'bar', span: 2 },
|
|
35
|
+
{ id: 'topContributors', label: 'Top Contributors', type: 'bar' },
|
|
36
|
+
{ id: 'topFiles', label: 'Most Changed Files', type: 'bar' },
|
|
37
|
+
{ id: 'recentCommits', label: 'Recent Commits', type: 'event-log', span: 2 },
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
const data = () => {
|
|
41
|
+
// Total commits
|
|
42
|
+
const commitCountStr = execGit('git rev-list --count HEAD').trim();
|
|
43
|
+
const commits = parseInt(commitCountStr, 10) || 0;
|
|
44
|
+
// Contributors
|
|
45
|
+
const shortlogOutput = execGit('git shortlog -sn --no-merges HEAD');
|
|
46
|
+
const contributorLines = shortlogOutput
|
|
47
|
+
.trim()
|
|
48
|
+
.split('\n')
|
|
49
|
+
.filter((line) => line.trim() !== '');
|
|
50
|
+
const contributorEntries = contributorLines.map((line) => {
|
|
51
|
+
const match = line.trim().match(/^(\d+)\t(.+)$/);
|
|
52
|
+
return match ? { count: parseInt(match[1] ?? '0', 10), name: match[2] ?? 'unknown' } : null;
|
|
53
|
+
}).filter((e) => e !== null);
|
|
54
|
+
const contributorsCount = contributorEntries.length;
|
|
55
|
+
const topContributors = {};
|
|
56
|
+
for (const entry of contributorEntries.slice(0, 10)) {
|
|
57
|
+
topContributors[entry.name] = entry.count;
|
|
58
|
+
}
|
|
59
|
+
// Branches
|
|
60
|
+
const branchOutput = execGit('git branch --list');
|
|
61
|
+
const branchCount = branchOutput
|
|
62
|
+
.trim()
|
|
63
|
+
.split('\n')
|
|
64
|
+
.filter((line) => line.trim() !== '').length;
|
|
65
|
+
// Commits per day (30 days)
|
|
66
|
+
const dateOutput = execGit('git log --since="30 days ago" --format="%ad" --date=short');
|
|
67
|
+
const dates = dateOutput
|
|
68
|
+
.trim()
|
|
69
|
+
.split('\n')
|
|
70
|
+
.filter((line) => line.trim() !== '');
|
|
71
|
+
const frequency = {};
|
|
72
|
+
for (const date of dates) {
|
|
73
|
+
const d = date.trim();
|
|
74
|
+
frequency[d] = (frequency[d] ?? 0) + 1;
|
|
75
|
+
}
|
|
76
|
+
// Files changed in 30 days
|
|
77
|
+
const filesOutput = execGit('git log --since="30 days ago" --name-only --format=""');
|
|
78
|
+
const allFiles = filesOutput
|
|
79
|
+
.trim()
|
|
80
|
+
.split('\n')
|
|
81
|
+
.filter((line) => line.trim() !== '')
|
|
82
|
+
.map((line) => line.trim());
|
|
83
|
+
const fileCounts = new Map();
|
|
84
|
+
for (const file of allFiles) {
|
|
85
|
+
fileCounts.set(file, (fileCounts.get(file) ?? 0) + 1);
|
|
86
|
+
}
|
|
87
|
+
const uniqueFilesChanged = fileCounts.size;
|
|
88
|
+
// Top 10 most changed files
|
|
89
|
+
const sortedFiles = [...fileCounts.entries()]
|
|
90
|
+
.sort((a, b) => b[1] - a[1])
|
|
91
|
+
.slice(0, 10);
|
|
92
|
+
const topFiles = {};
|
|
93
|
+
for (const [file, count] of sortedFiles) {
|
|
94
|
+
topFiles[file] = count;
|
|
95
|
+
}
|
|
96
|
+
// Recent commits
|
|
97
|
+
const recentOutput = execGit('git log -20 --format="%h %s (%an, %ar)"');
|
|
98
|
+
const recentCommits = recentOutput
|
|
99
|
+
.trim()
|
|
100
|
+
.split('\n')
|
|
101
|
+
.filter((line) => line.trim() !== '')
|
|
102
|
+
.map((line) => ({ text: line.trim(), type: 'info' }));
|
|
103
|
+
return {
|
|
104
|
+
commits,
|
|
105
|
+
contributors: contributorsCount,
|
|
106
|
+
branches: branchCount,
|
|
107
|
+
filesChanged: uniqueFilesChanged,
|
|
108
|
+
frequency,
|
|
109
|
+
topContributors,
|
|
110
|
+
topFiles,
|
|
111
|
+
recentCommits,
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
return { layout, data };
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/quick/presets/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps.d.ts","sourceRoot":"","sources":["../../../src/quick/presets/ps.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AA4F9C,wBAAgB,QAAQ,IAAI,YAAY,CA0FvC"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
function execCommand(cmd) {
|
|
4
|
+
try {
|
|
5
|
+
return execSync(cmd, { encoding: 'utf-8', timeout: 5000 });
|
|
6
|
+
}
|
|
7
|
+
catch (err) {
|
|
8
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
9
|
+
if (msg.includes('ENOENT') || msg.includes('not found') || msg.includes('command not found')) {
|
|
10
|
+
throw new Error('[tuimon] ps command not found. This preset requires a Unix-like system (Linux/macOS). Windows is not supported.');
|
|
11
|
+
}
|
|
12
|
+
throw err;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function readFile(path) {
|
|
16
|
+
try {
|
|
17
|
+
return readFileSync(path, 'utf-8');
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function parseLoadAvg() {
|
|
24
|
+
const content = readFile('/proc/loadavg');
|
|
25
|
+
if (content === undefined)
|
|
26
|
+
return undefined;
|
|
27
|
+
const parts = content.trim().split(/\s+/);
|
|
28
|
+
const one = parts[0];
|
|
29
|
+
const five = parts[1];
|
|
30
|
+
const fifteen = parts[2];
|
|
31
|
+
if (one === undefined || five === undefined || fifteen === undefined)
|
|
32
|
+
return undefined;
|
|
33
|
+
return `${one} / ${five} / ${fifteen}`;
|
|
34
|
+
}
|
|
35
|
+
function parseMemPercent() {
|
|
36
|
+
const content = readFile('/proc/meminfo');
|
|
37
|
+
if (content === undefined)
|
|
38
|
+
return undefined;
|
|
39
|
+
const totalMatch = content.match(/MemTotal:\s+(\d+)/);
|
|
40
|
+
const availMatch = content.match(/MemAvailable:\s+(\d+)/);
|
|
41
|
+
if (totalMatch === null || availMatch === null)
|
|
42
|
+
return undefined;
|
|
43
|
+
const total = parseInt(totalMatch[1] ?? '0', 10);
|
|
44
|
+
const avail = parseInt(availMatch[1] ?? '0', 10);
|
|
45
|
+
if (total === 0)
|
|
46
|
+
return undefined;
|
|
47
|
+
return Math.round(((total - avail) / total) * 10000) / 100;
|
|
48
|
+
}
|
|
49
|
+
function parsePsOutput(output) {
|
|
50
|
+
const lines = output.trim().split('\n');
|
|
51
|
+
// Skip header line
|
|
52
|
+
const entries = [];
|
|
53
|
+
for (let i = 1; i < lines.length; i++) {
|
|
54
|
+
const line = lines[i];
|
|
55
|
+
if (line === undefined || line.trim() === '')
|
|
56
|
+
continue;
|
|
57
|
+
const parts = line.trim().split(/\s+/);
|
|
58
|
+
const user = parts[0];
|
|
59
|
+
const pid = parts[1];
|
|
60
|
+
const cpuStr = parts[2];
|
|
61
|
+
const memStr = parts[3];
|
|
62
|
+
if (user === undefined || pid === undefined || cpuStr === undefined || memStr === undefined)
|
|
63
|
+
continue;
|
|
64
|
+
// Command is everything from column index 10 onward
|
|
65
|
+
const command = parts.slice(10).join(' ') || parts.slice(4).join(' ');
|
|
66
|
+
entries.push({
|
|
67
|
+
user,
|
|
68
|
+
pid,
|
|
69
|
+
cpu: parseFloat(cpuStr) || 0,
|
|
70
|
+
mem: parseFloat(memStr) || 0,
|
|
71
|
+
command,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return entries;
|
|
75
|
+
}
|
|
76
|
+
function getLoadAvgFallback() {
|
|
77
|
+
try {
|
|
78
|
+
const output = execCommand('uptime');
|
|
79
|
+
const match = output.match(/load averages?:\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/);
|
|
80
|
+
if (match !== null) {
|
|
81
|
+
return `${match[1] ?? '?'} / ${match[2] ?? '?'} / ${match[3] ?? '?'}`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// ignore
|
|
86
|
+
}
|
|
87
|
+
return '? / ? / ?';
|
|
88
|
+
}
|
|
89
|
+
export function psPreset() {
|
|
90
|
+
// Verify ps is available
|
|
91
|
+
if (process.platform === 'win32') {
|
|
92
|
+
throw new Error('[tuimon] ps preset requires a Unix-like system (Linux/macOS). Windows is not supported. Consider using PowerShell\'s Get-Process instead.');
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
execSync('ps --version 2>&1 || ps aux > /dev/null 2>&1', { encoding: 'utf-8', stdio: 'pipe', timeout: 5000 });
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
throw new Error('[tuimon] ps command not available on this system.');
|
|
99
|
+
}
|
|
100
|
+
const layout = {
|
|
101
|
+
title: 'Processes',
|
|
102
|
+
stats: [
|
|
103
|
+
{ id: 'total', label: 'Total Processes', type: 'stat' },
|
|
104
|
+
{ id: 'cpuUsage', label: 'CPU Usage', type: 'gauge' },
|
|
105
|
+
{ id: 'memUsage', label: 'Memory Usage', type: 'gauge' },
|
|
106
|
+
{ id: 'loadAvg', label: 'Load Average', type: 'stat' },
|
|
107
|
+
],
|
|
108
|
+
panels: [
|
|
109
|
+
{ id: 'topCpu', label: 'Top CPU Processes', type: 'bar', span: 2 },
|
|
110
|
+
{ id: 'topMem', label: 'Top Memory Processes', type: 'bar' },
|
|
111
|
+
{ id: 'cpuHistory', label: 'CPU History', type: 'line' },
|
|
112
|
+
{ id: 'processList', label: 'Process List', type: 'event-log', span: 2, throttle: 2000 },
|
|
113
|
+
],
|
|
114
|
+
};
|
|
115
|
+
const data = () => {
|
|
116
|
+
const psOutput = execCommand('ps aux --sort=-%cpu | head -11');
|
|
117
|
+
const processes = parsePsOutput(psOutput);
|
|
118
|
+
const top10 = processes.slice(0, 10);
|
|
119
|
+
// Total process count
|
|
120
|
+
const countOutput = execCommand('ps aux');
|
|
121
|
+
const totalLines = countOutput.trim().split('\n');
|
|
122
|
+
const total = Math.max(0, totalLines.length - 1); // subtract header
|
|
123
|
+
// CPU usage: sum of top processes, capped at 100
|
|
124
|
+
const cpuSum = top10.reduce((sum, p) => sum + p.cpu, 0);
|
|
125
|
+
const cpuUsage = Math.min(100, Math.round(cpuSum * 100) / 100);
|
|
126
|
+
// Memory usage: try /proc/meminfo first, fallback to process sum
|
|
127
|
+
const procMem = parseMemPercent();
|
|
128
|
+
const memUsage = procMem !== undefined
|
|
129
|
+
? procMem
|
|
130
|
+
: Math.min(100, Math.round(top10.reduce((sum, p) => sum + p.mem, 0) * 100) / 100);
|
|
131
|
+
// Load average: try /proc/loadavg first, fallback to uptime
|
|
132
|
+
const loadAvg = parseLoadAvg() ?? getLoadAvgFallback();
|
|
133
|
+
// Top CPU bar chart
|
|
134
|
+
const topCpu = {};
|
|
135
|
+
for (const p of top10) {
|
|
136
|
+
const name = p.command.split('/').pop()?.split(' ')[0] ?? p.command;
|
|
137
|
+
const key = name || `pid:${p.pid}`;
|
|
138
|
+
topCpu[key] = (topCpu[key] ?? 0) + p.cpu;
|
|
139
|
+
}
|
|
140
|
+
// Top Memory bar chart — re-sort by memory
|
|
141
|
+
const byMem = [...processes].sort((a, b) => b.mem - a.mem).slice(0, 10);
|
|
142
|
+
const topMem = {};
|
|
143
|
+
for (const p of byMem) {
|
|
144
|
+
const name = p.command.split('/').pop()?.split(' ')[0] ?? p.command;
|
|
145
|
+
const key = name || `pid:${p.pid}`;
|
|
146
|
+
topMem[key] = (topMem[key] ?? 0) + p.mem;
|
|
147
|
+
}
|
|
148
|
+
// CPU history — single data point per refresh, line chart accumulates
|
|
149
|
+
const cpuHistory = { CPU: cpuUsage };
|
|
150
|
+
// Process list — event-log entries
|
|
151
|
+
const processList = top10.map((p) => {
|
|
152
|
+
const name = p.command.split('/').pop()?.split(' ')[0] ?? p.command;
|
|
153
|
+
return `${name} ${p.cpu}% CPU ${p.mem}% MEM ${p.command}`;
|
|
154
|
+
});
|
|
155
|
+
return {
|
|
156
|
+
total,
|
|
157
|
+
cpuUsage,
|
|
158
|
+
memUsage,
|
|
159
|
+
loadAvg,
|
|
160
|
+
topCpu,
|
|
161
|
+
topMem,
|
|
162
|
+
cpuHistory,
|
|
163
|
+
processList,
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
return { layout, data, refresh: 1000 };
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=ps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ps.js","sourceRoot":"","sources":["../../../src/quick/presets/ps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/quick/presets/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG9C,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import tuimon from '../../index.js';
|
|
2
|
+
export async function runPreset(preset) {
|
|
3
|
+
const dash = await tuimon.start({
|
|
4
|
+
pages: {
|
|
5
|
+
main: {
|
|
6
|
+
html: '',
|
|
7
|
+
default: true,
|
|
8
|
+
layout: preset.layout,
|
|
9
|
+
keys: {
|
|
10
|
+
F5: { label: 'Refresh', action: async () => { await dash.render(await Promise.resolve(preset.data())); } },
|
|
11
|
+
F10: { label: 'Quit', action: () => process.exit(0) },
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
refresh: preset.refresh,
|
|
16
|
+
data: preset.data,
|
|
17
|
+
renderDelay: 0,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/quick/presets/runner.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,gBAAgB,CAAA;AAEnC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAC9B,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE;oBACJ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC,EAAE;oBACzG,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;iBACtD;aACF;SACF;QACD,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,CAAC;KACf,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/quick/presets/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACtE,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/quick/presets/types.ts"],"names":[],"mappings":""}
|
package/dist/types.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export interface TuiMonOptions {
|
|
|
44
44
|
* Auto-render interval in ms. Requires data to be set.
|
|
45
45
|
* Default: no auto-render — developer calls dash.render() manually.
|
|
46
46
|
*/
|
|
47
|
-
refresh?: number;
|
|
47
|
+
refresh?: number | undefined;
|
|
48
48
|
/** Delay in ms after pushData() before screenshotting. Default: 50 */
|
|
49
49
|
renderDelay?: number;
|
|
50
50
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,IAAI,GACZ,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GACvC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9C,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,MAAM,CAAA;AAEhC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnC;AAED,MAAM,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;AAIvD,MAAM,WAAW,UAAU;IACzB;2FACuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;gEAC4D;IAC5D,MAAM,CAAC,EAAE,OAAO,mBAAmB,EAAE,YAAY,CAAA;CAClD;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;AAIhD,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAA;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IACvE;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|