Rebasely Beta: data may be purged

examples/live-notes Public

TypeScript · 35 lines · 891 B · at bd4f325

import type { Op } from "../../src/ops.ts";import { LOG_SIZE, type Note, type NoteStore } from "../../src/room.ts";// A NoteStore in memory, with the same trimming rule as the SQLite one.export class MemoryStore implements NoteStore {  note: Note;  log: { version: number; op: Op }[] = [];  snapshot = 0;  constructor(note: Note = { text: "", version: 0 }) {    this.note = note;  }  load(): Note {    return { ...this.note };  }  opsSince(version: number): Op[] {    return this.log.filter((e) => e.version > version).map((e) => e.op);  }  commit(note: Note, op: Op): void {    this.note = { ...note };    this.log.push({ version: note.version, op });    this.log = this.log.filter((e) => e.version > note.version - LOG_SIZE);  }  lastSnapshot(): number {    return this.snapshot;  }  snapshotSaved(version: number): void {    this.snapshot = version;  }}