@syncable/core
Version:
29 lines (28 loc) • 1.44 kB
TypeScript
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 {};