Skip to main content

interface VariantGraphBase<N,V,Tp>

undocumented

Companion namespace: VariantGraphBase

Extends: FastIterable<T>

Implemented by: VariantValuedGraphBase<N,V,Tp>, VariantGraphBase.NonEmpty<N,V,Tp>, GraphBase<N,Tp>, GraphConnect<N,V,Tp>

Type parameters​

NameConstraintsDefaultDescription
Nundocumented
Vundocumented
TpVariantGraphBase.TypesVariantGraphBase.Typesundocumented

Properties​

connectionSize​

Returns the amount of connections in the graph.

Definition​

readonly connectionSize: number;

example
ArrowGraphHashed.empty<number>().connectionSize  // => 0
ArrowGraphHashed.of([1], [2, 3]).connectionSize // => 1

isDirected​

Returns true if the graph is an arrow (directed) graph.

Definition​

readonly isDirected: boolean;

isEmpty​

Returns true if the graph has no nodes.

Definition​

readonly isEmpty: boolean;

example
ArrowGraphHashed.empty<number>().isEmpty  // => true
ArrowGraphHashed.of([1]).isEmpty // => false

nodeSize​

Returns the amount of nodes in the graph.

Definition​

readonly nodeSize: number;

example
ArrowGraphHashed.empty<number>().nodeSize  // => 0
ArrowGraphHashed.of([1], [2, 3]).nodeSize // => 3

Methods​

[Symbol.iterator]​

Returns a FastIterator instance used to iterate over the values of this Iterable.

Definition​

[Symbol.iterator](): FastIterator<T>;

Overrides​

FastIterable.[Symbol.iterator]

assumeNonEmpty​

Returns the collection as a .NonEmpty type

Definition​

assumeNonEmpty(): WithGraphValues<Tp, N, V>['nonEmpty'];

throws

RimbuError.EmptyCollectionAssumedNonEmptyError if the collection is empty

example
ArrowGraphHashed.empty<number>().assumeNonEmpty()   // => throws
const g: ArrowGraphHashed<number> = ArrowGraphHashed.of([1, 1], [2, 2])
const g2: ArrowGraphHashed.NonEmpty<number> = g // => compiler error
const g3: ArrowGraphHashed.NonEmpty<number> = g.assumeNonEmpty()
note

returns reference to this collection

disconnect​

Returns the graph with the connection between given node1 and node2 removed if it exists.

Definition​

disconnect<UN = N>(node1: RelatedTo<N, UN>, node2: RelatedTo<N, UN>): WithGraphValues<Tp, N, V>['normal'];

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
node1RelatedTo<N, UN>the first connection node
node2RelatedTo<N, UN>the second connectio node
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.disconnect(2, 3).stream().toArray() // => [[1], [2], [3]]
g.disconnect(1, 2).stream().toArray() // => [[1], [2, 3]]

disconnectAll​

Returns the graph with all connections in given links removed if they exist.

Definition​

disconnectAll<UN = N>(links: StreamSource<Link<RelatedTo<N, UN>>>): WithGraphValues<Tp, N, V>['normal'];

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
linksStreamSource<Link<RelatedTo<N, UN>>>a StreamSource containing tuples of nodes representing connections
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.disconnectAll([[1, 2], [3, 4]]).stream().toArray() // => [[1], [2, 3]]
g.disconnectAll([[2, 3], [3, 4]]).stream().toArray() // => [[1], [2], [3]]

forEach​

Performs given function f for each entry of the collection, using given state as initial traversal state.

Definition​

forEach(f: (entry: [N] | WithGraphValues<Tp, N, V>['link'], index: number, halt: () => void) => void, options?: {
    state?: TraverseState;
  }): void;

Parameters​

NameTypeDescription
f(entry: [N] | WithGraphValues<Tp, N, V>['link'], index: number, halt: () => void) => voidthe function to perform for each entry, receiving:
- entry: the next graph element
- index: the index of the element
- halt: a function that, if called, ensures that no new elements are passed
options{
    state?: TraverseState;
  }
object containing the following
- state: (optional) the traverse state
example
const g = ArrowGraphHashed.of([1], [2, 3], [4])
g.forEach((entry, i, halt) => {
console.log([entry]);
if (i >= 1) halt();
})
// => logs [1] [2, 3]
note

O(N)

getConnectionStreamFrom​

Returns a Stream containing all the connetions from the given node1

Definition​

getConnectionStreamFrom<UN = N>(node1: RelatedTo<N, UN>): Stream<WithGraphValues<Tp, N, V>['link']>;

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
node1RelatedTo<N, UN>the first connection node
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.getConnectionStreamFrom(2).toArray() // => [3]
g.getConnectionStreamFrom(5).toArray() // => []

