Rebasely Beta: data may be purged

examples/live-notes Public

TypeScript · 26 lines · 742 B · at 2c15282

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 }[] = [];  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);  }}