imset
v1.1.6
Published
immutable updates that look mutable with template strings
Downloads
10
Maintainers
Readme
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.
import imset from "imset"
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`${o}.x.z = 3`;
Any part of this expression can be dynamic.
var key = 'x';
var value = 3;
imset`${o}.${key}.z = ${value}`;
We can also call methods, for example to manipulate arrays.
imset`${o}.x.y.push(1, 2, 3)`
imset`${o}.x.y.splice(${index}, 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`${a}.b = ${c}`;
imset`${x}.b = ${y}`;
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