{"_id":"clean-set","_rev":"5-2ed1ddb577d8aadb7105ccf333c4b765","name":"clean-set","dist-tags":{"latest":"1.1.2"},"versions":{"0.0.1":{"name":"clean-set","version":"0.0.1","description":"A fast deep assignment alternative to the object spread operator and Object.assign","umd:main":"dist/clean-set.min.js","module":"dist/clean-set.es.js","main":"dist/clean-set.js","source":"lib/index.js","typings":"index.d.ts","scripts":{"build":"microbundle","coverage":"nyc report --reporter=text-lcov > coverage.lcov && codecov","tap":"tape -r esm tests/**/*.js | tap-difflet","test":"nyc --reporter=text npm run tap"},"repository":{"type":"git","url":"git+https://github.com/fwilkerson/clean-set.git"},"keywords":[],"author":{"name":"Frank A. Wilkerson"},"license":"MIT","bugs":{"url":"https://github.com/fwilkerson/clean-set/issues"},"homepage":"https://github.com/fwilkerson/clean-set#readme","devDependencies":{"codecov":"^3.0.2","esm":"^3.0.46","microbundle":"^0.4.4","nyc":"^12.0.2","prettier":"^1.13.4","tap-difflet":"^0.7.1","tape":"^4.9.0"},"gitHead":"1d55385515aa35922b1a58b3acd240e9243b4651","_id":"clean-set@0.0.1","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"},"dist":{"integrity":"sha512-gyUzqe7KhFMJ7vn1R22nu1fLkKCuhw7xcbc8xpYIyY48v+BRkl+pNKv4F/R05eDOSEp4SeJYad8ZeavcAQoUrg==","shasum":"b2d9dc62d27876552c167bb3eaf4ac408a9c9a26","tarball":"https://registry.npmjs.org/clean-set/-/clean-set-0.0.1.tgz","fileCount":15,"unpackedSize":25434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbF3ZmCRA9TVsSAnZWagAAN8EQAJOhhZ3cYQYNxfyMHU+R\nr2FMc4WbK8LI9Ec9K+XYgKPUMsFZ2IZW8E4Qnh1tnRUdm+dFZwZkFmVXW0r5\n6YTnP2Xr2yQlJivxqdQfaEtATwMtryHbp4FuXGeZjuOuQlfihBWX2hf2QGa2\njNR2aWXZqN8mvEd0hDMOoPVfs9LeO87W8Cqc0sIln7ZeFBmSOTEcbhMO9vsA\niu9PHjfsSA7TkMtNgT8LXcqFeum6dU/DkJwGZMTi/zEbL+ogakaFMVglx/I+\n3CiHcjZ5yXda/yXI721KOy7W9r/ABiABfttTmyw6hHhijKIwqemGiewS0tok\npcS1gnSWzN7xEb1Tz78NbP0p6LPfJ9Fae+rw8X6miUj6/+r6zEuDxW/mKkwX\nHXw2ulBresIgPjfiUPzQwz44Sgu+AORUhw8etn1Ko9+e1X8kifQZP97/SqOc\nV5akdL696/UCgn2f28d5/MRhTerIOr1LuEyD6K8Q3tBaj5o/pSMJKmR28Gz6\nlSEp6eNEgi3PfMD+4qrejVxyajO3OBj7lvOAkp/oGuvZK/o9XQJya4A0HNub\n4swcD02cMgRo4c9MWYlQNGMX/s1nkPfvC5GHerkfs77MIOAQtGFaoPgXFrBe\nLbO5EX3NF9TcOqyt6MjtlWtRuAQOe6DvbBRIZJ0qNNKL7I8b9uQteNNzWr8w\n8W3G\r\n=A6kt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEF1mTpeSS7KmEEQHHpe57Al/nzXO8CAR6YvjXPUD9eZAiEAtA1ghafYWirNU3AcpihkQs12Od7MN0b9wXnsZi6NmBI="}]},"maintainers":[{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clean-set_0.0.1_1528264293945_0.897545697575999"},"_hasShrinkwrap":false},"1.0.0":{"name":"clean-set","version":"1.0.0","description":"A fast deep assignment alternative to the object spread operator and Object.assign","umd:main":"dist/clean-set.min.js","module":"dist/clean-set.es.js","main":"dist/clean-set.js","source":"lib/index.js","typings":"index.d.ts","scripts":{"build":"microbundle","coverage":"nyc report --reporter=text-lcov > coverage.lcov && codecov","tap":"tape -r esm tests/**/*.js | tap-difflet","test":"nyc --reporter=text npm run tap"},"repository":{"type":"git","url":"git+https://github.com/fwilkerson/clean-set.git"},"keywords":[],"author":{"name":"Frank A. Wilkerson"},"license":"MIT","bugs":{"url":"https://github.com/fwilkerson/clean-set/issues"},"homepage":"https://github.com/fwilkerson/clean-set#readme","devDependencies":{"codecov":"^3.0.2","esm":"^3.0.46","microbundle":"^0.4.4","nyc":"^12.0.2","prettier":"^1.13.4","tap-difflet":"^0.7.1","tape":"^4.9.0"},"gitHead":"2b84025de79f7f94378498d1e0b4e4b81b03b903","_id":"clean-set@1.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"},"dist":{"integrity":"sha512-yf0tuJpRy05+fLP+jQaiMzrwJu6NH8SsBBwbgZXbunSGKL2cRUDwG+y7gZ6mfz9H3gIuPzv7CTz+mO/Ccys9yg==","shasum":"5d18b870e77b804f7b10907a14e0ea6f9c2d43ed","tarball":"https://registry.npmjs.org/clean-set/-/clean-set-1.0.0.tgz","fileCount":15,"unpackedSize":27468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbF4pRCRA9TVsSAnZWagAA1MAP/3hyhLKmdS3rAdFNL2Qc\nUtKSCttJAmxj88I+Os0FL2HoR6uztxRUxxHaGsx7l8CA8ZRQY1g5/SBXnFRB\n7oVTwJqJ/RFAZ5oYI15jewjkxxPFxqD7ggFgHdrSqy1Yld12UAXxZTIu1Yw7\n2G1d1oMf4cV22hFBEj2gPs6AiytoE5PJzayx6Yp/6wtD6lQRS3cRfU3ES9F0\n1D/4lWQa8N2XIB3/Qt/rZD7bfQmFeUPECzmE2xrGpUSDqFAKp0pacmKwpqQs\nckr4lWQGSZ/fX+GDXs5L4PP4pieErnyywr+hVuCPDCwicLlV0LeAQF2x13Vw\nK5Gh35GA+nuhbN+7aeyXl+01SlGWtBh+gNFDL+1NkzaZQpMU66Ha/93H4lIx\ni75qQurJVDBx5n58aLAJis8ql0E6akNBqvtfT078Yrf0077yRktNODWLq94m\nC4MExeZVHLtWTasAywIE6eh7H/YNER2MnhxtAdSeptyuEnY9ww3xuoIONshI\njilC5kzhNknqSJsS9q34mETyysuXDx0/rq15v2gMeBhkuaH8mpyTE6lbTaFc\nbNMSBS7ysBiYNNGE0g98JfLluUTDAkuiJClcr2ilg8Q7kLVdky9TCZb0q+i3\nciFkmbCOAjjrBA+XIcG6JegNtOedPoPxoYAIisfOeLTjsrVYTr9WFdOKxlF4\nR4Nm\r\n=Cyhv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDg37qRzH9t+pgK8d1AuBzFNBH85JLC4kJWkAxGxpiBgwIhANysvs+xH0Tp0Wk/W+DfGnmNJOIYKyoozU591gQQfsx/"}]},"maintainers":[{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clean-set_1.0.0_1528269392950_0.5781301296174315"},"_hasShrinkwrap":false},"1.1.0":{"name":"clean-set","version":"1.1.0","description":"A fast deep assignment alternative to the object spread operator and Object.assign","umd:main":"dist/clean-set.min.js","module":"dist/clean-set.es.js","main":"dist/clean-set.js","source":"lib/index.js","typings":"index.d.ts","scripts":{"build":"microbundle","coverage":"nyc report --reporter=text-lcov > coverage.lcov && codecov","tap":"tape -r esm tests/**/*.js | tap-difflet","test":"nyc --reporter=text npm run tap"},"repository":{"type":"git","url":"git+https://github.com/fwilkerson/clean-set.git"},"keywords":[],"author":{"name":"Frank A. Wilkerson"},"license":"MIT","bugs":{"url":"https://github.com/fwilkerson/clean-set/issues"},"homepage":"https://github.com/fwilkerson/clean-set#readme","devDependencies":{"codecov":"^3.0.2","esm":"^3.0.46","microbundle":"^0.4.4","nyc":"^12.0.2","prettier":"^1.13.4","tap-difflet":"^0.7.1","tape":"^4.9.0"},"gitHead":"a83e26efc7cd818eac89b7069a7303d6e75dc9fb","_id":"clean-set@1.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"},"dist":{"integrity":"sha512-eWzgp8bQMvGVdLI8k56c4G08ez9+t7J0pmBarJ0uDv8Fc5FvQL1LWxH5TmfYUCblUi3lC7/LCvQIwsgcv6BhzQ==","shasum":"507860370e6e44521f4a4a516c977a864aa8a765","tarball":"https://registry.npmjs.org/clean-set/-/clean-set-1.1.0.tgz","fileCount":15,"unpackedSize":30467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbLBr7CRA9TVsSAnZWagAA9mkP/RE4Q0U7XMWeCVPLR7RP\nf+oIL9sFjUo9oBbqlqXd24tEPOMp9Kl1OhWKiQ+Ikvscck9IkrXdTyONz+vt\nlXdFHI/HVnumiQYMhZkrvDD1QhKzE3B+HIE1+8nu4PI0W+Xeeg42QIQCqKts\n4u8Eo5WRadvNVnOVcnnqjpfHJiZzEsfdgdyKvasDyWDTa1eYqOCI5V6Ou6Mc\nqD8L3ff3s94rp6d20KYhmGXpeTbnL2PPofy3dTelEG3dtWTOS+EL0XoKwMaM\n4mqyp7hR/CdfT01VKt/BCxZ53ZIovwZYnpX0v3QtDeP7+2R8X0Sayvw3gwcz\nmlxdrv+5mWu/DGXkay2RBbJ8ftcg5sXNmNPpIEiiiXG1wk5wOZauCCoWO4Z3\nTkkuj+JCBMRxOM/L0vK7xmCSfpxE8kFp7Xzw7zC2z+hLJZKT/Jbo3RlqiDYe\nJS9VWbeXehbDDb9RGUWvP/7iF7kWX81BdmBrbcrXd6CQMZaxkGO+XBAyU6sG\nDXO5lg3QqEX6PE/sQ3GGmtueLcREasu1u6chq2qcqdT8up6OpOWyfBS1XRq4\nuXOmfSZ5h/X6aKHFSnAMmpr+xXqPqfGnp0ABskxUbFv1y6n35Z3dVS/wV8sG\ncGNr13n8sCl66a8JV12XUCxIoIw0bXwzngWKFOET38sGQGqn86ukuDfvncD5\n3iUd\r\n=Kv1w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmu6ppJEeElbMMVpR/31uNCyRrY09qpMSLjkbWS7OYIwIgarrj62vR5f7S6E3GiCEEjk2mZWXso5HQg+IKhAsUZUg="}]},"maintainers":[{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clean-set_1.1.0_1529617147765_0.968497556391495"},"_hasShrinkwrap":false},"1.1.1":{"name":"clean-set","version":"1.1.1","description":"A fast deep assignment alternative to the object spread operator and Object.assign","umd:main":"dist/clean-set.min.js","module":"dist/clean-set.es.js","main":"dist/clean-set.js","source":"lib/index.js","typings":"index.d.ts","scripts":{"build":"microbundle","coverage":"nyc report --reporter=text-lcov > coverage.lcov && codecov","tap":"tape -r esm tests/**/*.js | tap-difflet","test":"nyc --reporter=text npm run tap"},"repository":{"type":"git","url":"git+https://github.com/fwilkerson/clean-set.git"},"keywords":[],"author":{"name":"Frank A. Wilkerson"},"license":"MIT","bugs":{"url":"https://github.com/fwilkerson/clean-set/issues"},"homepage":"https://github.com/fwilkerson/clean-set#readme","devDependencies":{"codecov":"^3.2.0","esm":"^3.2.18","microbundle":"^0.11.0","nyc":"^13.3.0","prettier":"^1.16.4","tap-difflet":"^0.7.1","tape":"^4.10.1"},"gitHead":"61426c81bd7f70a995a9aad7ab15926e5801ed63","_id":"clean-set@1.1.1","_nodeVersion":"10.15.1","_npmVersion":"6.8.0","dist":{"integrity":"sha512-Y6SWC6BKolLY9oAMaeK2PXJddllH+lpwFtP+KOK8hs+2gS8O2KN9a/j71pmIuTcF+JPh/2TPgVDliJ4x8JQCdA==","shasum":"513a0930d0d0e3c0746311ed36e476a07f50facb","tarball":"https://registry.npmjs.org/clean-set/-/clean-set-1.1.1.tgz","fileCount":15,"unpackedSize":31550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcjb04CRA9TVsSAnZWagAAxAYQAIHnJK4+wFabSH11ycMC\nTYyG7hk2fKaSZWTSdVsVoEuGBlSwLweEZxCgz6elTPxiiymuzWq5uH+gSiqz\n3oFsKPxDb9VqP31Z9N1dHTn3RY5oh451aSmNyXEgCNd6ul+U+zQlcvFE4dUB\nxfKx26URdbKsbLecFD8XS0VRz1S58WjetUXoXXEs995IaTNGiU2sa941DVqK\nhjvoLuNrZzEDV0QNkvISH1mAvskNTZt+9N8WRLQMPWZklumvixkOEBjX0D1S\nQ+b5/BH/DzMNwN6u87yfRRO5niQbtWA3Gt8c99dlqFcWMARfRpDti9aC/SBA\nFHroeJVC6b9cm9hFApg66SIgfRoAxe4ccS/4sieuaDsEcLoLNlzbQeRaL51b\nG7PGy9SZ55zEsbPcEr3c+eNxCdlJKe4ptuI4MHTms2NbDITHn4KcLKjSs8I8\n3nDp5D7RLIw6rzhel2Bf+qPxf0kqny7XCp3RM4YKFJuOz4mvgXWUBCy4KQ4Y\nyPSC/tfhbsQvq8Y7hD+6mI7zwjPbpBOF6lPmZ4AWDsoH4V/3z2CGAfp8+d/U\nQX6j+p3VOK6eyL7bly1ktoR3Yuw8Or9yjtng17l+kdR3YT2avZB7/7/68SjN\n17PrS1Lka/Zn3dIDDL7kK0Ys25VWO7Si+jXuwDwdnlBkaEWzcXxB0pKF7LUy\ne0FQ\r\n=Glwl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDU/htLBi9rh7L8yEorfYo7xrs0eb8zyXqO2jIvi2GH/QIgEkF5i9qTYKgjKeN5mQ4JsZV5UHLb+wwrEdnLxG6nrcU="}]},"maintainers":[{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"}],"_npmUser":{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clean-set_1.1.1_1552792887331_0.6719119977271728"},"_hasShrinkwrap":false},"1.1.2":{"name":"clean-set","version":"1.1.2","description":"A fast deep assignment alternative to the object spread operator and Object.assign","umd:main":"dist/clean-set.min.js","module":"dist/clean-set.es.js","main":"dist/clean-set.js","source":"lib/index.js","typings":"index.d.ts","scripts":{"build":"microbundle","coverage":"nyc report --reporter=text-lcov > coverage.lcov && codecov","tap":"tape -r esm tests/**/*.js | tap-difflet","test":"nyc --reporter=text npm run tap"},"repository":{"type":"git","url":"git+https://github.com/fwilkerson/clean-set.git"},"keywords":[],"author":{"name":"Frank A. Wilkerson"},"license":"MIT","bugs":{"url":"https://github.com/fwilkerson/clean-set/issues"},"homepage":"https://github.com/fwilkerson/clean-set#readme","devDependencies":{"codecov":"^3.2.0","esm":"^3.2.18","microbundle":"^0.12.0","nyc":"^15.0.1","prettier":"^1.16.4","tap-difflet":"^0.7.1","tape":"^4.10.1"},"gitHead":"2366343c2d49b0ea02714db87b9996f0dbc25cd1","_id":"clean-set@1.1.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-cA8uCj0qSoG9e0kevyOWXwPaELRPVg5Pxp6WskLMwerx257Zfnh8Nl0JBH59d7wQzij2CK7qEfJQK3RjuKKIug==","shasum":"76d8bf238c3e27827bfa73073ecdfdc767187070","tarball":"https://registry.npmjs.org/clean-set/-/clean-set-1.1.2.tgz","fileCount":17,"unpackedSize":34085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJevijkCRA9TVsSAnZWagAAenoP/3xnPMP40xDLPJJcCKyc\ns1hQAu0dlol99ndDzoBSaZsiw7/Kw3iprMLKAPg3lb25BB/Q2a4XwrW5gm4Z\n+1lb2ifmScom0jShmcCjGG6cppUtgt5RnVqCvF8BY3xgwxokVYukWoUfMGaR\nQC/ppIEUb/vvIh8ltmVKSdeja8I2SyHKppneYw8CXjJPj+9V9pj2zz1NroGo\nxlSbeOhB35WE7BO4JSqq+Q8FC99s23iZQFRFYVZC1tAxfYsepklnsYdxLxoU\n505LDZLaIbbw7vjuzmR/pl1CJBxUdBWdsLxN4wC6s+kFshTb9cJ4UJdvTnpF\n59cgVh7MZDL/51R5mqjjTs3rO5SBy355VENPs8CjdROOJSyYnFm6YQyLlEL+\nPr8LT/BbBteFFDpIui2lSmivyNYQE3YZ/HBd/JcWReTIEMrlJr7347bCqOA4\nDW3F6CfQqcapM+vmMITyhi91meaeCJRo+O3rCW9+pyJXfbtYETr2Cw7X2ojC\n6yCs+4L6TAP18TIQDvhEXe5Jad2hJEIQQsl+CrpHUZe2YYjMd/v6wvWOzKBj\ncNhymmNUfpx4jSYPTF+tAPu/jhFKIw8NPGlQKoKa24OkR91xQvnUz/W6j+Tc\n/nuGd5MVS2e5LdCSA4ApTVcAuFe3tz7RKqLdgYIkWlMFRa5LHtI9ZsZqq6jr\nq6hx\r\n=hgak\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCctZWLHH+ltsCMU2/uAN1uVdErI1dCgdJjaFVeRI4cMwIgaWcDhhMyDo+HJhlMcXX+sFEOaUqyXwjgCi+zQLHezqg="}]},"maintainers":[{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"}],"_npmUser":{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/clean-set_1.1.2_1589520612313_0.8476372118020261"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-06T05:51:33.944Z","0.0.1":"2018-06-06T05:51:34.072Z","modified":"2022-04-12T06:37:49.408Z","1.0.0":"2018-06-06T07:16:33.046Z","1.1.0":"2018-06-21T21:39:07.846Z","1.1.1":"2019-03-17T03:21:27.552Z","1.1.2":"2020-05-15T05:30:12.533Z"},"maintainers":[{"name":"fwilkerson","email":"frank.wilkerson@outlook.com"}],"description":"A fast deep assignment alternative to the object spread operator and Object.assign","homepage":"https://github.com/fwilkerson/clean-set#readme","keywords":[],"repository":{"type":"git","url":"git+https://github.com/fwilkerson/clean-set.git"},"author":{"name":"Frank A. Wilkerson"},"bugs":{"url":"https://github.com/fwilkerson/clean-set/issues"},"license":"MIT","readme":"# clean-set\r\n\r\n[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\r\n[![Build Status](https://travis-ci.org/fwilkerson/clean-set.svg?branch=master)](https://travis-ci.org/fwilkerson/clean-set)\r\n[![codecov](https://codecov.io/gh/fwilkerson/clean-set/branch/master/graph/badge.svg)](https://codecov.io/gh/fwilkerson/clean-set)\r\n\r\n> Quickly update a value in a deeply nested object and clone each node touched for simple change tracking `===`.\r\n\r\nCheck out [dset](https://github.com/lukeed/dset) if you just want to do an in place mutation on a deeply nested value.\r\n\r\n## Install\r\n\r\n> npm i clean-set\r\n\r\nIncludes builds for commonjs, umd, and esm and is less than ~~200b~~ 182b gzip (thanks to [@lukeed](https://github.com/lukeed))\r\n\r\n## Usage\r\n\r\n```javascript\r\nlet current = {\r\n  a: { b: [], c: true },\r\n  d: [],\r\n  e: {\r\n    f: { g: 'hello' },\r\n    h: { i: 0 },\r\n  },\r\n};\r\n\r\nlet next = cleanSet(current, 'e.h.i', 1);\r\n\r\n/**\r\n * Alternatively you can provide a function for the final parameter to\r\n * receive the current value of that node.\r\n *\r\n * let next = cleanSet(current, 'e.h.i', i => i + 1);\r\n */\r\n\r\n// The value is assigned\r\nconsole.log(next.e.h.i !== current.e.h.i); // true\r\n\r\n// Each parent node touched is a new reference\r\nconsole.log(next.e.h !== current.e.h); // true\r\nconsole.log(next.e !== current.e); // true\r\nconsole.log(next !== current); // true\r\n\r\n// Untouched references remain the same\r\nconsole.log(next.e.f === current.e.f); // true\r\nconsole.log(next.a === current.a); // true\r\nconsole.log(next.a.b === current.a.b); // true\r\nconsole.log(next.d === current.d); // true\r\n```\r\n\r\nHere's what an object spread equivalent would look like.\r\n\r\n```javascript\r\nlet next = {\r\n  ...current,\r\n  e: {\r\n    ...current.e,\r\n    h: { ...current.e.h, i: 1 },\r\n  },\r\n};\r\n```\r\n\r\n## Benchmarks\r\n\r\nCheck out the [es bench link](https://esbench.com/bench/5b16f1cbf2949800a0f61cf2) to run the benchmarks yourself.\r\n\r\n> Note: YMMV canary and firefox dev have some impressive improvements for object assign and object spread respectively.\r\n\r\nChrome 67\r\n\r\n<img src=\"./assets/chrome_67.png\">\r\n","readmeFilename":"README.md"}