0.0.21 • Published 4 years ago

imez v0.0.21

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

imez

Small, fast, easy to use immutable helper

push(value1, value2, value3, ...)

import imez from "imez";

imez([1, 2, 3])
  .push(4)
  .value(); // => [1, 2, 3, 4]

pop()

import imez from "imez";

imez([1, 2, 3])
  .pop()
  .value(); // => [1, 2]

unshift(value1, value2, value3, ...)

import imez from "imez";

imez([1, 2, 3])
  .unshift(4)
  .value(); // => [4, 1, 2, 3]

splice(index, count, ...newItems)

import imez from "imez";

imez([1, 2, 3])
  .splice(0, 2, 4, 5)
  .value(); // => [3, 4, 5]

shift()

import imez from "imez";

imez([1, 2, 3])
  .shift()
  .value(); // => [2, 3]

set(prop, value)

import imez from "imez";

imez({})
  .set("name", "Peter")
  .value(); // => { name: 'Peter' }

set(prop, modifier)

import imez from "imez";

imez({ counter: 1 })
  .set("counter", current => current + 1)
  .value(); // => { counter: 2 }

prop(propLevel1, propLevel2, propLevel3, ...)

import imez from "imez";

imez({})
  .prop("level1", "level2")
  .set("value", 1)
  .value(); // => { level1: { level2: { value: 1 } } }

Batch processing

import imez from "imez";

imez({
  value1: 1,
  value2: 2
})
  .batch([
    x => x.set("value1", 2),
    x => x.set("value2", 3),
    x => x.set("value3", 4)
  ])
  .value(); // { value1: 2, value2: 3 }

Complexity updating

import imez from "imez";

imez({
  name: "Peter",
  age: 30,
  birthday: "1989-12-01",
  wife: { name: "Kate", age: 30 },
  children: [
    { name: "Tom", age: 5 },
    { name: "Mary", age: 1 }
  ]
})
  .set("name", "Peter Parker")
  .add("birthday", { years: 1 })
  .update("children", $children =>
    $children
      .update(0, $tom => $tom.set("age", current => current + 1))
      .update(1, $mary => $mary.add("age", 2))
  )
  .update("wife", $wife => $wife.keep("name"))
  .value();
/*
    {
      name: "Peter Parker",
      age: 30,
      birthday: new Date("1990-12-01"),
      wife: { name: "Kate" },
      children: [
        { name: "Tom", age: 6 },
        { name: "Mary", age: 3 }
      ]
    }
*/

Shorthands

import imez from "imez";

const state = { name: "Peter" };
const updater = x => x.set("name", "Peter Parker");

imez(state, updater); // { name: 'Peter Parker' }

const reducer = imez(updater);

reducer(state); // { name: 'Peter Parker' }
0.0.20

4 years ago

0.0.21

4 years ago

0.0.18

4 years ago

0.0.19

4 years ago

0.0.17

4 years ago

0.0.16

4 years ago

0.0.15

4 years ago

0.0.14

4 years ago

0.0.11

4 years ago

0.0.12

4 years ago

0.0.13

4 years ago

0.0.10

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.5

4 years ago

0.0.6

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago