perfect-immutable
v3.0.0
Published
Library to provide immutable methods (like immutable set similar to lodash's _.set) on standard JS objects
Downloads
225
Maintainers
Readme
perfect-immutable
Library to provide immutable methods (like immutable set similar to lodash's _.set) on standard JS objects
You're smart. You avoid mutating objects in your application. But you don't want to install big Immutable.js library and you don't want to refactor all your objects. Now you can have benefits of Immutable.js on normal JavaScript objects! Look for real life exampes.
Getting started
Install library
npm i perfect-immutable --save
Import functions you need
import { set, splice, push, pop, shift, unshift, sort, reverse, filter, immutableDelete } from 'perfect-immutable';
import immutable from 'perfect-immutable'; // immutable object has all above methods
or, for functional programming friendly, auto-carried, predicate-first functions
import { set, splice, push, pop, shift, unshift, sort, reverse, filter, immutableDelete } from 'perfect-immutable/fp';
import immutable from 'perfect-immutable/fp'; // immutable object has all above methods
Docs
Credits
- stringToPath function (used e.g. in set method) is based on lodash's function with the same name (also used in
_.set()
) - immutable array functions (like splice) were created by Vincent Billey
- Brainhub created eslint config used in this repo
FAQ
Why this exists?
There are a lot of Immutable.js-like libraries, but they all force you to use immutable specific objects (like Map) and you cannot use their methods on normal JavaScript objects. That's not a problem when you're starting new project and decide to use e.g. Immutable.js but what if the app is already there, and you want immutable tools?
Are there good alternatives?
- immutability-helper - Library based on react-addons-update, that solve exactly the same problem but with mongodb-like syntax instead of lodash or Immutable.js-like syntax. Definitely worth giving it a try. However, this library provides you with different syntax and allows you to use all helper methods (like immutable push) separately with more functional approach.
I found a bug! What should I do?
There are at least 3 options:
- Add an issue, write test(s) for bug you found, write fix that will make your test(s) pass, submit pull request
- Add an issue, write test(s) for bug you found, submit pull request with you test(s)
- Add an issue