49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
export const randomInt = (low: number, high: number) => Math.floor(Math.random() * (high - low) + low);
|
|
|
|
export const cleanDirectoryPath = (path: string) => path.replace(/(\/(\/*))|(^$)/g, '/');
|
|
|
|
export function fileBitsToString(mode: string, directory: boolean): string {
|
|
const m = parseInt(mode, 8);
|
|
|
|
let buf = '';
|
|
'dalTLDpSugct?'.split('').forEach((c, i) => {
|
|
if ((m & (1 << (32 - 1 - i))) !== 0) {
|
|
buf = buf + c;
|
|
}
|
|
});
|
|
|
|
if (buf.length === 0) {
|
|
// If the file is directory, make sure it has the directory flag.
|
|
if (directory) {
|
|
buf = 'd';
|
|
} else {
|
|
buf = '-';
|
|
}
|
|
}
|
|
|
|
'rwxrwxrwx'.split('').forEach((c, i) => {
|
|
if ((m & (1 << (9 - 1 - i))) !== 0) {
|
|
buf = buf + c;
|
|
} else {
|
|
buf = buf + '-';
|
|
}
|
|
});
|
|
|
|
return buf;
|
|
}
|
|
|
|
/**
|
|
* URL-encodes the segments of a path.
|
|
* This allows to use the path as part of a URL while preserving the slashes.
|
|
* @param path the path to encode
|
|
*/
|
|
export function encodePathSegments(path: string): string {
|
|
return path
|
|
.split('/')
|
|
.map(s => encodeURIComponent(s))
|
|
.join('/');
|
|
}
|
|
|
|
export function hashToPath(hash: string): string {
|
|
return hash.length > 0 ? decodeURIComponent(hash.substring(1)) : '/';
|
|
}
|