// // deno.server/assets/kvWorker.ts // // Dedicated worker to manage Deno KV operations for OAuth state (bundled asset) // export type KvSetRequest = { // id: string; // type: "set"; // key: string[]; // value: unknown; // expireInMs?: number; // }; // export type KvGetDelRequest = { // id: string; // type: "getAndDelete"; // key: string[]; // }; // export type KvRequest = KvSetRequest | KvGetDelRequest; // export type KvResponse = // | { // id: string; // ok: true; // value?: unknown; // } // | { // id: string; // ok: false; // error: string; // }; // let kv: Deno.Kv | null = null; // async function ensureKv() { // if (!kv) kv = await Deno.openKv(); // return kv!; // } // self.onmessage = async (evt: MessageEvent) => { // let reqId: string | undefined = undefined; // try { // const msg = evt.data as KvRequest; // reqId = msg.id; // const kv = await ensureKv(); // if (msg.type === "set") { // const opts = msg.expireInMs ? { expireIn: msg.expireInMs } : undefined; // await kv.set(msg.key as Deno.KvKey, msg.value, opts); // self.postMessage({ id: msg.id, ok: true } as KvResponse); // return; // } // if (msg.type === "getAndDelete") { // const key = msg.key as Deno.KvKey; // const res = await kv.get(key); // if (res.value !== null) { // await kv.delete(key); // } // self.postMessage({ id: msg.id, ok: true, value: res.value } as KvResponse); // return; // } // self.postMessage({ id: reqId ?? "", ok: false, error: "Unknown message type" } as KvResponse); // } catch (err) { // const errorMsg = (err && (err as { message?: string }).message) || String(err); // self.postMessage({ id: reqId ?? "", ok: false, error: errorMsg } as KvResponse); // } // };