UNPKG

@dstanesc/o-o-o-o-o-o-o

Version:

O-O-O-O-O-O-O is a collection of content addressed persistent data structures

56 lines 2.36 kB
async function traverseVertices(accessor, refs, visitor) { const vertexTrace = new Set(); for (const ref of refs) { await traverseVertex(accessor, ref, vertexTrace, visitor); } } async function traverseEdges(accessor, refs, vertexTrace, visitor) { for (const ref of refs) { await traverseEdge(accessor, ref, vertexTrace, visitor); } } async function traverseVertex(accessor, ref, vertexTrace, visitor) { if (ref !== undefined) { if (!vertexTrace.has(ref)) { const vertex = await accessor.getVertex(ref); if (visitor.startVertex !== undefined) await visitor.startVertex(vertex); if (vertex.nextEdge !== undefined) await traverseEdge(accessor, vertex.nextEdge, vertexTrace, visitor); if (visitor.startProp !== undefined && vertex.nextProp !== undefined) await traverseProp(accessor, vertex.nextProp, visitor); if (visitor.endVertex !== undefined) await visitor.endVertex(vertex); } } } async function traverseEdge(accessor, ref, vertexTrace, visitor) { if (ref !== undefined) { const edge = await accessor.getEdge(ref); if (visitor.startEdge !== undefined) await visitor.startEdge(edge); if (visitor.startProp !== undefined && edge.nextProp !== undefined) await traverseProp(accessor, edge.nextProp, visitor); if (edge.target !== undefined) // true await traverseVertex(accessor, edge.target, vertexTrace, visitor); if (edge.sourceNext !== undefined) await traverseEdge(accessor, edge.sourceNext, vertexTrace, visitor); if (visitor.endEdge !== undefined) await visitor.endEdge(edge); } } async function traverseProp(accessor, ref, visitor) { if (ref !== undefined) { const prop = await accessor.getProp(ref); if (visitor.startProp !== undefined) await visitor.startProp(prop); if (prop.nextProp !== undefined) await traverseProp(accessor, prop.nextProp, visitor); if (visitor.endProp !== undefined) await visitor.endProp(prop); } } export { traverseVertices, traverseEdges, traverseVertex, traverseEdge, traverseProp, }; //# sourceMappingURL=depth-first.js.map