integratedhub/assets/kvWorker.ts
2026-01-20 09:02:26 -06:00

66 lines
1.8 KiB
TypeScript
Executable File

// // 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);
// }
// };