{"_id":"nodext","_rev":"35-5c146d6d0558a911275a20a23f34a9c9","name":"nodext","description":"Plugin-driven Node.js applications","dist-tags":{"latest":"0.2.0"},"versions":{"0.0.1":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension"],"author":{"name":"Henri Bergius"},"version":"0.0.1","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.1","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"387cf39fd2bedefb37b3a07ddb41b02bc684d659","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.1.tgz","integrity":"sha512-yxbHbVzHZqHmhKVQCW3m7GCNeYCHiirHdkq0scG1FpkiraqfmTmcQIbUV7MJmWvGBM5brEdFKw3QWDASQTLohg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBPFqRyMHvzLe9w3DVzU87g8tdSXBI4Iwb9lKugV5HNbAiEAyNPZ2V7BAWvtabxgA9+xCueE3mALqfm/N4Ka1mte4kY="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.2":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.2","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.2","devDependencies":{},"optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"bc61987d44da6871ccd6d375bc680f8de962f450","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.2.tgz","integrity":"sha512-K0T5YZmwVAWiT7x1wP5e2VBGKf2iQHYdgOmKE5ekPdtqKzxLI7iCaNz7FeQgYoFC26W/kRLbM5mSo0LuacC2zQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcjVN5e87rqA1L/scwf7Y2avS/JqdrS+uayYL2MIX33wIgCCg2EJrL9UNXXObWRdzMrkriFwFc/SCrCu2qvxoY2aI="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.3":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.3","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"b0e2c2cf8969da0cfd51b608c269e733b1577c14","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.3.tgz","integrity":"sha512-W0c1s0ONyT17OXU3X5sZU8j/KIdoQHvr8PiibEdRkT5QyjNvRse9fv2baiuX6ocvXgbAdra+p1yEpsofODvdvw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICsTUFmFyMM8o+QUeHnY7pDQVuZfEGeyGVYMAGOGlJiiAiEA0jnTOQyZutQgivSOWqrMj1bWLcruawVmocG9mAsPK1o="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.4":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.4","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.12","_defaultsLoaded":true,"dist":{"shasum":"da384a4bb3fa1ebf08074fab5b83482ce54f13f3","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.4.tgz","integrity":"sha512-Ku0LwH8WNSZvSN7lfcp1YVa1njh7QEAdVvmDyoTkDOPfxe8iohOhTnzqvSn+lRfNUDLkdJ5BLejsFCAj5l+ZtQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDr2d1WmLml3i0EuoDWTOmmCpcMGcrUhju54ulo6uIB4gIgInZd9KWlH7ptWHuBRBtyRSOg1ayusDYZeccIeJmJLP8="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.5":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.5","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"49bcc9b1af90a85cab92f761968222e404966750","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.5.tgz","integrity":"sha512-ojP7NZ1WWblbAHkUo6DBqVu05sbQRJYAIjzAkyHRpgfcDu/p1lST71oN05S8mebCkJRCbs8ErXgOQ3WNmn9Rqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMbGbI32G5+AzKpKNV6Ucl1yiqfTyVuLQnozjdsSslbAiEAt17UwL2QQbNQxIOw9xWn0YE9EmUkRIUcyG+zxRZwYxE="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.6":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.6","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.6","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.9","_nodeVersion":"v0.6.13","_defaultsLoaded":true,"dist":{"shasum":"9327df6ca70336418aee7fd27ba527bad87e53ed","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.6.tgz","integrity":"sha512-bnLU7UN385UTbsxUsYSucqeTrQNUgTHKu+t4A9o6x5sHZlk9eTeUMvutcEtPtE+J6ROctWE5CDuojYYjAOhrIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID2dEDzQe7iqjB78h941khnRqVDhBmQYJJ/Wbuyi6KdvAiEAzh/p8ygu4BMvjgNQQ4Oxt5WCQVIikgf0k96Ha7EuIr0="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.7":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.7","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.7","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"3b5492bb48e86b2c726094386c23d91c31730b5e","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.7.tgz","integrity":"sha512-ZK20FqGnwL94Bo/rdoife5NLfvtbiu4GHZjqUYsYVczAvWqQzEKz42WrVpyabCjcVXgnHyfuASdjyqbUV713rQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCvDWtKk7pmH1uIwepD8bc8izcRVyX0rwA1QMVR9rgDhQIhAJGYIPCJbEny8WhUn3e+BaNXf+ww1byvrCAHfHQ71i5h"}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.8":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.8","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.8","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"2dd04474477bb865c6b4ff7d5c57583ac4e5c16d","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.8.tgz","integrity":"sha512-S2xHyp4vo8cdIuETNbbnFpZNww4JdEjpGL9+VWRmU7ZI6zCzfuaIhtZAiVwP4wZNQZNlPbR/rHJPh5pimSwwYg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3EyZ8G8waUpeUNX2Xl/RBhr0RtQ3FxEXh+BzE/sNqCAiEAugkyZi6zc55eh880+SLmCcBg9WNtxdweRYp2xZrGKMM="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.0.9":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.0.9","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.0.9","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.4","_nodeVersion":"v0.6.14","_defaultsLoaded":true,"dist":{"shasum":"963b9a2d31033e32220aa4619e363bd5e6922408","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.0.9.tgz","integrity":"sha512-/esA+Eu3RvNppj3bBglYnlc8wwItZ2F6QXcvyZ7/hgKaoocpBah6jqCeHJ3eLrgUdAtp+PHZu6Fk04a99G7E2A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNOxnyboXWq8zCVLORwQkyov0PrrnA3/Bp27lUyGyVywIgGzJRv8q4p9t7RTF6X4pzLHvtTG8cBCvxKy4qPSh0qE4="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.1.0":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.1.0","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.1.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"ac30b0b5f424216fbb57da23531edb7e7b7b6de9","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.1.0.tgz","integrity":"sha512-a6wKIWwtbt8+3Hjxo6+xfLwXlQd85xaahyT0jHDnglrOFFv9a19OK+lTK/LBrB5iRDwKqJjmLnbaaODdixfzaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFFir+c3W1DGFy+niT7TMuU6sDaPjjKhJ9v2uKDwS4k9AiEAgetz//bjQxAlc1BvmBxkWJAUPtSdt4IBqjPyO1HuFCk="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.1.1":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.1.1","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.1.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f9ce74d9d6b2b5b00b673dc4c1d5a901f6c206db","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.1.1.tgz","integrity":"sha512-kcUqjvUopswSrf/OBhdCi7uCX+9KunkxCqVon1ZR9RW/8H0iUIxUDcwuvUIhTWwcQ8SCikRmgAXYu3kbplKZuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgRUDIEWJ9rFg9P5gPWOcr3RNn1wzSk5EHNyMqq/tYEAIgfxpLqofFi/kJmhXs04nJK3ENQ+T5BsIx80VZSbz9gjg="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.1.2":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.1.2","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create","nodext_storage_update":"./bin/nodext_storage_update"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.1.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"8f5104d1655ad5d6e5ff4db50a1dd630de6b6e09","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.1.2.tgz","integrity":"sha512-ReGkNhiLK2VjBCuU1JzcMjH4RPvZvPC4UE/bH3RCaIwFTxm/mMqlrYMCRHJUap0k59AG/CcQZOJwXPT9LayW6g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCBiL7+heKf7CWEucPNIzSEB8gXcviogVKapoi4Oo/hGAIhAIj8RVhOWKYFhQodKISP9pRlqRuCh0BHbPg5F04dGUNV"}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.1.3":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.1.3","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":">=2.5.6","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create","nodext_storage_update":"./bin/nodext_storage_update"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.1.3","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"34035ad2de9f66dba24506b11a57ede818134656","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.1.3.tgz","integrity":"sha512-kUoW2gxtGHJ0JyDGA/D5Q579W+Z1SgLub0vTpTinqmADV5zwR3No9aRemCoIBhy3OAerj0t5N/dD2RRqjs7Mew==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+kieH2n6GIM+uDjVMS5oZ00g8NqPG9a/bN0gQrO1rBgIgOgf/2WdzkJ2zDHmU4zF/kCvRaTqu10i7Q6JTQIHzi/E="}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.1.4":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.1.4","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":"2.5.x","express-configure":"0.0.x","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create","nodext_storage_update":"./bin/nodext_storage_update"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.1.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"3b1ed3515c3075601db83a92432a1be3e96afda0","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.1.4.tgz","integrity":"sha512-bpWVAt3lgROB+td/eEg5M/U4zb3MYzaOD9HSbuKQ23A34/zxtEFn3TaKf0bREkI8PUmeQuNtE4+vx+1fs3gf9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiNb8N+rtodPp63RlwkHppE44GojtMjW+mKchzP7NlngIhANCYXuyyOJ6/Ee9h+3diuxaOD3ZEZGVnrVAwuJPWHPA1"}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.1.5":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.1.5","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":"2.5.x","express-configure":"0.0.x","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create","nodext_storage_update":"./bin/nodext_storage_update"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"_id":"nodext@0.1.5","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.16","_nodeVersion":"v0.6.15","_defaultsLoaded":true,"dist":{"shasum":"f78000afae0efa1f56cfdd0eeb7e70807b10b445","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.1.5.tgz","integrity":"sha512-pLwZODPQZsnp1xYd0wGs6mfX8FM7WU+k9Zaf7N02EGxyNKxS8/bRu6B4BhTQPp2953y4ezezvvWs1fomjf3SnA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3+DdI/YIxQgQWxlKloj9h/CbQg0sLhr5Sj48Yeq4UNAIhAOAhvjSEeyopsg8rG9BoPGmuclzdggKUAXKI2JLKZLqb"}]},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]},"0.2.0":{"name":"nodext","description":"Plugin-driven Node.js applications","keywords":["server","express","extension","framework"],"author":{"name":"Henri Bergius"},"version":"0.2.0","licenses":[{"type":"MIT","url":"https://github.com/bergie/nodext/raw/master/LICENSE"}],"engines":{"node":">=0.4.0"},"dependencies":{"coffee-script":">=1.2.0","jugglingdb":">=0.0.8","express":"3.x.x","underscore":">=1.3.1"},"devDependencies":{"coffeedoc":">=0.1.13","async":">=0.1.18","docco-husky":">=0.3.2","coffeelint":"*"},"main":"./lib/nodext","bin":{"nodext":"./bin/nodext","nodext_storage_create":"./bin/nodext_storage_create","nodext_storage_update":"./bin/nodext_storage_update"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"},"docco_husky":{"output_dir":"docs","project_name":"NodeXT"},"readme":"NodeXT - Plugin-driven Node.js applications\n===========================================\n\nNodeXT is a way to organize your Node.js web application so that it is driven by a collection of extensions. This makes the application easier to manage, as distinct collections of functionality can be isolated in their own extensions that can be enabled and disabled as needed.\n\nEach extension runs within a URL prefix provided by configuration.\n\n## Structure of an extension\n\nAt minimum, an extension provides a `main` file that exports method `extension`. This method returns a constructor function to the extension object.\n\nThe NodeXT extension loader calls this method for each enabled extension, and then instantiates the extension objects through the constructor functions.\n\nThese constructor functions get a configuration object that may contain extension-specific configurations.\n\nThe  extension might look like the following (in CoffeeScript):\n\n    # Get the extension base class\n    nodext = require 'nodext'\n\n    class MyExtension extends nodext.Extension\n      name: \"MyExtension\"\n      config: {}\n\n    exports.extension = MyExtension\n\nThere are several methods that the extensions may implement to provide actual behavior:\n\n* `configure(server)`: run in the configuration phase of Express. An extension could add its own middlewares to server configuration here, for example to provide static servers or authentication\n* `getModels(schema, otherModels)`: run whenever JugglingDB is used. Here the extension can provide its own JugglingDB models if necessary\n* `registerRoutes(server)` run after server has been configured. Here the extension can register its own Express routes\n\nThe extension configuration contains a key `urlPrefix` that tells the URL prefix the extension should run under. A well-behaved component should only register middleware or routes to work under the prefix to ensure it doesn't step on the toes of other loaded extensions.\n\nFor example:\n\n    nodext = require 'nodext'\n    express = require 'express'\n\n    class MyExtension extends nodext.Extension\n      name: \"MyExtension\"\n      config: {}\n\n      configure: (server) ->\n        # Function to check authentication against the username\n        # and password provided in extension configuration\n        checkAuth = (username, password) =>\n          if username is @config.username and password is @config.password\n            return true\n            false\n\n        # Use HTTP Basic authentication under the URL space handled\n        # by this extension\n        server.use @config.urlPrefix, express.basicAuth checkAuth\n\n      registerRoutes: (server) ->\n        # Register a route under the URL space handled by this\n        # extension\n        server.get \"#{@config.urlPrefix}hello/:user\", (req, res) ->\n          res.send \"Hello #{req.params.user}\"\n\n    exports.extension = MyExtension\n\n### Configuring and running extensions\n\nSuch extension, stored in `extension/my/main.coffee` could be enabled by:\n\n    {\n      \"server\": {\n        \"hostname\": \"127.0.0.1\",\n        \"port\": 8001\n      },\n      \"extensions\": {\n        \"/foo/\": {\n          \"name\": \"my\",\n          \"location\": \"./extension/my\",\n          \"configuration\": {\n            \"username\": \"user\",\n            \"password\": \"pass\"\n          }\n        }\n      }\n    }\n\nNow, run this with NodeXT:\n\n    $ nodext my_config_file.json\n\n...and the extension's route should answer in <http://127.0.0.1/foo/hello/World>. Use _user_ / _pass_ to log in.\n\n#### Running on Heroku\n\nNodeXT has tentative Heroku support. With it, the `server.port` parameter of your NodeXT configuration will be overridden with `process.env.PORT`, if defined.\n\nYou'll also want to define a `Procfile` with something like:\n\n    web: ./node_modules/nodext/bin/nodext my_config_file.json\n\nIf you have the [Heroku toolbelt](https://toolbelt.heroku.com/) installed, you can try this with:\n\n    $ foreman start -f examples/helloworld/Procfile\n\nand then making a request to <http://localhost:5000/foo/hello/World>.\n\nSee [getting started with Node.js on Heroku](https://devcenter.heroku.com/articles/nodejs) for more information.\n\n#### Extensions from NPM packages\n\n[NPM](http://npmjs.org/) packages may also contain extensions. For example, to use the [nodext-create](https://github.com/bergie/nodext-create) extension, install it with:\n\n    $ npm install nodext-create\n\nAnd then enable in your configuration with:\n\n    \"/create/\": {\n      \"name\": \"create\",\n      \"location\": \"./node_modules/nodext-create\",\n      \"configuration\": {}\n    }\n\nIf NodeXT takes off, this might be a great way to ship reusable website components like user management, news listings, and others for Node.js web applications.\n\n## Using NodeXT with SSL\n\nNodeXT can be configured to run with HTTPS quite easily. You'll need the necessary certificate files. To generate simple ones for local testing, run:\n\n    $ openssl genrsa -out privatekey.pem 1024 \n    $ openssl req -new -key privatekey.pem -out certrequest.csr \n    $ openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem\n\nAnd then just configure your NodeXT server to use them:\n\n      \"server\": {\n        \"hostname\": \"127.0.0.1\",\n        \"port\": 443,\n        \"privateKey\": \"privatekey.pem\",\n        \"certificate\": \"certificate.pem\"\n      },\n\n## Optional ORM integration\n\nNodeXT has optional integration with the [JugglingDB](https://github.com/1602/jugglingdb#readme) ORM. This allows very easy creation of database-backed Node.js applications.\n\nJugglingDB can persist content in multiple storage back-ends including MySQL, MongoDB and Redis. The JugglingDB connection can be set up in your NodeXT configuration file. Here is an example of using a local Redis service:\n\n    \"database\": {\n      \"provider\": \"redis\",\n      \"configuration\": {}\n    },\n\nAnd this is how a MySQL connection could be configured:\n\n    \"database\": {\n      \"provider\": \"mysql\",\n      \"configuration\": {\n        \"username\": \"someuser\",\n        \"password\": \"somepassword\",\n        \"database\": \"dbname\"\n      }\n    },\n\n### Registering models\n\nAny extension can register JugglingDB models in the `getModels` method. For example:\n\n    class MyExtension extends nodext.Extension\n      name: \"MyExtension\"\n      config: {}\n      models: {}\n      schema: {}\n\n      getModels: (@schema, otherModels) ->\n        {Schema} = require 'jugglingdb'\n        @models.Post = schema.define 'Post',\n          title:\n            type: String\n            length: 255\n            index: true\n          content:\n            type: Schema.Text\n          published_at:\n            type: Date\n        @models\n\nThis way the extension itself keeps track of the models it registers, so they can later be used in routes, but at the same time they are registered with NodeXT so that it can centrally handle configuration and storage creation.\n\n### Using models and views\n\nNow the routes will have full JugglingDB access. For example:\n\n      registerRoutes: (server) ->\n        # The root route of this component serves a list of\n        # posts\n        server.get \"#{@config.urlPrefix}\", (req, res) ->\n\n          # Use the extension's views directory\n          server.set 'views', \"#{__dirname}/views\"\n\n          # Fetch all Post entries and display them\n          @models.Post.all (err, posts) ->\n            res.render \"posts\",\n              locals:\n                items: posts\n                as: 'post'\n\n#### Semi-automatic CRUD with Resource-Juggling\n\n[Resource-Juggling](http://search.npmjs.org/#/resource-juggling) is a useful library for generating CRUD routes for JugglingDB models and can also be used with NodeXT. Example:\n\n      registerRoutes: (server) ->    \n        resource = require 'express-resource'\n        resourceJuggling = require 'resource-juggling'\n\n        posts = server.resource resourceJuggling.getResource\n          schema: @schema\n          name: 'Post'\n          model: @models.Post\n          base: @config.urlPrefix\n\nThis would create all the necessary routes for Create, Read, Update, and Delete for the model. See [Resource-Juggling documentation](https://github.com/bergie/resource-juggling#readme) for more information.\n\n### Creating storage\n\nWith MySQL you need to create the storage tables before using them. With NodeXT you can use the `nodext_storage_create` command (**note** this will drop any existing data in the JugglingDB database):\n\n    $ nodext_storage_create my_config_file.json\n\nRunning this command with the other JugglingDB adapters doesn't have any effect.\n\n### Query logging\n\nFor debugging purposes it is nice to see the database queries executed by JugglingDB. To enable query logging in NodeXT, add the following to the `database` section of your configuration:\n\n      \"logQueries\": true\n\nDepending on your database provider, you should see output like:\n\n    SELECT * FROM Post WHERE 1331650495746 \n\n...or:\n\n    KEYS Post:* 1331650628592\n","readmeFilename":"README.md","_id":"nodext@0.2.0","dist":{"shasum":"b0e043d4cb83593dd24c35b127d99a0640389ba4","tarball":"https://registry.npmjs.org/nodext/-/nodext-0.2.0.tgz","integrity":"sha512-c0RKW2djq2dE4HSD4Xhuhg1+efncg0YVDH7jzM7Ka6e1SIGUQqQegJkEd9l/HGvEidMbq7QZrxK2O3EJOV72Og==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCep9U66OciUeIf0EO0Gp9Bo0pKnFJrjgsxd1+tnOJW1gIgOQc4kJaIgIGStuI4O3qfGXg5XmEuD40E7Ngb6rju/Ng="}]},"_npmVersion":"1.1.69","_npmUser":{"name":"bergie","email":"henri.bergius@iki.fi"},"maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}]}},"readme":"NodeXT - Plugin-driven Node.js applications\n===========================================\n\nNodeXT is a way to organize your Node.js web application so that it is driven by a collection of extensions. This makes the application easier to manage, as distinct collections of functionality can be isolated in their own extensions that can be enabled and disabled as needed.\n\nEach extension runs within a URL prefix provided by configuration.\n\n## Structure of an extension\n\nAt minimum, an extension provides a `main` file that exports method `extension`. This method returns a constructor function to the extension object.\n\nThe NodeXT extension loader calls this method for each enabled extension, and then instantiates the extension objects through the constructor functions.\n\nThese constructor functions get a configuration object that may contain extension-specific configurations.\n\nThe  extension might look like the following (in CoffeeScript):\n\n    # Get the extension base class\n    nodext = require 'nodext'\n\n    class MyExtension extends nodext.Extension\n      name: \"MyExtension\":\n      config: {}\n\n    exports.extension = MyExtension\n\nThere are several methods that the extensions may implement to provide actual behavior:\n\n* `configure(server)`: run in the configuration phase of Express. An extension could add its own middlewares to server configuration here, for example to provide static servers or authentication\n* `getModels(schema, otherModels)`: run whenever JugglingDB is used. Here the extension can provide its own JugglingDB models if necessary\n* `registerRoutes(server)` run after server has been configured. Here the extension can register its own Express routes\n\nThe extension configuration contains a key `urlPrefix` that tells the URL prefix the extension should run under. A well-behaved component should only register middleware or routes to work under the prefix to ensure it doesn't step on the toes of other loaded extensions.\n\nFor example:\n\n    class MyExtension extends nodext.Extension\n      name: \"MyExtension\":\n      config: {}\n\n      configure: (server) ->\n        # Function to check authentication against the username\n        # and password provided in extension configuration\n        checkAuth = (username, password) ->\n          if username is @config.username and password is @config.password\n            return true\n          false\n\n        # Use HTTP Basic authentication under the URL space handled\n        # by this extension\n        server.use @config.urlPrefix, express.BasicAuth checkAuth\n\n      registerRoutes: (server) ->\n        # Register a route under the URL space handled by this\n        # extension\n        server.get \"#{@config.urlPrefix}hello/:user\", (req, res) ->\n          res.send \"Hello #{req.params.user}\"\n\nSuch extension, stored in `extension/my/main.coffee` could be enabled by:\n\n    {\n      \"server: {\n        \"hostname\": \"127.0.0.1\",\n        \"port\": 8001\n      },\n      \"extensions: {\n        \"/foo/\": {\n          \"name\": \"my\"\n          \"configuration\": {\n            \"username\": \"user\",\n            \"password: \"pass\"\n          }\n        }\n      }\n    }\n\nNow, run this with NodeXT:\n\n    $ nodext my_config_file.json\n\n...and the extension's route should answer in <http://127.0.0.1/foo/hello/World>. Use _user_ / _pass_ to log in.\n","maintainers":[{"name":"bergie","email":"henri.bergius@iki.fi"}],"time":{"modified":"2022-06-22T04:03:50.894Z","created":"2012-03-13T10:30:51.985Z","0.0.1":"2012-03-13T10:30:53.939Z","0.0.2":"2012-03-13T11:57:23.897Z","0.0.3":"2012-03-19T14:29:08.465Z","0.0.4":"2012-03-23T01:10:20.842Z","0.0.5":"2012-03-24T15:37:25.342Z","0.0.6":"2012-03-24T18:47:20.347Z","0.0.7":"2012-03-30T11:46:45.305Z","0.0.8":"2012-03-30T13:27:14.321Z","0.0.9":"2012-03-30T13:44:45.850Z","0.1.0":"2012-04-10T10:25:33.992Z","0.1.1":"2012-04-10T11:52:25.170Z","0.1.2":"2012-05-16T10:44:37.507Z","0.1.3":"2012-06-03T17:34:29.019Z","0.1.4":"2012-06-03T18:07:31.420Z","0.1.5":"2012-08-14T14:45:45.465Z","0.2.0":"2013-01-24T22:18:02.696Z"},"author":{"name":"Henri Bergius"},"repository":{"type":"git","url":"git://github.com/bergie/nodext.git"}}