import { create, verify, decode } from "https://deno.land/x/djwt@v2.8/mod.ts"; let key: CryptoKey; try { const storedKey = Deno.readTextFileSync('./key.txt'); key = await crypto.subtle.importKey('jwk', JSON.parse(storedKey), {name: 'HMAC', hash: 'SHA-512'}, true, ['sign', 'verify']); } catch (error) { key = await crypto.subtle.generateKey( { name: "HMAC", hash: {name: 'SHA-512'} }, true, ["sign", "verify"], ); const keyToStore = await crypto.subtle.exportKey('jwk', key); Deno.writeTextFileSync('./key.txt', JSON.stringify(keyToStore)); } // console.log(key); // Todo give this the user type export const createUserSessionToken = async (user: any) => await create({ alg: 'HS512', typ: 'JWT' }, user, key); export const verifyUserSessionToken = async (jwt: string) => await verify(jwt, key); export const decodeUserSessionToken = async (jwt: string) => await decode(jwt);