@syncable/core
Version:
23 lines (22 loc) • 1.13 kB
TypeScript
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;