@syncable/core
Version:
63 lines (62 loc) • 2.35 kB
TypeScript
import { IContext } from '../context';
import { AccessControlEntry, AccessRight } from './access-control';
import { ISyncable, SyncableRef } from './syncable';
import { SyncableContainer } from './syncable-container';
export declare type AccessControlRuleTester = (context: IContext, options?: object) => boolean;
export interface AccessControlRuleEntry {
test: AccessControlRuleTester;
}
declare abstract class SyncableObject<T extends ISyncable = ISyncable> {
readonly container?: SyncableContainer<ISyncableObject<ISyncable<string>>> | undefined;
private _syncable;
private _ref;
private _lastReferencedSyncable;
constructor(syncable: T);
constructor(refOrSyncable: SyncableRef<SyncableObject<T>> | T, _container: SyncableContainer);
get syncable(): T;
get id(): T['_id'];
get ref(): SyncableRef<this>;
get key(): string;
get createdAt(): Date;
get updatedAt(): Date;
private get requiredContainer();
/**
* Override to specify.
*/
resolveRequisiteDependencyRefs(_changeType?: string): SyncableRef[];
/**
* Override to specify.
*/
resolveDependencyRefs(): SyncableRef[];
require<T extends ISyncableObject>(ref: SyncableRef<T>): T;
get<T extends ISyncableObject>(ref: SyncableRef<T>): T | undefined;
getSyncableOverrides(): Partial<T>;
getSanitizedFieldNames(context: IContext): string[];
/**
* Override to specify.
*/
getSecuringFieldNames(): string[];
/**
* Override to specify.
*/
getEssentialFieldNames(): string[];
/**
* Override to specify.
*/
getDefaultACL(): AccessControlEntry[];
/**
* Get ACL with descending priorities
*/
getACL(): AccessControlEntry[];
getAccessRights(context: IContext, fieldNames?: string[]): AccessRight[];
testAccessRights(rights: AccessRight[], context: IContext, fieldNames?: string[]): boolean;
validateAccessRights(rights: AccessRight[], context: IContext, fieldNames?: string[]): void;
protected testBasic(): boolean;
private getObjectAccessRights;
private getAccessRightToAccessDescriptorDict;
private testAccessControlEntry;
}
export interface ISyncableObject<T extends ISyncable = ISyncable> extends SyncableObject<T> {
}
export declare const AbstractSyncableObject: typeof SyncableObject;
export {};