SqliteJournal
Defined in: src/persistence/journals/SqliteJournal.ts:54
Journal backed by SQLite — zero-dependency, single-file persistence.
Works on Bun (bun:sqlite) and Node.js (better-sqlite3) via the
SqliteDriver abstraction in src/runtime/sqlite/. Both backends
share the same prepared-statement + transaction shape, so the journal
code itself is unchanged across runtimes.
Construction is lazy: the native DB is opened on the first append /
read / highestSeq / delete / persistenceIds call. This keeps
new SqliteJournal({ path }) sync-friendly (matches the pre-abstraction
shape) while still supporting the async driver-resolution flow Node
requires.
Implements
Section titled “Implements”Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new SqliteJournal(
options?):SqliteJournal
Defined in: src/persistence/journals/SqliteJournal.ts:71
Parameters
Section titled “Parameters”options?
Section titled “options?”SqliteJournalOptions = {}
Returns
Section titled “Returns”SqliteJournal
Properties
Section titled “Properties”events
Section titled “events”
readonlyevents:JournalEventBus
Defined in: src/persistence/journals/SqliteJournal.ts:65
In-process event bus — published-to inside append so the query
layer can do sub-poll-interval push delivery in the same process.
Cross-process subscribers (separate Bun/Node instance reading
the same SQLite file) still need to poll; that’s the inherent
limit of in-process notifications.
Implementation of
Section titled “Implementation of”Methods
Section titled “Methods”append()
Section titled “append()”append<
E>(pid,events,expectedSeq,tags?):Promise<PersistentEvent<E>[]>
Defined in: src/persistence/journals/SqliteJournal.ts:76
Append events to the stream of pid, enforcing optimistic concurrency:
the current highest sequence number MUST equal expectedSeq or the
call throws JournalConcurrencyError. Returns the written events
with their assigned sequence numbers.
Type Parameters
Section titled “Type Parameters”E
Parameters
Section titled “Parameters”string
events
Section titled “events”readonly E[]
expectedSeq
Section titled “expectedSeq”number
readonly string[]
Returns
Section titled “Returns”Promise<PersistentEvent<E>[]>
Implementation of
Section titled “Implementation of”close()
Section titled “close()”close():
Promise<void>
Defined in: src/persistence/journals/SqliteJournal.ts:188
Best-effort teardown; idempotent.
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”delete()
Section titled “delete()”delete(
pid,toSeq):Promise<void>
Defined in: src/persistence/journals/SqliteJournal.ts:170
Delete events up to and including toSeq — used when compacting past a snapshot.
Parameters
Section titled “Parameters”string
number
Returns
Section titled “Returns”Promise<void>
Implementation of
Section titled “Implementation of”highestSeq()
Section titled “highestSeq()”highestSeq(
pid):Promise<number>
Defined in: src/persistence/journals/SqliteJournal.ts:164
Current highest sequence number for pid — 0 if no events exist.
Parameters
Section titled “Parameters”string
Returns
Section titled “Returns”Promise<number>
Implementation of
Section titled “Implementation of”persistenceIds()
Section titled “persistenceIds()”persistenceIds():
Promise<string[]>
Defined in: src/persistence/journals/SqliteJournal.ts:182
Persistence IDs currently known to the journal (useful for projections).
Returns
Section titled “Returns”Promise<string[]>
Implementation of
Section titled “Implementation of”read()
Section titled “read()”read<
E>(pid,fromSeq,toSeq?):Promise<PersistentEvent<E>[]>
Defined in: src/persistence/journals/SqliteJournal.ts:133
Return events in (fromSeq, …, toSeq] order. toSeq defaults to
the current highest sequence number. Inclusive bounds — fromSeq
is the first event returned, not the “after” cursor.
Type Parameters
Section titled “Type Parameters”E
Parameters
Section titled “Parameters”string
fromSeq
Section titled “fromSeq”number
toSeq?
Section titled “toSeq?”number
Returns
Section titled “Returns”Promise<PersistentEvent<E>[]>