{"_id":"lazorse","_rev":"102-254da6f37a48a6892abe2b1a0d7ccd58","name":"lazorse","description":"The lazy programmers ReST service framework","dist-tags":{"latest":"0.6.2"},"versions":{"0.0.1":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.0.1","repository":{"type":"git","url":"git://github.com/grncdr/lazy.git"},"main":"./lib/lazy","engines":{"node":"~0.4.12"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.0.1","_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a192ae396ba93fc4ad29bca17e56080e25bc6d6b","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.0.1.tgz","integrity":"sha512-qnioB5U2Ji0doIH9S76JtLu01ieu+4jhe3w6Qg7k97FPIX16+yh6HiVZVYeSi4EDYCKLuhOkApt1ENSEp1F2Tg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEUBtXxn5HrFu0rLHjIfG+s7KFefxcU+JlCKB8d39UkXAiArkOUuhlhaPHr11jlOq9mtdQtqt4tNqRClBhAvVC3KPQ=="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.0.2":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.0.2","repository":{"type":"git","url":"git://github.com/grncdr/lazy.git"},"main":"./lib/lazy","engines":{"node":"~0.4.12"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.0.2","_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"53af1464493ca1113beaa6e2c3f0b5bf1f7aa4cf","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.0.2.tgz","integrity":"sha512-qR10Au/LOIoYMlPrr46h1+Bz57bpQqdpXwGPg0qYwcADVgajHdsZsOc2ckl67kHKs2ZvEVToDyVBahCNCuyWJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDom31wXb45P9+ATTTX2P25peyiYAtZaGTvTz6wQF3YUAiAeG4q4b8phGamww9c3I3MYoUtc0hu3VZZS1//Ao/njPw=="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.1.0":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.1.0","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","engines":{"node":"~0.4.12"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"vows":"~0.5.13"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.1.0","_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"a4d270e401618242a6c37812eba76910e3198397","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.1.0.tgz","integrity":"sha512-tV8QVQQT72GcNa0LJxDFNvVja9NpFjGDE/NWMJLjEMOTXcMn4p1V0e4qGURsUnFLKWVvdXmHGbfLS5wxmMDcpw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrgZWrvNPN3kMPtsKVGDtliejR8WqI3pqreGTN0JjerAIgPdi28eW9GlkGjlRhaX3jNcvkHBGKlQTnLWC+IoMxTNk="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.1.2":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.1.2","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./bin","./src","./examples","./README.md"],"engines":{"node":"~0.4.12"},"bin":{"lzrs-gen-examples":"./lzrs-gen-examples"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"vows":"~0.5.13"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.1.2","_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"4d1d62dd2bd2a4fdf9d150e46e737088651819e6","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.1.2.tgz","integrity":"sha512-pLKgXoT97lROH/P4PlKBZh83XCo1aIXN1KMTbq3qiWjUhCeZw+eMyzGFrLWTZkWObgrErqiIVoFgKNHEnBMWSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRhhro1+NBFuAAdzq0wiJpQsUVuIhtYfSlD2CkoDQytAIgZ1RavQdHIpdC3/JIEOHTsy9kaJYX5SmH+wjjVY5JmyQ="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.1.3":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.1.3","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./bin","./src","./examples","./README.md"],"engines":{"node":"~0.4.12"},"bin":{"lzrs-gen-examples":"./bin/lzrs-gen-examples"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"vows":"~0.5.13"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.1.3","_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"c9dd15754467d1ec3e140e651550b79eb8c2bea7","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.1.3.tgz","integrity":"sha512-57ckwnLRW5Trt/74T48kr956GuAkggv9LqZ/M61FC5bnkBDigfAySnYbBrcEzcArNx2dJAGtc+k2HY0HVMSp7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB3AjcdcfMIELgY4msM51+Bb4NJub+SYbMRVH1YciyVYAiBiNQbVr9evV2ONIOfX6Rplvke8Gbf/2nC7vFOf3DLEHQ=="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.1.4":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.1.4","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./bin","./src","./examples","./README.md"],"engines":{"node":">=0.4.0"},"bin":{"lzrs-gen-examples":"./bin/lzrs-gen-examples"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"vows":"~0.5.13"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.1.4","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"2ce6a0990d666055f8e6e2ffa2fa964386d84e45","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.1.4.tgz","integrity":"sha512-FoZe5/Ll8mBbGDsbFpJ2+o3ExcjGmA4Sez0UbsmCnLXgNtxikFPYZbEXUtkTS3Q8Kf41iULBddahmn3QbxcBzA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7Manf7ynW1wa6Gm/TeAYc13FxZUWwrNQzBZuarxi7wgIgDz00HziiVJYxoTcMsCQKhuo9k32OHiQa/HhhQWGE9hE="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.3.1":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.3.1","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./examples","./README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.3.1","_engineSupported":true,"_npmVersion":"1.0.101","_nodeVersion":"v0.4.12","_defaultsLoaded":true,"dist":{"shasum":"85ffc93cced47fde50af978f6ff0266c9a13d7dc","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.3.1.tgz","integrity":"sha512-Ane343FMSX1nBcQOJi3pJd48PTkp9zMiX3rnz6ovxT96wa4Wq0UUaM+pGDDnuSwxQZTTYbIwBRQ3R3yt4y59nw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4pL7TlZLe8Wu9JPvzdZBZwHU31E5+Tj5tcXPf4IDhOgIgDDOfnbidTHghSN/n87ycTwMkUQ/Sgf30Y92cALEyX30="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.1":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.1","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./examples","./README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.1","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"4723d70edae8cf747b49c24448da1a091685eef9","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.1.tgz","integrity":"sha512-1HcW80rjWbyL3b+77WgcCx0gRwp1QnPZmCJz3VpCNa2kSqVhV7yucoMwV6u0/6RSXttXa6aoEVeeAMMyyiC/nQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTJdvAuiB/aWZUBaFcpzKsJ+DexZqbh9DCtYj//GflZQIgZ51TCIW5Z4mRe8tkgNzphLrtsxUubXjOFBi4vGrmVfc="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.2":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.2","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./examples","./README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.2","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"98c8957727551af488936eb464051e4e67e67462","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.2.tgz","integrity":"sha512-mdVyl8kRWMkGTsPeDSDUAXHdlKFuyOPiONo6RYAb0o3oax2YyVf901PiZMUUoVpLEN8vPgOThg7nP/62FFQ45g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVQ1vgbV5So4AoO9oh0k+pzVwiqXUdtfkTcDTMNT1XtgIgDZ17Zoxv3A5akO5UGl3sVJWKpBSAS70q9c8KYUpGm00="}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.3":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.3","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"./lib/lazorse","files":["./lib","./examples","./README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.3","_engineSupported":true,"_npmVersion":"1.0.106","_nodeVersion":"v0.6.2","_defaultsLoaded":true,"dist":{"shasum":"962e70487f26f3f3a5c81da04aa8e1c5a74b0b71","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.3.tgz","integrity":"sha512-bRAcX12dB1XCoOQd5vC/II1EetlM5tw/qMNn2xxBgAIoK6cylT7KSXHhLjU4ibEE9nQiOOo0KN1/X/3mMZn8/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDu+dTg21RfMJlEPGDczvBphh4Ye3gMjLXgdWGTAVQtQAIhAJZQt5NSSfslgwGS/VNODK1bdkOuMyOqFmp7tLw85JrV"}]},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.4":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.4","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.4","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"2e81b51f9a4b46d6645a4258948f42ca04046af6","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.4.tgz","integrity":"sha512-+8esd/c2DfgRXnjy+Sg8PpctDwglFsY9Q78+fOYWs2ri1gYp/QxUUR8sZwxMj6XNr6QTNY42ivK/WnK1s5eDxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNE3bxA3MlYE4ustifJQpZLa6xYGwhi8oUUlEhNeNK9QIhALOIbiiC85W/njB3WqrQj/L65nI1S5LzAKmGULoPjPs7"}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.5":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.5","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.5","_engineSupported":true,"_npmVersion":"1.1.0-beta-10","_nodeVersion":"v0.6.7","_defaultsLoaded":true,"dist":{"shasum":"60c18116bc581771020999c7a9e9654b1e2b3805","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.5.tgz","integrity":"sha512-kmZgiU1JmGrQjHtI+1+FESOBLbFGzpMHI6a/TLghusD1hU2KPvGvuZ25w9izHilIfVOF00p2I3bsWAVngUlgXw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtCEhpIh7Wz82xnjfQeBZhtkhoDWtunYKGBDJ7d4WUegIhALGV9OGazpCTg++ku2mUbO8UzEolIKUUycYh8uAenHYP"}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.2.1":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.2.1","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","bin","examples","README.md"],"engines":{"node":">=0.4.0"},"bin":{"lzrs-gen-examples":"bin/lzrs-gen-examples"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"vows":"~0.5.13"},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.2.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"9c6098ec5067c910ce04aa52f8072cf90a23bd4a","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.2.1.tgz","integrity":"sha512-GV4rxpAVXr7xgrud3FofOxI4hzikRMfJF4HbQRp6HFk0QYFqxGR+0050ItQWk/G3cHZVz7DjSURlwdbzd2dhCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBlTOmlnw221wWnlWxpUvYhjoCl9M8/3Y1HX/cxZilmAiAb+hJU7k7SSeE9nc41pEUncWp5TE0g1kLzHp0c+Wqf+w=="}]},"readme":"# Lazorse!\n\nLazorse is a connect middleware stack with a strong emphasis on extensibility\nthat routes requests, coerces parameters, dispatches to handlers, and renders a \nresponse. It borrows heavily from [other][zappa] [awesome][coffeemate] nodejs \n[web frameworks][express] but with a couple of twists designed to make writing \nmachine-consumable ReSTful APIs a little easier. Because it's all \"just \nmiddleware\", you can also pull out and re-arrange the various pieces to better \nsuit the needs of your application.\n\n### Routing\n\nThe most unusual piece of lazorse is the route syntax: it's the same as the \n[draft spec][uri template rfc] for URI templates, but layers parameter matching\nsemantics on top. (There are more details and disclaimers at the bottom of this\ndocument).\n\nLazorse by default owns the index (`/`) route. This route responds to GET with\nan array of all named routes with their URI template and other metadata, such \nas a description and examples if they are available. So an app with a single \nroute like:\n\n```coffee\ngreetingLookup = english: \"Hi\", french: \"Salut\"\n\n@route '/{language}/greeting':\n  description: \"Retrieve or store per-language greetings\"\n  shortName: 'localGreeting'\n  GET: -> @ok greetingLookup[@language]\n  POST: -> greetingLookup[@language] = @req.body; @ok()\n```\n\nWill return an array that looks like this:\n\n```json\n[\n  {\n    \"template\": \"/{language}/greetings\", \n    \"description\": \"Retrieve or store per-language greetings\",\n    \"shortName\": \"localGreeting\",\n    \"methods\": [\"GET\", \"POST\"]\n  }\n]\n```\n\nAll of the keys are optional, but chances are you want to include at least one\nHTTP method handler, or your route will be unreachable. Also, remember that a\nroute without a ``shortName`` will *not* show up in the index.\n\n### Coercions\n\nCoercions are a direct rip-off of [Express'][express] `app.param` functionality.\nYou can declare a coercion callback anywhere in your app, and it will be called\nwhenever a URI template matches a parameter of the same name. For example:\n\n```coffee\n@coerce language: (lang, next) ->\n  lang = lang.toLowerCase()\n  if lang not in greetings\n    next new Error \"Invalid language!\"\n  else\n    next null, lang\n```\n\nWill ensure that only pre-defined languages are allowed to reach the actual\nhandler functions.\n\n### Handlers and environments\n\nOf course you're probably wondering about those handler functions. Each handler\nfunction is called with `this` bound to a context containing the following keys:\n\n - `req` and `res`: request and response objects direct from connect.\n - `data` and `ok`: Callbacks that will set `res.data` for the rendering layer.\n    (Don't worry, that's next). The only difference is that `ok` does\n    _not_ handle errors, it only accepts a single argument and assumes that's\n    what you want to return to the client. `data` on the other hand, will treat\n    the first argument as an error in the idiomatic node style.\n - `link`: Takes a route shortName and a context object and returns the result\n    of expanding the corresponding URI template in that context.\n\nAlthough the example handlers have taken no parameters, lazorse does pass them\none parameter: the request context. This is meant to enable fat-arrow handlers\nin situations where that's more convenient.\n\n### Rendering\n\nLazorse includes no templating. Instead, rendering is handled as another\nmiddleware in the stack. The default rendering middleware supports JSON and\n(very ugly) HTML. It inspects the `Accept` header to see what the client wants,\nand falls back to JSON when it can't provide it. You can easily add or override\nthe renderer for a new content type like so:\n\n```coffee\nrender = require('lazorse/render')\nrender['application/vnd.wonka-ticket'] = (req, res, next) ->\n  ticket = res.data\n  res.write bufferOverflowThatTransportsClientToTheChocolateFactory()\n  res.end \"pwnd\"\n```\n\nObviously, your own renderers would do something actually useful. In addition to\n`res.data`, Lazorse will add a `req.route` property that is the route object\nthat serviced the request. This could be used to do something like look up a\ntemplate or XML schema with `req.route.shortName`.\n\n### Error handling\n\nLazorse exports a few custom error constructors and includes an errorHandler\nmiddleware in it's stack that will recognize these errors and react\nappropriately. If the ``passErrors`` property of the app is set to true,\nLazorse will pass unrecognized errors on to the next middleware in the stack,\notherwise it will return a generic 500 response.\n\n## Including Example Requests\n\nLazorse can load a JSON file defining example requests against your API, and\nattach that information to the routes themselves so that it will be included in\nthe route index.\n\nGiven the example greeting API listed above, the examples file would look\nsomething like this:\n\n```json\n{\n  \"localGreeting\": [\n    {\n      \"method\": \"GET\",\n      \"path\": \"/greeting/english\"\n    }\n  ]\n}\n```\n\nAdditionally lazorse ships with a script `lzrs-gen-examples` that will read a\nfile in this format, perform the requests, and then update the file with\nresponses in-line, so that it ends up looking like this:\n\n```json\n{\n  \"localGreeting\": [\n    {\n      \"method\": \"GET\",\n      \"path\": \"/greeting/english\",\n      \"response\": {\n        \"greeting\": \"Hi\",\n        \"language\": \"english\"\n      }\n    }\n  ]\n}\n```\n\nTo include this example data into your app, use the `@loadExamples` method,\nwhich takes an object or filename as it's argument and attaches each array of\nexample requests to the corresponding route.\n\n## More info on URI Template matching\n\nThe matching semantics for URI templates are an addition to the RFC that\nspecifies their expansion algorithm. Unfortunately, the nature of the expansion\nalgorithm makes round-trip expansion and parsing of URIs inconsistent unless the\nfollowing rules are followed:\n\n  * All parameters, excepting query string parameters, are required.\n  * Query string parameters cannot do positional matching. E.g. ?one&two&three\n    will always fail. You must use named parameters in a query string.\n  * Query string parameters with an explode modifier (e.g. {?list*}) currently\n    will parse differently than they expand. I strongly recommend \n    not to use the explode modifier for query string params.\n\n## What's the deal with the name?\n\nWhile it *could* be viewed as a portmentaeu of Lazy and Resource, I prefer to\nthink of it as horses with lasers.\n\n## TODO\n\n* More tests, as always.\n* Factor different operators into different Expression specializations,\n  hopefully this will help clean up some of the logic in Expression::match\n\n## License\n\nMIT\n\n[express]: http://expressjs.com\n[zappa]: http://zappajs.org\n[coffeemate]: https://github.com/kadirpekel/coffeemate\n[uri template rfc]: http://tools.ietf.org/html/draft-gregorio-uritemplate-07\n","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.6":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.6","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.6","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.9","_defaultsLoaded":true,"dist":{"shasum":"6a90de142e9c318b3e31dbbc226f09d0b003956f","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.6.tgz","integrity":"sha512-PvxX21DozVJt4VyaHo6Z/xALgYYdTE/ayTdEp2zExyb5ELJxd63Eb7h/TA+y0487FiC0E94mrDBAqvdRecWuGw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7Q2tXiX6pX2lBR2GqmxvL2ykXs7Xt1GjkOsAKs9OW5AiEAmmoB0jsBMUmT9fNq/ro1PE1ofZZtj9JSnfHSHVk0Otc="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.7":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.7","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.7","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"0639b5c019c0bbd15c0ccf9e35b3794b2901c5cb","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.7.tgz","integrity":"sha512-/VhPO69urZf7V5R05SeXaUi0seD2IHIcH6lr+0/KzzszmKOofuXkKMOhmfx2icwU9pffbyyawkMLiTQTmhnqVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDO2COUoxJNSNpnafdP9JxYy9tI7mVAAg/4G70rDdqw6QIhAPSX+sDsZRDFOQiXysiSDw5QkkagkcnaUpDofhah5SYx"}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.4.8":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.4.8","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha","prepublish":"coffee prepublish.coffee"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.4.8","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"b9f77082f2a83ea6d53b769ef2a773753f1409fc","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.4.8.tgz","integrity":"sha512-XQYmIwKBrJfVeOZU1AAddMbxxJY7E35IoVG3XVz+yJNuVbFm0tdAxYjCLqqST4DCw3TEB7Lgt3ZcW9khi/zf2w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTgE4YjGfItn0xjClvR7cViNILkYlNaabylpjLbT2oMAiAMBiB3wLcIyFL9h+d/NPyR5/Ird/pyi0AwYGAx6+zEbw=="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.5.0":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.0","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha","prepublish":"coffee prepublish.coffee"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.0","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"a4f8e4245617541f452cac7b9cf10dda30536a8e","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.0.tgz","integrity":"sha512-99Z8gS6uCFm1AjnqebIPyzRBuwncMQKru40Q4CKl9D1cR0D4y88bT8bXdLHeCI4rCyKesoZ3ndXQv1KjM1d3cg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD/y1US3Q2A/4H6LlmeTSEdhDLDXrzMy+rSkuHe9rDd4wIhAM5ZYVq1b5CzsvB4Ll7PYn9GLj5qA4beC/hzQd2yRacc"}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.5.1":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.1","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"*","uri-template":"*"},"devDependencies":{"mocha":"~0.7.0"},"scripts":{"test":"mocha","prepublish":"coffee prepublish.coffee"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.1","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3405c1aaeb9560c7b2e09b2b19174fd5dbd4edd9","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.1.tgz","integrity":"sha512-n4xCNubUs/rbDOj8zIjwEuASqbodpHXqbiwcnCl1oPMpj/H0eHtC0uEA3xuv5Ug1HMZjBREjuI190zP15ONjDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHh9J5SCOhR18XubPOudQc+Aw1JY8fdQ7nSS/DBWqZl/AiEA16UsuXekA7uf2IZld90o0ppkMNXQYR5lfsrIxVb4OWk="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.5.2":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.2","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"*","uri-template":"*"},"devDependencies":{"consolidate":"0.1.0","mocha":"~0.7.0"},"scripts":{"test":"mocha","prepublish":"coffee prepublish.coffee"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.2","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"c4835ae4c384e76d21936f8a85e1d3aa45aa6876","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.2.tgz","integrity":"sha512-LsBX/5kSJlk0OQ2Tp9+dX7K7We69MJjMJQUXjXn88sIipYITZ6GZXoaQ94755+EpC43ieVv3NytObHeSDL8Enw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKIyFPJaBKPFEQ9VwkVjAshNDrerQU7wXJZynYxfcU8wIhANwVCPrEWsWITndL4KluDxbEuJx4vPvxf2/QDorapfR4"}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.5.3":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.3","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"~1.7.0","uri-template":"~0.2.0"},"devDependencies":{"consolidate":"0.1.0","mocha":"~0.7.0"},"scripts":{"test":"mocha","prepublish":"coffee prepublish.coffee"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.3","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"1ea45a5e720a94be837f075264ce36c6f229d865","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.3.tgz","integrity":"sha512-hkQbTuedkFDv7BWX26y+O5ChT+drt+NmEJNcWtntIwoTTkCcPqSEcRUjzWE3Pja5QwDsDB0mBNgNomG0a0LiVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE4rEAoiTFMGUJdeYuA6pHYhqQXwQJWQoRt0ifEsXILCAiBYdA9CDweUOkOC+ci68zW5Dys2wtt78+e/F6CN9GgEew=="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.5.4":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.4","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lib/lazorse","files":["lib","examples","test","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"~2.0.0","uri-template":"~0.2.0"},"devDependencies":{"consolidate":"0.1.0","mocha":"~0.7.0"},"scripts":{"test":"mocha","prepublish":"coffee prepublish.coffee"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.4","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"cf2069d4ec5fe7e9a827eb9a992e88db1c2dc21e","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.4.tgz","integrity":"sha512-ND7V9+ZTyZBQu5ry10cvRzLuASqOJRl8g/VF5TBGk2XJWWEUGhcqGvhBiYXxoRN6SWc2bCCUNLbEOIvMlgFiaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcoNbzXbrv1nAh8w9IL0sOCW1l06GCMAUGLkCsT6iEagIgV9ZRaDNGCyqq7e17VtU1JGcyvl5++kb4+GI7Pqt5XvY="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"directories":{}},"0.5.5":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.5","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lazorse","files":["lib","examples","test","lazorse.coffee","README.md"],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":"~1.2.0","connect":"~2.0.0","uri-template":"~0.3.0"},"devDependencies":{"consolidate":"0.1.0","mocha":"~0.7.0"},"scripts":{"test":"mocha"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.5","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"8559ce7edf1541deb122b884115cad96c3d71717","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.5.tgz","integrity":"sha512-313/mKcEOHqBVhJehJvYRZYBM/UPLFPgLmY7EWXMjgRTNJ8mw2DMjSR8MNVgx+EPt8UAUtPW/kELIvWt7G5saQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFKLURXixtbFHF+YeMOBzSwODd2YRc/7sNxEuMBMDA1SAiEA5k2ngg4LCU94DWeE8DFZxKuvGbSA6dHutJfbWDdOIIg="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.5.6":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.6","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lazorse","files":["lib","examples","test","lazorse.coffee","README.rst"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"~2.0.0","uri-template":"~0.3.0"},"devDependencies":{"mocha":"~1.0.0","coffee-script":"~1.2.0","consolidate":"0.1.0"},"scripts":{"test":"make test","prepublish":"make release"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.6","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"339a24bbfe3dc8375ac4e630790415b019d989aa","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.6.tgz","integrity":"sha512-2cl2kw0ePWfcVRb0rpqGuzvL5bEP3B1dt0r7wiLsODT47Myg9cb3klugFnU8xYqgNaawV+QHmoc8iEum+ksRZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6sH6hW6Neh6AMzKVSGLDZ4uY1OsWd8FWJHQpsFVjbiAiEA40nEh3MiUSmYtmFvFV+FxNE1fyl1hxJ+B1d/KVeEvXE="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.5.7":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.5.7","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lazorse","files":["lib","examples","test","Makefile","lazorse.js","README.rst"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"~2.0.0","uri-template":"~0.3.0"},"devDependencies":{"mocha":"~1.0.0","coffee-script":"~1.2.0","consolidate":"0.1.0"},"scripts":{"test":"make test","prepublish":"make release"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.5.7","_engineSupported":true,"_npmVersion":"1.1.15","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"70cbb05596aac4f9ea14eceaa33cf1f70878edd9","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.5.7.tgz","integrity":"sha512-HrQ3wQIsKVPNzDCI6YXDbFuykFEW04XKGxO0Zk2nxUUVGiyqP/mIBo7EIPXwc0Pnvr1OfwdAzWjqzjgaUnVQAw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICz+eWGJfK3qfjEjolCNxU/8w/NTvEhJgfcSPzy2v3m6AiEArLinQ5IXJi0TMG/l1rvvI5GjM6Bk+7HDQwkB/Cz1S0k="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.6.0":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.6.0","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lazorse","files":["lib","examples","test","Makefile","lazorse.js","README.rst"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"~2.0.0","uri-template":"~0.3.0"},"devDependencies":{"mocha":"~1.0.0","coffee-script":"~1.2.0","consolidate":"0.1.0"},"scripts":{"test":"make test","prepublish":"make release"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.6.0","_engineSupported":true,"_npmVersion":"1.1.0-3","_nodeVersion":"v0.6.10","_defaultsLoaded":true,"dist":{"shasum":"5f7bd19c3e2999107054480e37751171ffcc3533","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.6.0.tgz","integrity":"sha512-Nln/aPKXWfmAUrlIzQoJhP3oblpJuauy2MPz+XgQixPKS+N6b9V2p7QCD+o9ktOmv9/9ZYxmDzPnb9C5cAJSWQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXSC87BwL6cI7Lj1CqybpS6DHxMszqsuLTZoJ4nUuDXAIgVR7uVydHr0cRYf3js21R9TmghhZ4UuDhmYNWUZkq9I4="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.6.1":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.6.1","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lazorse","files":["lib","examples","test","Makefile","lazorse.js","README.rst"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"~2.0.0","uri-template":"~0.3.0"},"devDependencies":{"mocha":"~1.0.0","coffee-script":"~1.2.0","consolidate":"0.1.0"},"scripts":{"test":"make test","prepublish":"make release"},"optionalDependencies":{},"_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"_id":"lazorse@0.6.1","_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"07986cbf31e3d2228924b845539d4ecc942de9f7","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.6.1.tgz","integrity":"sha512-J2451577ZYSZ0YRmom/id2WNxDjp2JyNduwP0KOm37t4pKvtJfJfPNXTAtoVAiz+ZGOXxP/TE6mDs1Llh5IBZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDfHqbGYgrJV0bK0pREEFKJS8zJkSvRMZDG8DD/iZ3LBAiEA0lWHVbyEBBBX3w68xHmIH9nGm16A1vpohpo3E/c3eWo="}]},"readme":"","maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]},"0.6.2":{"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"name":"lazorse","description":"The lazy programmers ReST service framework","version":"0.6.2","homepage":"http://betsmartmedia.github.com/Lazorse","repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"main":"lazorse","files":["lib","examples","test","Makefile","lazorse.js","README.rst"],"engines":{"node":">=0.4.0"},"dependencies":{"connect":"~2.0.0","uri-template":"~0.3.0"},"devDependencies":{"mocha":"~1.0.0","coffee-script":"~1.2.0","consolidate":"0.1.0"},"scripts":{"test":"make test","prepublish":"make release"},"optionalDependencies":{},"readme":"Lazorse!\n========\n\n.. image:: https://secure.travis-ci.org/BetSmartMedia/Lazorse.png?branch=master\n  :target: http://travis-ci.org/BetSmartMedia/Lazorse\n\nLazorse is a resource-oriented web-framework with a strong emphasis on\nextensibility and the separation of various concerns into independent\nmiddleware_ layers.\n\nIt includes middleware to find a resource, coerce URL parameters, dispatch to\nHTTP method handlers, and render a response.  \n\nIt borrows heavily from other_ awesome_ node.js `web frameworks`_ but with a\ncouple of twists designed to make writing machine-consumable ReSTful APIs a little easier. Because it's all \"just \nmiddleware\", you can also pull out and re-arrange the various pieces to better \nsuit the needs of your application.\n\n.. _middleware: http://stephensugden.com/middleware_guide/\n.. _web frameworks: http://expressjs.com/\n.. _other: http://zappajs.org\n.. _awesome: https://github.com/kadirpekel/coffeemate\n\nBe sure to check out the guide_ and `API docs`_!\n\n.. _guide: http://betsmartmedia.github.com/Lazorse/guide.html\n.. _API docs: http://betsmartmedia.github.com/Lazorse/api.html\n\nWhat's the deal with the name?\n------------------------------\n\nWhile it *could* be viewed as a portmentaeu of Lazy and Resource, I prefer to\nthink of it as horses with lasers.\n\n.. image:: http://substack.net/images/lazorse.png\n","_id":"lazorse@0.6.2","dist":{"shasum":"fb33b69fb04cb0da7b9ab04b6fa21dd8202c7545","tarball":"https://registry.npmjs.org/lazorse/-/lazorse-0.6.2.tgz","integrity":"sha512-KlLn5B25Orm1g9Ip2o3cDs6T1Psg1RkxSxtvNvWtrnlADuoGLy3l8lAv8J3+BWi8pnvfdqrGvcM9Z5FxyE0UHQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2ooWKrQ8cRKOBb/IKOvKhfxTR9UtFsMvr9uXAA3MZHgIgSCnE1IGwSAg98oP9cK677U7Vl2x5F1XINA4dRHCd6+k="}]},"_npmVersion":"1.1.62","_npmUser":{"name":"grncdr","email":"glurgle@gmail.com"},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}]}},"maintainers":[{"name":"grncdr","email":"glurgle@gmail.com"}],"time":{"modified":"2022-06-19T10:55:43.325Z","created":"2011-10-31T18:52:50.785Z","0.0.1":"2011-10-31T18:52:52.044Z","0.0.2":"2011-10-31T20:20:21.689Z","0.1.0":"2011-12-07T06:34:45.055Z","0.1.2":"2011-12-09T07:51:08.827Z","0.1.3":"2011-12-09T08:00:28.740Z","0.1.4":"2011-12-11T19:50:42.598Z","0.2.1":"2012-02-01T06:58:10.236Z","0.3.1":"2011-12-24T22:05:32.396Z","0.4.1":"2011-12-28T03:28:40.432Z","0.5.0":"2012-04-02T01:10:41.305Z","0.4.2":"2011-12-28T20:42:30.821Z","0.4.3":"2012-01-04T01:36:06.183Z","0.4.4":"2012-01-10T03:43:39.683Z","0.4.5":"2012-01-10T03:56:05.355Z","0.4.6":"2012-02-01T09:48:12.499Z","0.4.7":"2012-02-12T04:48:51.770Z","0.4.8":"2012-03-30T06:16:22.100Z","0.5.1":"2012-04-02T01:51:56.127Z","0.5.2":"2012-04-02T21:27:49.575Z","0.5.3":"2012-04-06T06:46:17.151Z","0.5.4":"2012-04-06T08:03:47.411Z","0.5.5":"2012-04-07T23:56:34.997Z","0.5.6":"2012-04-08T05:35:11.459Z","0.5.7":"2012-04-09T18:58:16.184Z","0.6.0":"2012-04-10T07:21:09.934Z","0.6.1":"2012-07-24T23:26:55.132Z","0.6.2":"2012-09-27T20:29:16.873Z"},"author":{"name":"Stephen Sugden","email":"stephen@betsmartmedia.com","url":"www.betsmartmedia.com"},"repository":{"type":"git","url":"git://github.com/BetSmartMedia/Lazorse.git"},"users":{"fgribreau":true}}