{"_id":"beanpoll","_rev":"479-f028917238f2f9f5879fe3ecc5db079d","name":"beanpoll","description":"Routing with syntactic sugar","dist-tags":{"latest":"0.2.19"},"versions":{"0.2.0":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.0","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","outcome":"<0.2.0","underscore":"*"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"bab8557bce0dba92c88bebdceafeba3ca1e6e589","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.0.tgz","integrity":"sha512-U/tpGsz1w9TkbGqRmcl2pTat/RKNG++AelYbRpJVBlVJZf1jnU8sYp0/zjAXQTa7jNU0i34xX3pIg9Esr92oBw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF0pPFRpbZgGS31SA7tAbbP/lhbuFnD1iKhVDBsFObn4AiEAhbCqG9Do01v9QAGNpsxAa9YfWcA5BsU5oxNxd7+5dr4="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.1":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.1","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","outcome":"<0.2.0","underscore":"*"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"2fd64be71591202d24b424e8d43aea4ec5317d7c","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.1.tgz","integrity":"sha512-QliToUIdCbMQk48KzYy91mazG8XBjQfUZSJFM2cNNDzFMAPIUJN8OklyPrIucDIWfNDt8G+tuMMgqUVEOqRPiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeA8yM2ATW4Jut2xZbTiC8AlBbUu1jWD+7jPUkcHzOgwIgJs8UPQTHl9CVpNrKrBESi1ZJUkBvTxrY40niB+KKkWc="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.1.16":{"name":"beanpoll","description":"Routing on Steroids","version":"0.1.16","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"sk":"*","vine":"*","mime":"*","gumbo":"*","cashew":"*","structr":"*","coffee-script":"*"},"devDependencies":{"ebnf-diagram":"*"},"main":"./lib/node/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.1.16","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"b5d7c8710e5167c86fe22651018a7f9a372d4418","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.1.16.tgz","integrity":"sha512-93KjNI+JT+FEtvCQIducihrx8bJa801OHoNfFXeNaGbHQNX7QFYhcpUiQFFgSCjRIVtklmgklwQOAsk0elQBQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQBW5vMJMZQxAyqDyDD7M+UY12X6xqeYFO9gVo7slz9AiAdw7HBsmxnHNd5QsOhG/iiDioRZOAWO4NuaS5lIZyP5A=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.1.17":{"name":"beanpoll","description":"Routing on Steroids","version":"0.1.17","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"sk":"*","vine":"*","mime":"*","gumbo":"*","cashew":"*","structr":"*","coffee-script":"*"},"devDependencies":{"ebnf-diagram":"*"},"main":"./lib/node/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.1.17","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"b42e08c9ca6c0e39edf58faca2fd23a46cd50e7c","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.1.17.tgz","integrity":"sha512-hT/JHehxCObUKcZnStSsNsPqvp04rsXJksZoOc5wriLC6KvxO11/OshCE3zhCs8MmbNZ7HjFPnLsVV7W8RIddg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9XNyL48xDM4jQ80VAwql9Deq6MZbUC+CiOJ1cC5T0NAiEA2vrhaSIVnrC38Zz4DmUF1c8Bq2SaKjiLQ25FKwdMqKs="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.3":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.3","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","underscore":"*","dolce":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"9da270fd6efb44616f71347390b29b129e9b0056","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.3.tgz","integrity":"sha512-ZjI/zv4IuaizLKLua5lebMVgwOtUlGS+XqV39ggJmrCG9HBmJgbtzQLR4KCTDH3XIDqSocXK2kwS9uWQ9imp5w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAtIbE52SDhBbXwRyKN8MrRUOOPNM+oCOIsf3yEZ2thPAiA+EI2GZ3Urkdf5zHSafifFlU2MTGSt4QAldJHbRzX25Q=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.4":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.4","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"d7abf608a40c2bc9d28f09445e803c6667f47867","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.4.tgz","integrity":"sha512-JQMbquM+zXvpMjnJGpRsT++QWrBTcAmdgDGpxPBQ0MJc7ApharYado9shmAh7h8YJs2nDBMYM+VtdfbLlLV5Ew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9H9q4q2bJa4rzjl/ggmkUNYSUu/GxUHqSpB5okgvgvAiEAgrlcX7XiHkLUYKLtxzebM64NgM5Auo5EXN7OdQ2TkCQ="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.6":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.6","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"be9b8898b90a8803f1dfa81df0d8f512ff00130d","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.6.tgz","integrity":"sha512-wP96BQY2YCk/NijU6aeUB++LCRR0b7NlL7iNE8f0nUYOwfMOeUXn3jAqwS9Lxh3hUUqx8CCNZRjMpquq0cveAQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBrgkkztMODwcPskSd5+UCySpLmvWNVxHRd+yyKtMBLEAiA/9iKviP2u3Mdg/rowmNtturaU1xT+DMzJ3N/HH8G46g=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.7":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.7","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a281ebd76c15d6251e4b02b97873cfc0caeaa237","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.7.tgz","integrity":"sha512-vh/DAtUKu2XlyXigGCXc83KgbG8b1rfvCd1flgC+fQi90bJrtNmD03DF3H0KdIljBGQ4CyeZliHIm3lATyz+kg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGij0Fya40emK3zwsrzgayuc3y9GYpBtfh+A6jZKefriAiBfMy4PlqerXbQf1oLWnWAqkflno/9tMCsRKImn/3K17w=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.8":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.8","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"c6eb6e023726e6a0085027c97bffbe98714abae1","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.8.tgz","integrity":"sha512-QQFYKbXkvyzxQPToBPJbwI1FpqeSBWyP+Q2ey1NOTRG2ZnoKsVUo9uU0yxG0oocYhPVSVUUUVvK7tr0jAdnOBA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH9tru4uni5Yg5zyZh2IeCTSQx8aTc09eu/ISlfUUKjEAiBjd8hYowGiDg5k3rOlOgsGgGnIEEmB2ED8BzBsaFuxpg=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.9":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.9","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a4d68b19cd9a7928b99e3996c5bdab773d5a666a","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.9.tgz","integrity":"sha512-+ftkYVhHo8hFqKhLcqlq389+DEttO+iQdop9SNZUzdK8u+S2T15oImvb5hrDQhBPC1d/W5gEenu5sKvfLMfJcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICV3G9vu/TE2h9K4HB7biW5BsKfOoBAs+tomKs7rFqPGAiAoMIp3beKPMqCN0cn07+gXBDSClWKiPNqsIqKw0fFOZw=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.10":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.10","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.10","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"56ef2130ac4ccf550891f97e84de9beac0058534","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.10.tgz","integrity":"sha512-M+vmdsrlBPweMR+IAxdrOZCc3sHXF/xkMzlaZJI9fk+6cwFozd9AVcYNIMLIfa8/sok25My9xV4CViqE9tge8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCh8xAlFLkM7vSJC/zYGf2NEhrawgdaTMzbAW7b/nTdfQIhAJDuVdf46mp7slWfoUiN+So1akeQ0JfNPg/NARmFJM6q"}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.11":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.11","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.11","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"b76720ad997e0d2d7d6c2e271084ef57c95e821c","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.11.tgz","integrity":"sha512-wGUzjDP8/mogNNMh3zVE9aCYKfFhOIMeCX2Iuk+jF0kDIopSGj4XmMdFC06z1o7G2d91lW9CnVBqWy+q3rXY/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFEQAGGzxrmCfevt8ejYYJ6gb9TQlyhSBFR35VbQ0XU2AiALN5pRAJfmQKRSYoW1MnR9ocacHPM5bnhQYvJmUCnlRQ=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.12":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.12","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpole.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.12","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"db3e7b1e7adce741c5b75e8562077755e6a371db","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.12.tgz","integrity":"sha512-phYVE2x6TPQfuqpwf4sQIRLvNon07rd0MSwAQyWpB2zB4yWyQe+lXrgkfUEG/f8/k2tHHMD+5VPK+8RlRlVscA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICSp4jgfwq2a8XG/2gFec6zn/QkXYtV/j8jt0j5dr5NqAiBueV8jVYn2fdFmMg27qWg4EEY98FyLKy0LnUOQgp7LvA=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.13":{"name":"beanpoll","description":"Routing on Steroids","version":"0.2.13","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.13","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"57ca1f76030e39ae95ff7d404aa1606dc9a80496","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.13.tgz","integrity":"sha512-VB+HPFO2RQiSD8gvARKgrv9oB2/etcWkh3/0fnyk+ky4x2YeBNRWbVkY9qWT6t0oxYBNaM55Mz8FK727QTSlWg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEqog5GaaBvwSyP9cKJ8DRKJGpKXzUYXrHUu9TmykO7bAiAv+YFLNFXBAssSmzHHDcK3ieNEKpgBP1y4dGZSm7uMDQ=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.14":{"name":"beanpoll","description":"Routing with syntactic sugar","version":"0.2.14","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.14","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"1f3ddc059efe64d42dea43aad53c6406c1d21641","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.14.tgz","integrity":"sha512-47pd9zmSZIkgii1j10MBfE+8UiSY1a48f4fNd9jcvFwF0tR0xzJJIx7MwyckGc7ccrK6jR02osHnbrf/aWzibA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICHIQF3H2QCRwvRT4B0mzFN6JWdH4mzfNWxQl+7JiWiMAiAHqGDHPXhntz2TOqOJ4ayp8mi6h0dHLYFEgzJsTfG54Q=="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.15":{"name":"beanpoll","description":"Routing with syntactic sugar","version":"0.2.15","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.15","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"b48ca871df2fd5655288ddfa52cce8b322921190","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.15.tgz","integrity":"sha512-MYCIJ+Xgp3PhdaV0Jy6b8jp6qC5Y15I4wW5EAvFda2IL6q5No9DU58/CwQj+EsCRVOhOfo4HQtfzBixBS97nRw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdGemuxoQIR8ZRw43qaqFOFIxHzcvzYuWxdDJWeDMEFwIhALuoZZ6ODzQycXEnHfirRF7edKji9IzTISiU2x7fTXVE"}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.16":{"name":"beanpoll","description":"Routing with syntactic sugar","version":"0.2.16","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"git://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","mesh":{"load":"./make.json"},"_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"_id":"beanpoll@0.2.16","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"e3302d53a871fa71136cbcc56369e815d6e3043a","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.16.tgz","integrity":"sha512-ceIvR/8LpKucsf/YxBH0H+oeSNLUMwOT/sk69X/0awk46Hdh8w9oG+GYC95H4dEEGmQ1wIknm5JFsCimfQXX1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/vFaDmZLb0Bk5dqz7zQxflNt08pXpuhvd+donq1TuEAiEAhrRyzlY9zJbdfwSY3rfhFnZ9aujDGBmnwgtdApwezzc="}]},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.17":{"name":"beanpoll","description":"Routing with syntactic sugar","version":"0.2.17","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"http://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0"},"devDependencies":{"ebnf-diagram":"*","vows":"<0.7.0","haba":"<0.1.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_id":"beanpoll@0.2.17","dist":{"shasum":"1316946ab79612083ccb2c0ac8ed1a2b5b277143","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.17.tgz","integrity":"sha512-8XA1PCwJtqqjytiqdpmrZmP9AlO+xYHh91/ysjcblCchQUUXhHT0wm7BrXtAHMTe4kAcxxktYakhSlUNZLg8QA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCke82FTYFcnSpUqmhXQg9mYJA+M5dWnNaQdmP8sHSj7wIhALhhmPGywXQbns8k3SxFmXBqkClf027W1kPNKciP7LRi"}]},"_npmVersion":"1.1.49","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.18":{"name":"beanpoll","description":"Routing with syntactic sugar","version":"0.2.18","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"http://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0","ebnf-diagram":"0.1.x","haba":"0.0.x","comerr":"0.0.x"},"devDependencies":{"vows":"<0.7.0","outcome":"<0.2.0","disposable":"0.0.1"},"main":"./lib/index.js","_id":"beanpoll@0.2.18","dist":{"shasum":"f7174605e687b13af8054b38494fa5809f6304d3","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.18.tgz","integrity":"sha512-AUuI+Als7tex1l2pDVPdol+aoeFi1gxJ5yxPzundQMXAsmwoxiWLpzCywDKtCILaO+P2RpThADB3niRUTadeUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOS5Xls++f1a7O7kJBBYShDEDVVOcCCAbDaeaauJI4+wIhAL699P1x2LzKBhvzNotOsoBAsOhOmrgyxsdPp+sTXW1q"}]},"_from":".","_npmVersion":"1.2.11","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]},"0.2.19":{"name":"beanpoll","description":"Routing with syntactic sugar","version":"0.2.19","author":{"name":"Craig Condon"},"repository":{"type":"git","url":"http://github.com/crcn/beanpoll.js.git"},"directories":{"lib":"./lib"},"dependencies":{"disposable":"*","crema":"<0.2.0","underscore":"*","dolce":"<0.2.0","outcome":"<0.2.0","comerr":"0.0.x"},"devDependencies":{"vows":"<0.7.0","outcome":"<0.2.0","disposable":"0.0.1","ebnf-diagram":"0.1.x"},"main":"./lib/index.js","_id":"beanpoll@0.2.19","dist":{"shasum":"fe7640b38903d91b5cedf216ec7e301042249bd8","tarball":"https://registry.npmjs.org/beanpoll/-/beanpoll-0.2.19.tgz","integrity":"sha512-YBV1sLvQCePu2JkIbsV+1WexA2i8ssos4rPxX2vQjJhqWgSK906lhyDTyqPd2YZAT3WCLaeM56x4bEjiAktfhA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHORqyta+t/snaBi0CXYH0zC0hzvJCOC01aZRCrwZkwHAiEA78gkpTFUz4cOstb4gysAWr2N9lNZshStJi5DwM54El4="}]},"_from":".","_npmVersion":"1.2.18","_npmUser":{"name":"architectd","email":"craig.j.condon@gmail.com"},"maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"}]}},"readme":"[![build status](https://secure.travis-ci.org/crcn/beanpoll.js.png)](http://travis-ci.org/crcn/beanpoll.js)\n## Beanpole - Routing framework      \n\n\n### Motivation\n\n- Abstract communication between parts of an application\n\t- keeps code modular\n\t- works in-app, or with other protocols: amqp, http, etc.\n\nThis:\n\n```javascript\n\nrouter.on({\n\t\n\t/**\n\t */\n\n\t'pull auth/user': function(req, res) {\n\t\t//auth here\n\t},\n\n\t/**\n\t */\n\n\t'pull auth/user -> add/photos': function(req, res) {\n\t\t//add photos here\n\t}\n})\n```\n\n\nVersus somethine like this:\n\n```javascript\n\n\nvar addPhotos = function(req, res) {\n\tauthUser(req, res, function() {\n\t\t//do stuff here\n\t});\n}\n\n```\n\n\n\n### Projects using Beanpole\n\n- [celeri](https://github.com/crcn/celeri) - CLI library\n- [bonsai](https://github.com/crcn/bonsai) - application server\n- [leche](https://github.com/crcn/leche) - Framework to build frontend / backend applications with the same code.\n- [daisy](https://github.com/crcn/daisy) - Expose beanpole to: http, websockets, amqp (rabbitmq), etc.    \n- [beandocs](https://github.com/crcn/beandocs) - Generate documentation from your beanpole route comments.\n- [beanprep](https://github.com/crcn/beanprep) - Scans beans in a given directory, and installs their dependencies. \n- [cupboard](https://github.com/crcn/beanprep) - Reverse package manager.       \n\n### Beanpole ports\n\n- [Actionscript](https://github.com/crcn/beanpole.as)  \n- [C++](https://github.com/crcn/beanpoll)     \n\n### Overview          \n\n\n![Alt ebnf diagram](http://i.imgur.com/v1wdO.png)\n                \n\nThe basic route consists of a few parts: the `type` of route, and the `channel`. Here are some examples:\n\n\trouter.on('pull hello/:name', ...);\n\t\nand\n\n\trouter.on('push hello/:name', ...);           \n\t\n\n#### Push Routes:  \n\n- Used to broadcast a message, or change (1 to many).\n- Doesn't expect a response.    \n- Multiple listeners per route.         \n\n#### Pull Routes:\n\n- Used to request data from a particular route (1 to 1).\n- Expects a response.\n- One listener per route. \n- examples:\n\t- request to http-exposed route       \n\t\n#### Collect Routes:\n\n- Used to request data from many listeners (1 to many, similar to pull).\n- Expects a response.\n\n## Error Handling\n\n\n```javascript\n\n\nfunction auth(credits, callback) {\n\t\n\tif(credits.user != 'user' || credits.pass != 'pass') return callback(new Error('invalid credits'));\n\n\tcallback(false, { user: 'user', pass: 'pass' });\n}\n\n\nrouter.on({\n\t\n\t'pull authenticate': function(req, res) {\n\t\t\n\t\t//don't bother handling errors - done by response\n\t\tauth(req.query, res.success(function(user) {\n\t\t\t\n\t\t\tres.end(user);\n\n\t\t}));\n\t}\n})\n\n\n\n//error\nvar req = router.request('authenticate').\nerror(function(err) {\n\tconsole.log(err.stack);\n}).\nsuccess(function(response) {\n\tconsole.log(response);\n}).\nquery({ user: 'user', pass: 'bad pass' }).\npull();\n```\n\n\n## Custom Routes\n\nYou can easily create custom route handlers. Take [celeri](/crcn/celeri) for example:\n\n\n\n```javascript\n\nvar beanpoll = require('beanpoll'),\nstructr = require('structr');\n\n//handles the message, response, and middleware\nvar CmdMessenger = structr({\n\t\n\t_next: function(middleware) {\n\t\t\n\t\tvar self = this;\t\n\n\t\ttry {\n\n\t\t\t//call the command handler, and wrap the LAST parameter as a next function\n\t\t\tmiddleware.listener(Structr.copy(middleware.params, data), function() {\n\t\t\t\treturn self.next();\t\n\t\t\t});\t\t\n\n\t\t} catch(e) {\n\t\t\tself.response.error(e)\n\t\t}\n\n\t}\n\n}, beanpoll.Messenger);\n\n\n//the \"Event Emitter\"\nvar CmdDirector = structr({\n\n\t_newMessenger: function(message, middleware) {\n\t\treturn new CmdMessenger(message, middleware, this);\n\t}\n\n}, beanpoll.Director);\n\n\n\nvar router = beanpoll.router();\n\n\n//use the new plugin\nrouter.use(function() {\n\treturn {\n\t\tname: 'console',\n\t\tdirector: new CmdDirector('celeri', router)\n\t}\n});\n\n//use it:\nrouter.on('console say/hello', function(data, next) {\n\t//do stuff here\n});\n\n````     \n           \nMiddleware can also be specified without using the token: `->`.An example:\n\n\n````javascript\n    \nrouter.on({               \n\t\n\t/**\n\t */\n\t\n\t'pull my/*': function()\n\t{\n\t\t//authorize user\n\t},  \n\t\n\t/**\n\t */\n\t\n\t'pull my/profile': function()\n\t{                 \n\t\t//goes through authorization first \n\t}\n});\n\n````                                                                         \n                                                                                                \nProviding a wildcard `*` tells the router that **anything** after the route must go through it.     \n\n### Managing very long routes\n\nYou may run into a route which looks like this:\n\n```javascript\nrouter.on({\n\t'pull -public -method=POST remove/cache/subscribers -> profile/validate/SAVE_ARTICLE -> groups/:group/subscribers OR groups/:group/subscribers/add': function() {\n\t\n});\n```\n\nTo fix the ugliness, breakup the route and escape any linebreaks:\n\n```javascript\nrouter.on({\n\t'pull \\\n\t-public -method=POST \\\n\tremove/cache/subscribers -> \\\n\t\tprofile/validate/SAVE_ARTICLE -> \\\n\t\t\tgroups/:group/subscribers OR \\\n\t\t\tgroups/:group/subscribers/add': function() {\n\t\t\n\t}\n})\n```\n\nYou can also split it up:\n\n```javascript\nrouter.on({\n\t'pull \\\n\tremove/cache/subscribers -> \\\n\tprofile/validate/SAVE_ARTICLE -> \\\n\t\tvalidate/group/subscribers': function() {\n\t\t\n\t}\n})\n\nrouter.on({\n\t'pull \\\n\t-public -method=POST \\\n\tvalidate/group/subscribers ->\n\t\tgroups/:group/subscribers OR \\\n\t\tgroups/:group/subscribers/add': function() {\n\t\t\n\t}\n})\n```\n\n\n### Methods            \n\n#### router.on(type[,listener])\n\nListens to the given routes\n\n- `type` - string or object. String would contain the route. Object would contain multiple routes / listeners\n- `listener` - function listening to the route given.           \n\n#### router.request(router)\n\nreturns the request builder         \n\n```javascript\n\nrouter.request('signup/user').\nquery({ username: 'blarg' }).\nheaders({ 'Content-Type': 'application/json' }).\n\n//called when the second param is present. \nsuccess(function(response) {\n\t\n}).\n\n//separated error from the response\nerror(function(err) {\n\t\n}).\n\n//called when there's a result, or error\nresponse(err, response) { \n\t\n}).\n\n//type of request: push, pull, collect, your own\npush();\n```                           \n\n#### router.push(route[, query][, headers])\n\n- `type` - the channel broadcast a message to.\n- `data` - the data to push to the given route\n- `options` - options for the given route\n\t- `meta` - tags to use to filter out listeners\n\t\n#### router.pull(route[, query][, headers][, callback])\n\nsame as push, but expects a response\n\n#### router.channels()\n                      \nreturns route expression\n\n#### request.write(chunk)\n             \nInitializes a streamed response. Great for sending files\n\n#### request.end([chunk]) \n                        \nEnds a response \n\n#### request.hasNext()\n                                                     \nReturns TRUE if there's a listener after the current one.\n\n#### request.next()\n\nMoves onto the next route.\n\n\n\n\n\n\n\n\n\n                                                                                                              \n\n","maintainers":[{"name":"architectd","email":"craig.j.condon@gmail.com"},{"name":"crcn","email":"craig.j.condon@gmail.com"}],"time":{"modified":"2022-06-13T04:27:41.300Z","created":"2011-12-29T04:36:11.984Z","0.2.0":"2011-12-29T04:36:12.744Z","0.1.16":"2012-01-18T06:43:02.021Z","0.2.1":"2011-12-30T21:54:44.280Z","0.2.3":"2012-01-29T05:25:15.877Z","0.1.17":"2012-01-18T06:52:53.947Z","0.2.4":"2012-02-01T19:47:20.669Z","0.2.6":"2012-02-02T19:21:43.593Z","0.2.7":"2012-02-03T19:32:16.460Z","0.2.8":"2012-02-03T21:27:21.476Z","0.2.9":"2012-02-04T20:36:46.220Z","0.2.10":"2012-02-07T21:16:10.028Z","0.2.11":"2012-02-09T21:07:02.518Z","0.2.12":"2012-02-15T00:30:48.248Z","0.2.13":"2012-02-24T20:05:22.331Z","0.2.14":"2012-03-01T05:14:56.819Z","0.2.15":"2012-03-15T05:29:59.630Z","0.2.16":"2012-04-10T04:21:11.633Z","0.2.17":"2012-08-23T15:35:36.031Z","0.2.18":"2013-04-01T05:38:03.543Z","0.2.19":"2013-05-31T23:14:02.414Z"},"author":{"name":"Craig Condon"},"repository":{"type":"git","url":"http://github.com/crcn/beanpoll.js.git"},"readmeFilename":"README.md"}