Something went wrong. Try again.
automerge-repo drop in replacement backed by Habitat "permissioned spaces" om your PDS
Something went wrong. Try again.
1.6 kB · 57 lines
TypeScript
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758import type { Doc } from '@automerge/automerge'import type { DocumentId } from '../document-id.js'
export type { DocumentId } from '../document-id.js'
export interface ContractRepo { create<T>(): ContractDocHandle<T> find<T>(id: DocumentId): Promise<ContractDocHandle<T>> delete(id: DocumentId): void}
export interface ContractDocHandle<T> { readonly url: DocumentId doc(): Doc<T> change(callback: (doc: T) => void, options?: { message?: string }): void isReady(): boolean isUnloaded(): boolean isDeleted(): boolean whenReady(): Promise<void> unload(): void delete(): void on(event: 'change', callback: ContractChangeCallback<T>): void off(event: 'change', callback: ContractChangeCallback<T>): void}
export interface ContractChangePayload<T> { doc: Doc<T> patchInfo?: { before?: Doc<T> after?: Doc<T> source?: string } patches?: unknown[] handle?: ContractDocHandle<T>}
export type ContractChangeCallback<T> = (payload: ContractChangePayload<T>) => void
export interface RuntimeBackend { readonly name: string createRepo(): Promise<RuntimeRepoFixture> | RuntimeRepoFixture}
export interface RuntimeRepoFixture { readonly repo: ContractRepo flush?(): Promise<void> | void restart?(): Promise<RuntimeRepoFixture> | RuntimeRepoFixture cleanup?(): Promise<void> | void}
export async function flushFixture(fixture: RuntimeRepoFixture): Promise<void> { await fixture.flush?.()}
export async function cleanupFixture(fixture: RuntimeRepoFixture): Promise<void> { await fixture.cleanup?.()}