import { IResolvableTree } from './interfaces'; import { IResolvableTreeOptions, IResolvableTreeResolveCallbackOptions } from './types'; import { IResolvableTreeInternal, RESOLVABLE_TREE_PRIVATE } from './privates'; import { ConstructResolvableTree } from './constructor'; import { ICancellablePromise, IReadonlyList, TAbortStrategy } from '@lifaon/observables'; /** METHODS **/ /* GETTERS/SETTERS */ export function ResolvableTreeGetChildren(instance: IResolvableTree): IReadonlyList { return (instance as IResolvableTreeInternal)[RESOLVABLE_TREE_PRIVATE].children; } /* METHODS */ export function ResolvableTreeResolve( instance: IResolvableTree, options: IResolvableTreeResolveCallbackOptions ): ICancellablePromise { return ((instance as IResolvableTreeInternal)[RESOLVABLE_TREE_PRIVATE].resolve.call(instance, options) as ICancellablePromise); } /** CLASS **/ export class ResolvableTree implements IResolvableTree { constructor(options: IResolvableTreeOptions) { ConstructResolvableTree(this, options); } get children(): IReadonlyList { return ResolvableTreeGetChildren(this); } resolve(options: IResolvableTreeResolveCallbackOptions): ICancellablePromise { return ResolvableTreeResolve(this, options); } }