getConnectionStreamTo​

Returns a Stream containing all the connetions to the given node2

Definition​

getConnectionStreamTo<UN = N>(node2: RelatedTo<N, UN>): Stream<WithGraphValues<Tp, N, V>['link']>;

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
node2RelatedTo<N, UN>the second connection node
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.getConnectionStreamTo(3).toArray() // => [2]
g.getConnectionStreamTo(5).toArray() // => []

hasConnection​

Returns true if the graph has a connection between given node1 and node2.

Definition​

hasConnection<UN = N>(node1: RelatedTo<N, UN>, node2: RelatedTo<N, UN>): boolean;

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
node1RelatedTo<N, UN>the first connection node
node2RelatedTo<N, UN>the second connection node
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.hasConnection(2, 3) // => true
g.hasConnection(3, 1) // => false

hasNode​

Returns true if the graph contains the given node.

Definition​

hasNode<UN = N>(node: RelatedTo<N, UN>): boolean;

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
nodeRelatedTo<N, UN>the node to search
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.hasNode(2) // => true
g.hasNode(5) // => false

nonEmpty​

Returns true if there is at least one node in the collection, and instructs the compiler to treat the collection as a .NonEmpty type.

Definition​

nonEmpty(): this is WithGraphValues<Tp, N, V>['nonEmpty'];

example
const g: ArrowGraphHashed<number> = ArrowGraphHashed.of([1, 1], [2, 2])
g.streamNodes().first(0) // compiler allows fallback value since the Stream may be empty
if (g.nonEmpty()) {
g.streamNodes().first(0) // compiler error: fallback value not allowed since Stream is not empty
}

removeNode​

Returns the graph with the given node and all its connections removed.

Definition​

removeNode<UN = N>(node: RelatedTo<N, UN>): WithGraphValues<Tp, N, V>['normal'];

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
nodeRelatedTo<N, UN>the node to remove
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.removeNode(2).stream().toArray() // => [[1]]
g.removeNode(6).stream().toArray() // => [[1], [2, 3]]

removeNodes​

Returns the graph with all nodes in given nodes stream removed, together with all their connections.

Definition​

removeNodes<UN = N>(nodes: StreamSource<RelatedTo<N, UN>>): WithGraphValues<Tp, N, V>['normal'];

Type parameters​

NameDefaultDescription
UNN

Parameters​

NameTypeDescription
nodesStreamSource<RelatedTo<N, UN>>a StreamSource containing the nodes to remove
example
const g = ArrowGraphHashed.of([1], [2, 3])
g.removeNodes([2, 3]).stream().toArray() // => [[1]]
g.removeNodes([4, 5]).stream().toArray() // => [[1], [2, 3]]

removeUnconnectedNodes​

Returns the graph with all isolated nodes removed.

Definition​

removeUnconnectedNodes(): WithGraphValues<Tp, N, V>['normal'];

example
const g = ArrowGraphHashed.of([1], [2, 3])
g.removeUnconnectedNodes().stream().toArray() // => [[2, 3]]

stream​

Returns a Stream containing all graph elements of this collection as single tuples for isolated nodes and 2-valued tuples of nodes for connections.

Definition​

stream(): Stream<[N] | WithGraphValues<Tp, N, V>['link']>;

example
ArrowGraphHashed.of([1], [2, 3]).stream().toArray()  // => [[1], [2, 3]]

streamConnections​

Returns a Stream containing all connections of this collection.

Definition​

streamConnections(): Stream<WithGraphValues<Tp, N, V>['link']>;

example
ArrowGraphHashed.of([1], [2, 3]).stream().toArray()   // => [[2, 3]]

streamNodes​

Returns a Stream containing all nodes of this collection.

Definition​

streamNodes(): Stream<N>;

example
ArrowGraphHashed.of([1], [2, 3]).stream().toArray()   // => [1, 2, 3]

toJSON​

Returns a JSON representation of this collection.

Definition​

toJSON(): ToJSON<[N, WithGraphValues<Tp, N, V>['linkTarget'][]][]>;

example
ArrowGraphHashed.of([1], [2, 3]).toJSON()
// => { dataType: 'ArrowGraphHashed', value: [[1, []], [2, [3]]] }

toString​

Returns a string representation of this collection.

Definition​

toString(): string;

example
ArrowGraphHashed.of([1], [2, 3]).toString()   // => ArrowGraphHashed(1 => [], 2 => [3])