EditableEntity.make
function · packages/sync/src/entity.ts:63
make<E extends EntityFields, const Ms extends ReadonlyArray<Member<E>>>(
entity: E,
options: {
readonly members: Ms
},
): {
entity: E
members: Ms
Member: Schema.Literals<Ms>
Change: Schema.Codec<Change<E, M>, unknown, never, never>
Edit: Schema.Codec<CellEdit<E, M>, unknown, never, never>
edited: {
changes: Schema.$Array<Schema.Codec<Change<E, M>, unknown, never, never>>
at: Schema.optionalKey<Schema.Number>
by: Schema.optionalKey<
Schema.Struct<{
readonly actor: Schema.String
readonly replica: Schema.String
}>
>
}
absorbed: { through: Schema.Number }
stamped: (commit: {
readonly sequence: number
readonly actorId: string
readonly replicaId: string
}) => { at: number; by: { actor: string; replica: string } }
merge: (
edits: ReadonlyArray<CellEdit<E, M>>,
changes: ReadonlyArray<Change<E, M>>,
at: Option.Option<number>,
by: Option.Option<Author>,
) => ReadonlyArray<CellEdit<E, M>>
absorb: (
edits: ReadonlyArray<CellEdit<E, M>>,
through: number,
) => ReadonlyArray<CellEdit<E, M>>
holdsThrough: (
edits: ReadonlyArray<CellEdit<E, M>>,
through: number,
) => boolean
replaced: (
previous: ReadonlyArray<CellEdit<E, M>>,
next: ReadonlyArray<CellEdit<E, M>>,
replica: string,
) => ReadonlyArray<Replaced<CellEdit<E, M>>>
cellsOf: (
changes: ReadonlyArray<Change<E, M>>,
) => ReadonlyArray<{ readonly id: IdOf<E>; readonly member: M }>
changeAt: (row: RowOf<E, M>, member: M) => Change<E, M>
editOf: (
edits: ReadonlyArray<CellEdit<E, M>>,
row: IdOf<E>,
member: M,
) => Option.Option<CellEdit<E, M>>
mine: (edit: CellEdit<E, M>, replica: string) => boolean
}