import { Actual, All, Message, MessageType } from "silentium"; /** * Ability to mutate some object, helpful when integrate to procedure systems * https://silentium-lab.github.io/silentium-components/#/system/set */ export function Set>( baseSrc: MessageType, keySrc: MessageType, valueSrc: MessageType, ) { const $base = Actual(baseSrc); const $key = Actual(keySrc); const $value = Actual(valueSrc); return Message(function SetImpl(r) { All($base, $key, $value).then(function setAllSub([base, key, value]) { (base as Record)[key] = value; r(base); }); }); }