syncable-server
Version:
Syncable server.
18 lines (17 loc) • 1.6 kB
TypeScript
import { BroadcastChange, Change, ClientBroadcastChangeData, GeneralQueuedBroadcastChange, QueuedBroadcastChange, Removal, ServerCreation, Subscription, Syncable } from 'syncable';
import { Server, Socket, Visibility } from './server';
export declare abstract class SyncableDefinition<TSyncable extends Syncable, TSubscription extends Subscription, TSession, TClientSession, TServer extends Server<TSession, TClientSession>> {
readonly server: TServer;
/** Override to customize. */
pruneBroadcastChange(change: QueuedBroadcastChange): BroadcastChange;
/** Override to customize. */
testVisibility(_object: TSyncable, _subscription: TSubscription, _socket: Socket<TClientSession>): Visibility;
/** Override to customize. */
loadSnapshotsUponRequest(_resources: string[], _subscription: TSubscription, _socket: Socket<TClientSession>): Promise<TSyncable[]>;
abstract onChange(change: GeneralQueuedBroadcastChange, changeSession: TSession, subscription: TSubscription, socket: Socket<TClientSession>): boolean;
abstract loadSnapshots(subscription: TSubscription, socket: Socket<TClientSession>): Promise<TSyncable[]>;
abstract loadChanges(subscription: TSubscription, socket: Socket<TClientSession>): Promise<ClientBroadcastChangeData<BroadcastChange, TClientSession>[]>;
abstract create(change: ServerCreation, timestamp: number, session: TSession): Promise<TSyncable>;
abstract update(change: Change, timestamp: number, session: TSession): Promise<TSyncable>;
abstract remove(change: Removal, timestamp: number, session: TSession): Promise<void>;
}