import type { DBSchema, IDBPDatabase } from 'idb/build/entry'; export const dbVersion = 1; export const DEFAULT_DB_NAME = 'affine-local'; export function upgradeDB(db: IDBPDatabase) { db.createObjectStore('workspace', { keyPath: 'id' }); db.createObjectStore('milestone', { keyPath: 'id' }); } export interface IndexedDBProvider { connect: () => void; disconnect: () => void; cleanup: () => Promise; whenSynced: Promise; readonly connected: boolean; } export type UpdateMessage = { timestamp: number; update: Uint8Array; }; export type WorkspacePersist = { id: string; updates: UpdateMessage[]; }; export type WorkspaceMilestone = { id: string; milestone: Record; }; export interface BlockSuiteBinaryDB extends DBSchema { workspace: { key: string; value: WorkspacePersist; }; milestone: { key: string; value: WorkspaceMilestone; }; } export interface OldYjsDB extends DBSchema { updates: { key: number; value: Uint8Array; }; }