react-restful
Version:
Another liblary for restful resources management for React app.
43 lines (42 loc) • 2.07 kB
TypeScript
import { findRecordPredicate, RecordTable, RecordType } from './RecordTable';
import { ResourceType } from './ResourceType';
export interface RecordTables {
[key: string]: RecordTable<{}>;
}
export interface SubscribeEvent<T extends RecordType = RecordType> {
type: 'mapping' | 'remove';
resourceType: ResourceType<T>;
record: T;
}
declare type SubscribeCallback<T> = (event: SubscribeEvent<T>) => void;
interface SubscribeStack<T> {
resourceTypes: ResourceType[];
callback: SubscribeCallback<T>;
subscribeId: string;
}
export declare class Store {
private resourceTypes;
private recordTables;
private subscribeStacks;
constructor();
subscribe<T>(resourceTypes: ResourceType[], callback: SubscribeCallback<T>): string;
unSubscribe(subscribeId: string): SubscribeStack<any>[];
resourceTypeHasRegistered(resourceTypeName: string): boolean;
getRegisteredResourceType(resourceTypeName: string): ResourceType<{}>;
getRecordTable<T = RecordType>(resourceType: ResourceType): RecordTable<T>;
registerRecordType(resourceType: ResourceType): void;
mapRecord<T extends RecordType>(resourceType: ResourceType, record: T): boolean;
removeRecord(resourceType: ResourceType, record: RecordType): boolean;
findRecordByKey<T extends RecordType>(resourceType: ResourceType<T>, key: string | number): T | null;
findOneRecord<T extends RecordType>(resourceType: ResourceType<T>, specs: T): T | null;
findOneRecord<T extends RecordType>(resourceType: ResourceType<T>, specs: string): T | null;
findOneRecord<T extends RecordType>(resourceType: ResourceType<T>, specs: number): T | null;
findOneRecord<T extends RecordType>(resourceType: ResourceType<T>, specs: findRecordPredicate<T>): T | null;
/**
* Map a fetched data of type to store
* * For FK, we only update primitive fields of FK record
*/
dataMapping<T extends RecordType>(resourceType: ResourceType, record: T): void;
private doSubcribleCallbacks;
}
export {};