@mackenly/zaraz-tools
Version:
Unofficial 3rd party toolkit for Zaraz
27 lines • 823 B
text/typescript
/**
* sha256
* Generates a SHA-256 hash of the given data
* @param data The data to hash
* @param lowercase Whether to lowercase the input data before hashing (default: false)
* @returns: Promise of the hashed string
* @throws: Error if the hashing fails
* @since 2024-09-19
*/
export async function sha256(
data: string,
lowercase: boolean = false
): Promise<string> {
try {
const digest = await crypto.subtle.digest(
{ name: 'SHA-256' },
// eslint-disable-next-line no-undef
new TextEncoder().encode(lowercase ? data.toLocaleLowerCase() : data)
);
return [...new Uint8Array(digest)]
.map(v => v.toString(16).padStart(2, '0'))
.join('');
} catch (error) {
console.error(error);
throw error;
}
}