UNPKG

@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
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; }