treewide: adapt for monorepo layout; initial TUI work

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Id40b5f5ccb55a8a1ea2793192a38f0256a6a6964
This commit is contained in:
raf 2026-02-07 12:43:59 +03:00
commit 33ec901788
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
35 changed files with 1699 additions and 413 deletions

View file

@ -0,0 +1,23 @@
export function formatBytes(bytes: number): string {
if (bytes === 0) return '0 B';
const units = ['B', 'KB', 'MB', 'GB'];
const i = Math.floor(Math.log2(bytes) / 10);
return `${(bytes / (1 << (i * 10))).toFixed(2)} ${units[i]}`;
}
export function formatNumber(num: number): string {
if (num >= 1e9) return (num / 1e9).toFixed(2) + 'B';
if (num >= 1e6) return (num / 1e6).toFixed(2) + 'M';
if (num >= 1e3) return (num / 1e3).toFixed(2) + 'K';
return num.toString();
}
export function formatTime(seconds: number): string {
if (seconds < 0.001) return (seconds * 1e6).toFixed(2) + 'μs';
if (seconds < 1) return (seconds * 1000).toFixed(2) + 'ms';
return seconds.toFixed(3) + 's';
}
export function formatPercent(value: number): string {
return (value * 100).toFixed(2) + '%';
}

View file

@ -0,0 +1 @@
export * from './formatters';