UNPKG

@syncable/core

Version:
63 lines (62 loc) 2.35 kB
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 {};