feat(tsview): add database and S3 handlers, tswatch/watch scripts, web utilities, assets and release config
This commit is contained in:
46
ts_web/utilities/formatters.ts
Normal file
46
ts_web/utilities/formatters.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Shared formatting utilities for tsview web components
|
||||
*/
|
||||
|
||||
/**
|
||||
* Format a byte size into a human-readable string
|
||||
* @param bytes - Size in bytes (can be undefined for S3 folders)
|
||||
* @returns Formatted size string (e.g., "1.5 MB")
|
||||
*/
|
||||
export function formatSize(bytes?: number): string {
|
||||
if (bytes === undefined || bytes === null) return '-';
|
||||
if (bytes === 0) return '0 B';
|
||||
|
||||
const units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
||||
let size = bytes;
|
||||
let unitIndex = 0;
|
||||
|
||||
while (size >= 1024 && unitIndex < units.length - 1) {
|
||||
size /= 1024;
|
||||
unitIndex++;
|
||||
}
|
||||
|
||||
return `${size.toFixed(unitIndex > 0 ? 1 : 0)} ${units[unitIndex]}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format a count into a compact human-readable string
|
||||
* @param count - The count number (can be undefined)
|
||||
* @returns Formatted count string (e.g., "1.5K", "2.3M")
|
||||
*/
|
||||
export function formatCount(count?: number): string {
|
||||
if (count === undefined || count === null) return '';
|
||||
if (count >= 1000000) return `${(count / 1000000).toFixed(1)}M`;
|
||||
if (count >= 1000) return `${(count / 1000).toFixed(1)}K`;
|
||||
return count.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the file name from a path
|
||||
* @param path - Full file path (e.g., "folder/subfolder/file.txt")
|
||||
* @returns File name (e.g., "file.txt")
|
||||
*/
|
||||
export function getFileName(path: string): string {
|
||||
const parts = path.replace(/\/$/, '').split('/');
|
||||
return parts[parts.length - 1] || path;
|
||||
}
|
||||
1
ts_web/utilities/index.ts
Normal file
1
ts_web/utilities/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './formatters.js';
|
||||
Reference in New Issue
Block a user