UNPKG

@syncable/core

Version:
23 lines (22 loc) 1.13 kB
import { Flatten, Nominal } from 'tslang'; import { ISyncable } from './syncable'; export declare type AccessRight = 'read' | 'write' | 'full'; export declare const ACCESS_RIGHTS: AccessRight[]; export declare type AccessControlEntryType = 'allow' | 'deny'; export declare type AccessControlEntryRuleName = Nominal<string, 'access-control-entry-rule-name'>; export interface IAccessControlEntry<TOptions extends object> { name: string; rule: AccessControlEntryRuleName; type: AccessControlEntryType; explicit: boolean; rights: AccessRight[]; options?: TOptions; } export declare type AccessControlEntry = ObjectAccessControlEntry | FieldAccessControlEntry; export interface ObjectAccessControlEntry<TOptions extends object = object> extends IAccessControlEntry<TOptions> { } export interface FieldAccessControlEntry<TOptions extends object = object> extends IAccessControlEntry<TOptions> { fields: string[] | '*'; } export declare const SYNCABLE_ESSENTIAL_FIELD_NAMES: (keyof ISyncable)[]; export declare function getAccessControlEntryPriority({ explicit, type, }: Flatten<AccessControlEntry>): number;