Download apps/shared/src/format.ts from SaylorTwift/hermes-agent: direct link, hf CLI and curl.
- Browser
- Download file 1.05 kB
-
https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/apps/shared/src/format.ts
- Command line
-
hf download hf://SaylorTwift/hermes-agent/apps/shared/src/format.ts
-
curl -L -o format.ts https://huggingface.co/SaylorTwift/hermes-agent/resolve/main/apps/shared/src/format.ts
1.05 kB
| // THE compact-number formatter β every user-facing count/token figure goes | |
| // through here. 999 β "999", 1000 β "1k", 1230 β "1.2k", 10000 β "10k", | |
| // 1_500_000 β "1.5M". `M` is the top rung by design: token and cost figures | |
| // this renders stay well under a billion, so 1e9 reads "1000M" rather than | |
| // growing a `B` rung that no surface needs (and that would collide with the | |
| // "bytes" reading in size labels). Do not hand-roll `/ 1000` display math elsewhere. | |
| export function compactNumber(value: null | number | undefined): string { | |
| const num = Number(value ?? 0) | |
| if (!Number.isFinite(num) || num <= 0) { | |
| return '0' | |
| } | |
| const scaled = (v: number, suffix: string) => `${v.toFixed(1).replace(/\.0$/, '')}${suffix}` | |
| // Thresholds sit just under the unit boundary so rounding can't produce | |
| // "1000k" or "1000" β those promote to the next unit instead. | |
| if (num >= 999_950) { | |
| return scaled(num / 1_000_000, 'M') | |
| } | |
| if (num >= 999.5) { | |
| return scaled(num / 1_000, 'k') | |
| } | |
| return `${Math.round(num)}` | |
| } | |