@signaldb/sync
Version:
This is the sync implementation of [SignalDB](https://github.com/maxnowack/signaldb). SignalDB is a local-first JavaScript database with real-time sync, enabling optimistic UI with signal-based reactivity across multiple frameworks.
47 lines (46 loc) • 1.02 kB
TypeScript
import type { BaseItem, Modifier } from '@signaldb/core';
interface Insert<T extends BaseItem<I> = BaseItem, I = any> {
type: 'insert';
data: T;
}
interface Update<T extends BaseItem<I> = BaseItem, I = any> {
type: 'update';
data: {
id: I;
modifier: Modifier<T>;
};
}
interface Remove<IdType> {
type: 'remove';
data: IdType;
}
export type Change<T extends BaseItem<I> = BaseItem, I = any> = {
id: string;
time: number;
collectionName: string;
} & (Insert<T, I> | Update<T, I> | Remove<I>);
export interface Snapshot<T extends BaseItem<I> = BaseItem, I = any> {
id: string;
time: number;
collectionName: string;
items: T[];
}
export type SyncOperation = {
id: string;
start: number;
collectionName: string;
instanceId: string;
} & ({
status: 'active';
end?: never;
error?: never;
} | {
status: 'done';
end: number;
error?: never;
} | {
status: 'error';
end: number;
error: any;
});
export {};