import argon2 from 'argon2'; import { z } from 'zod'; export default class Member { prefix = "MEMBER" indices = null constructor(indices) { this.indices = indices } schema = z.object({ id: z.number(), email: z.string().email(), firstName: z.string(), lastName: z.string(), password: z.string(), created: z.string() }) isHashed = (s) => {return s.startsWith("$argon2")} async add(newMember, network = null) { const hash = await argon2.hash(newMember.password); newMember.password = hash try { global.db.addNode(this.prefix, newMember) if(network) { global.db.edge.add({ type: "IN", from: `${this.prefix}-${global.db.getCurrentIndex(this)}`, to: "NETWORK-1" }) } } catch(e) { console.error(e) throw new global.ServerError(400, "Failed to add member!"); } } get(id) { return this.entries[this.ids[id]] } getByEmail(email) { for(let i=this.indices[0]; i