Hyperlinkv0.8.0-beta.28

MultiNode

MultiNode.combineStreamconstsrc/MultiNode.ts:67
<Svc, A, E, B, EE>(
  peers: Record<string, Svc>,
  pick: (service: Svc) => Stream.Stream<A, E>,
  transform: (
    streams: ReadonlyArray<NodeStream<A, E>>
  ) => Stream.Stream<B, EE>
): Stream.Stream<B, EE>

Combine a stream field across every instance in peers: transform receives each node's stream (node-attributed) and produces the combined stream — e.g. mergeNodeStreams to interleave them all, or a latest-per-node fold. Pure; the live subscription lifecycle is the caller's.

combinatorsmergeNodeStreams
Source src/MultiNode.ts:678 lines
export const combineStream = <Svc, A, E, B, EE>(
  peers: Record<string, Svc>,
  pick: (service: Svc) => Stream.Stream<A, E>,
  transform: (streams: ReadonlyArray<NodeStream<A, E>>) => Stream.Stream<B, EE>,
): Stream.Stream<B, EE> =>
  transform(
    Object.entries(peers).map(([node, service]) => ({ node, stream: pick(service) })),
  );