Hyperlinkv0.8.0-beta.28

MultiNode

MultiNode.mergeNodeStreamsByNodeconstsrc/MultiNode.ts:165
<A, E>(streams: ReadonlyArray<NodeStream<A, E>>): Stream.Stream<
  { readonly node: string; readonly value: A },
  E
>

Interleave every node's stream into one, tagging each element with its node — attribution when following peers (a transform for combineStream).

combinatorscombineStream
Source src/MultiNode.ts:1657 lines
export const mergeNodeStreamsByNode = <A, E>(
  streams: ReadonlyArray<NodeStream<A, E>>,
): Stream.Stream<{ readonly node: string; readonly value: A }, E> =>
  streams.reduce<Stream.Stream<{ readonly node: string; readonly value: A }, E>>(
    (acc, s) => Stream.merge(acc, Stream.map(s.stream, (value) => ({ node: s.node, value }))),
    Stream.empty,
  );