import { Message } from "base/Message"; import { MessageType } from "types/MessageType"; /** * Message what freezes first known value */ export function Freeze($base: MessageType, $invalidate?: MessageType) { let freezedValue: T | null = null; return Message(function FreezeImpl(resolve, reject) { $base.catch(reject); $base.then(function freezeBaseSub(v) { if (freezedValue === null) { freezedValue = v; } resolve(freezedValue as T); }); $invalidate?.then(function freezeInvalidateSub() { freezedValue = null; }); }); }