{"_id":"@risingstack/nx-observe","_rev":"35-2bea276752563a4a1bd8ee4635dded4a","name":"@risingstack/nx-observe","description":"Powerful data observation/binding with ES6 Proxies.","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@risingstack/nx-observe","version":"1.0.0","description":"Powerful data observation/binding without special syntax.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"b0d59e44b250be4631c4c3de55961e33b2bcbaf2","_id":"@risingstack/nx-observe@1.0.0","_shasum":"3f419b240023aed61b7e70a28afe4749030d082d","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},"dist":{"shasum":"3f419b240023aed61b7e70a28afe4749030d082d","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-1.0.0.tgz","integrity":"sha512-OKzBHNO542efSLRCxmnQ2KCGAogwUjUVIIKJhuRS/xlRaplMzpE5m/m1tY2dBJWjouJmG8Zw2JASL6HzXQj4ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLCehA6dz6Qrw6YoycjTss6sL7ycaRPiE2y+Tg4MSSeAIgJxkMW4jy4rs2CcWzMhdm8g8kKlkuFSRZxMoJIpyM4L0="}]},"maintainers":[{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-1.0.0.tgz_1465317814304_0.2283433829434216"},"directories":{}},"1.0.1":{"name":"@risingstack/nx-observe","version":"1.0.1","description":"Powerful data observation/binding without special syntax.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"f2d310315bc96bea88d6dbc4e1cb0fa9f23f1255","_id":"@risingstack/nx-observe@1.0.1","_shasum":"2af5c251cd7b77dc8c95ce7f2a2e039d074b5f08","_from":".","_npmVersion":"3.8.9","_nodeVersion":"4.2.6","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},"dist":{"shasum":"2af5c251cd7b77dc8c95ce7f2a2e039d074b5f08","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-1.0.1.tgz","integrity":"sha512-evc4zDWoUY0983ZwlSvmkznfOA9WLeiSNOidu0daziZYVdBP9UnrsxFdkJIcAwFNTMydHVqhxTSEtBqiD2O/Jw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFoXmcUd2omuHEmhKQ1wXICGqJFePIdXrBIIorTseHc+AiBydsh0msnHfwYvKkbMgjKSkgL/l9+ZdmPmLlScACy4BA=="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-1.0.1.tgz_1466201290295_0.5758526909630746"},"directories":{}},"1.0.2":{"name":"@risingstack/nx-observe","version":"1.0.2","description":"Powerful data observation/binding without special syntax.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"d42c82225cd6998db32a082e335f12dc46d58798","_id":"@risingstack/nx-observe@1.0.2","_shasum":"c51d9edbd9747a852f8bd0335125d4ee612230b8","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},"dist":{"shasum":"c51d9edbd9747a852f8bd0335125d4ee612230b8","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-1.0.2.tgz","integrity":"sha512-INBzggxkLtwQqhjE/uhBVJ/utCfkhWb3RRPA2/2Wl+lX4ZEywtoF/BvpeIAVyakjydGennthu1LADXLAO77H7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC17Hr8/7249BqDKTQ3VLBP3O0du0wrmvUvm5jz2aemeQIgMru8t/fTpQgK6oCNMwnAyulxllI1mhDLGEJ6U1iY3GI="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-1.0.2.tgz_1467052139895_0.778437263565138"},"directories":{}},"1.0.3":{"name":"@risingstack/nx-observe","version":"1.0.3","description":"Powerful data observation/binding without special syntax.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"3acfe04c8abe4781c165a3486a79bfb429789b5e","_id":"@risingstack/nx-observe@1.0.3","_shasum":"a89ee3b2e04cd5d1f256fe42de686ef3eedd6d63","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},"dist":{"shasum":"a89ee3b2e04cd5d1f256fe42de686ef3eedd6d63","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-1.0.3.tgz","integrity":"sha512-gAghqEF4eIWgRv+nheGMk2w+gNC+PpHxgmBV3xj4bhjxR8BWWkvbFul/cSQM5L7jOO6q1AoGVnRHHpIs31ti9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCX4ZU09O2IqnBdMfGDKkF+53buGjA0K9MOFdm/werWEgIhANf+W8AeJibWGxOL7oumQGKLv1SyLhg9SarTumc1hOnh"}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-1.0.3.tgz_1467578355442_0.26276910584419966"},"directories":{}},"1.1.0":{"name":"@risingstack/nx-observe","version":"1.1.0","description":"Powerful data observation/binding without special syntax.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"0e896244984552207bcb9f398c101a94e46ac7ff","_id":"@risingstack/nx-observe@1.1.0","_shasum":"72b648b6fdb19ee906319a6d7e515387964fabab","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"72b648b6fdb19ee906319a6d7e515387964fabab","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-1.1.0.tgz","integrity":"sha512-G+cYywU54STyHm89Gu/lR6QOTdFNyeYOcSfKfTxtWSzLfUMA0D1dZ8nIpavK6EAsbUvyY//SMSsel5CjMNk0SQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAxZ4oOqAYgDfda1oDxMWr89FlQFcc+bg301SHRPQTL9AiBknDsno0paypBdiG+aqd80bAK+9RMjuhf8D4a6tnJXZw=="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-1.1.0.tgz_1476806274700_0.8599051248747855"},"directories":{}},"1.1.1":{"name":"@risingstack/nx-observe","version":"1.1.1","description":"Powerful data observation/binding without special syntax.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"15b08eca0185904a9a6ae9f45f5d6e67fb2f0cdd","_id":"@risingstack/nx-observe@1.1.1","_shasum":"80d65d4acf4d7989aeb99329ec6a3e222388843c","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"80d65d4acf4d7989aeb99329ec6a3e222388843c","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-1.1.1.tgz","integrity":"sha512-cb54sXkmMhVsMzA9vEVk0irph/6Mt63DhfX3HwYzITFRNKmBIyuJmJpxDclCuA8muo8X5xGU/R8FuNbsGqUO9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAUjEjHhWD4acYV56gVHowheDYuY6NDW3SPKUm+9TsUIAiEAmkCuUX+OEEEzP4FwOHxpsnU0abNJTctWjGORSUxk6J8="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/nx-observe-1.1.1.tgz_1476946225905_0.29227803531102836"},"directories":{}},"2.0.0":{"name":"@risingstack/nx-observe","version":"2.0.0","description":"Powerful data observation/binding with ES6 Proxies.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"57778b4cbf5ef87b0c4e98c830aa74152faa1012","_id":"@risingstack/nx-observe@2.0.0","_shasum":"f0747910efef672c18802306e3fb9648c82f55a4","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"f0747910efef672c18802306e3fb9648c82f55a4","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-2.0.0.tgz","integrity":"sha512-dN8TwqIHCytGNfz9/+A/P+6CH/9Dy15v08BH8pvQrTB8eurdg96IrEJxdJboAIR8FyFmDN13Sn5bqv/82tfjdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKufpTFjJIM/MbN+thIqbz3Pari6JyS3QhkpW/DK68hgIhAOGWgnSS50dZBVd+Cc/3Ws+gRhjPHYBXBbj7fchiQwv6"}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/nx-observe-2.0.0.tgz_1479841750030_0.24268658692017198"},"directories":{}},"2.0.1":{"name":"@risingstack/nx-observe","version":"2.0.1","description":"Powerful data observation/binding with ES6 Proxies.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"06ef9b4337be7e74c25700309cd1ec1ab6d6fe65","_id":"@risingstack/nx-observe@2.0.1","_shasum":"41fc3cf383a3411873ab73e268df16a3fa5995a1","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"41fc3cf383a3411873ab73e268df16a3fa5995a1","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-2.0.1.tgz","integrity":"sha512-McjJWYSa7qONmjpxMVIk1iy0x5B9Qu/LCvZ3EKG5bxuN/7n7OjacdiSznJki5Sy9jkGPvozOwOlMxUMJcpnePg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOQbL0XGzNyyk6ZZ4VXfpoywUVU5WvOWFp6hOz3gii6wIgYsVKKJft/g5lzwD+f5UqDt95T7j4xZnfTkHtIedUGEs="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-2.0.1.tgz_1479939228435_0.6606627157889307"},"directories":{}},"2.0.2":{"name":"@risingstack/nx-observe","version":"2.0.2","description":"Powerful data observation/binding with ES6 Proxies.","main":"observer.js","scripts":{"test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","standard":"7.1.2","pre-push":"0.1.1"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"6cd6322453c8412b36e9f7c9dd051625e76623e0","_id":"@risingstack/nx-observe@2.0.2","_shasum":"3ec307687f3e114cf693b67072d579efcbf640fa","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"3ec307687f3e114cf693b67072d579efcbf640fa","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-2.0.2.tgz","integrity":"sha512-YsxJY+6wNGySTVYeA4dpoqHGL2SOft35XRMjYZnFYwyWXMvp8ed4JSn+KejFVURVGsL5XfjNpSYfkFLqLCUPvw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcwQfufh++uh7pzcFmQ7bjeFT+1tkb45eIbfhT/VDwMAIgOENs5cW3IsklFFpcHfiSG2bwFHmETSIIxeBTPQpgMsE="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/nx-observe-2.0.2.tgz_1480016292162_0.8845336886588484"},"directories":{}},"2.0.3":{"name":"@risingstack/nx-observe","version":"2.0.3","description":"Powerful data observation/binding with ES6 Proxies.","main":"observer.js","scripts":{"build-benchmark":"brew install pkg-config cairo pango libpng jpeg giflib && npm i canvas nchart mobx","benchmark":"node benchmark","test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","pre-push":"0.1.1","standard":"7.1.2"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"2970c299c5ab199a7b56c1c256108d3cab8c01ed","_id":"@risingstack/nx-observe@2.0.3","_shasum":"ad4f5b8cbb5d115910133a085e9ec8b9e5ea1b81","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"ad4f5b8cbb5d115910133a085e9ec8b9e5ea1b81","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-2.0.3.tgz","integrity":"sha512-zTyd3gcgFxiDYAYCpWQLmOyNoxcbFvVjBpR7RWYga7+YhUChghupjbVcHg8CCRa9brAsJrCHO26pgsgx7JYyiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqBdi+i40qak60TmqcffJCrr7VyiLcOgvXRP8emiiXQAIhAIzjCu+3np8y6LycWAQbeNMom82YeT09HEV/ef0UdXDB"}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-2.0.3.tgz_1481218221618_0.029124091612175107"},"directories":{}},"2.0.4":{"name":"@risingstack/nx-observe","version":"2.0.4","description":"Powerful data observation/binding with ES6 Proxies.","main":"observer.js","scripts":{"build-benchmark-mac":"brew install pkg-config cairo pango libpng jpeg giflib && npm i canvas nchart mobx","build-benchmark-ubuntu":"sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++ && npm i canvas nchart mobx","benchmark":"node benchmark","test":"mocha observer.test.js","lint":"standard observer.js"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","pre-push":"0.1.1","standard":"7.1.2"},"engines":{"node":">=6.0.0"},"pre-push":["lint","test"],"gitHead":"0b486eaf9ddafbbb14c27932690f4a9604923c04","_id":"@risingstack/nx-observe@2.0.4","_shasum":"397918d3334fafbfd410f83bde5dd4be2e0e7964","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"397918d3334fafbfd410f83bde5dd4be2e0e7964","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-2.0.4.tgz","integrity":"sha512-s7VNbPnJpD2pwAIAEOm2+aAZxGwt17CCaqegPlX5o604o6YV2Jt5YFlRNYKqV2wjMVVDpfNDyKy5HX+RobKOqw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFtlZbHQxParCvyS1l67tkVG9Ph/HaKJsuDsHY2bqwb8AiEA6xj6LtcOgzVU2hsH9EJ7/q6Ulk6Zhyc9RewEBYw623g="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-2.0.4.tgz_1481555796295_0.7351053634192795"},"directories":{}},"2.0.5":{"name":"@risingstack/nx-observe","version":"2.0.5","description":"Powerful data observation/binding with ES6 Proxies.","scripts":{"build-benchmark-mac":"brew install pkg-config cairo pango libpng jpeg giflib && npm i canvas nchart mobx","build-benchmark-ubuntu":"sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++ && npm i canvas nchart mobx","benchmark":"node benchmark/benchmark","test":"mocha test","lint":"standard"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","pre-push":"0.1.1","standard":"7.1.2"},"engines":{"node":">=6.0.0"},"standard":{"ignore":["test","benchmark"],"globals":["MutationObserver"]},"pre-push":["lint","test"],"gitHead":"d40bfeac303e6f7c67f05a73d633272d55da81da","_id":"@risingstack/nx-observe@2.0.5","_shasum":"f6dc6b5dbe41290a933a2c8f8c7f4b76cf536ee0","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"f6dc6b5dbe41290a933a2c8f8c7f4b76cf536ee0","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-2.0.5.tgz","integrity":"sha512-Xz01IrsdPpxRRYS2El+kZgMHW76esVtVyebk20iXowEPaFei5SnimPUj/+SGM63R8xn51b+7U/8Y0kCSReNL4g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4zkMNABrXxCns2CBq30tmwjH6sOdKEIxC2Uv3vkc71QIgetHdKKoGQ/qT69KnSHr3hnHBDHdKiIki05mFKTMVT/g="}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/nx-observe-2.0.5.tgz_1481903295616_0.36289606778882444"},"directories":{}},"3.0.0":{"name":"@risingstack/nx-observe","version":"3.0.0","description":"Powerful data observation/binding with ES6 Proxies.","scripts":{"build-benchmark-mac":"brew install pkg-config cairo pango libpng jpeg giflib && npm i canvas nchart mobx","build-benchmark-ubuntu":"sudo apt-get install libcairo2-dev libjpeg8-dev libpango1.0-dev libgif-dev build-essential g++ && npm i canvas nchart mobx","benchmark":"node benchmark/benchmark","test":"mocha test","lint":"standard"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"homepage":"https://github.com/RisingStack/nx-observe#readme","license":"MIT","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"devDependencies":{"chai":"3.5.0","mocha":"2.5.3","pre-push":"0.1.1","standard":"7.1.2"},"engines":{"node":">=6.0.0"},"standard":{"ignore":["test","benchmark"],"globals":["MutationObserver"]},"pre-push":["lint","test"],"gitHead":"e27c8f4685f47512da4e8f0a9082903a3ede2276","_id":"@risingstack/nx-observe@3.0.0","_shasum":"f5d5066c179c5f3752604e72166fe524c4aa47fe","_from":".","_npmVersion":"3.8.9","_nodeVersion":"6.2.0","_npmUser":{"name":"solkimicreb","email":"miklos.bertalan@risingstack.com"},"dist":{"shasum":"f5d5066c179c5f3752604e72166fe524c4aa47fe","tarball":"https://registry.npmjs.org/@risingstack/nx-observe/-/nx-observe-3.0.0.tgz","integrity":"sha512-QOie2QpXgBt6WN8dNQb5YN/T2vGC+0Vay69/42qGDSlfDr3qB8yUQ+2PbEuxyp0WWEu40ELVmA0fWETX1im6vQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSZTIP+siucXEFAN6pxZPs5VlEzupeIpmAQqN2ncg78wIhAMORpYjCGSp+i88PLjzcJll/FtJ0dJGgo5O5IF/fpHuO"}]},"maintainers":[{"name":"abelerdesz","email":"abelerdesz@gmail.com"},{"name":"aodev","email":"kevin.purnelle@gmail.com"},{"name":"gergelyke","email":"mail@nemethgergely.com"},{"name":"hekike","email":"peter@risingstack.com"},{"name":"midiparse","email":"david.szakallas@gmail.com"},{"name":"ozonid","email":"david@risingstack.com"},{"name":"peteyycz","email":"p.czibik@gmail.com"},{"name":"risingnpm","email":"info@risingstack.com"},{"name":"shadowbeetle","email":"tamas.kadlecsik@gmail.com"},{"name":"solkimicreb","email":"miklos.bertalan1@gmail.com"},{"name":"tamas.hodi","email":"tamas.hodi89@gmail.com"},{"name":"tothandras","email":"andras.toth@risingstack.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/nx-observe-3.0.0.tgz_1482279442456_0.43232440226711333"},"directories":{}}},"readme":"# nx-observe\n\nThis library is part of the [NX framework](http://nx-framework.com).\n\nThe purpose of this library is to allow powerful data observation/binding without any special syntax.\nIt uses ES6 Proxies internally to create seamless data binding with a minimal interface.\nA more detailed blog post about this library can be found\n[here](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/).\n\n## Installation\n\n```\n$ npm install @risingstack/nx-observe\n```\n\n## Platform support\n\n- Node: 6 and above\n- Chrome: 49 and above (after browserified)\n- Firefox: 38 and above (after browserified)\n- Safari: 10 and above (after browserified)\n- Edge: 12 and above (after browserified)\n- Opera: 36 and above (after browserified)\n- IE is not supported\n\n## Usage\n\n```js\nconst observer = require('@risingstack/nx-observe')\n```\n\n## API\n\n### observer.observable([Object])\n\nThis method creates and returns an observable object. If an object is passed as argument\nit wraps the passed object in an observable.\n\n```js\nconst observable = observer.observable({prop: 'someValue'})\n```\n\n### const signal = observer.observe(function, [context], ...[args])\n\nThis method observes a function. An observed function automatically reruns when a property of an\nobservable, which is used by the function changes (or is deleted). The function doesn't run\nimmediately on property change, instead it runs after a small delay (when the current stack empties).\nMultiple synchronous changes won't cause the function to run multiple times. Changes that result in\nno value change (`state.prop = state.prop`) won't cause the function to run either.\nThe function can observe any synchronous javascript code (nested data, iterations, function calls,\ngetters/setters, etc.)\n\n`observe()` returns a signal, which can later be used to stop the observation. This is similar to\nthe `const signal = setTimeout()`, `clearTimeout(signal)` pair.\n\n```js\nconst signal = observer.observe(() => console.log(observable.prop))\n```\n\nA `this` context and a list of argument can be passed after the observed function as arguments.\nIn this case the observed function will always be called with the passed `this` context\nand arguments.\n\n```js\nobserver.observe(printSum, context, arg1, arg2)\n\nfunction printSum (arg1, arg2) {\n  console.log(arg1 + arg2)\n}\n```\n\n### const signal = observer.queue(function, [context], ...[args])\n\nThis method queues a function to be executed together with the currently triggered observed functions. `queue()` returns a signal, which can later be used to remove the function from the queue.\n\n```js\nconst signal = observer.queue(() => console.log(observable.prop))\n```\n\nA `this` context and a list of argument can be passed after the queued function as arguments.\nIn this case the queued function will be called with the passed `this` context and arguments.\n\n```js\nobserver.queue(printSum, context, arg1, arg2)\n\nfunction printSum (arg1, arg2) {\n  console.log(arg1 + arg2)\n}\n```\n\n### observer.unobserve(signal)\n\nIf unobserves the observed or queued function associated with the assed signal.\nUnobserved functions won't be rerun by observable changes anymore.\n\n```js\nconst signal = observer.observe(() => console.log(observable.prop))\nobserver.unobserve(signal)\n```\n\n### observer.isObservable(Object)\n\nReturns true if the passed object is an observable, otherwise returns false.\n\n```js\nconst observable = observer.observable()\nconst isObservable = observer.isObservable(observable)\n```\n\n## Example\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\n// creating two observable objects\nconst observable1 = observer.observable({num: 0})\nconst observable2 = observer.observable({num: 0})\n\n// outputs 0 to the console after the stack empties\n// the arguments are: observer func, observer func 'this' context, observer func arguments\nconst signal = observer.observe(printSum, undefined, observable1, observable2)\n\nfunction printSum (obj1, obj2) {\n  console.log(obj1.num + obj2.num)\n}\n\n// outputs 2 to the console\nsetTimeout(() => observable1.num = 2, 100)\n\n// outputs 7 to the console\nsetTimeout(() => observable2.num = 5, 200)\n\n// finish observing\nsetTimeout(() => observer.unobserve(signal), 300)\n\n// observation is finished, doesn't trigger printSum, outputs nothing to the console\nsetTimeout(() => observable1.num = 6, 400)\n```\n\n## Features and edge cases\n\n#### observable argument cases\n\nIf an observable is passed as argument to the observer.observable method, it simply returns the passed observable. If you pass the same object into different observer.observable calls, it always returns the same observable instance.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst obj = {prop: 'value'}\nconst observable1 = observer.observable(obj)\nconst observable2 = observer.observable(obj)\nconst observable3 = observer.observable(observable1)\n\n// these output 'true' to the console\nconsole.log(observable1 === observable2)\nconsole.log(observable2 === observable3)\n```\n\n#### when does the observed function run\n\nAnd observer runs after every stack in which the observable properties used by it changes value.\nAn observer runs maximum once per stack. Multiple synchronous changes of the observable\nproperties won't trigger it more than once. Setting on observable property without a value change\nwon't trigger it either.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable = observer.observable({prop: 'value'})\n\n// outputs 'value' to the console after the stack empties\nobserver.observe(() => console.log(observable.prop))\n\n// causes only 1 rerun, outputs 'newer value' to the console\nsetTimeout(() => {\n  observable.prop = 'new value'\n  observable.prop = 'newer value'\n})\n\n// causes no rerun (the value did not change), doesn't trigger console.log\nsetTimeout(() => observable.prop = 'newer value', 100)\n```\n\n#### observing expando properties\n\nExpando (dynamically added) properties can be observed without any special syntax.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable = observer.observable()\n\n// outputs 'undefined' to the console after the current stack empties\nobserver.observe(() => console.log(observable.expando))\n\n// outputs 'dynamically added prop' to the console\nsetTimeout(() => observable.expando = 'dynamically added prop', 100)\n```\n\n#### observing conditionals\n\nAny synchronous JavaScript code can be observed. This includes code 'hidden behind' conditionals or loops.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable = observer.observable({\n  condition: true,\n  prop1: 'prop1',\n  prop2: 'hidden'\n})\n\n// outputs 'prop1' to the console after the current stack empties\nobserver.observe(() => console.log(observable.condition ? observable.prop1 : observable.prop2))\n\n// outputs 'hidden' to the console\nsetTimeout(() => observable.condition = false, 100)\n\n// outputs 'but tracked' to the console\nsetTimeout(() => observable.prop2 = 'but tracked', 200)\n```\n\n#### observing nested properties\n\nObserving nested properties works with arbitrary depth.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable = observer.observable({prop: {nested: 'nestedValue'}})\n\n// outputs 'nestedValue' to the console after the current stack empties\nobserver.observe(() => console.log(observable.prop.nested))\n\n// outputs 'otherValue' to the console\nsetTimeout(() => observable.prop.nested = 'otherValue', 100)\n```\n\n#### observing implicit properties\n\nThe library also observes implicit properties. Implicit properties are not directly used\nby your code, but by native function implementations for example.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable = observer.observable({words: ['Hello', 'World']})\n\n// outputs 'Hello World' to the console after the current stack empties\nobserver.observe(() => console.log(observable.words.join(' ')))\n\n// outputs 'Hello World !' to the console\nsetTimeout(() => observable.words.push('!'), 100)\n\n// outputs 'Hello There !' to the console\nsetTimeout(() => observable.words.splice(1, 1, 'There'), 200)\n```\n\n#### observing inherited properties\n\nYou can use prototypal inheritance with observables.\nThe library walks and observes the prototype chain correctly.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst parentObservable = observer.observable({greeting: 'Hello'})\nconst observable = observer.observable({subject: 'World!'})\n\nObject.setPrototypeOf(observable, parentObservable)\n\n// outputs 'Hello World' to the console after the current stack empties\nobserver.observe(() => console.log(observable.greeting + ' ' + observable.subject))\n\n// outputs 'Hello There!' to the console\nsetTimeout(() => observable.subject = 'There!')\n\n// outputs 'Hey There!' to the console\nsetTimeout(() => parentObservable.greeting = 'Hey', 100)\n\n// outputs 'Look There!' to the console\nsetTimeout(() => observable.greeting = 'Look', 200)\n\n// outputs 'Hey There!' to the console\nsetTimeout(() => delete observable.greeting, 300)\n```\n\n#### observing getters/setters\n\nComputed getters/setter properties of observables will be correctly observed by observer functions.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable = observer.observable({\n  num1: 0,\n  num2: 0,\n  get sum () { return this.num1 + this.num2 },\n  set sum (value) {\n    this.num1 = value / 2\n    this.num2 = value / 2\n  }\n})\n\n// outputs 0  to the console after the current stack empties\nobserver.observe(() => console.log(observable.sum))\n\n// outputs 1 to the console\nsetTimeout(() => observable.num1 = 1)\n\n// outputs 4 to the console\nsetTimeout(() => observable.num2 = 3, 100)\n\n// changes num1 and num2 to 3, outputs 6 the console\nsetTimeout(() => observable.sum = 6, 200)\n```\n\n#### two way binding\n\nEvery observed function is guaranteed to run maximum once per stack.\nAsynchronous infinite loops are also handled and avoided by the library.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst observable1 = observer.observable({prop: 'value1'})\nconst observable2 = observer.observable({prop: 'value2'})\n\nobserver.observe(() => observable1.prop = observable2.prop)\nobserver.observe(() => observable2.prop = observable1.prop)\n\nsetTimeout(() => observable1.prop = 'Hello')\n// outputs 'Hello' to the console\nsetTimeout(() => console.log(observable2.prop), 100)\n\nsetTimeout(() => observable2.prop = 'World', 200)\n// outputs 'World' to the console\nsetTimeout(() => console.log(observable1.prop), 300)\n```\n\n#### selective observation\n\nSometimes you might want a certain set operation to not trigger observers, or a certain\nobservable property to not be observed by the observer function. In this case you should\nuse `observable.$raw`, which is the exposed raw (unwrapped) object behind the observable.\nThis object will not cause any observers to be triggered or registered.\n\n```js\nconst observer = require('@risingstack/nx-observe')\n\nconst person = observer.observable({\n  name: 'John',\n  age: 25\n})\n\n// outputs 'name: John, age: 25' to the console after the current stack empties\nobserver.observe(() => console.log(`name: ${person.name}, age: ${person.$raw.age}`))\n\n// will not cause a rerun, since the observer only uses person.$raw.age\n// outputs nothing to the console\nsetTimeout(() => person.age = 30)\n\n// outputs 'name: Bill, age: 30' to the console\nsetTimeout(() => person.name = 'Bill', 100)\n\n// will not cause a rerun, since it only modifies person.$raw\n// outputs nothing to the console\nsetTimeout(() => person.$raw.name = 'Anne', 200)\n```\n\n## Performance\n\nThis [benchmark](/benchmark/benchmark.js) compares vanilla JS, [MobX](http://mobxjs.github.io) and nx-observer\nin a few scenarios. You can set it up locally with the `npm run build-benchmark-mac` or\n`npm run build-benchmark-ubuntu` command (depending on your OS) and run it\nwith `npm run benchmark`. The result on a MacBook Pro with Node 6.2.0 can be seen below.\n\n![Benchmark result](/benchmark/benchmark.png)\n\n- The first two tests compare NX and MobX observable creation cost with plain JS object creation.\nIn case of MobX the overhead grows with the number of properties.\n\n- 'Dynamic property addition' tests the cost of adding expando properties to a plain object or an\nobservable without any observer/listener function registered for the observable.\nMobX requires the special `mobx.extendObservable(obj, { prop: 'value' })` syntax\ninstead of `obj.prop = 'value'`.\n\n- 'Get and set operation' test the cost of get/set operations of a plain object or an\nobservable without any observer/listener function registered for the observable.\n\n- 'Function creation' tests the cost of vanilla JS function creation versus `mobx.autorun(newFn)`\nand `nx.observe(newFn)`.\n\n- 'Function trigger' tests the cost of registering observable property mutations\nand running appropriate observer/listener functions.\n\n- 'Function cleanup' tests the cost of disposing observer/listener functions with `disposeFn()`\nor `nx.unobserve(fn)`.\n\nDo not worry about the large difference between the vanilla and nx-observe / MobX results.\nThe operations tested above are some of the fastest ones in vanilla JS. The overhead would be a\nlot smaller compared to some commonly used built in objects, like Promises.\n\n## Contributions\n\nThis library has the very specific purpose of supporting the\n[NX framework](https://github.com/RisingStack/nx-framework).\nFeatures should only be added, if they are used by the framework. Otherwise please fork.\n\nBug fixes, tests, benchmark corrections and doc updates are always welcome.\nTests and linter (standardJS) must pass.\n\n## Authors\n\n  - [Miklos Bertalan](https://github.com/solkimicreb)\n\n# License\n\n  MIT\n","maintainers":[{"email":"kubischj@windowslive.com","name":"kubischj"},{"email":"fwalkwithm@gmail.com","name":"fwalkwithm"},{"email":"david@risingstack.com","name":"ozonid"},{"email":"simonzsoltjota@gmail.com","name":"jota"},{"email":"dandesz198@gmail.com","name":"dandesz198"},{"email":"diana.pal@risingstack.com","name":"paldiana01"},{"email":"info@risingstack.com","name":"risingnpm"},{"email":"mail@nemethgergely.com","name":"gergelyke"},{"email":"email@martonpeter.com","name":"hekike"},{"email":"p.czibik@gmail.com","name":"peteyycz"},{"email":"tamas.hodi89@gmail.com","name":"tamas.hodi"},{"email":"miklos.bertalan@risingstack.com","name":"solkimicreb"}],"time":{"modified":"2022-06-12T23:14:47.549Z","created":"2016-06-07T16:43:36.685Z","1.0.0":"2016-06-07T16:43:36.685Z","1.0.1":"2016-06-17T22:08:12.694Z","1.0.2":"2016-06-27T18:29:02.110Z","1.0.3":"2016-07-03T20:39:17.837Z","1.1.0":"2016-10-18T15:57:56.804Z","1.1.1":"2016-10-20T06:50:26.579Z","2.0.0":"2016-11-22T19:09:10.636Z","2.0.1":"2016-11-23T22:13:50.640Z","2.0.2":"2016-11-24T19:38:12.838Z","2.0.3":"2016-12-08T17:30:23.896Z","2.0.4":"2016-12-12T15:16:38.470Z","2.0.5":"2016-12-16T15:48:17.750Z","3.0.0":"2016-12-21T00:17:23.150Z"},"homepage":"https://github.com/RisingStack/nx-observe#readme","keywords":["nx","observe","observable","data","binding","proxy","ES6","reactive"],"repository":{"type":"git","url":"git+ssh://git@github.com/RisingStack/nx-observe.git"},"author":{"name":"Miklos Bertalan","email":"miklos.bertalan@risingstack.com"},"bugs":{"url":"https://github.com/RisingStack/nx-observe/issues"},"license":"MIT","readmeFilename":"README.md"}