Review offline document autosave

src/autosave-types.tsTypeScript
@@ -0,0 +1,36 @@
1+export interface DocumentOperation {
2+ queueKey: string;
3+ operationId: string;
4+ accountId: string;
5+ documentId: string;
6+ sequence: number;
7+ baseRevision: number;
8+ body: string;
9+}
10+
11+export interface SaveAcknowledgement {
12+ operationId: string;
13+ accountId: string;
14+ documentId: string;
15+ revision: number;
16+ body: string;
17+}
18+
19+export interface DurableQueueDriver {
20+ put(key: string, operation: DocumentOperation): Promise<void>;
21+ delete(key: string): Promise<void>;
22+ values(prefix: string): Promise<DocumentOperation[]>;
23+}
24+
25+export interface DocumentApi {
26+ save(input: {
27+ idempotencyKey: string;
28+ operationId: string;
29+ accountId: string;
30+ documentId: string;
31+ baseRevision: number;
32+ body: string;
33+ }): Promise<SaveAcknowledgement>;
34+}
35+
36+export type SaveStatus = "idle" | "saving" | "saved" | "syncing" | "error";