-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.ts
More file actions
36 lines (31 loc) · 1.08 KB
/
utils.ts
File metadata and controls
36 lines (31 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { MD5 } from "bun";
import crypto from "node:crypto";
export function caculateHashID(info: string): string {
const h = MD5.hash(info).toString();
return Buffer.from(h).toString("hex");
}
export function getNameFromPath(path: string): string {
if (path === "" || path === "/") return "/";
for (let i = path.length - 1; i >= 0; i--) {
if (path.charAt(i) === "/") return path.substring(i + 1);
}
return path;
}
export function getPrefixPathFromPath(path: string): string {
for (let i = path.length - 1; i >= 0; i--) {
if (path.charAt(i) === "/") return path.substring(0, i);
}
return "";
}
export function normalizePath(path: string): string {
let path_ = path.trim();
if (!path_.startsWith("/")) path_ = `/${path}`;
for (let n = path_.length - 1; n >= 0; n--) {
const ch = path_.charAt(n);
if (ch !== "/" && ch !== ".") return path_.slice(0, n + 1);
}
return "/";
}
export function generateRandomString(length = 8): string {
return `${crypto.randomBytes(length).toString("hex").slice(0, length)}`;
}