imset

1.1.6 • Public • Published

imset

NPM version Build Status Coveralls Status Dependency Status Downloads

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

Package Sidebar

Install

npm i imset

Weekly Downloads

1

Version

1.1.6

License

MIT

Last publish

Collaborators

  • greenjello