- Notifications
You must be signed in to change notification settings - Fork8
🌱 Immutability in under one kilobyte
License
sdgluck/mewt
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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.
npm install --save mewt
yarn add mewt
// ES2015importimmutablefrom'mewt'
// CommonJSvarimmutable=require('mewt')
Create an immutable instance from a JavaScript array or object.
Both objects and arrays have the$set
and$unset
methods.
constimmutableArray=immutable([])constimmutableObject=immutable({})immutableArray[0]='Van Morrison'//=> Error "array is immutable"immutableObject.name='Van Morrison'//=> Error "object is immutable"
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 singlenon-array value (pop, push, shift, unshift) will return an array containing the value and a new array(see part 2 in example below).
constarr=immutable([])// 1. all array instance methods are availableconstarr1=arr.concat('bubble')console.log(arr1)//=> ['bubble']console.log(arr1===arr)//=> false// 2. methods with non-array return value (push, pop, shift, unshift)// also return new array, accessible via destructuringconst[val,arr2]=arr1.pop()console.log(val)//=> 'bubble'console.log(arr2)//=> []console.log(arr2===arr1)//=> false// 3. use $set and $unset to get new array with changesconstarr3=arr2.$set(0,'Iggy Pop')console.log(arr3)//=> ['Iggy Pop']console.log(arr3===arr2)//=> false
Use$set
and$unset
to create new object with applied change.
constobj=immutable({})// 1. properties are added/updated using `$set`constobj1=obj.$set('album','Hunky Dory')console.log(obj1)//=> {album: 'Hunky Dory'}console.log(obj1===obj)//=> false// 2. properties are deleted using `$unset`constobj2=obj1.$unset('album')console.log(obj2)//=> {}console.log(obj2===obj1)//=> false
mewt
has received contributions from these wonderful people:
Balázs Édes,Scott Humphries,Michael J. Ryan,Jamie Curtis
All pull requests and issues welcome!
If you're not sure how, check out thegreat video tutorials on egghead.io!
About
🌱 Immutability in under one kilobyte
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors6
Uh oh!
There was an error while loading.Please reload this page.