buzz-lightsnack-2007 2025-04-06 14:09:48 +08:00
parent 0902ec9cb2
commit f966e0564e
2 changed files with 63 additions and 0 deletions

View file

@ -0,0 +1,25 @@
class CustomErrors {}
CustomErrors.URL = class URL_Error extends Error {
constructor(message, URL) {
super((message) ? message : `invalid url`);
this.name = "URL Problem";
this.stack = URL;
};
}
CustomErrors.DBProblem = class DB_Error extends Error {
constructor(message) {
super(message);
this.name = "Database Problem"
}
}
CustomErrors.HashProblem = class DB_Error extends Error {
constructor(message) {
super(message);
this.name = "Hash Problem"
}
}
module.exports = CustomErrors

38
scripts/utilities/hash.JS Normal file
View file

@ -0,0 +1,38 @@
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;