UNPKG

@syncable/core

Version:
29 lines (28 loc) 1.44 kB
import { Dict } from 'tslang'; import { ISyncableObject, SyncableRef } from './syncable'; /** * Indicates whether a context is initiated by server or user (including the * correspondent user context on server). * * E.g. If a client connects to a server, the server creates a context with * type 'user'. But for some changes initiated by server API * (server.update(group, change)), the context has type 'server'. */ export declare type ContextType = 'server' | 'user'; export declare type ContextEnvironment = 'server' | 'client'; declare abstract class Context<TSyncableObject extends ISyncableObject, TViewQueryMetadataDict extends object> { readonly type: ContextType; readonly environment: ContextEnvironment; ref: SyncableRef<TSyncableObject>; object: TSyncableObject; queryMetadataDict: Partial<TViewQueryMetadataDict>; constructor(type: ContextType, environment: ContextEnvironment, ref: SyncableRef<TSyncableObject> | undefined); abstract get disabled(): boolean; setRef(ref: SyncableRef<TSyncableObject>): void; setObject(object: TSyncableObject): void; setQueryMetadata(name: string, metadata: unknown): void; } export interface IContext<TSyncableObject extends ISyncableObject = ISyncableObject, TViewQueryMetadataDict extends object = Dict<unknown>> extends Context<TSyncableObject, TViewQueryMetadataDict> { } export declare const AbstractContext: typeof Context; export {};