{"_id":"fakr","_rev":"53-ae5a8791818ffe27f45711a49ffccbfc","name":"fakr","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","dist-tags":{"latest":"0.2.5"},"versions":{"0.0.1":{"name":"fakr","version":"0.0.1","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","mocha":"~1.17.0","chai":"~1.8.1","lodash":"~2.4.1"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.0.1","dist":{"shasum":"edac97ae6f17f0bedc15c18b3a246542d7a316db","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.0.1.tgz","integrity":"sha512-mnvufilijEaDG/vEQtsOS3rske0MRcj1ATGJd9NiOzTMt+J67SSh3pHIj5Ho/78h5spxa9KELSnqg3zQqG3WZQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFgo7x0N1o+lWCnmSIwcT95AeccvEBHdtjlnDbBLk7ihAiEAiO5cgaUretZvsbloZBvXFhjh7kBQfhWX7BhK2YjguKA="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.0.2":{"name":"fakr","version":"0.0.2","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","mocha":"~1.17.0","chai":"~1.8.1","lodash":"~2.4.1"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.8.1","supertest":"~0.9.0","grunt-mocha-test":"~0.8.2","request":"~2.33.0"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.0.2","dist":{"shasum":"72317fb052a2088acd1ef2702b1379a756c72b00","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.0.2.tgz","integrity":"sha512-oHAAiNwk6lug4IMwgyiM9Gv1wz3fCh3YvRMpAWeusyodjstog6YnqEPzLj35e3OIxaoPdXuT18SrIa3hKAMexQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAK9cKa9ZvV7DC+grwUgpw2LeJ9HdxatLIPaV4HJmdQ3AiEAxocTu0ddHBrMW45a7xm3tm+S53tvWom4pPVV9yMqQjI="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.0.3":{"name":"fakr","version":"0.0.3","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"index","directories":{"test":"test","examples":"examples"},"scripts":{},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","mocha":"~1.17.0","chai":"~1.8.1","lodash":"~2.4.1","hogan.js":"~2.0.0"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.8.1","supertest":"~0.9.0","grunt-mocha-test":"~0.8.2","request":"~2.33.0"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.0.3","dist":{"shasum":"f1733f14a46c43ce616c44ca58d8fe79220f177c","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.0.3.tgz","integrity":"sha512-R47VPcaaeaEPQJiRrU/v+hOusvszSA76Oz1uGbDIm462tD3BLAulYoYoB84NHda4se6BtFk+mhVn3A68NRkNTA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDIW2HPHENP7ImCJW50eBL+Vz+8QSavuRymwDxCWZi69AiEAyXN7ibHne/5ovfHJq5fzzWk0SIZErTFzrq2IdUljuww="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.0.4":{"name":"fakr","version":"0.0.4","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"index","directories":{"test":"test","examples":"examples"},"scripts":{},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","mocha":"~1.17.0","chai":"~1.8.1","lodash":"~2.4.1","hogan.js":"~2.0.0"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.8.1","supertest":"~0.9.0","grunt-mocha-test":"~0.8.2","request":"~2.33.0"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.0.4","dist":{"shasum":"1d751816075b46ed8a129363f25467433ff1db62","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.0.4.tgz","integrity":"sha512-kb6rMhDfbub3dc/V3Pp3Edb7G47mKYDIapkICZ5UZ5YnKhCW4Ji+lvrFMuQsDu2OayqeAhUfaMEVcS2zvb8FXA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEbCNuiXEMprpPzP+9KPsZQeczBDZuFfMzDHEvAfvqPRAiEAylLPFiZwHi/aRu9AFcAok0ivPoAftf619UA4EWKUR0Y="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.0.5":{"name":"fakr","version":"0.0.5","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt mochaTest"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","lodash":"~2.4.1","hogan.js":"~2.0.0"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.9","supertest":"~0.9.0","grunt-mocha-test":"~0.9","request":"~2.33.0"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.0.5","dist":{"shasum":"6a23005f198ee879d05679f613741bcefa1be1c9","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.0.5.tgz","integrity":"sha512-3TEvh9WTeBnODwJYAAUOt0ew04FHYupYcMw4ALDc/rG4KflcT1jQyB0Yvw9GX25U+Y9+y6MRaaTW/S3yZEkJ+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG49y36n6HweXfIFcwNXxCJbOdPbO05bUYeGXKw/I2xYAiB56Fk/oyweHGk2lV3uNOxq0c9pAdEqjpjH3NJs/VA+Gw=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.1.0":{"name":"fakr","version":"0.1.0","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","lodash":"~2.4.1","hogan.js":"~2.0.0","node-uuid":"~1.4.1"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.9","supertest":"~0.9.0","grunt-mocha-test":"~0.9","request":"~2.33.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~0.3.0","grunt-contrib-clean":"~0.5.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.5.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.1.0","dist":{"shasum":"159d36f551eee8540f0163899b63079cddf590cf","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.1.0.tgz","integrity":"sha512-qeAepaJOvMCHSx5f261SSGf6dWiLJUhS+1NUJ05r4Heta2dzCfElBQK2BBUDkksiDrNJyy9qNuxRP0uB3mbzpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDceldhnPupCxQd4L+iI+wn3lNH3kk1wXiKpfa0eVTdqQIgBi78H/NfcyHLJeLUWCQ4dJXal2sBJH8SBwXvcTFY/+s="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.1.1":{"name":"fakr","version":"0.1.1","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","lodash":"~2.4.1","hogan.js":"~2.0.0","node-uuid":"~1.4.1"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.9","supertest":"~0.9.0","grunt-mocha-test":"~0.9","request":"~2.33.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~0.3.0","grunt-contrib-clean":"~0.5.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.5.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.1.1","dist":{"shasum":"7fea05ba994f57aad71c50d3e9cc8c0b03f79014","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.1.1.tgz","integrity":"sha512-N/oNrvvZlPCaM/fmtwTWDxsUXoq5YrTIhyCY9RtvLmZkoN6I7V3FuEGh6CRip/pAyQiQ69Ro2y94urGqJF838g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF8J+yYD7/xYOyHgbFc2GeuAswwovPKhqTL4LXfPvatuAiEA00uk+B4q0JYpfnPEnkdln63wnfvr+9VOLOsTpCKLKX0="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.1.2":{"name":"fakr","version":"0.1.2","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","lodash":"~2.4.1","hogan.js":"~2.0.0","node-uuid":"~1.4.1"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.8.0","grunt-contrib-watch":"~0.5.3","chai":"~1.9","supertest":"~0.9.0","grunt-mocha-test":"~0.9","request":"~2.33.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~0.3.0","grunt-contrib-clean":"~0.5.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.5.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.1.2","dist":{"shasum":"a5a4bd3a2c21d997883476f4013b2a5a54ae0f8c","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.1.2.tgz","integrity":"sha512-LCAYdGYfy4BLWO5W64N8ad1w1Dp3Ar61ttHuXRgAnNe2aveHl2EAXv/dD+57ow2NT9C3XZpjbo0urKXgPdfw/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDFy0l7noW5ArcN5o72Nh66XOXvlW0hkPrKMCv+CT8IgIhANtszDWRjwA/0FgwXmgZeyEZLj1qx0vHOeRPHNrPJrDq"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.1.3":{"name":"fakr","version":"0.1.3","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","lodash":"~2.4.1","hogan.js":"~2.0.0","node-uuid":"~1.4.1"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","chai":"~1.9","supertest":"~0.9.0","grunt-mocha-test":"~0.10.2","request":"~2.34.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~0.3.0","grunt-contrib-clean":"~0.5.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.5.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.1.3","dist":{"shasum":"4eb361c593a5c35463531316b6016c434bd7a37e","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.1.3.tgz","integrity":"sha512-qS3WIcLvoXdEv7FGWxKrs0ez3gWIwkIh4W+3b2jsJXNBsEFtRJlJwLizJntR+94CTX8RI2zS2C65yB9yjTic0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHh4QQciEIif65tnah5PqeTFQ7IVtRmj6flB0O5GXxFZAiATNp/kOgstLmxr3XO2VUJvlATI0uV02oN5Luh1fCaYgQ=="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.1.4":{"name":"fakr","version":"0.1.4","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~3.4.8","lodash":"~2.4.1","hogan.js":"~2.0.0","node-uuid":"~1.4.1"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","chai":"~1.9","supertest":"~0.9.0","grunt-mocha-test":"~0.10.2","request":"~2.34.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~0.3.0","grunt-contrib-clean":"~0.5.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.5.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.1.4","dist":{"shasum":"da2382c9d7eb6410d689005ef0cc13154c07a093","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.1.4.tgz","integrity":"sha512-7TlbAzS26IQ7THkoic5nHP9wyUHHfb3EIheBjkvzadTqad/WNknTWB1rq1wxry33IcPPvgvBJCmTll2gsaU0sw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvtfrM+8MkbdAKg2FQlhyAfZITkQOtCkI73zVcO5pZ+wIgU/Bl7uCCqaDbR3pegAEowedtRdT4MqNWJYpE8ADXDTw="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.2.1":{"name":"fakr","version":"0.2.1","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~4.8.3","lodash":"~2.4.1","hogan.js":"~3.0.2","node-uuid":"~1.4.1","body-parser":"~1.6.3","morgan":"~1.2.2"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","chai":"~1.9","supertest":"~0.13.0","grunt-mocha-test":"~0.11.0","request":"~2.40.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~1.0.0","grunt-contrib-clean":"~0.6.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.5.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.2.1","dist":{"shasum":"05a91922f87735d20b714e6f80369a4b84f1faaf","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.2.1.tgz","integrity":"sha512-6hIMVY+QurBWWaXOp/vx9pQmaMkCAqIPpjA99HNqyR5uXiwC1/OMluRJ3hAv8c3juwoPts1c7jRDWBbZkucJKg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOMFmaSWvBGq83PraJP3sG2YbxPeIA3ij6x5ZM40ngeAIgf2zKtalYaJsNRcbhCt3n7plOonkn6NGslbklGyIz75M="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.2.2":{"name":"fakr","version":"0.2.2","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~4.9.5","lodash":"~2.4.1","hogan.js":"~3.0.2","node-uuid":"~1.4.1","body-parser":"~1.9.0","morgan":"~1.3.2"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","chai":"~1.9","supertest":"~0.14.0","grunt-mocha-test":"~0.12.1","request":"~2.45.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~1.0.0","grunt-contrib-clean":"~0.6.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.6.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.2.2","dist":{"shasum":"606e47c0568376c32013683b3b2ea24040ff3a0d","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.2.2.tgz","integrity":"sha512-Jbzs+QN42eTP/JbKFY4TGwcNbHjZr2tam9RTcszQHG4qItAadjgtAlV+NZg/evjJ7HmMYdqEtgYhQei7LjpC/w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZEUy9dwRM/lOjgiDHCogxti/nbp9kQ2oDClYb30GqXAIhAIIg2jl1C/sGhoWezyPivMRugesnUtNyu6+1F7xIR4ZB"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.2.3":{"name":"fakr","version":"0.2.3","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~4.9.8","lodash":"~2.4.1","hogan.js":"~3.0.2","node-uuid":"~1.4.1","body-parser":"~1.9.0","morgan":"~1.4.0"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","chai":"~1.9","supertest":"~0.14.0","grunt-mocha-test":"~0.12.1","request":"~2.45.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~1.0.0","grunt-contrib-clean":"~0.6.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.7.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.2.3","dist":{"shasum":"e291599084edb9883811938ef7561d7c38185b8b","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.2.3.tgz","integrity":"sha512-V+8G9Stq3ghIirqnJrDczRKxEjyzFtfmlonR/E7A6vAKUH8lvaAfhnPues8yMu9ebP2aeti3mdsdw6QYEYHKkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDlZe1Mmz7564l3yauTq14s9LAo2OzbYQI0bMluvEyELAIgNLLQ0R7whegxaTIGyojYckjQxQ3KJW74rEuhwJYKMp8="}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.2.4":{"name":"fakr","version":"0.2.4","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"express":"~4.10.2","lodash":"~2.4.1","hogan.js":"~3.0.2","node-uuid":"~1.4.1","body-parser":"~1.9.2","morgan":"~1.5.0"},"devDependencies":{"grunt":"~0.4.2","matchdep":"~0.3.0","grunt-contrib-jshint":"~0.10.0","grunt-contrib-watch":"~0.6.1","chai":"~1.9","supertest":"~0.14.0","grunt-mocha-test":"~0.12.1","request":"~2.47.0","mocha-lcov-reporter":"0.0.1","grunt-coveralls":"~1.0.0","grunt-contrib-clean":"~0.6.0","grunt-blanket":"0.0.8","grunt-contrib-copy":"~0.7.0","travis-cov":"~0.2.5"},"homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.2.4","dist":{"shasum":"5c972e32bd8efd95d976e3052c163973a10b2c11","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.2.4.tgz","integrity":"sha512-nuR4eAfbadDvGAE0yh6HKWWu9sqcAeatj0k7gSxKeFKodM5fZzDFTVlCnJ/jHsyKMecT16jljElRUdszUEvUxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNt8bVRKT5Jm1sUG86t1W1AoOaaLb2Z7MmLWn2ChEdQgIhANgTr7ra0Tbb0//aXbDRcCBp+Ix1bApRSARf2lV0KSr8"}]},"_from":".","_npmVersion":"1.3.14","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}]},"0.2.5":{"name":"fakr","version":"0.2.5","author":{"name":"Saad Tazi"},"license":"MIT","description":"'real mock' webserver with dynamically configured routes (though node or restfull-ish API)","bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"main":"lib/index","directories":{"test":"test","examples":"examples"},"scripts":{"test":"grunt test"},"keywords":["routing","test","rest","mock server","nodejs"],"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"dependencies":{"body-parser":"~1.12.0","express":"~4.12.0","hogan.js":"~3.0.2","lodash":"~3.3.1","node-uuid":"~1.4.1","morgan":"~1.5.0"},"devDependencies":{"chai":"~2.1.0","grunt":"~0.4.2","grunt-blanket":"0.0.8","grunt-contrib-clean":"~0.6.0","grunt-contrib-copy":"~0.8.0","grunt-contrib-jshint":"~0.11.0","grunt-contrib-watch":"~0.6.1","grunt-coveralls":"~1.0.0","grunt-mocha-test":"~0.12.1","matchdep":"~0.3.0","mocha-lcov-reporter":"0.0.1","request":"~2.53.0","supertest":"~0.15.0","travis-cov":"~0.2.5"},"gitHead":"3da407e79f2a8fdff40c3567c31d8ba7332d203d","homepage":"https://github.com/saadtazi/fakr-node","_id":"fakr@0.2.5","_shasum":"10cf1babe36681034bf497be7064c276bf95df5c","_from":".","_npmVersion":"2.1.11","_nodeVersion":"0.10.33","_npmUser":{"name":"saadtazi","email":"stazi@fruitsoftware.com"},"maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}],"dist":{"shasum":"10cf1babe36681034bf497be7064c276bf95df5c","tarball":"https://registry.npmjs.org/fakr/-/fakr-0.2.5.tgz","integrity":"sha512-cnbjvS/6Kpvc/0jXo/qNDi/x9dnjIiV/2s+yHqjdY5s3RW5p5tKi/5PlFv3UnSt9fyjDv8no4Q+SsxS43s10Vg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4St8w1igUbQXROj2eFjWRO5tF2x8MUpIYCC1TvJGOTAIhAPVm2rxMQdiKY/d8nTjjcLE6hX2Yq99nTLSTN6CEdONB"}]}}},"readme":"# fakr\n\n[![Build Status](https://travis-ci.org/saadtazi/fakr-node.png)](https://travis-ci.org/saadtazi/fakr-node)\n[![Dependency Status](https://david-dm.org/saadtazi/fakr-node.png)](https://david-dm.org/saadtazi/fakr-node)\n[![Coverage Status](https://coveralls.io/repos/saadtazi/fakr-node/badge.png?branch=master)](https://coveralls.io/r/saadtazi/fakr-node?branch=master)\n\n[![NPM](https://nodei.co/npm/fakr.png)](https://nodei.co/npm/fakr/)\n\n\nCreate a dynamic web server that generates static or dynamic responses based on json configuration.\n\nRoutes can be added dynamically through:\n\n* initialization config when fakr starts,\n* fakr.addRoute function if you are in the same scope\n* fakr.addCrudApi function to generate CRUD REST-ish api routes automatically\n* a restful-ish api.\n\n# Usage\n\n```\nvar config = require('config.json'),\n    fakr = require('fakr')(config);\n\nfakr.listen(3000, function() {\n  console.log('fakr is listening on port 3000');\n});\n// in the same scope, you can add route\nfakr.addRoute({\n  \"url\": \"/api/example/(\\\\d+)\",\n  \"json\": {data: [1, 2, 3, 4]},\n});\n```\n\nYou can also extend an existing express 4.x app (since fakr 0.2 - use version 0.1.x for express 3):\n\n```\nvar express = require('express'),\n    fakr    = require('fakr'),\n    // config. can be {}\n    config  = require('config.json');\n\n// get an express app\nvar app = express();\napp.get(function(req, res) {\n  res.send('original route');\n});\n\n// then augment the app with fakr\nfakr(config, app);\n\n// you can now add routes dynamically\n\nfakr.addRoute({\n  \"url\": \"/api/example/(\\\\d+)\",\n  \"json\": {data: [1, 2, 3, 4]},\n});\n\n```\n\nNote that this feature does not work yet with express 4.\n\n# Configuration\n\n```\n{\n  \"hasAdmin\": true,\n  \"adminUrlPrefix\": \"/_admin\",\n  defaults: {\n    \"headers\": [\n      \"status\": 201,\n      \"headers\": {\n        \"Expires\": \"Fri, 17 Jan 2014 05:25:28 GMT\",\n        \"X-Frame-Options\": \"SAMEORIGIN\" \n      }\n    ]\n  },\n  \"routes\": [\n    ... see route configuration below...\n  ]\n}\n```\n\n# Config options\n\n## `adminUrlPrefix`\n\nIf hasAdmin is true (see below), then adminUrl defines the API endpoint prefix url.\nDefault: `/_admin`.\n\n## `hasAdmin`\n\nIf true, adds the following admin API routes:\n\n* for managing routes:\n    * one for listing routes: `GET {{adminUrlPrefix}}/routes`\n    * one for creating new routes: `POST {{adminUrlPrefix}}/routes`\n        * the json body should be a valid route\n    * one for modifying a route: `PUT {{adminUrlPrefix}}/routes`\n        * the json body should be a valid route\n    * one for deleting routes through: `DELETE {{adminUrlPrefix}}/routes`\n        * if the json body is not empty: the json body request should contain a url (string).\n  `method` is optional (uses the config value, which defaults to `get`)\n        * if the json body is empty: all routes will be removed!!\n* for getting previous requests when `storeRequests` is set to `true`:\n    * one for getting the previous requests: `GET {{adminUrlPrefix}}/routes`\n        * the query string should represent a valid route (url, method are mandatory, isRegExp optional)\n\n    * one for resetting the previously stored requests: `DELETE {{adminUrlPrefix}}/routes` \n        * the json body should be a valid route\n\n* for managing CRUD api routes:\n    * one for listing all CRUD api routes: `GET {{adminUrlPrefix}}/api-routes`\n    * one for getting one CRUD api route info: `GET {{adminUrlPrefix}}/api-routes/{{route-name}}`\n    * one for creating new CRUD api routes: `POST {{adminUrlPrefix}}/api-routes`\n    * one for deleting CRUD api routes through: `DELETE {{adminUrlPrefix}}/routes`\n\n## `routes`\n\nAn array of routes that will be available when server starts.\nSee below how to configure routes.\n\nOther routes can be added dynamically after the server is started.\n\n# Route Configuration\n\nAll routes can have the following properties:\n\n* `headers`: a list of header names/headers values, like `Content-type`...\n(default: {\"content-type\": \"application/json\"}).\n* `status`: http response status code (default: 200).\n* `url`: the url, accepts regular expressions if isRegExp is `true`, \nor expressjs url format (`/route/:id...) if it is false.\n* isRegExp: tells fakr if the provided url param (as string) \nshould be converted into a regExp (default: false).\n  * note that it has no effect if url is a js regExp object.\n* `method`: http method (default: `get`)\n\nYou can also set the default values for all responses in your config,\nunder the `defaults` properties.\n\nEach route type uses different properties.\n\n* if it has a `string` property, it is a string route.\n    * the `string`property should be a string.\n* if it has a `template` property, it is a template route.\n    * the `template` property should be a string that should be into a hogan.js template. \n  The template has access to `req`, so `req.params`, `req.body` or req.\n* if it has a `json` property, it is a json route.\n    * the `json` property should be a valid json object.\n* if it has a `function` property, it is a... guess what?\nYes, a function route.\n\nThe order of creation of routes is important: the first matching route is executed.  \nAlso, if a route has a `string` and a `function`property\n(who would do that anyway?), fakr assumes that it is a string route.\n\n## String Route Example\n\nFor static response.\n\n```\n{\n  \"url\": \"/api/test-string\",\n  \"string\": \"this is a string\",\n  \"method\": \"get\",\n  \"header\": \"text/plain\",\n  \"status\": \"200\"\n}\n```\n\n## String Route Example\n\nFor templated response, that has access to the request object property. Uses hogan.js (mustache-like)\n\n```\n{ \"url\": \"/api/test-template/:id-:title\",\n  \"isRegExp\": false,\n  \"template\": \"* id is {{req.params.id}}\\n\" +\n              \"* title is {{req.params.title}}\\n\" +\n              \"* q is {{req.query.q}}\\n\",\n  \"method\": \"get\"\n}\n```\n\nWhen requesting `GET /api/test-template/1-hello?q=yo`, it will respond with:\n\n```\n* id is 1\n* title is hello\n* q is yo\n```\n\n\n\n## JSON Route Example\n\nThis route forces the Content Type header (relies on expressjs response.json())\n\n```\n{\n  \"url\": \"/api/test-json\",\n  \"json\": {\"prop1\": \"value1\", \"tags\": [\"news\", \"koko\"]},\n  \"method\": \"post\",\n  \"status\": 201\n}\n```\n\n## Function Route Example\n\n```\n{\n  \"url\": \"/api/test-function/:resource\",\n  \"method\": \"get\",\n  \"function\": \"function(route) { return function(req, res, next) {res.send(req.params.resource); }}\"\n}\n```\n\n`function` can be a real function or a string to evals to a string.\nIt should return a middleware function (params are: req, res, next (optional)).\n\nWhy not directly the middleware function? Thanks to closure, you can do things like that:\n\n```\nfunction(route) {\n  var nbCalls = 0;\n  return function(req, res /*, next*/) {\n    var text = ++nbCalls < 3 ?\n                'called ' + nbCalls + ' times':\n                'stop, I\\'m tired.' +\n                '\\nid: ' + req.params.id +\n                '.\\ntitle: ' + req.params.id;\n    res.send(text);\n  };\n}\n```\n\nYou can also have access to the json route definition using `route`, and add extra parameter to the `route`definition\nand access them in the function. \n\n# CRUD API Routes\n\nYou can also add CRUD routes using the fakr.addCrudApi() or the admin api url.\n\nyou need to provide a `name`, which is the name of the entity you want to manage.\nIt will generate by default 5 routes per entity:\n\n* `find` url: defaults to `GET /{{entity-name}}` which lists all entity instances\n* `get` url: defaults to `GET /{{entity-name}}/{{ID}}` which returns one entity instance\n* `add` url: defaults to `POST /{{entity-name}}`.\n    * expects a json in the request body.\n* `remove` url: defaults to `DELETE /{{entity-name}}/{{ID}}`\n* `update` url: defaults to `PUT /{{entity-name}}/{{ID}}`\n    * expects a json in the request body.\n\n\n**All the data are kept in memory and is lost when you stop the express app**.\n\n## CRUD API Configuration\n\nTo create new CRUD API, the minimum configuration is:\n\n```\n{ \"name\": \"entities\" }\n\n// Generates the following urls:\n// GET    /entities\n// GET    /entities/ID\n// POST   /entities\n// DELETE /entities/ID\n// PUT /entities/ID\n\n//\n```\n\nBut you have control on a lot of things if you need. Here is the default configuration:\n\n```\n{\n  model: {\n    config: { idKey: 'id',\n              keyStrategy: 'autoIncrement',  // other strategy: 'guid'\n              // if true, it will throw if you try to:\n              // * add an existing id\n              // * delete a non-existing id\n              // * update a non-existing id\n              detectExisting: false\n            },\n    initData: []  // an array of entities (POJO)\n  },\n  urlBase: '/{{name}}',\n  routes: {\n    find: {\n      // each route should be a valid route as described in `route configuration` section,\n      // except for the funtion url that should follow the structure below \n      // (a function with param status and model that returns a function \n      // that returns a function with params request et reponse... yeah... I know...)\n      method: 'get',\n      url: '{{urlbase}}',\n      function: function(status, model) {\n        return function() {\n          return function(req, res) {\n            res.json(status, {data: model.getAll()});\n          };\n        };\n      }\n    },\n    get: {\n      method: 'get',\n      url: '{{urlbase}}/:id',\n      function: function(status, model) {\n        return function() {\n          return function(req, res) {\n            var item = model.findById(req.params.id);\n            if (item === undefined) {\n              return res.json(404, {});\n            }\n            res.json(status, model.findById(req.params.id));\n          };\n        };\n      }\n    },\n    add: {\n      method: 'post',\n      url: '{{urlbase}}',\n      status: 201,\n      function: function(status, model) {\n        return function() {\n          return function(req, res) {\n            res.json(status, {data: model.add(req.body) });\n          };\n        };\n      }\n    },\n    remove: {\n      method: 'delete',\n      url: '{{urlbase}}/:id',\n      function: function(status, model) {\n        return function() {\n          return function(req, res) {\n            res.json(status, {data: model.remove(req.params.id) });\n          };\n        };\n      }\n    },\n    update: {\n      method: 'put',\n      url: '{{urlbase}}/:id',\n      function: function(status, model) {\n        return function() {\n          return function(req, res) {\n            res.json(status, {data: model.update(req.params.id, req.body) });\n          };\n        };\n      }\n    }\n  }\n  }\n```\n\nIn the url properties, `{{urlbase}}` and `{{name}}` are replaced by the `name` and `urlBase`.\n\nIf you don't want one of the 5 generated urls, just assign `false`to the corresponding route in the config. \n\n# Public API\n\n## fakr(config, app)\n\n`config` is a json configuration, it can be null, defaults to {}.\n\n`app` is optional. If defined, it should be an expressjs app. It will \n\n## `app.addRoute(json)`\n\nAdds a route defined in `json`(see [Route configuration](#route-configuration))\n\nNote that if `fakr()` was called with an `app` param, then adding a fakr route\nthat match exactly a already existing app route will have no effect: the original route will match.\n\nIf 2 fakr routes have the same url and method, then the **last** defined route will overwite the first route.\n\n\n## `app.removeRoute(json)`\n\nremove a route defined in `json`. Expected `json.url`.\n`json.method` (or default `method`) is used to find the route that will be deleted.\n\n## `app.removeAllRoutes()`\n\nremove all routes added by fakr.\n\nIf `fakr()` was called with an `app` param, then only routes added through `config`, `app.addRoute()`\nor the `admin`api will be deleted.\n\n## app.addCrudApi(config)\n\nAdds CRUD API routes. config should contain a `name` property.\nSee above the **CRUD API Configuration**.\n\n## app.removeCrudApi(name)\n\nRemoves CRUD API routes.\n\n# Internals\n\nIn case you need to debug something...\n\n## app.fakrRoutes\n\narray of fakr routes (added through init config, addRoutes or api calls).\n\n## app.fakrCrudRoutes\n\nlist of CRUD API routes. the key is the `name` of the CRUD API routes.\n\n## app.routes\n\nIt is not added by fakr library, but it is an express property.\nfakr uses it when removing routes. Helpful to debug.\n\n# TODO\n\n* ~~add grunt~~\n* ~~add tests~~\n* ~~add regExp url format support (through new RegExp()?)~~\n* ~~add CRUD route type~~\n* ~~add API to control routes dynamically~~\n* ~~add API to control api routes dynamically~~\n* add an admin UI\n* add way to \"prepare the future\" (first call: return this once, then this 3 times, or a la sinonjs...)\n\n#LICENSE\n\n[MIT](./LICENSE.txt)\n\n#CHANGELOG\n\n## 0.2.4\n\n* upgraded packages\n\n## 0.2.3\n\n* upgraded packages\n\n## 0.2.2\n\n* upgraded packages\n\n## 0.2.1\n\n* upgraded packages\n\n## 0.2.0\n\n* upgraded to express 4\n\n## 0.1.4\n\n* added access to `route` (json) in function route\n\n## 0.1.1\n\n* added simple request logger (to console)\n\n## 0.1.0\n\n* added crud api routes (list, get, add and delete)\n\n## 0.0.5\n\n* fakr can extend existing express app by adding addRoutes, admin api...\n\n## 0.0.4\n\n* added removeAllRoutes and corresponding /_admin/routes DELETE api (with no params!!)\n* add PUT method to update a route\n\n## 0.0.3\n\n* fixed npm main property and hoganjs dependency","maintainers":[{"name":"saadtazi","email":"stazi@fruitsoftware.com"}],"time":{"modified":"2022-06-17T23:24:59.330Z","created":"2014-01-18T06:53:34.608Z","0.0.1":"2014-01-18T06:53:35.450Z","0.0.2":"2014-01-20T04:10:37.169Z","0.0.3":"2014-02-10T19:57:48.709Z","0.0.4":"2014-02-11T02:26:58.297Z","0.0.5":"2014-02-12T03:58:46.564Z","0.1.0":"2014-02-17T04:55:45.136Z","0.1.1":"2014-03-22T04:10:43.556Z","0.1.2":"2014-03-23T00:41:54.053Z","0.1.3":"2014-04-24T03:23:19.370Z","0.1.4":"2014-08-04T00:56:45.135Z","0.2.1":"2014-08-13T01:24:45.953Z","0.2.2":"2014-10-06T01:17:47.335Z","0.2.3":"2014-10-18T12:02:44.474Z","0.2.4":"2014-11-10T01:58:16.430Z","0.2.5":"2015-02-25T05:55:33.163Z"},"author":{"name":"Saad Tazi"},"repository":{"type":"git","url":"git://github.com/saadtazi/fakr-node.git"},"readmeFilename":"README.md","homepage":"https://github.com/saadtazi/fakr-node","keywords":["routing","test","rest","mock server","nodejs"],"bugs":{"url":"https://github.com/saadtazi/fakr-node/issues"},"license":"MIT"}