imset
immutable updates that look mutable with template strings
Install
npm i -S imset
Usage
imset gives you a nice syntax for immutable updates. Unlike a deep clone, it only clones objects as needed.
Let's start with a simple object.
var o = x: y: 1 z: 2 ;
We can set a single property on it with an assignment operator. The operators =
,
+=
, ++
, and similar are supported.
imset`.x.z = 3`;
Any part of this expression can be dynamic.
var key = 'x';var value = 3;imset`..z = `;
We can also call methods, for example to manipulate arrays.
imset`.x.y.push(1, 2, 3)`imset`.x.y.splice(, 1)`
Performance
There is some string parsing to understand the expressions, but it's very light. In addition, it's only done once for a given operation, and then cached. So with the following, it'd only parse the string once, despite the dynamic parts being different.
imset`.b = `;imset`.b = `;
The rest of the computation is pretty trivial. It shallow clones along a path like you'd get in any immutable update tool.
That's all there is to it. Enjoy!
License
MIT © Frankie Bagnardi