All files / src/persistence MemoryPersistence.ts

100% Statements 3/3
100% Branches 0/0
100% Functions 2/2
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                                            13x           19x             20x      
import type { PersistenceHandler } from "./PersistenceHandler.js";
 
/**
 * In-memory persistence handler.
 *
 * Maps to Python `MemoryBufferPersistence` (added in Drain3 v0.9.1).
 *
 * State is held in a memory buffer — useful for testing, temporary
 * use, or scenarios where persistence to disk is not needed. State
 * is lost on process restart.
 *
 * Zero dependencies.
 *
 * @example
 * ```typescript
 * const handler = new MemoryPersistence();
 * const miner = new TemplateMiner({ persistenceHandler: handler });
 * miner.addLogMessage("test");
 * // State is in memory; accessible via handler.loadState()
 * ```
 */
export class MemoryPersistence implements PersistenceHandler {
  private _buffer: Uint8Array | null = null;
 
  /**
   * Stores the state in the internal memory buffer.
   */
  saveState(state: Uint8Array): void {
    this._buffer = state;
  }
 
  /**
   * Returns the stored state, or null if nothing has been saved.
   */
  loadState(): Uint8Array | null {
    return this._buffer;
  }
}