Typescript Helper Function for the Browser
This is a bunch of functions that I use very often in my different projects.
SHA256
export async function sha256(text: string): Promise<string> {
const hash = await crypto.subtle.digest(
"SHA-256",
new TextEncoder().encode(text)
);
return Array.from(new Uint8Array(hash))
.map((b) => b.toString(16).padStart(2, "0"))
.join("");
}
Convert a base64 to Array Buffer
Source: Stack Overflow
export function base64ToArrayBuffer(base64: string): ArrayBuffer {
if (!base64) throw new Error("Received an empty base64");
var binaryString = atob(base64);
var bytes = new Uint8Array(binaryString.length);
for (var i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
}
Set timeout with async/await
export function waitForIt(ms = 2000) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
Deep Copy
export function deepCopy(obj: Object): any {
return JSON.parse(JSON.stringify(obj));
}
Split by Chunk
export function splitChunk(input: any[], size: number = 2) {
let local = [...input];
let btnSections = [];
while (local.length > 0) {
btnSections.push(local.splice(0, size));
}
return btnSections;
}