import Dexie, { type Table } from 'dexie'; import { type MindMap, type ShareRecord } from '@/types/map'; /** Cle/valeur pour les drapeaux locaux (premier lancement, preferences...). */ export interface MetaEntry { key: string; value: unknown; } /** * Base locale du navigateur. * * Trois tables seulement : * - `maps` : les cartes privees, qui ne quittent jamais le navigateur ; * - `shares` : les jetons de partage (dont le management token secret) ; * - `meta` : quelques drapeaux applicatifs. */ export class OpenMindDatabase extends Dexie { maps!: Table; shares!: Table; meta!: Table; constructor(name = 'openmind') { super(name); this.version(1).stores({ maps: 'id, updatedAt, name', shares: 'mapId, shareToken', meta: 'key', }); } } export const db = new OpenMindDatabase(); export const META_KEYS = { sampleSeeded: 'sample-map-seeded', } as const;