import { Actual } from "base/Actual"; import { Computed } from "components/Computed"; import { MaybeMessage } from "types/MessageType"; /** * Reduces values of message data to one common value */ export function Fold( data: MaybeMessage, reducer: (acc: TG, item: T[number], index: number) => TG, initial: MaybeMessage, ) { const $data = Actual(data); const $initial = Actual(initial); return Computed( function foldComputed(data, initial) { return data.reduce(reducer, initial); }, $data, $initial, ); }