Graphical PDS migrator for AT Protocol
1import type {
2 NodeSavedSession,
3 NodeSavedSessionStore,
4 NodeSavedState,
5 NodeSavedStateStore,
6} from "@bigmoves/atproto-oauth-client";
7
8/**
9 * The state store for sessions.
10 * @implements {NodeSavedStateStore}
11 */
12export class StateStore implements NodeSavedStateStore {
13 constructor(private db: Deno.Kv) {}
14 async get(key: string): Promise<NodeSavedState | undefined> {
15 const result = await this.db.get<NodeSavedState>(["auth_state", key]);
16 return result.value ?? undefined;
17 }
18 async set(key: string, val: NodeSavedState) {
19 await this.db.set(["auth_state", key], val);
20 }
21 async del(key: string) {
22 await this.db.delete(["auth_state", key]);
23 }
24}
25
26/**
27 * The session store for sessions.
28 * @implements {NodeSavedSessionStore}
29 */
30export class SessionStore implements NodeSavedSessionStore {
31 constructor(private db: Deno.Kv) {}
32 async get(key: string): Promise<NodeSavedSession | undefined> {
33 const result = await this.db.get<NodeSavedSession>(["auth_session", key]);
34 return result.value ?? undefined;
35 }
36 async set(key: string, val: NodeSavedSession) {
37 await this.db.set(["auth_session", key], val);
38 }
39 async del(key: string) {
40 await this.db.delete(["auth_session", key]);
41 }
42}