UNPKG

react-restful

Version:

Another liblary for restful resources management for React app.

37 lines (36 loc) 1.64 kB
/** * Store is where data is stored from the API. */ import { RecordTable, Record } from './RecordTable'; import { ResourceType } from './ResourceType'; export interface RecordTables { [key: string]: RecordTable<any>; } export interface SubscribeEvent<T> { type: 'mapping' | 'remove'; resourceType: ResourceType<T>; value: T | Array<T>; } declare type findRecordPredicate<T> = (this: void, value: T, index: number, array: T[]) => boolean; declare type SubscribeCallback<T> = (event: SubscribeEvent<T>) => void; export declare class Store { private resourceTypes; private recordTables; private subscribeStacks; constructor(); subscribe: (resourceTypes: ResourceType<any>[], callback: SubscribeCallback<any>) => () => void; unSubscribe: (subscribeId: Symbol) => void; resourceTypeHasRegistered: (resourceTypeName: string) => boolean; getRegisteredResourceType: (resourceTypeName: string) => ResourceType<{}>; getTable: <T>(resourceType: ResourceType<T>) => RecordTable<T>; registerResourceType: <T>(resourceType: ResourceType<T>) => void; removeOne: <T>(resourceType: ResourceType<T>, record: T) => boolean; findOne: <T extends Record>(resourceType: ResourceType<T>, specs: string | number | T | findRecordPredicate<T>) => T | null; findMany: <T extends Record>(resourceType: ResourceType<T>, predicate: findRecordPredicate<T>) => T[]; dataMapping: <T>(resourceType: ResourceType<T>, data: T | T[]) => undefined; private findRecordByKey; private mapRecords; private mapRecord; private doSubcribleCallbacks; } export {};