UNPKG

dexie-react-hooks

Version:

React hooks for reactive data fetching using Dexie.js

29 lines 1.21 kB
import { Dexie } from 'dexie'; export type KeyPaths<T> = { [P in keyof T]: P extends string ? T[P] extends Array<infer K> ? K extends object ? P | `${P}.${number}` | `${P}.${number}.${KeyPaths<K>}` : P | `${P}.${number}` : T[P] extends (...args: any[]) => any ? never : T[P] extends object ? P | `${P}.${KeyPaths<T[P]>}` : P : never; }[keyof T]; export type TableProp<DX extends Dexie> = { [K in keyof DX]: DX[K] extends { schema: any; get: any; put: any; add: any; where: any; } ? K : never; }[keyof DX] & string; interface DexieCloudEntity { table(): string; realmId: string; owner: string; } export interface PermissionChecker<T, TableName extends string> { add(...tableNames: TableName[]): boolean; update(...props: KeyPaths<T>[]): boolean; delete(): boolean; } export declare function usePermissions<T extends DexieCloudEntity>(entity: T): PermissionChecker<T, T extends { table: () => infer TableName; } ? TableName : string>; export declare function usePermissions<TDB extends Dexie, T>(db: TDB, table: TableProp<TDB>, obj: T): PermissionChecker<T, TableProp<TDB>>; export {}; //# sourceMappingURL=usePermissions.d.ts.map