import { Actual } from "base/Actual"; import { MaybeMessage } from "types/MessageType"; // eslint-disable-next-line @typescript-eslint/no-unused-vars type Last = T extends readonly [...infer _, infer L] ? L extends (...args: any) => any ? L : never : never; /** * Helps to pipe actors or functions to one common actor * * @url https://silentium.pw/article/piped/view */ export function Piped MaybeMessage)[]>( $m: MaybeMessage, ...c: T ) { return c.reduce(function pipedReduce(msg, Constructor) { return Actual(Constructor(msg)); }, Actual($m)) as ReturnType>; }