{"_id":"graft","_rev":"33-f6ed5a0ea1f7a97e95835aa45fe3ee44","name":"graft","description":"Full-Stack JavaScript Through Microservices","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"graft","description":"A library for template binding to facilitate view-first development.","version":"0.1.0","author":{"name":"Antonio Salazar Cardozo","email":"savedfastcool@gmail.com"},"main":"./lib/graft.js","engines":{"node":">= 0.4.0"},"repositories":[{"type":"git","url":"http://github.com/shadowfiend/graft.git"}],"licenses":[{"type":"MIT","url":"http://github.com/shadowfiend/graft/master/LICENSE"}],"directories":{"lib":"./lib","examples":"./examples"},"dependencies":{"jsdom":"0.2.0","coffee-script":"1.0.1"},"_id":"graft@0.1.0","_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","files":[""],"_defaultsLoaded":true,"dist":{"shasum":"be51a0a8d6dcb1162d1d4336141d7a9fe11f31b5","tarball":"https://registry.npmjs.org/graft/-/graft-0.1.0.tgz","integrity":"sha512-cw1XkrRadiSfF9NukskMeOub5M0UNaaRghmH0/uZ1E5c+peykTsrri1zcuuQ9kccZ2BzaZ7Ji85xT+YWl0PQwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHdysoTjmwazbgGZNQShN6L6u3RqnfRIIlCsmSkGmsTgIgSFsTpCEsiLf7Q1YP8AhdS9kTEVUIgZ08wB8jtJqF640="}]}},"0.0.2":{"name":"graft","version":"0.0.2","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"test":"mocha -R spec 2>&1"},"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"author":{"name":"Adrian Rossouw","email":"adrian@daemon.co.za"},"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"0.0.6","readable-stream":"^1.0.31"},"devDependencies":{"mocha":"^1.21.4","must":"^0.12.0","through2":"^0.6.1"},"gitHead":"f53a8f2564e55b584e11c82e690c385e4b6eaf48","_id":"graft@0.0.2","_shasum":"fd7edb61c7ee8e1104c8d7220f69130bb7bd1bfd","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"adrianrossouw","email":"npm@daemon.co.za"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"}],"dist":{"shasum":"fd7edb61c7ee8e1104c8d7220f69130bb7bd1bfd","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.2.tgz","integrity":"sha512-NYiBDN5Hk5PWkAPmBSchuTdiMeSKON0F8lT4HrfmIiNiN4CgEnHWDPtryCHV58cPalsS2ru/sEAl8qaOIv90wQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDmK/KR4pAd2JwEvNPTEAMTYW4n8OqJkWDyASIyUMAUdAiAXRcBljcAK1s/8cl2eTA1cdhJXBhtOOPIpAk2kW3/DDg=="}]}},"0.0.3":{"name":"graft","version":"0.0.3","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"test":"mocha -R spec 2>&1"},"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"author":{"name":"Adrian Rossouw","email":"adrian@daemon.co.za"},"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"0.1.1","readable-stream":"^1.0.31"},"devDependencies":{"mocha":"^1.21.4","must":"^0.12.0","through2":"^0.6.1"},"gitHead":"ed8e68603744437b8a2d7c7b1f3c88dd48b901d5","_id":"graft@0.0.3","_shasum":"731a7dd3c5891dd6b77d63d6baf83e5377644d99","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"731a7dd3c5891dd6b77d63d6baf83e5377644d99","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.3.tgz","integrity":"sha512-JCIs8kLG6TsiHsNfZkBqbARNlApvWwYsB8PSYqkrrYhThitrX+CqXq4upy/v+pY0/wbeCKHCdR0fGQzyyRs7HA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEGzTBR8IKL+RcEAw5VbPUipceMxX7BLrhGiZm4ZJvG1AiBZEV/HySy/Jgf1h1A2cnQearX0MG5P8tiEt310LEsUtA=="}]}},"0.0.4":{"name":"graft","version":"0.0.4","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"test":"mocha -R spec 2>&1"},"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"author":{"name":"Adrian Rossouw","email":"adrian@daemon.co.za"},"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"0.1.1","readable-stream":"^1.0.31"},"devDependencies":{"mocha":"^1.21.4","must":"^0.12.0","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"19a1cf496cd09f625d58339e68fb7cc6a34f269b","_id":"graft@0.0.4","_shasum":"36432aa79a8bab8db55c838f906d04f44d6ab3a5","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"adrianrossouw","email":"npm@daemon.co.za"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"36432aa79a8bab8db55c838f906d04f44d6ab3a5","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.4.tgz","integrity":"sha512-FRHeopZi3bi6lvIUwHrJ3hjnxNCAwUOzkR4MaIttod8P7YJ3zlHS4TcEndHvGtePkfwrJ+jRsdJ3MaaRe45YWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAS9o0g2x89nFmQVJGrFEqHb+LRv8O3FuBYBAPsVASslAiEAtwFgrjh7nfkqX9EEq65aZ7JgwUUTfdU3LejAKSkUmx0="}]}},"0.0.5":{"name":"graft","version":"0.0.5","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"author":{"name":"Adrian Rossouw","email":"adrian@daemon.co.za"},"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"0.1.1","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"0f604312f209da3ef5aeda97f95157da3af564d6","_id":"graft@0.0.5","_shasum":"de9bf863ce61a28fdda4759f94ef56650b4fe0d6","_from":".","_npmVersion":"1.4.14","_npmUser":{"name":"adrianrossouw","email":"npm@daemon.co.za"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"de9bf863ce61a28fdda4759f94ef56650b4fe0d6","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.5.tgz","integrity":"sha512-+nyYxb9C4fYQOT6fRrjZu3TVbxJHDEWeLhFE4ZlF5vRshDsu7/1737O/hNklugbtReeaR8WfcauXxmU+ofRKZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAyy12hovJzoJEH6qvmXAi6F76yZYrne6VV9v8Rj0IYQAiEAuR0o2IovglLMugQ5GkWnEK1Nbxs4EtuLjV7N/OhPSWE="}]}},"0.0.6":{"name":"graft","version":"0.0.6","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"0.1.2","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"7e87700f065f8a7c3ce5147ce472372f1893e50e","_id":"graft@0.0.6","_shasum":"d8cf427e091795f5c800432c073b03935abc9a45","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"d8cf427e091795f5c800432c073b03935abc9a45","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.6.tgz","integrity":"sha512-KAYVjsgBu1wRGOfDwhpmKaWeWVOr/eXR6H8Bil7W2F16jNyYgH9SYL8f5T056JNR1ZnxPHFaa/sAMTGqlJuJ9A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxnb+a0Qw3bm/gwlM25kqtFiBEfOLlsuXrBQmuDoHtKwIhAIJIQ7iezjp1bS7CnrZjdNYv6kDJx553grYnD44M7AQQ"}]}},"0.0.7":{"name":"graft","version":"0.0.7","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"^0.1.3","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"cd24a4303ae23c471ecbcccb3e6828714bb2a966","_id":"graft@0.0.7","_shasum":"311c9ab3ce075c9d62d72da069b0956bdbf64e54","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"311c9ab3ce075c9d62d72da069b0956bdbf64e54","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.7.tgz","integrity":"sha512-AjHN03JvBO4oJ8tfsn8LK8xgzVUucjeuUcEBUjZWLwo//Nw90EEec9VYUYiOcBjQGAfiDCZTEqAvaTqqcssxZw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCk0jnHe+62P5DEdpsNx2POqZVIJnzxS5IElZaZfaQrBwIhAN1Ul/HI9Kxo/5NLfhW3C4zIoFD0gUvnk5FXegebds6i"}]}},"0.0.8":{"name":"graft","version":"0.0.8","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"^0.1.3","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"b44d7cda3920d6d2ed8646c340f1ee94d6ee18eb","_id":"graft@0.0.8","_shasum":"e5506c2cb8323b0f8055f965c9b07bc1cddfac1b","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"e5506c2cb8323b0f8055f965c9b07bc1cddfac1b","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.8.tgz","integrity":"sha512-bD9EKmFL7GGmcF7ISsEp44TQ75XqMDZgUYxEffsBJviW8N0gr67p39WDYN1uUjbjn0ejFr8sGbXGtZYPl3O4IQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBU3u527OWmGIoTDl0jz+0ALJGJs0yQZyG3UnyqEmW8eAiA3lWrjvcjyNFLGbO6pDMYk5LmyuA6UcuccBQsYOknvMQ=="}]}},"0.0.9":{"name":"graft","version":"0.0.9","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"^0.1.4","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"4f85563f2b124dc90f88f0fb9342483a24a22c97","_id":"graft@0.0.9","_shasum":"7cc07e474f7677760723ef7f9724c4169c61045a","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"7cc07e474f7677760723ef7f9724c4169c61045a","tarball":"https://registry.npmjs.org/graft/-/graft-0.0.9.tgz","integrity":"sha512-3Q01ZhAJp2RDGcjAQN+/uOum+AfvZH51/CUy+52ihpQ14s5rtv8HEHODZAwY+GV3lpEyRd7TCyfdQWf4yWqnSQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGDNxJJH7UUME/uQBiW3M9Hb+EkzOr6FKr69UEIIw/xgIhAJ1+/+2Lwt1kYS6pOxKDMUV4aWM2EuWOANCi2f1eg3dq"}]}},"0.2.0":{"name":"graft","version":"0.2.0","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"^0.1.4","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.8.3","through2":"^0.6.1"},"gitHead":"b53a1510222338ae78f249047a4bb2100759b0ba","_id":"graft@0.2.0","_shasum":"8e128dbd1b4ead5523e44e5a2cc3e9a032279d66","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"8e128dbd1b4ead5523e44e5a2cc3e9a032279d66","tarball":"https://registry.npmjs.org/graft/-/graft-0.2.0.tgz","integrity":"sha512-YbF/Wsiu3Kqg9xK1z2N12OQ3cG7F99M30kNw/EXM87z7yRA6guGk/NHzLRz00lBzUMFADP9IFVPuOV5HJD780A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuxOejOcMnnEYfUZLB0WK6v84QIKqNeVGhK93O33IFcAiEAzmYoP6F36TTK6JZkfWA9qLwAlyDuaEm8ochJvFvJtHQ="}]}},"0.3.0":{"name":"graft","version":"0.3.0","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"^0.2.0","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.9.3","through2":"^0.6.3"},"gitHead":"2c591ec3bd2978121bbe4909adce23defa03775c","_id":"graft@0.3.0","_shasum":"27cb86ac87d790ecd1ce73bdce096de6556fb111","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"27cb86ac87d790ecd1ce73bdce096de6556fb111","tarball":"https://registry.npmjs.org/graft/-/graft-0.3.0.tgz","integrity":"sha512-fG3VLhZC7zUvxGuXx1Jk4U/I87oXNUEvx0m+yZ6k+1xTWbw5TO4A7Sh+YmRQiVEGjfiVA9SpGsEHRrAwEgyK2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfEpWkqE4b5P9Wf8JGOyKe9R8IQXhP8BM5XDeVvDriggIgJS5IDBGqn33mRpp77sB6fxiXcZJo85jK4DzpVExlsYQ="}]}},"0.3.1":{"name":"graft","version":"0.3.1","description":"Full-Stack JavaScript Through Microservices","main":"graft.js","directories":{"example":"example"},"scripts":{"jshint":"jshint --exclude-path .gitignore .","test":"mocha -R spec 2>&1"},"pre-commit":["jshint","test"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"keywords":["graft","microservices","jschan","libchan"],"contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"license":"MIT","bugs":{"url":"https://github.com/GraftJS/graft/issues"},"homepage":"https://github.com/GraftJS/graft","dependencies":{"inherits":"^2.0.1","jschan":"^0.2.1","readable-stream":"^1.0.31"},"devDependencies":{"jshint":"^2.5.5","mocha":"^1.21.4","must":"^0.12.0","pre-commit":"0.0.9","send":"^0.9.3","through2":"^0.6.3"},"gitHead":"3f66cbf5e14a79674a56e378867edc6918e90a45","_id":"graft@0.3.1","_shasum":"e9c10a03ef6e34327e005c767694234d8e2680f9","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"matteo.collina","email":"hello@matteocollina.com"},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"dist":{"shasum":"e9c10a03ef6e34327e005c767694234d8e2680f9","tarball":"https://registry.npmjs.org/graft/-/graft-0.3.1.tgz","integrity":"sha512-ocrVDF8+DS+LP9oSbKMmutoKNxEQRk25JzMowUHlC7fe0qYa0Z3dpu14Kw9HzFazQ5j8EnYvSIWJYnC1HviM7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGU4ckrpFBjkfgA1SzKUaowIelTQiVGj7ztqh8oRBM3pAiEAkPQYRxW+Pjdpq+DKXcf8gPWypebcGg/1eZHBWYYtdqc="}]}}},"maintainers":[{"name":"shadowfiend","email":"savedfastcool@gmail.com"},{"name":"adrianrossouw","email":"npm@daemon.co.za"},{"name":"matteo.collina","email":"hello@matteocollina.com"},{"name":"pelger","email":"elger.peter@gmail.com"}],"time":{"modified":"2022-06-18T13:47:42.878Z","created":"2011-03-01T05:02:59.844Z","0.1.0":"2011-03-01T05:03:00.022Z","0.0.2":"2014-09-01T01:18:17.822Z","0.0.3":"2014-09-02T15:25:30.043Z","0.0.4":"2014-09-02T21:24:44.276Z","0.0.5":"2014-09-03T19:41:07.551Z","0.0.6":"2014-09-04T10:33:28.625Z","0.0.7":"2014-09-05T12:54:03.241Z","0.0.8":"2014-09-05T14:42:36.131Z","0.0.9":"2014-09-05T15:33:31.941Z","0.2.0":"2014-09-06T07:32:11.993Z","0.3.0":"2014-10-15T07:10:53.443Z","0.3.1":"2014-11-14T14:38:23.287Z"},"readme":"__Warning: This library is under active development, and should not be considered production ready__\n\n![Graft](https://rawgit.com/GraftJS/graft.io/master/static/images/graft_logo.svg)\n\nThe [Graft project](http://graft.io) explores what the web could become, if we extended microservice architectures into the client.\n\n\n  * <a href=\"#motivation\">Motivation</a>\n  * <a href=\"#api\">API</a>\n  * <a href=\"#libchan\">About LibChan</a>\n  * <a href=\"#contributors\">Contributors</a>\n  * <a href=\"#license\">License</a>\n\n__Interested in Graft and jsChan?__ Watch @mcollina presentation at [NodeConf.eu 2014](http://nodeconf.eu/), [\"Full Stack Through Microservices\"](https://github.com/mcollina/nodeconfeu-2014-full-stack-through-microservices)\n\nMotivation\n----------\n\nWhen you graft something, it involves joining together parts to create a new whole.\nOne that is hopefully more adaptable, resilient and ultimately interesting.\n\n> \"Instead of pretending everything is a local function even over the network ..., what if we did it the other way around?\n> Pretend your components are communicating over a network even when they aren't?\"\n>   -- Docker's [Solomon Hykes](http://github.com/shykes) on [LibChan](http://github.com/docker/libchan) - [[link]](https://news.ycombinator.com/item?id=7874317)\n\n### [Explore our concepts and influences](http://wayfinder.co/pathways/5365c71219e552110093ba31/graft-full-stack-node-js-through-microservices)\n\n---\n\n#### Our Projects\n\n* [__graft__](https://github.com/GraftJS/graft): the library that ties everything together.\n* [__jschan__](https://github.com/GraftJS/jschan): our 'standard carrier'. A port of [libchan](https://github.com/Docker/libchan).\n* [__aetherboard__](https://github.com/AetherBoard/aetherboard): our 'hello world' demo. A collaborative whiteboard.\n\n#### Our Process\n\n* discover how to connect tools through microservices.\n* explore the tools that are already available.\n* adapt those that could be integrated.\n* innovate to build those that don't exist yet.\n\n#### Our Principles\n\n* favor small tools that serve only one purpose, but do so well.\n* eschew state, because it only leads to trouble.\n* focus on javascript, because it is universal.\n* evaluate and document, not prescribe.\n* educate.\n\n#### Our Goals\n\n* be the premier javascript implementation of libchan.\n* be completely supported for node.js as soon as possible.\n* use Node.JS streams to replicate the semantics of Go Channels.\n* be functional and usable on the browser as we test the waters.\n* use virtual stream objects to provide an api similar to [Gulp](http://gulpjs.org).\n* attempt control flow abstractions similar to [HighlandJS](http://highlandjs.org).\n* experiment, document and learn.\n\n---\n\n<a name=\"api\"></a>\nAPI\n---\n\n  * <a href=\"#graft\"><code><b>graft()<b></code></a>\n  * <a href=\"#graft.ReadChannel\"><code>graft.<b>ReadChannel()</b></code></a>\n  * <a href=\"#graft.WriteChanel\"><code>graft.<b>WriteChanel()</b></code></a>\n  * <a href=\"#graft.branch\"><code>graft.<b>branch()</b></code></a>\n  * <a href=\"#graft.where\"><code>graft.<b>where()</b></code></a>\n  * <a href=\"#request\">Request Interface</a>\n  * <a href=\"#spdyclient\"><code>spdy.<b>client()</b></code></a>\n  * <a href=\"#spdyserver\"><code>spdy.<b>server()</b></code></a>\n  * <a href=\"#wsclient\"><code>ws.<b>client()</b></code></a>\n  * <a href=\"#wsserver\"><code>ws.<b>server()</b></code></a>\n\n-------------------------------------------------------\n\n<a name=\"graft\"></a>\n### graft()\n\nThe main object of this library. A `Graft` instance is a\n[`Transform`](http://nodejs.org/api/stream.html#stream_class_stream_transform)\nstream with `objectMode: true`.\nThe objects on the _output_ of a `Graft` instance are\n[Request](#request)s. On the input side, you can write just _normal JS\nobjects_, and everything else you can [write to a jsChan\nchannel](https://github.com/GraftJS/jschan#what-can-we-write-as-a-message).\nThese objects will be automatically wrapped up in a [Request](#request).\n\nInternally, each `Graft` instance is backed by\n[jschan.memorySession()`](https://github.com/GraftJS/jschan#memorySession).\n\nIn order to process the requests, you can just:\n\n```js\nvar graft = require('graft')();\nvar through = require('through2');\n\ngraft.pipe(through.obj(function(msg, enc, cb) {\n  console.log(msg); // prints { hello: 'world' }\n  // process your request\n  cb();\n}));\n\ngraft.write({ hello: 'world' });\n\n```\n\n<a name=\"graft.ReadChannel\"></a>\n#### graft.ReadChannel()\n\nReturns a nested read channel, this channel will wait for data from the\nother party.\n\n<a name=\"graft.WriteChannel\"></a>\n#### graft.WriteChannel()\n\nReturns a nested write channel, this channel will buffer data up until\nis received by the other party.\n\n<a name=\"graft.branch\"></a>\n#### graft.branch(function(req), stream)\n\nPasses the request to the first argument, and if that returns a _truthy_\nvalue, it calls `write(req)` on the associated stream.\nIt respect backpressure.\n\n<a name=\"graft.where\"></a>\n#### graft.where(obj, stream)\n\nShortcut for the most common usage of `graft.branch()`, it allows to\nrewrite:\n\n```js\ngraft.branch(function(msg) {\n  return msg.hello === 'world'\n}, stream)\n```\n\ninto:\n\n```js\ngraft.where({ hello: 'world' }, stream)\n```\n\n-------------------------------------------------------\n\n<a name=\"request\"></a>\n### Request Interface\n\nEach __Graft__ request is the _first message sent on a top-level channel_, and it is composed of:\n\n* all the properties of the message\n* __`_channel`__, the associated channel\n* __`_session`__, the associated session\n\nEach request will have its own channel, but the session is generic for\nevery client.\n\nThe `_channel` and `_session` properties will not be enumerable.\n\n-------------------------------------------------------\n\n<a name=\"spdyclient\"></a>\n### spdy.client()\n\nCreates a new spdy client to pipe to:\n\n```js\nvar graft = require('graft')();\nvar spdy = require('graft/spdy');\n\ngraft.pipe(spdy.client({ port: 12345 }));\n\ngraft.write({ hello: 'world' });\n```\n\n-------------------------------------------------------\n\n<a name=\"spdyserver\"></a>\n### spdy.server()\n\nCreates a new spdy server that you can pipe to a graft instance:\n\n```js\nvar graft = require('graft')();\nvar spdy = require('graft/spdy');\nvar through = require('through2');\n\nspdy\n  .server({ port: 12345 })\n  .pipe(graft)\n  .pipe(through.obj(function(msg, enc, cb) {\n    console.log(msg); // prints { hello: 'world' }\n    // process your request\n    cb();\n  }));\n```\n\n-------------------------------------------------------\n\n<a name=\"wsclient\"></a>\n### ws.client()\n\nCreates a new ws client to pipe to:\n\n```js\nvar graft = require('graft')();\nvar ws = require('graft/ws');\n\ngraft.pipe(ws.client({ port: 12345 }));\n\ngraft.write({ hello: 'world' });\n```\n\nIt works even from a Browser, using\n[WebPack](http://npm.im/webpack) or [Browserify](http://npm.im/browserify).\n\n-------------------------------------------------------\n\n<a name=\"wsserver\"></a>\n### ws.server()\n\nCreates a new ws server that you can pipe to a graft instance:\n\n```js\nvar graft = require('graft')();\nvar ws = require('graft/ws');\nvar through = require('through2');\n\nws\n  .server({ port: 12345 })\n  .pipe(graft)\n  .pipe(through.obj(function(msg, enc, cb) {\n    console.log(msg); // prints { hello: 'world' }\n    // process your request\n    cb();\n  }));\n```\n\nYou can even pass an existing http server that will be hooked up, like\nso:\n\n```js\nvar graft   = require('graft');\nvar ws      = require('graft/ws');\nvar http    = require('http');\nvar server  = http.createServer();\n\nws\n  .server({ server: server })\n  .pipe(graft())\n```\n\n<a name=\"libchan\"></a>\nAbout LibChan\n-------------\n\nLibchan is the connective tissue to all our endeavours. It is a microservices library announced by the Docker project,\nand it is going to form the basis of all of the tools they build in the future.\n\nIt's most unique characteristic is that it replicates the semantics of go channels across network connections, while allowing for nested channels to be transferred in messages. This would let you to do things like attach a reference to a remote file on an HTTP response, that could be opened on the remote end for reading or writing.\n\nThe protocol uses SPDY as it's default transport with MSGPACK as it's default serialization format. Both are able to be switched out, with http1+websockets and protobuf fallbacks planned.\n\nWhile the RequestResponse pattern is the primary focus, Asynchronous Message Passing is still possible, due to the low level nature of the protocol.\n\n<a name=\"contributors\"></a>\nContributors\n------------\n\n[Adrian Rossouw](http://github.com/Vertice)\n\n* CTO of [Wayfinder](http://wayfinder.co)\n* Co-Founder of [Graft](http://graft.io) project.\n* Founder of [Aegir](http://communityproject.org) project.\n* Founder of [Waif](http://github.com/wayfin/waif) project.\n* [Former Drupal Core Developer](https://drupal.org/node/956624)\n\n[Peter Elgers](https://github.com/pelger)\n\n* VP of Engineering at [Nearform](http://nearform.com).\n* Co-Founder of [Graft](http://graft.io) project.\n\n[Matteo Collina](https://github.com/mcollina)\n\n* Co-Founder of [Graft](http://graft.io)\n* Founder of [Mosca](https://github.com/mcollina/mosca) project.\n* Founder of [Levelgraph](https://github.com/mcollina/levelgraph) project.\n* Founder of [Ponte](https://github.com/eclipse/ponte) project.\n\n<a name=\"license\"></a>\nLicense\n-------\n\nMIT\n","readmeFilename":"README.md","homepage":"https://github.com/GraftJS/graft","keywords":["graft","microservices","jschan","libchan"],"repository":{"type":"git","url":"https://github.com/GraftJS/graft.git"},"bugs":{"url":"https://github.com/GraftJS/graft/issues"},"license":"MIT","contributors":[{"name":"Adrian Rossouw","email":"adrian@daemon.co.za","url":"http://daemon.co.za"},{"name":"Matteo Collina","email":"hello@matteocollina.com","url":"http://matteocollina.com"},{"name":"Peter Elger","email":"elger.peter@gmail.com","url":"http://peterelger.com/"}],"users":{"gregersrygg":true,"boneskull":true,"leonning":true}}