@ablestack/rdo
Version:
A library to facilitate building and running graphs of Reactive Domain Objects - connecting JSON data sources to reactive client applications
41 lines (40 loc) • 1.51 kB
TypeScript
import { IEqualityComparer, IMakeRdo, MakeCollectionKeyMethod } from '.';
export interface IGraphSynchronizer {
smartSync<S extends Record<string | number, any>, D extends Record<string | number, any>>({ rootSourceNode, rootRdo }: {
rootSourceNode: S;
rootRdo: D;
}): any;
}
export interface IGraphSyncOptions {
customEqualityComparer?: IEqualityComparer;
globalNodeOptions?: IGlobalNodeOptions;
targetedNodeOptions?: Array<INodeSyncOptions<any, any>>;
}
export declare type autoMakeRdoAsTypes = 'plain-object-literals' | 'mobx-observable-object-literals';
export interface IGlobalNodeOptions {
commonRdoFieldnamePostfix?: string;
tryGetRdoFieldname?: ({ sourceNodeTypePath, sourceFieldname, sourceFieldVal }: {
sourceNodeTypePath: string;
sourceFieldname: string | number;
sourceFieldVal: any;
}) => string | undefined;
makeRdo?: IMakeRdo<any, any>['makeRdo'];
autoMakeRdoTypes?: {
objectFields: boolean;
collectionElements: boolean;
as: autoMakeRdoAsTypes;
};
}
export interface INodeSyncOptions<S, D> {
sourceNodeMatcher: INodeSelector<S>;
ignore?: boolean;
makeRdoCollectionKey?: {
fromSourceElement: MakeCollectionKeyMethod<S>;
fromRdoElement: MakeCollectionKeyMethod<D>;
};
makeRdo?: IMakeRdo<S, D>['makeRdo'];
}
export interface INodeSelector<S> {
nodePath?: string;
nodeContent?: (sourceNode: S) => boolean;
}