mirror of
https://github.com/khairul169/home-lab.git
synced 2025-04-28 16:49:36 +07:00
66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
import { Mime } from "mime/lite";
|
|
import standardTypes from "mime/types/standard.js";
|
|
import otherTypes from "mime/types/other.js";
|
|
import { nanoid } from "nanoid";
|
|
|
|
export const formatBytes = (bytes: number) => {
|
|
const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
|
|
if (bytes === 0) return "n/a";
|
|
const i = parseInt(String(Math.floor(Math.log(bytes) / Math.log(1024))), 10);
|
|
if (i === 0) return `${bytes} ${sizes[i]}`;
|
|
return `${(bytes / 1024 ** i).toFixed(2)} ${sizes[i]}`;
|
|
};
|
|
|
|
export const secondsToTime = (seconds: number) => {
|
|
const d = Math.floor(seconds / (3600 * 24));
|
|
const h = Math.floor((seconds % (3600 * 24)) / 3600);
|
|
const m = Math.floor((seconds % 3600) / 60);
|
|
// const s = Math.floor(seconds % 60);
|
|
return `${d}d ${h}h ${m}m`;
|
|
};
|
|
|
|
export const mime = new Mime(standardTypes, otherTypes);
|
|
mime.define(
|
|
{
|
|
"video/webm": ["mkv"],
|
|
},
|
|
true
|
|
);
|
|
|
|
export const getMimeType = (path: string) => {
|
|
return mime.getType(path) || "application/octet-stream";
|
|
};
|
|
|
|
export const slugify = (text: string, lowerCase = true) => {
|
|
let str = text.replace(/^\s+|\s+$/g, "");
|
|
|
|
// Make the string lowercase
|
|
if (lowerCase) {
|
|
str = str.toLowerCase();
|
|
}
|
|
|
|
// Remove accents, swap ñ for n, etc
|
|
const from =
|
|
"ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđ߯a·/_,:;";
|
|
const to =
|
|
"AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa------";
|
|
for (let i = 0, l = from.length; i < l; i += 1) {
|
|
str = str.replace(new RegExp(from.charAt(i), "g"), to.charAt(i));
|
|
}
|
|
|
|
// Remove invalid chars
|
|
str = str
|
|
// .replace(/[^A-Za-z0-9 -]/g, '')
|
|
.replace(/[\\/:"*?<>|]/g, "")
|
|
// Collapse whitespace and replace by -
|
|
.replace(/\s+/g, "-")
|
|
// Collapse dashes
|
|
.replace(/-+/g, "-");
|
|
|
|
if (!str.length) {
|
|
str = nanoid();
|
|
}
|
|
|
|
return str;
|
|
};
|