Sync / foldkit-durable

Journal

namespace · packages/durable/src/node.ts:117

const Journal = { make, layer, metrics, define }

Its type

type Journal<
  Operation,
  Snapshot,
  Principal,
  OperationEncoded = unknown,
> = JournalShape<Operation, Snapshot, Principal, OperationEncoded>

A durable journal; see journal.ts. Declared here beside the Journal namespace, since a type and a const of one name must come from one module.

In the guides

Members

Journal.make

const · packages/durable/src/node.ts:48

make: <
  Operation,
  Snapshot,
  Principal,
  OperationEncoded = unknown,
  SnapshotEncoded = unknown,
>(
  options: JournalOptions<
    Operation,
    Snapshot,
    Principal,
    OperationEncoded,
    SnapshotEncoded
  >,
) =>
  Effect.Effect<
    JournalShape<Operation, Snapshot, Principal, OperationEncoded>,
    JournalError | UnsupportedJournalVersionError,
    Scope
  >

Opens a journal in the current scope.

Journal.layer

function · packages/durable/src/node.ts:75

layer<
  Operation,
  Snapshot,
  Principal,
  OperationEncoded = unknown,
  SnapshotEncoded = unknown,
>(
  options: JournalOptions<
    Operation,
    Snapshot,
    Principal,
    OperationEncoded,
    SnapshotEncoded
  >,
  key?: string,
): Layer.Layer<
  JournalShape<Operation, Snapshot, Principal, OperationEncoded>,
  JournalError | UnsupportedJournalVersionError
>

Provides a journal as a scoped layer under the default service key.

Journal.metrics

const · packages/durable/src/journal.ts:49

metrics: {
  appends: Metric.Counter<number>
  compactions: Metric.Counter<number>
  effectRuns: Metric.Counter<number>
  effectRunsCoalesced: Metric.Counter<number>
}

Counters an application can scrape.

Journal.define

function · packages/durable/src/node.ts:109

define<Operation, Snapshot, Principal, OperationEncoded = unknown>(
  key: string,
): JournalDefinition<Operation, Snapshot, Principal, OperationEncoded>

Declares a journal's service key and its type parameters once, and returns the tag and the layer constructor that agree on them.

ts
const TodoJournal = Journal.define<Operation, Snapshot, Principal>('app/TodoJournal')
const layer = TodoJournal.layer(options)
const journal = yield* TodoJournal.tag