53 lines
1.0 KiB
TypeScript
53 lines
1.0 KiB
TypeScript
import bs58 from 'bs58';
|
|
|
|
const hex: string[] = [];
|
|
|
|
for (var i = 0; i < 256; i++) {
|
|
hex[i] = (i < 16 ? '0' : '') + (i).toString(16);
|
|
}
|
|
|
|
export function uuidV4(): string {
|
|
const r = crypto.getRandomValues(new Uint8Array(16));
|
|
|
|
r[6] = r[6] & 0x0f | 0x40;
|
|
r[8] = r[8] & 0x3f | 0x80;
|
|
|
|
return (
|
|
hex[r[0]] +
|
|
hex[r[1]] +
|
|
hex[r[2]] +
|
|
hex[r[3]] +
|
|
"-" +
|
|
hex[r[4]] +
|
|
hex[r[5]] +
|
|
"-" +
|
|
hex[r[6]] +
|
|
hex[r[7]] +
|
|
"-" +
|
|
hex[r[8]] +
|
|
hex[r[9]] +
|
|
"-" +
|
|
hex[r[10]] +
|
|
hex[r[11]] +
|
|
hex[r[12]] +
|
|
hex[r[13]] +
|
|
hex[r[14]] +
|
|
hex[r[15]]
|
|
);
|
|
}
|
|
|
|
export function toUTF8Bytes(str: string): number[] {
|
|
var utf8 = unescape(encodeURIComponent(str));
|
|
|
|
var arr: number[] = [];
|
|
for (var i = 0; i < utf8.length; i++) {
|
|
arr.push(utf8.charCodeAt(i));
|
|
}
|
|
|
|
return arr
|
|
}
|
|
|
|
export function base58UUID(): string {
|
|
const uuid = uuidV4();
|
|
return bs58.encode(toUTF8Bytes(uuid));
|
|
} |