class Hash { #data; constructor(DATA, METHOD) { this.#data = DATA; this.algorithm = (METHOD) ? METHOD : "SHA-512"; this.arrayBuffer = crypto.subtle.digest(this.algorithm, (new TextEncoder()).encode(DATA)) }; /* Represent the hash in another format. @param {string} TYPE the output format @return {object} the converted hash */ async convert(TYPE) { if (TYPE) { switch (TYPE) { case `Uint8Array`: this[TYPE] = new Uint8Array(await this.arrayBuffer); break; case `Array`: this[TYPE] = Array.from(new Uint8Array(await this.arrayBuffer)); break; case `Number`: this[TYPE] = parseInt((Array.from(new Uint8Array(await this.arrayBuffer))).join()); break; case `String`: this[TYPE] = Array.from(new Uint8Array(await this.arrayBuffer)).join(``); }; return(this[TYPE]) } } } module.exports = Hash;