mewt
Immutability in under one kilobyte
Made with ❤ at @outlandish
🌱 Under 1kb, tiny API, zero dependencies.
👍 Makes all native array methods immutable operations.
✌️ Two simple methods $set
and $unset
for objects and arrays.
👉 Built for Node ES2015 environments. Use a bundler, transpiler, and Proxy polyfill as required.
Install
npm install --save mewt
yarn add mewt
Import
// ES2015
// CommonJSvar immutable =
Usage
Create an immutable instance from a JavaScript array or object.
Both objects and arrays have the $set
and $unset
methods.
const immutableArray = const immutableObject = immutableArray0 = 'Van Morrison' //=> Error "array is immutable"immutableObjectname = 'Van Morrison' //=> Error "object is immutable"
Array
Use $set
and $unset
to create new array with applied change.
Use all array instance methods as usual, however those that would normally return a single non-array value (pop, push, shift, unshift) will return an array containing the value and a new array (see part 2 in example below).
const arr = // 1. all array instance methods are availableconst arr1 = arr console //=> ['bubble'] console //=> false // 2. methods with non-array return value (push, pop, shift, unshift)// also return new array, accessible via destructuringconst val arr2 = arr1 console //=> 'bubble' console //=> [] console //=> false // 3. use $set and $unset to get new array with changesconst arr3 = arr2 console //=> ['Iggy Pop'] console //=> false
Object
Use $set
and $unset
to create new object with applied change.
const obj = // 1. properties are added/updated using `$set`const obj1 = obj console //=> {album: 'Hunky Dory'} console //=> false // 2. properties are deleted using `$unset`const obj2 = obj1 console //=> {} console //=> false
Contributors
mewt
has received contributions from these wonderful people:
Balázs Édes, Scott Humphries, Michael J. Ryan, Jamie Curtis
Contributing
All pull requests and issues welcome!
If you're not sure how, check out the great video tutorials on egghead.io!