@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
127 lines • 5.14 kB
TypeScript
import { Graph, Tx } from '../graph';
import { LinkCodec, ValueCodec } from '../codecs';
import { BlockStore } from '../block-store';
import { IndexStore } from '../index-store';
import { Edge, EdgeRef, Prop, PropValue, KeyType, Vertex, VertexRef, VertexType, EdgeType, PropType, Link, RootIndex, Block, Part, Ref, IndexType, Tag } from '../types';
import { PathElem, PropPredicate, NavigationThreshold } from '../navigate';
import { VersionStore } from '../version-store';
interface ProtoGremlinFactory {
g: () => ProtoGremlin;
}
declare const protoGremlinFactory: ({ chunk, linkCodec, valueCodec, blockStore, versionStore, indexStore, }: {
chunk: (buffer: Uint8Array) => Uint32Array;
linkCodec: LinkCodec;
valueCodec: ValueCodec;
blockStore: BlockStore;
versionStore: VersionStore;
indexStore?: IndexStore;
}) => ProtoGremlinFactory;
interface Navigation {
path: PathElem[];
request: NavigationThreshold;
refs: Ref[];
navigator?: NavigateWrapper;
}
declare abstract class NavigateWrapper {
graph: Graph;
navigation: Navigation;
constructor(graph: Graph, navigation: Navigation);
abstract merge(previous: PathElem, current: PathElem): PathElem;
mergePush(pathElem: PathElem): void;
values(...keys: KeyType[]): NavigateWrapper;
template(template: any): NavigateWrapper;
maxResults(value: number): NavigateWrapper;
exec(): AsyncGenerator<Part, void, void>;
abstract navigate(refs: Ref[]): AsyncGenerator<any, void, void>;
}
declare class NavigateVertexWrapper extends NavigateWrapper {
constructor(graph: Graph, navigation: Navigation);
merge(previous: PathElem, current: PathElem): PathElem;
hasType(...vertexTypes: VertexType[]): NavigateVertexWrapper;
has(vertexType: VertexType, propPredicate: PropPredicate): NavigateVertexWrapper;
outE(...edgeTypes: EdgeType[]): NavigateEdgeWrapper;
out(...edgeTypes: EdgeType[]): NavigateVertexWrapper;
navigate(refs: VertexRef[]): AsyncGenerator<any, void, void>;
}
declare class NavigateEdgeWrapper extends NavigateWrapper {
constructor(graph: Graph, navigation: Navigation);
merge(previous: PathElem, current: PathElem): PathElem;
hasType(...edgeTypes: EdgeType[]): NavigateEdgeWrapper;
has(edgeType: EdgeType, propPredicate: PropPredicate): NavigateEdgeWrapper;
inV(...vertexTypes: VertexType[]): NavigateVertexWrapper;
navigate(refs: EdgeRef[]): AsyncGenerator<any, void, void>;
}
declare class CreateWrapper {
tx: Tx;
props: {
keyType: KeyType;
value: PropValue;
type?: PropType;
}[];
constructor(tx: Tx);
}
declare class VertexCreateWrapper extends CreateWrapper {
vertex: Vertex;
vertexType: VertexType;
constructor(tx: Tx, vertexType: VertexType);
next(): Promise<VertexCreateWrapper>;
property(keyType: KeyType, value: PropValue, type?: PropType): VertexCreateWrapper;
uniqueIndex(keyType: KeyType, indexType?: IndexType): Promise<VertexCreateWrapper>;
get offset(): import("../types").Offset;
get type(): number;
}
declare class EdgeCreateWrapper extends CreateWrapper {
edge: Edge;
edgeType: EdgeType;
fromVertex: VertexCreateWrapper;
toVertex: VertexCreateWrapper;
constructor(tx: Tx, edgeType: EdgeType);
from(fromVertex: VertexCreateWrapper): EdgeCreateWrapper;
to(toVertex: VertexCreateWrapper): EdgeCreateWrapper;
property(keyType: KeyType, value: PropValue, type?: PropType): EdgeCreateWrapper;
next(): Promise<EdgeCreateWrapper>;
get offset(): import("../types").Offset;
get type(): number;
}
declare class ProtoGremlinTransaction {
tx: Tx;
constructor(tx: Tx);
addV(vertexType?: VertexType): VertexCreateWrapper;
addE(edgeType?: EdgeType): EdgeCreateWrapper;
commit({ comment, tags, }: {
comment?: Comment;
tags?: Tag[];
}): Promise<{
root: Link;
index: RootIndex;
blocks: Block[];
}>;
}
declare class ProtoGremlin {
graph: Graph;
constructor(graph: Graph);
V(refs: VertexRef[]): NavigateVertexWrapper;
E(refs: EdgeRef[]): NavigateEdgeWrapper;
tx(): Promise<ProtoGremlinTransaction>;
allVertices(): Promise<Vertex[]>;
allEdges(): Promise<Edge[]>;
allProps(): Promise<Prop[]>;
/**
* Pack a complete graph
* @param versionRoot - the version root
* @returns - a block containing the packed graph
*/
pack(versionRoot?: Link): Promise<Block>;
/**
* Pack a graph fragment
*
* @param vertexOffsetStart - the offset of the first vertex
* @param vertexCount - the number of vertices, counting from the first vertex
* @param graphDepth - the depth of the fragment
* @param versionRoot - the version root
* @returns - a block containing the packed graph fragment
*/
packFragment(vertexOffsetStart: number, vertexCount: number, graphDepth: number, versionRoot?: Link): Promise<Block>;
}
export { ProtoGremlinFactory, ProtoGremlin, ProtoGremlinTransaction, NavigateVertexWrapper, NavigateEdgeWrapper, protoGremlinFactory, };
//# sourceMappingURL=proto-gremlin.d.ts.map