{"_id":"gleeman","_rev":"41-8d129be0ec0729d9f4c551f0ff4ebbd6","name":"gleeman","description":"Framework agnostic meta framework","dist-tags":{"latest":"0.5.3"},"versions":{"0.1.0":{"name":"gleeman","version":"0.1.0","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.1.0","dist":{"shasum":"e7b46a31df9da833f340a38d60f9a865e5b381b7","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.1.0.tgz","integrity":"sha512-2xb+f88UB01DLlS4pQ0MZFVFxDwd5Wl6cGQWBk4kA7Amlzq5m04iOufoXoOcsyM7ESuF7GDHumb9PGnLk2poEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFDXENg7HuO+qXW2fQJ/tk7EWCqqSzaxgCw92yRkCpOWAiA5pElYppiTykkkYA2V4qpqV3nC9VH066onV2o0jE8wfw=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.1.1":{"name":"gleeman","version":"0.1.1","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.1.1","dist":{"shasum":"c25d61bc6bd1def4c5aeba1d192c0213a9744d80","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.1.1.tgz","integrity":"sha512-zj5dxNacMe6OiTZKNDmayHvuf9/ZoX7nFbzw1qH7dT771jc6fp8TxeNukim9zkRKk9+xn6kYZ/vvIXo0f0m8BA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+Iv6mcSFuVsRjndx2YGKpmxrws6M3lEb3OCctY01tcAIhAOXaMopTb/+s6UFZ5njkFOYZfYiBiA1eJVBNRbc1q+91"}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.2.0":{"name":"gleeman","version":"0.2.0","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.2.0","dist":{"shasum":"1d31a4b34ddc3728d445d7b7465fef3c1183f927","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.2.0.tgz","integrity":"sha512-D+RZ+4NOweEfE5boXNoLOrG8Dd9/NhBzdlAGupqjUBTIRA0TjrL+RdIFGFbA80CYDI6NFMDUz+mSrb6ZVmn4ww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHe2HWFQaQz8O/fvqrpgdICAQxkgj66EeHlU3adBEgY5AiA32kEZZ/Y2W/5w1ma9O9atiKkjEUohFa5eNYkiItOy2g=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.2.1":{"name":"gleeman","version":"0.2.1","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.2.1","dist":{"shasum":"9736d8b873131555af3d2610a5d44333119c0cbc","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.2.1.tgz","integrity":"sha512-87HYIf8rR33hn+2+dXBzHgyXNPLn93cXYXWGPPVoUNRzQ/85XkAD2WBV0xSyChmLLWel6SYu8wQS8lLCg8LiGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHYXy7aU2cK+Vd2TMMdX7pCzHtq9eaF0vSPJ7F9XupKhAiBeqgjtfOxNX2Ibncfg2T74ovSWUAgyJMey+i/I9Cs4GA=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.2.2":{"name":"gleeman","version":"0.2.2","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.2.2","dist":{"shasum":"d7f0c494891b0052346f825645d5e89b80101eea","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.2.2.tgz","integrity":"sha512-+kNNFsgzubDIxGXu7sf8UPTg+N/pwDeNxqHhSgbHRRZ1aXITTzL6Y6LA6/ftR1WONh8b/mAaLxt3M8VH5RaE5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0FEOY/HRx3Ss5wOuR5HZBEPZfe+9OPUMcRDyKaCccuAiAK1DeEVtZ3Tweiyz52q7HBHpUq8mXcu7wPmHW5JKJYqQ=="}]},"_from":".","_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.3.0":{"name":"gleeman","version":"0.3.0","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.3.0","_from":".","dist":{"shasum":"4b11492a3268d751c09185bad213334a1ee5e7a9","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.3.0.tgz","integrity":"sha512-MYQI0998Z9xgcjr/al+eSlG9gLqNd1As8QhbThYvWceHU9Wf5dorDegpX1F+4ru8oif43md4elJpPraDCD1qmg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtAF3q0h45LFc87YlRcL16XgAGD1pjnzRCVkalJJMoOAIhAORhVgE9rX2RrufOsPF64ALAm4K3CjO3/MHEIBGxyQ/b"}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.4.0":{"name":"gleeman","version":"0.4.0","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.1.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.4.0","_from":".","dist":{"shasum":"e305958449b85c544220bb8f98e493a79e6afe69","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.4.0.tgz","integrity":"sha512-RnlVpW+4PVjBtQIgby5DjSjaH0xry1G4vhkl/F5F3DM/bOHpFUSkWhb7GAU/sBsrY3VM35finWxv1z5TLurUYA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJbqVwHWc1wzVbRomZBKbBzIr4Y8qlbcUnK7eMnUtnjQIhAKB1GduV2RV2U7zCpbX1KiDGurY91p1G17nUvu/gTemr"}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.3.2":{"name":"gleeman","version":"0.3.2","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.3.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.3.2","_from":".","dist":{"shasum":"244e9645908081c40143448004cdf89f7f9cac45","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.3.2.tgz","integrity":"sha512-JQ8m5JTBrt3BstxnNSM+ykLyLt55vh5OtncxnfpuhJQwOVS5PmUSRHtV55vz0qfjaNbQr41tmCv4EqG0+ZngtQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6iXdEeSOEvnwvHjMW0bS4Oaw6pEdDUly7dRs077TltAIhAIdptiLhsr6fEXuSomiXU2EPByw+WBRAS7cPEfFeWjsB"}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.3.3":{"name":"gleeman","version":"0.3.3","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.3.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.3.3","_from":".","dist":{"shasum":"94629e379624ffaf0a96240361ac51e37909e0eb","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.3.3.tgz","integrity":"sha512-iqpoAPROzwJyrncY9hG6AZJbgFrS7NA8zEUymLYMghV2YdwwAmLZD/IkoBd0XLuul6UT3/i8cuENBk7F2o6FpA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA7kaOdCZque1zah9h+s4sJ7DUzOSmrloEkT1F7JzM/ZAiBbPUDL9WHgxPIBpi1v7W1v+VF9MWipIZg3SaPgjhjftA=="}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.3.4":{"name":"gleeman","version":"0.3.4","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~1.3.1","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.3.4","_from":".","dist":{"shasum":"ee56791195c543b53bfddff07ff41aaf12a14f77","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.3.4.tgz","integrity":"sha512-d6mnvZUU3KUsaxs4U6+1vmHq7SGL3EeLu8stgpQS5wuN6YRPXCYQgqouJCGdHwf+Be/PB0IeTRMPswbJnYLwuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBXd3/L+JjY9gjp4k68+/6M/24LxeM8fyjSGd/a2iD3JAiEA2qmHfq4vSL2fdSxU8CYJG/BJfrfwq4BqnU4+Dz4INig="}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.3.5":{"name":"gleeman","version":"0.3.5","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~2.0.0","async":"~0.2.7"},"devDependencies":{"mocha":"~1.9.0","expect.js":"~0.2.0"},"_id":"gleeman@0.3.5","_from":".","dist":{"shasum":"1429133beda778096ed56ef8b5e231e030f976e9","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.3.5.tgz","integrity":"sha512-nCZ5cmAAhuS0h1rl62o+o/m5Lm9qnNFCins2W4y4HND4ofG0laT6Uft7C1zc+ciJYMg+qPf7WqLr/cZAGiRqpQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBvM82eQTwJUubrWpt7DJ2STnUG7HPqZ5sRDuy6YAOiLAiAPL8yeXOZO/Bu/5oX+LaEXDAlFkEL38s+GEIvxl9Q9dw=="}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.5.0":{"name":"gleeman","version":"0.5.0","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~2.4.1","async":"~0.7.0","co":"~3.0.5"},"devDependencies":{"mocha":"~1.18.2","expect.js":"~0.3.1"},"_id":"gleeman@0.5.0","_from":".","dist":{"shasum":"670e16d881f2e9511a48f5d6efef94f27b604460","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.5.0.tgz","integrity":"sha512-yqOfMHXebrr3mPGL+CbL/mwaAk5ib9hECTBiOCykf21NCu+3bYg1vog6715+JIDrVQSCHnxZ9cxb8qZawjVIrg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDTJT42c13yjOogz6aFtp2nFuZVJwjjBky7t1C3wrKJ0AiEA2H9N28TDvuzxvBy10dboAJJvz8VDgrQ7w6PfTsPoSjk="}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.5.1":{"name":"gleeman","version":"0.5.1","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~2.4.1","async":"~0.7.0","co":"~3.0.5"},"devDependencies":{"expect.js":"~0.3.1","mocha-co":"~1.17.1-co.1"},"_id":"gleeman@0.5.1","_from":".","dist":{"shasum":"ef4c08bed6aebb5b1238df3e87f00877c0351673","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.5.1.tgz","integrity":"sha512-VOixXgkLNcI0bL9CG207e0Xey39Dj9ugHGS45pmrI79740DF7XWthiR/NOntmbAUIBAZKpxzijJH6YS6Be4yYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQoAA9G8G6wsybAp1N1P1vO1Xz2jgNjtH+RojA7xhLBAiEAkCiFu7SRLpr1h2PuiiGm96fSS6bB/Ak+m5nsAydAJOE="}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.5.2":{"name":"gleeman","version":"0.5.2","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~2.4.1","async":"~0.7.0","co":"~3.0.5"},"devDependencies":{"expect.js":"~0.3.1","mocha-co":"~1.17.1-co.1"},"_id":"gleeman@0.5.2","_from":".","dist":{"shasum":"a44a1d36fbc0b61fb29c7b4de6afdfe6ad7a8e9b","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.5.2.tgz","integrity":"sha512-P/mfnhJRSSchJFAMOlGbfKuZsHIsCACVmfDbqdj/y2iSanzNhtgoD7R6kDuYbLwjkep3AT6CfSahS50pv1b0Fg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2oFtus084z9SST6Vsnk400kg/3dZu7HwVRy+IGWf0XgIgb8NYi0o9o+qlS+pH789CEI/txvdDwmRDdKN4f5yJLVU="}]},"_npmVersion":"1.2.17","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]},"0.5.3":{"name":"gleeman","version":"0.5.3","description":"Framework agnostic meta framework","main":"index.js","scripts":{"test":"make test"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"license":"MIT","dependencies":{"lodash":"~2.4.1","co":"~3.0.5","async":"~0.8.0"},"devDependencies":{"expect.js":"~0.3.1","mocha-co":"~1.17.1-co.1"},"_id":"gleeman@0.5.3","_from":".","bugs":{"url":"https://github.com/gleeman/gleeman/issues"},"homepage":"https://github.com/gleeman/gleeman","dist":{"shasum":"a96c950a5bdb05d12ecb1f3159bbeba37ab7a97a","tarball":"https://registry.npmjs.org/gleeman/-/gleeman-0.5.3.tgz","integrity":"sha512-9tixj4/zePx2fk/UyfBaW50XhQWyu01qg5/E1N6jAVrpJaJejAT2jT7mcaWAX5tKlY2GAA3mI2A6c0cpdWYBjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYbJm88NFPEv6XCBKMliBc+cyxlXmt3yjuJnLz5z9F5AiEAkvD/ef/rzSnLb1xLwBTT+FpL8hXDwe6jP+I8G6N2M0Q="}]},"_npmVersion":"1.3.22","_npmUser":{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"},"maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}]}},"readme":"[![Build Status](https://travis-ci.org/gleeman/gleeman.png?branch=master)](https://travis-ci.org/gleeman/gleeman)\n\n#gleeman\n\n####Framework agnostic meta framework\n\nWhen you build webapps, you often run into the problem of having to initialize lots\nof modules you want to use, e.g. httpserver, databases or storage\nengines. They often depend on each other and have to be initalized in specific\norder. This often leads to a giant ball of init code in your main app.js. It's\nalso difficult to test such code.\n\nWith _gleeman_ we tried to build a simple, unopiniated but powerfull module\nloader, which solves all these problems.\n\n## Example\n\nSee the example directory.\n\nOr have a look at the [skeleton project](https://github.com/gleeman/skeleton).\n\n## Why\n\n_gleeman_ uses the asyc.auto feature to resolve the dependencies. This leads\nto a number of advantages:\n* The dependencies are easily managable in the definition.\n* Dependencies can be added and removed easily without any pain.\n* _gleeman_ and async.auto care about the loading order.\n* You can test your module without having to worry about any initialization of\n  the depenedencies, you can set their state as you want - this is called\n  _dependency injection_\n* By defining a namespace property in your app, it is easy distributable as a\n  package to be used in other projects, it can also be deployed to npm so that\n  others are able to plug it into their gleeman based projects.\n\n## Usage\n\nYour project starts with a simple js file\n\n```javascript\nvar join = require('path').join;\n\nvar config = {\n  appsPath: join(__dirname, 'apps'),\n  apps: {\n    core: {\n      myapp: '',\n    }\n  }\n};\n\nvar run = require('gleeman')(config)\nrun(function(err, autoConfig) {\n  console.log(autoConfig);\n});\n```\n\nAs you can see, _gleeman_-Function takes a configuration object as parameter \nand returns a runner to start the process. This can have an optional callback \nfunction. This function is called at the end of the initialisation process.\n\nThe configuration contains a property `appsPath`. This is required, if you\nwant to use apps. The `apps`-property itself contains the app you want to use\nin your project. Every app belongs to a namespace where it lives in. The\nnamespace and the app name have to match with the directory structure of the\nproject. For the upper example the file structure is as follows:\n\n```\nexamples/minimal-project\n├── index.js\n└── apps\n    └── core\n        ├── myapp.js\n        └── myapp.test.js\n```\n\n### What is an App?\n\nAn app is a basic functionality of your project. It can be for example a basic\nexpress server, a css preprocessor, a database connection manager and so\non. An app can add functionality to your project or just provide data.\n\nThe app itself consists of several functions. These functions are called in\nthe defined order by adding dependencies. All these functions get a\ncallback as first argument. This should be called, when the function has all\ndata it wants to return. The first parameter should be a potential error that\noccured during process, the second is the result of the function. It is stored in the\nresult object with the namespace of the func as key. The functions that depend\non this function can then access the result of it, because the result is given\nas the second, third, ..., n-th parameter of the function. In addition the\nwhole `result-object` itself is always given as the last parameter.\n\n```javascript\nmodule.exports = {\n  func_one: function(func_oneDone) {\n    // do something complicated here\n    // of cause even async stuff is possible\n    var result = 'func_one_result';\n    // call the callback, first parameter is the error, second the result of\n    // this function\n    func_oneDone(null, result);\n  },\n  // this function depends on the upper on, so we have to mark this\n  func_two: ['core:myapp:func_one', function(func_twoReady, resultFromOne) {\n    // now we can use the result from above\n    func_twoReady(null, resultFromOne + ' with 2');\n  }]\n};\n```\n\nHere we can see two functions defined in a app called `myapp` under the\nnamespace `core`. `func_one` has no dependencies so there is no need to get\nthe app argument. It adds on property to the `app-object`, the key is derived\nfrom the namespace, app name and function name. In this case it will be\n`core:myapp:func_one`. `func_two` depends on `func_one` so we have to add it\nas dependency. Because we do this, it will run after `func_one`s result is\npresent in the `app-object`. That's why we can access it afterwards.\n\n### Backward dependencies or follow ups\n\nThe upper dependency can also be defined the other way around:\n\n```javascript\nmodule.exports = {\n  func_one: [function(func_oneDone) {\n    var result = 'func_one_result';\n    func_oneDone(null, result);\n  }, 'core:myapp:func_two'],\n  func_two: function(func_twoReady, results) {\n    var resultFromOne = results['core:myapp:func_one'];\n    func_twoReady(null, resultFromOne + ' with 2');\n  }\n};\n```\n\nAs you might spot, `func_one` has now an _array_-definition. But because the\n`func_two`-namespace is now after the function definition, the dependencies\nare resolved as in the prior example.\n\nIn this case, this makes no sense and is also errorprone, because in\n`func_two` we rely on data of `func_one` without explicitly knowing about it.\nA typical use case can be to provide a function to add files to a list (e. g.\nstylus files to render to css). You might want to start the rendering of the\n_stylus_ files just after all other apps have added their files to the list.\nSo you define the rendering function as a follow up function to all functions\nthat add a file to the list.\n\n###Packages\n\nBesides apps in namespaces, it's also possible to add packages to your project.\nThey are standard npm modules. They have pretty much the same api as normal\napps. They should export an object with the functions and dependencies they\nwant to provide. In addition, they have to provide a property `_namespace`.\nThis contains a string to access the packages' results or depend on one of\nit's functions. This is the express server package we build:\n\n```javascript\nvar express = require('express');\n\n// Create server\nvar expressServer = express();\n\n// Basic configuation\nexpressServer.configure(function(){\n  expressServer.use(express.bodyParser());\n  expressServer.use(express.methodOverride());\n  expressServer.use(expressServer.router);\n});\n\n// ... some other initialisations\n\nmodule.exports = {\n  _namespace: 'gleeman:express',\n  server: function(cb) {\n    cb(null, expressServer);\n  },\n};\n```\n\nAs you can see it provides one function which returns the express server. If\nyour function depends on that express server, you can add it as dependency by\nusing `gleeman:express:server`. The name is generated by the namespace\nproperty and the name of the function.\n\nWe pre-built some frequently required modules\n* [gleeman-express](https://github.com/gleeman/gleeman-express) \n  Basic express server\n* [gleeman-express-http](https://github.com/gleeman/gleeman-express-http) \n  Basic http server which hooks in the express server\n* [gleeman-config](https://github.com/gleeman/gleeman-config) \n  Simple config module to provide configuration for your app\n\nYou may also find them useful to learn how to use `gleeman`.\n\n## License\n\n(The MIT License)\n\nCopyright (c) 2012 Stephan Hoyer <ste.hoyer@gmail.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the 'Software'), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","maintainers":[{"name":"stephan.hoyer","email":"ste.hoyer@gmail.com"}],"time":{"modified":"2022-06-18T12:50:11.357Z","created":"2013-04-17T12:19:30.581Z","0.1.0":"2013-04-17T12:19:33.823Z","0.1.1":"2013-05-06T11:38:20.581Z","0.2.0":"2013-06-12T09:15:03.085Z","0.2.1":"2013-06-12T19:35:37.003Z","0.2.2":"2013-06-20T21:38:08.988Z","0.3.0":"2013-07-23T08:11:26.181Z","0.4.0":"2013-09-02T13:53:16.035Z","0.3.2":"2013-09-03T23:08:37.740Z","0.3.3":"2013-09-13T19:48:10.368Z","0.3.4":"2013-09-13T20:14:26.015Z","0.3.5":"2013-09-13T20:41:46.000Z","0.5.0":"2014-04-23T19:25:15.988Z","0.5.1":"2014-04-26T13:23:53.726Z","0.5.2":"2014-05-02T14:16:36.836Z","0.5.3":"2014-05-02T14:23:57.318Z"},"author":{"name":"Stephan Hoyer","email":"ste.hoyer@gmail.com"},"repository":{"type":"git","url":"git://github.com/gleeman/gleeman.git"},"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/gleeman/gleeman","bugs":{"url":"https://github.com/gleeman/gleeman/issues"}}