export const resolveWith = curry((client, graph) => { if (Graph.nodes(graph).length === 0 && Graph.hasComponent('main', graph)) { const components = Graph.components(graph).filter((c) => c.componentId !== 'main') graph = Graph.component('main', graph) graph.components = (graph.components || []).concat(components) } var needed = requiredGraphComponents(graph) return Promise.resolveDeep(needed.map((ref) => merge(ref, {component: client(ref.ref)}))) .then((newComponents) => { if (newComponents.length === 0) return graph // .disallowReferences() return Graph.flow( storeComponent(newComponents), markRecursions(newComponents), resolveReferences(newComponents), resolveWith(client), { name: 'Resolving components', names: [ 'Storing Components in the Graph', 'Marking Recursions', 'Resolving References', 'Recursively resolving graph components' ] } )(graph) }) })
.filter((c) => !Graph.hasComponent(c.component, graph))