{"_id":"nogap","_rev":"85-a5d455a176851966a1171bb5789c1f09","name":"nogap","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","dist-tags":{"latest":"0.7.3"},"versions":{"0.1.0":{"name":"nogap","version":"0.1.0","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.0","dist":{"shasum":"4f2ba38e1f3fee315d1e097fc0b20da1b18bbf2e","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.0.tgz","integrity":"sha512-4T2mkOLoqq80u4YtsqXdRwn0C0gM5qSJ+z4s+NMzPUpS/XdchpA1q974XwAohFHeaTS8lqStDmgS2v9n3VO/+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVNZ2Zi41suK7iGK1aZ2PhEFXk3L6IVXIGpdYUhVz+NwIgXFP1gcLIlvhmk+gQJ+26wCg97LgvExy5G/8qWxbKIIA="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.1":{"name":"nogap","version":"0.1.1","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.1","dist":{"shasum":"9d0e9e7561386a3c3c3b631f613669c2e1a1e774","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.1.tgz","integrity":"sha512-GoD7SFdxlWJpO4y8TBjWLxvmtQsN2vwZQ3Q9IZu8NNEoovoelzbawshtWR97cVi+vOhpsiLrhy/TGzt4QgQhUQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLtLFw83IT153B0NnhemJsZQvWrhl5M4ZSOrS4pC3AngIgEuyn612lX2MC9ux7abK2GiqgK9VVc4X4+Q9s8pE/QJc="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.2":{"name":"nogap","version":"0.1.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.2","dist":{"shasum":"ca3191107d4f680fdf91ab87add5228370aa23b3","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.2.tgz","integrity":"sha512-SmQ1N0v1FlVXe7eA6s2SY+qA4Me8kk7A/Lup0WcdwcrKQ9/6HI9QOGY/EEX+bcczqwWrTuXx2dEuQszUwO1BVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3V3mtb0QdnNfVyxaeYiuelf5mef+PXmSHWWhnJe2waQIga6clV6oXSl2V4b7plVhxtv8FyJhs/KdQnpCG8sEIADI="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.3":{"name":"nogap","version":"0.1.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.3","dist":{"shasum":"dee6f314145af2c3b86701f80f622a8c2d7f8f3b","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.3.tgz","integrity":"sha512-K9fgwDs9CGy75XQFblVqpgAWNlBCe8L9jbzGJ4dPB4XPKzxxG1rrr4LC0R1zrCPHVMQOdadADEI+rDVL7KYH+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgVPkc/oPr1yQOy8s0MY0JDxTY7qftrh+5Y3HoeQr37QIhAJkjsi3PdsEceJEmcDFuhB108wEqFN/guzcBsPmw+zrB"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.4":{"name":"nogap","version":"0.1.4","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.4","dist":{"shasum":"e0647c353f58bb02df6d8b8c4a7bd32049784a6f","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.4.tgz","integrity":"sha512-JwK4TYud4zjarm6R1ngnG7y81qa6h3d09IBUR01HnyLOmTQZKw9TfKL7TYz4yQz0deSmIqgNHetNBc0+t+OITQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDJgHFTbo3xWrsDkz0T2j9KYhub4LsjyY2In7yZEsdycAiBprtXbc+yR2jLqnHlF4OQgqExDDX+GGB66QFjEORYUBQ=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.5":{"name":"nogap","version":"0.1.5","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.5","dist":{"shasum":"41e10c1a6e0ea89f49f8b1598134ddb55ffe1cca","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.5.tgz","integrity":"sha512-PtJX+/qCiSiOjbYIPZEFgGJB/W5JdN720r/uGkwNvTKvNYft2L4Z0VBXLwimtAPiHF0qE/SL0zdaAZ2vMFBjAg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBaGAwN4lOw3/sIAoHozem8xbjUh4/5DkzruhR7FIZ9gAiBcVG1pc9/U9ALbOXXoAuVElOs7/OWTfaTv+Iqoq0DIKA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.6":{"name":"nogap","version":"0.1.6","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.6","dist":{"shasum":"0b55d2992ee114424153801c60db1c8ada1d76e4","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.6.tgz","integrity":"sha512-KirWzqNLX84tGaMIcQ+L+lbhTX8dmb0yAHtIJhqPfvVObkd7Xm6cjWIO/nvHxSUcHNVrIPP12hKO6jcMp0WbIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDh7lE051dOkdCm4GKKxUudIGyWXjIkAQu0td+j/HsUSAIhAMmuNBhGb0VQ2p+bowHjzjBjJt9vCI5448c/5AS9RTsw"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.7":{"name":"nogap","version":"0.1.7","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.7","dist":{"shasum":"507f1081880f0cf987ebd6f5d8df30c821ab15a2","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.7.tgz","integrity":"sha512-U+UA+qpwvn5vFs9Vv4WtfP3ZN0LNMItmJt2f7KUm2iaARgvfzspPMWEeLdeVbro0/yZb9Mm3QodKzKcPlGI3ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCNPOmLQzIVo4FesEEhF18MlTdbBLFzR9ygWjXdMNwH7AIgOxeXx2vjuHtVfOSgnU/vMRTJ31zSeYLKsx58d04nMuM="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.8":{"name":"nogap","version":"0.1.8","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.8","dist":{"shasum":"a26bede5762963875b66d5a573d152616dba91ba","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.8.tgz","integrity":"sha512-fupolgjDLCPgcXiLDEMDM8uA6wyfwILUC07vTxS/nAN8rKCUkhAi5va77kskbub2kK4oeOw7MqWeoWUaj7YWXQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHY3YgGNGyifePJdI8qkFkhBMAl8lqSJaXwbSCSwb/hHAiB5rNOdCfpHcuyF31ubOAt5hmvQoOBsUxqRGEtICBgmJQ=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.9":{"name":"nogap","version":"0.1.9","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.9","_from":".","dist":{"shasum":"d082d368b9dc972b0d79d71c0fbcf7523988d4b7","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.9.tgz","integrity":"sha512-UaBBFwdVnK16J1axm+TyKA3erVjbu9vaftJ+8t4I8fo3+XlkAY8srkZMVmKY1gowUckMGI17mxu+CLdIGyLSIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBgpKHPxjHDiRF+m5IeUmBYk5HWDuy/NoZke6f99m85YAiAaRSHakmf8ChuIdRA/wurViVt++YMvrjxSGlR5sCWNTQ=="}]},"_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.1.10":{"name":"nogap","version":"0.1.10","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.1.10","_from":".","dist":{"shasum":"d0d996de81917b2ab9685858402a4a4846bd9c7a","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.1.10.tgz","integrity":"sha512-VpNzoMXM2ndso2VSFNt25iQipBrrlAwo2SnDHRJi9q75tDNqMlUmHdWT4IltK5WhuhMKpOXtQXG9U6rLejApxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB2NQMEHud4BblOKrn+n2cMZlm5AsYz79JJUYdm2W9tnAiAWNavJ0oD7UugQu9f1Iep6Sb9WXCEGBK/q2eiH3SlmWw=="}]},"_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.2.0":{"name":"nogap","version":"0.2.0","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.2.0","_from":".","dist":{"shasum":"64d4cf9edcf1a5cdf0b032b01abf22eb2c11de4f","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.2.0.tgz","integrity":"sha512-Bl71o1LlHiq7QyW642qhzPe79ruSkpWxjdi6fmaaBHRpwjiutHFxB3ocFj2yotT4pLBBnpSH5g/r/hIwZBSkcA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGf+H/d1+PZ2FMi7Nmq8EIo4DIon/o8ROxwP2oQvc59EAiBnGR0LtHNq7DqjQyNiZQ8+MsG4xS3nXpjM0wW2sW+V6g=="}]},"_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.2.1":{"name":"nogap","version":"0.2.1","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for Host <-> Client comunication.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.2.1","_from":".","dist":{"shasum":"2c43408d920d1c39c21bbe086171de5475788c91","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.2.1.tgz","integrity":"sha512-UlZV5MxxfFBvCRCCbPv/ML2JxqoL5Vn48lEf+Wf2tSWHdY9UOCh2SQWNavH0eEXggqWkQU6nXqZ16wQJ4ZYcSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8Nb7SDsrzATPIysFZ5y67g8PwK70iuuly7iIHGVaTBAIhAII3+Io5jOopBTTy7wcJcnb4TJZzWIc1sSATdFz+/s04"}]},"_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.2.2":{"name":"nogap","version":"0.2.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"The NoGap framework delivers RPC + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.2.2","dist":{"shasum":"59826f6ad09cdaa55e110a9b7de8173abace2373","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.2.2.tgz","integrity":"sha512-dcVpFPggkGVGlKDNSN9uW9ffE5aRvfcSJDof4D9MMMkTXhDTBveai1DA2BU7B/Lw2Zcb3e+rNPLuE5wfrJ5Pww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChA24zlRkNRHO8HKFxFpEnvj3aW0zKhe4eIxrmkTfT7AIgf3+QzggTGFOsIRkhCh2LhHSj+YDdgRTgcv8IiJQ8rPQ="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.2.3":{"name":"nogap","version":"0.2.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.2.3","dist":{"shasum":"93f0b46dd7bdffb617456c08220934971c86e67a","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.2.3.tgz","integrity":"sha512-BkR9QGOnBC4tDAgFMBGGyqmH/d+KM2UJvyLqzC/cNwhAIijLRqGhBsRR3gxkdvlwpRSS7MlpkmUSufHnOcSq1g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIMMdONMIp+k5gqd4UV8qVEl37CnGL3mk43G7suQGTtAIhANFFdcUIU4rXFmdmN/Y93ib14sJTHzxDyrhD8hnNR1H9"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.2.4":{"name":"nogap","version":"0.2.4","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"dependencies":{"squishy":"*","mime":"*"},"devDependencies":{},"scripts":{},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","_id":"nogap@0.2.4","dist":{"shasum":"6a51f4220b35ad9c568d68fb1888c156493d2a8a","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.2.4.tgz","integrity":"sha512-scw/dGJbYalZo5UIGo/yA6DnEmflInQpBJiXxbSNILZeW9ujMNtiJtfxOlTBbcX2jIF5G57YZijV3I4j1PCI/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAQvtf96SGql4Bq8ws+TO5Ml/ViIIRsBK07VvsgNzs36AiEAzb3R5Hw3g2FbJdP3XTko7lT53tV9kiYZ6O/MP4ENdZ8="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.2.5":{"name":"nogap","version":"0.2.5","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"_id":"nogap@0.2.5","dist":{"shasum":"843e679d45710e8464e81e074f92113db3cf20e7","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.2.5.tgz","integrity":"sha512-7sgtQT/P1sSRD/S0MezfGo9+ZZvoO8Kf97z1fuchyd0cqFxxOg5SoM+RHBSVjjq8GrY6XuUdGuSBwdtdr1UPFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGTw9r4n5ilNTAbXmYHHnxQQ0DnQUUFW/zLk5b6FAhELAiEA0q/XZb836QuGjeUxtNq+/uCfqfPBZsl4ZI9bdWYKTzw="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}]},"0.3.1":{"name":"nogap","version":"0.3.1","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"b401a737e7b92e4b0657dae28fece846a22ffdbc","_id":"nogap@0.3.1","_shasum":"0d55a3b37b848ca76906dd6a4fa0ce267916e901","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"0d55a3b37b848ca76906dd6a4fa0ce267916e901","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.1.tgz","integrity":"sha512-HepYwIIdd7Nea18VN3Kr0GFu/GTCr/zL1RflceOdlaxukCzwx5t5PUQrCe8noyPpFRtmZ8KhrtJkRrq9CuphRA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHmaCugxm+B1lbFz+y2wXCJp/NkLpbIW90SyZ6rg/KejAiEAkjWtG6poKhqRuEK+P/b0IuIXGU5vgy9upQs1ApCF+6M="}]}},"0.3.2":{"name":"nogap","version":"0.3.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"b401a737e7b92e4b0657dae28fece846a22ffdbc","_id":"nogap@0.3.2","_shasum":"6cd76bf6f455241600ba3e9c61cb2642e8ea433e","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"6cd76bf6f455241600ba3e9c61cb2642e8ea433e","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.2.tgz","integrity":"sha512-lBa6keF2RefavUreVZjLKNFIiuRJ0a+utDPZEXNtGSmF3xx8Q7oSdoadp1aY41cXW5cu4hF+pGRqd3/Edb2m+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID64o/h2z0wIc2uIiI2B41733iYpQavSawLGYRCf6ZuQAiBxXZIlvu/SOa7CerHuQWf5UzEggFF3SurHdJvfYf3nrw=="}]}},"0.3.3":{"name":"nogap","version":"0.3.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"5fcbb80dd31c14a51e89bc05b42f2254404f7e33","_id":"nogap@0.3.3","_shasum":"9b6c2fa69755aa3e29abf79fab3d575cf8ea23ca","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"9b6c2fa69755aa3e29abf79fab3d575cf8ea23ca","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.3.tgz","integrity":"sha512-gqAOcRMqHmY49kjSlofYqKicsXA/XmCJsp6yyQkJvcC0WpJMQYEIi9FPFmz04OJzRIkvRbpqHDhExl+kIwmqSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNAL1Iv/cS+3HAmWFnjJINSmktmygF8AJ4CI3bU00L1AiEAu3i2l7uhYut1LBr1K4R0JJLnf7XxWjmKnuvi21LepLk="}]}},"0.3.4":{"name":"nogap","version":"0.3.4","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"5fcbb80dd31c14a51e89bc05b42f2254404f7e33","_id":"nogap@0.3.4","_shasum":"ff2fa9fd504bd262eb1a5610a92b683f50c9c6e6","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"ff2fa9fd504bd262eb1a5610a92b683f50c9c6e6","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.4.tgz","integrity":"sha512-+hGU6AuqDOPaftGKV9cvYkdaiijRt+ryZpZ0J8rxk5Nn4d148+k42U+3RhV5v6g4UdLv4+eucFfKbZbnShoiIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID78RsBqRLmupPI0M9sj6iQ7WRNSFlD2jiVJqdG1TZIoAiEA+eNsB9PtZ+0atzjZqxayM2MYVkxakYq3TaZh9gUHgrU="}]}},"0.3.5":{"name":"nogap","version":"0.3.5","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"ee83d4528d92be32b0712e16915278ba94ae28e4","_id":"nogap@0.3.5","_shasum":"1a1885b54731ca98ff54a0c3f61d3596bfa2ad96","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"1a1885b54731ca98ff54a0c3f61d3596bfa2ad96","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.5.tgz","integrity":"sha512-uUIW1iNuE7I90YDuWSknA/ncbPNld/8t77UYTFgY7lmHG9KTGKoDN9Gq0TpRQLAM2s3lBkJhAg6U67/xW+U59A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPV4mbbMDueFSJ6vZGEmBt2sRs1tpwaP+UVARdgfFxkwIhAKVs39qtntYDJU6NPko00aKvOpAYk9GH6AGLeON14NTO"}]}},"0.3.6":{"name":"nogap","version":"0.3.6","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"dd9b1e6a7d4e08bd1ae98935a38585ac34e7df40","_id":"nogap@0.3.6","_shasum":"8fc75c430d9e45d3cb5e4463217ced63ad0003c8","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"8fc75c430d9e45d3cb5e4463217ced63ad0003c8","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.6.tgz","integrity":"sha512-76yjdNLi94FK9w6eSWFD9tlniFOaawCdMjT4ButFescD+2dkhj2xKg7SD8tsYwycdsiZVRVitd4uQ0qvOpleQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFctp3YO1BOFEklPqmnF79d3eedSdKpUm2bjiIcnfuJ4AiEAx6iTne2QelyME7FrjMeWKbYUraB6/FWS/xpA9QW+LOg="}]}},"0.3.7":{"name":"nogap","version":"0.3.7","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"15a52f9ddd2c8da13ffd55b39deb92f795070e7a","_id":"nogap@0.3.7","_shasum":"ba489d6dbca3f169e78167c9c0232ece1b2fa01b","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"ba489d6dbca3f169e78167c9c0232ece1b2fa01b","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.7.tgz","integrity":"sha512-OX8+L2mSs3xNuSHo58Njh+lE4yYSKAx3udRbh/jbCkGuukq98m+kMAQ193sVukrM/ZncGcVxjMYliFNuisQiEg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICcXYnTY59TSiNqEoFtxD+dCHIWQPxiu6kS5b96wRTH7AiEAjnp63IYp+0g/nxtrl7GeQQe5wPy9QVIi59nPQ+Yt3pw="}]}},"0.3.8":{"name":"nogap","version":"0.3.8","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"163a8a8a206bbbb0d01ee42a7f59ef3941fc4d9b","_id":"nogap@0.3.8","_shasum":"d98e436f71ea17840decb15d7beec9ea4fac9419","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"d98e436f71ea17840decb15d7beec9ea4fac9419","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.8.tgz","integrity":"sha512-N3K94KrORT03LS2LWHxQ/xSuw4eKiFgIH54B2Y4rnQvzbbRc4RU8jPllE7BQncgMBDV4QwTbooBN9HR/AFw4eg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDF/q4xZ9E/PLeJN0l6EDVX2z8MF0VbXIWK2bqYYgCIFwIhAISy9oId93H7auI9FLT4RQzHHtnoCxxYOudvlYF7kFfn"}]}},"0.3.9":{"name":"nogap","version":"0.3.9","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"33b8c5b53e8f93385fbf6b47762f1d73d7b1293f","_id":"nogap@0.3.9","_shasum":"d43f12c6fc614f1e51a5c25a10f6e57668f08c4e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"d43f12c6fc614f1e51a5c25a10f6e57668f08c4e","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.3.9.tgz","integrity":"sha512-R31Dg/2y0b7eCbH78bNy2W7+K+LFbROYgm12jj2tx6khEyvDlHCtIwwBR90OOjVrgXMakFBkDLLllMGeH3+s0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEIMlEaOtljlKjvtiEJpEI6Ygi6hhf9gg8kEAaFxfppjAiEA6djtIzll1qtrsgRKPTPfpv2JNRuD3T4CUCWmXrje3zk="}]}},"0.4.1":{"name":"nogap","version":"0.4.1","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"849c53c31a3fbd7df47a139b658953c07919819b","_id":"nogap@0.4.1","_shasum":"2f6473008f86cb07541c853660b8bdac43268a5e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"2f6473008f86cb07541c853660b8bdac43268a5e","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.4.1.tgz","integrity":"sha512-wRp78RD8L4xYd1mFIkxQishEHJXY5CWlG/9aoa5kWgDa64j0fTFyNtvcE9lRBkQ4pja+oRnFX/PRa0a72pElPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZb89RSyAJfxzTofBtyKfuJe79pb9+5Jh2tQZfMvpV9wIgJ+j61BewgyiFjwMhk0Rdt8GGtUZr9I4osEBoFviV9F4="}]}},"0.4.2":{"name":"nogap","version":"0.4.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"44206dc6588c7aa3c4b39aaa02bdbc0868df316d","_id":"nogap@0.4.2","_shasum":"d8c700155f1ff48bc89d469bc6b1236cf561eb2d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"d8c700155f1ff48bc89d469bc6b1236cf561eb2d","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.4.2.tgz","integrity":"sha512-BFPiUPouJlPaC5IpboNCVBPmClAYIKMailWLOBkkhPamRiqNOj6DDuTYIDx01NM2yD+C6Ka927CisuQugLyb8g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFwNXUbJahK5S0B++UIVhGWxQ0+6xveg+wZTI+ElfrhaAiEA7O2R3Q898oECzRHr3MwJ/h3wkSfybpqbyfAuF9Lo5cc="}]}},"0.4.3":{"name":"nogap","version":"0.4.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"f3bc3bfb2a876cb0261c2f227128882e1bfecb23","_id":"nogap@0.4.3","_shasum":"6980f7ef34f67d2a9bdda02fe18c182bc57ab9dc","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"6980f7ef34f67d2a9bdda02fe18c182bc57ab9dc","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.4.3.tgz","integrity":"sha512-RrqGRiE5i9/C6+ogLDfThBTT+VFpjAVMz3TbHptFf0eZF67PzBoKJWYPm55j+SxLSZiBA6g5HW6AMbWfGxfITA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJiHe9HeuWCHiv2xLFg2+go0Dq3erbnblC1X/jNWXK8gIhAK4Y0M9pvTkCXsmU3eNMXrCEubdKMXn2j78+99Um+PBH"}]}},"0.4.4":{"name":"nogap","version":"0.4.4","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"RPC + improved code sharing + asset management + some other good stuff for enjoyable Host <-> Client architecture development.","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"233bdaf00cd20937eeda307ef0c688d1759c23ca","_id":"nogap@0.4.4","_shasum":"c0f636e7a9e2da26e718a19842ce2b73ad13f1c3","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"c0f636e7a9e2da26e718a19842ce2b73ad13f1c3","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.4.4.tgz","integrity":"sha512-D1TTT3FmIezv7572NZ/vJnRUYUHvnBzGgaD69JLOJzi9TcSZgHUTDFbkGxYpHqNuVK5qJ/Z7S+mfhrCq6kuMLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNeUHETB8QXpTZTb64OAqpXig4vn8wK9pQ/sLoirjnqwIgaw5gQn42JzqdLT0AhZMdcY2OshDut5fYgTXpWWsUH50="}]}},"0.5.0":{"name":"nogap","version":"0.5.0","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"89f0b46b628fbd779fd8da85bcd2b7d9e2c2fda4","_id":"nogap@0.5.0","_shasum":"bc0b6fd2754708a437c67348ac59000439ffcfa5","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"bc0b6fd2754708a437c67348ac59000439ffcfa5","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.0.tgz","integrity":"sha512-ZBaX8yEuxREBRabz9Dssd8HFYtDFcKmkTjqsi4BCD1Lj4IbFKrB5VB2MX6Vb/qcXKNnEPbZ1tHTbXO+WjM4vtQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWltFp5/I8G025l9MYbnEy00IFmSsak5cThqEMmW97kAIhAK3YNH7nu5Ti8VyLLNKD54uZ6g5yQCatDVpZDWP+42aQ"}]}},"0.5.2":{"name":"nogap","version":"0.5.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"fb88704f216e1eeb934b7e63a81bdd8dd24aaa46","_id":"nogap@0.5.2","_shasum":"337a0c063ce43b995e2a5890a5ec5d0c61deae20","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"337a0c063ce43b995e2a5890a5ec5d0c61deae20","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.2.tgz","integrity":"sha512-9wfGZAR6v4xnDFXeUaHmStYf+hUkUMmFX9gD9frkJqMSLjHCUYAMLnWiZco2Uhb47pQzZ3ZHc/37i4EAoGIk8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3OLL+ZkjXID6Uss5KIY4j5dcCUTmPEUutJHs8qg6O0QIgayhJsn+V2zoHFWr0e8fgGDaJnd5AgtkvjqkjKxrhPe8="}]}},"0.5.3":{"name":"nogap","version":"0.5.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.3","_shasum":"25c677b4dba9b9b168234c928a06ab9830638fa2","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"25c677b4dba9b9b168234c928a06ab9830638fa2","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz","integrity":"sha512-2kdn18K+RdLTxuv5Y+g6tlbS+85ChcSk5UDTlXXvIjdFVygQekQpLIP3IA9tvdQ84b9gkiBTLDDAI3zDgFBy8g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEEQY29hBMkMrEg1NOBWSHYYXZqu85qfYlG3ocwlK1UDAiAQ95TjDpyT95qUlzCDLKNEBT5+s98FcoMOt+514LBm9w=="}]}},"0.5.4":{"name":"nogap","version":"0.5.4","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.4","_shasum":"fee6b26b359be80b00e92e0c5ee1487e39431881","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"fee6b26b359be80b00e92e0c5ee1487e39431881","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.4.tgz","integrity":"sha512-BmE9fk/q88h/+ztuLgt6LtTMeJ/avT7t+p2fbg5Fa7ihRSjC1gnyjV+FR3WpbPkR0Qow3AeBCFTiC1mqzv4tLQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCyMjaniQLGPwVEtiIsN7jx2VlwjuYAPBKqMxBfZLt8mgIgZlHScupkRNqcZCx3aXOtqprDx3Z6uZluriDpsuwyg0M="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.5":{"name":"nogap","version":"0.5.5","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.5","_shasum":"48cae1918d7cd5a2e939a203ed05cd6b987e178b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"48cae1918d7cd5a2e939a203ed05cd6b987e178b","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.5.tgz","integrity":"sha512-e8p9DKJLuV29d9y7uWaIG+/G6vEP2vYtTwxiI+yXB0Q4LWezumYjkaONFYD9mtskaETzf6R4ab/SCkgwAq3QFQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIChA3URhA09oVGyTPluaPXdzqAECQEAIo+lfgooH4a88AiBpEICGHb9iv5enBAio4CH4CAEeVLPrR/TljXWxXHl2EA=="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.6":{"name":"nogap","version":"0.5.6","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.6","_shasum":"d78ad9d98bc682e77364db819d5393cf16edecae","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"d78ad9d98bc682e77364db819d5393cf16edecae","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.6.tgz","integrity":"sha512-EzSuL8dB4utpQqBHaeOyO2VBjoRZWWHt7rWxalkfclU9Yb252UQ4tAhamqoFF0bDfS0s0pTUveHLDNbpV98dyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAqdVIUGiyJcfM0HmNtFhtOTks9h4hlpSard2HcP5WPaAiAxp1Rd391xZBfulaAvZFhKbwy3tgxo9+RLnH0VmlUD5g=="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.7":{"name":"nogap","version":"0.5.7","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.7","_shasum":"540ae6bbd58f058daf9109639cad3ffcbebbd926","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"540ae6bbd58f058daf9109639cad3ffcbebbd926","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.7.tgz","integrity":"sha512-Ji8HYJd9pe2kiX+URLoFQfOkJxOLXtAQvBC4JlGniEDK61Nux9YKHgBIGrAG92e+Jo0ftXUpr9zDCdIdYICKxg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC2bRz/EHgf0nfELt0REPjM8xluZ/9NjTZjUMxYghZPjgIgGrUoaOeNSqYf+44R3q677qN46QvG6YRBXJiNDdkfOs4="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.8":{"name":"nogap","version":"0.5.8","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.8","_shasum":"67a019e89b9669f6e8d927157cf424040107d283","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"67a019e89b9669f6e8d927157cf424040107d283","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.8.tgz","integrity":"sha512-gJRAUQURdowTc8Yv2lqTX+6wUKEdctxuxM0+Bk37yj+BBuyrJ+ZaaA4SbR1eHaC3/UqgNSECelBnmEJJ8ZbH0Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAjMroB3MDPskxl3OMVkm62jeg5y0vVCK3V9KVy6RyPFAiEAxD/AnHYNuGMjKfy3U59Hh+85XnML5cMc1m9Boqgd6dc="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.9":{"name":"nogap","version":"0.5.9","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.9","_shasum":"1aeb18fc4487ea396bdf14077008f097a5cd0546","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"1aeb18fc4487ea396bdf14077008f097a5cd0546","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.9.tgz","integrity":"sha512-ZegY/iwBlA3YcpYiPlKe+HiJ5n7V4GShKjYXFv1R5UgYPDaNuJNqc9yIUgLz/Lkx/KfTAQs4KPrOzrqt5GVi+w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7blM7eOaM+4mZdEejsoOZFAEYH+8myFZw+TTJUkfL6gIgSC2dnORfToOks9G+ic8JdJ9ZggV6ljHMN1sL8TLvr6A="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.10":{"name":"nogap","version":"0.5.10","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.10","_shasum":"49240e88c10d07f93b68bcfe3ce903deb5969c43","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"49240e88c10d07f93b68bcfe3ce903deb5969c43","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.10.tgz","integrity":"sha512-cVVZIDRUC4diF4eWsagB37+zpZWaVtn5JkaC2Rn0pk/5+wel71iQte+h9glwg9ieGF9RI4rEDTaV8yQfPKN7bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeRW6uA4u8jdc/keu4Y+af/br075F6jE5+PJyJByHMsgIhAPmdFKROM5BOoKxfRm2ZssfASS8kJq/AJg3iUBOkom8F"}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.5.11":{"name":"nogap","version":"0.5.11","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.5.11","_shasum":"a4e18a2774cfd36e19de10a3c3cdd6c6612f760e","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"a4e18a2774cfd36e19de10a3c3cdd6c6612f760e","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.5.11.tgz","integrity":"sha512-VEIQ3gIpDiWxQxsk5aAWXAlW4QDm8/RaqCb1O/C0VtvdhKr3k5B4r5d5THQqJ4oJBQBmKMzsMXvhBEB6AtuEIQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHCjJajyPJM1pkKpMuyHXYZYNI8G2sS8WirQR+PxVu1FAiBP8C5s0yGA9Rgb8pJyK/zh6d05ocyCyH93kcoUn8xAdg=="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.1":{"name":"nogap","version":"0.6.1","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.1","_shasum":"29e502f78df14f2570ab60fada776d4b63490af4","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"29e502f78df14f2570ab60fada776d4b63490af4","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.1.tgz","integrity":"sha512-pv6u65c8xufVrr7u6aMn63JflN499Gzt1YdQ+JqZkUOZji96wGrcWT/zMQxgxQLs0BzrTrrpar0IuW59Dzqdwg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCa01WSJEANXsyBkZ889wPuHDKIRbb+KdaPcjzFXNt9lwIhAPW/xxyQ9l/uRFp+fgazbEed17I/CjjeAG/6YLBwyiAf"}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.2":{"name":"nogap","version":"0.6.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.2","_shasum":"579006b24f89f53d445d683357ecb561a705287c","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"579006b24f89f53d445d683357ecb561a705287c","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.2.tgz","integrity":"sha512-8/Wx6XTcSOUne921L1Xo9/A8wcl+W02mItLxfZZ2euPsdmN2pgptwke42MF3kFcQzvq9tHdA6H677/SZzMfTyg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDI9h7EHa6HspYet6OCatOGXVN9PYJP94qd2i50vzgcUgIgaCBQ7sr9sG+MYVO9IwdxhMjayNnytRffCuo9hUlr2Aw="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.3":{"name":"nogap","version":"0.6.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.3","_shasum":"16da96e8115cb86e4548b68b2313f579b2d79144","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"16da96e8115cb86e4548b68b2313f579b2d79144","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.3.tgz","integrity":"sha512-RT0c+ISatG60T2RYhiHxkx/WlWSsWBEoTKjyttHQWZhWLIj2XwzZt9PoWhLrfKKwkn22IhGeZacR87bBoZOm/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHL/YdoZu4CgozbeRHhAaGrs0gC0ZFMJzr4QxrxWbZCnAiEAgwmRjHiIkAlLiDYxXSObO0flXS8WfSqXwayjeHd4SO0="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.4":{"name":"nogap","version":"0.6.4","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.4","_shasum":"6319159ea0f5a0965086d546d42af6a5f9ded5db","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"6319159ea0f5a0965086d546d42af6a5f9ded5db","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.4.tgz","integrity":"sha512-YfjKAARmKjo3EazaL0iDvY8b1lzY2F4yl11jvUAd/Ekzb8L8Wt0v++/DhWGLfYxoujQcjy3KKNHHue5QcqaRlA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICkRaO2pz9bAk9/Tp/q+JvUvL5LP9I9VXMc+oHV6K+bmAiBtyrg3PFPJFTaxLmK4htk7uLk7/KhvWtRhg8rchI+EgA=="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.5":{"name":"nogap","version":"0.6.5","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.5","_shasum":"bf2132c6fbd49e71ca86e6e70e326961c97e8c28","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"bf2132c6fbd49e71ca86e6e70e326961c97e8c28","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.5.tgz","integrity":"sha512-sAj9MG7qkIxu+0N6DY6byLtDGAuhPQlcvKQTYmmwL+I+mrqCrYS0EFyxqeEUmeALS2YnqIkm8icQhUESqIQMMQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4dOohDbrbFyu0XsLwx/yW8t+JZB7rDqR2cht3pUfPBwIgXvCBpGiN0pcj7Tp5loaGjoztkDjntuFhuUKbKljrfT4="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.6":{"name":"nogap","version":"0.6.6","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.6","_shasum":"ab6df6caf02e7f27ec9188a00df871fe9970f797","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"ab6df6caf02e7f27ec9188a00df871fe9970f797","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.6.tgz","integrity":"sha512-wlhBaZyfEbO1puvzt//a8XKjIGVBwi/WyLesBAWNDAADTmWX4Zhk69RwWHhIHqVPI8+S5cCWa+UN84QIXiNS6w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICK/v0dfHqOx2ypy8G6QRK0WiXYYMYHt6CHt2sHXK3HQAiBdjrOzut4aM+Pe9ALtOK1Y1WDCJbwAfYiq2WakC4FYEA=="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.7":{"name":"nogap","version":"0.6.7","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.7","_shasum":"b2754bdebdbac4e8ea2e0a2de58529edd5b5be6b","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"b2754bdebdbac4e8ea2e0a2de58529edd5b5be6b","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.7.tgz","integrity":"sha512-0RDqvL2HfGv8cpTdUpP/yF/z9/RZIw/w3dCdnnAjb7Uo4LPaEGXQ9hetIsSBlfT6NcZ+EDlSXNC86g1D1MwG4Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBCGeZQVXXLJ3WoTzf+s3mvkryDSZKc1k4mDZ9H+LdiGAiEAj18eCX3EgIgUeTrFJ+9z3hNcd3YAkC2vaiHnJbEb81U="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.6.8":{"name":"nogap","version":"0.6.8","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.6.8","_shasum":"c1cfb8a09ca97115b1a39af391b1d7a1188f5988","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"c1cfb8a09ca97115b1a39af391b1d7a1188f5988","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.6.8.tgz","integrity":"sha512-1b6m4ya5tM2yc5vHjexvZFwQoFLQotPx2GYgThKp+YQG3cBNta9uUH+3oc1hYPrKjBmQRcbKchobo84Z4lJbfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrV7db65aHSvfn/rWdBUsKOKtUCkyIF4Z+vf6Of3iJAgIhAMsBvVnP6fQHzTdxxWWuESq9jzCyT6hZ17YhT4E299st"}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.7.2":{"name":"nogap","version":"0.7.2","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.7.2","_shasum":"b5b977384466d7670ac5b7fc953e30fb17a85c30","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"b5b977384466d7670ac5b7fc953e30fb17a85c30","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.7.2.tgz","integrity":"sha512-hE2egxvs1KMbgxE60X9ELX3osKsH+mfUR1x3efo+1pODWv7k9s+5ci2uNvsnVHo3XRTHk1BnQNKPtRRqIoDNaQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhjz1aTfzRtna90QtYAZ/JhW5WxhsBMecerDQqlFHrlAiEAobcbmKmcizUrrLqMCAGr4GL7VvsHuCL4ZWRhMgRSHOY="}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"},"0.7.3":{"name":"nogap","version":"0.7.3","author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"main":"./index.js","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"engines":{"node":">= 0.8.0"},"license":"MIT","description":"NoGap is a full-stack (spans Host and Client) JavaScript framework, featuring RPC + simple code sharing + basic asset management + full-stack Promise chains and more...","bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"homepage":"https://github.com/Domiii/NoGap","dependencies":{"squishy":"*","mime":"*"},"devDependencies":{"marked-toc":"*"},"scripts":{"precommit":"node pre-commit"},"gitHead":"40e7719e8e8149e9aaabfbb5ff3b1838974a7589","_id":"nogap@0.7.3","_shasum":"54a9ea3fbe2e251d159e727704aa0d5ea82d86ca","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"domiii","email":"contactdomisemail@gmail.com"},"maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"dist":{"shasum":"54a9ea3fbe2e251d159e727704aa0d5ea82d86ca","tarball":"https://registry.npmjs.org/nogap/-/nogap-0.7.3.tgz","integrity":"sha512-XA3L/zVww7Z0rVs4jCiuEb8GzjZxsENdp0fkp5cFrerBLYzJLkGjxy+uaYlIYeIHNF8g+RHa3jF2LV6wKenQdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNda2SaI9+HW6EMuQSeZSoRVB79AMEdG7rVFI3rd5OjAIhAIk0Q3KjhSTW1KbqMIY/E5nWGlC1xDQZyyenDzVnhxBJ"}]},"directories":{},"_resolved":"https://registry.npmjs.org/nogap/-/nogap-0.5.3.tgz"}},"readme":"[![NPM version](https://badge.fury.io/js/nogap.svg)](http://badge.fury.io/js/nogap)\r\n\r\nNoGap\r\n=============\r\n\r\nNoGap is a full-stack (spans Host and Client) JavaScript framework, featuring [RPC (Remote Procedure Calls)](http://en.wikipedia.org/wiki/Remote_procedure_call) + simple code sharing + basic asset management + full-stack [Promise chains](https://github.com/petkaantonov/bluebird#what-are-promises-and-why-should-i-use-them).\r\n\r\nNoGap's primary use case is development of rich single-page web applications while alleviating the typical hassles of doing so.\r\n\r\nThis module is called `No` `Gap` because it removes the typical gap that exists between Host and Client and that makes a client-server-architecture so cumbersome to develop.\r\n\r\nYou probably want to start by having a look at the [Samples](#samples) for reference.\r\n\r\nIf you want to get serious, take a look at the [Getting Started](#getting_started) section to figure out how to build a complete Node-based web application with NoGap.\r\n\r\nThe [Structure of NoGap components](#component_structure) section lays out the structure of NoGap's basic building block: the component.\r\n\r\nNote that currently, the only dependency of NoGap is `Node` and some of its modules but even that is planned to be removed in the future.\r\n\r\nNOTE: NoGap is still in Beta. Things are still changing. If you are concerned about that, feel free to contact me directly.\r\n\r\n\r\nTable of Contents\r\n=============\r\n\r\n\r\n\r\n<!-- toc -->\r\n\r\n* [NoGap](#nogap)\r\n* [HelloWorld](#helloworld)\r\n* [Installation](#installation)\r\n* [Samples](#samples)\r\n  * [HelloWorld](#helloworld)\r\n  * [TwoWayStreet](#twowaystreet)\r\n  * [Full-stack promise chains](#full-stack-promise-chains)\r\n  * [TwoWayStreetAsync](#twowaystreetasync)\r\n  * [CodeSharingValidation](#codesharingvalidation)\r\n  * [Assets](#assets)\r\n  * [Multiple Components](#multiple-components)\r\n  * [Full-stack error handling](#full-stack-error-handling)\r\n  * [Dynamic Loading of Components](#dynamic-loading-of-components)\r\n  * [Simple Sample App](#simple-sample-app)\r\n* [Component Structure](#component-structure)\r\n  * [`Host`](#host)\r\n  * [`Client`](#client)\r\n  * [`Base`](#base)\r\n  * [Component Skeleton](#component-skeleton)\r\n* [Getting Started](#getting-started)\r\n  * [Recommended File Structure](#recommended-file-structure)\r\n    * [`components/`](#components)\r\n    * [`components/models/`](#componentsmodels)\r\n    * [`components/ui/`](#componentsui)\r\n    * [`components/util/`](#componentsutil)\r\n    * [`app.js`](#appjs)\r\n    * [`appConfig.js`](#appconfigjs)\r\n    * [package.json](#packagejson)\r\n* [Debuggability & security](#debuggability-security)\r\n* [Important Terms](#important-terms)\r\n* [Final Words](#final-words)\r\n\r\n<!-- toc stop -->\r\n\r\n\r\n\r\nHelloWorld\r\n=============\r\n[Link](samples/HelloWorld).\r\n\r\n```js\r\nvar NoGapDef = require('nogap').Def;\r\n\r\nmodule.exports = NoGapDef.component({\r\n  Client: NoGapDef.defHost(function(Tools, Instance, Context) {\r\n    return {\r\n      initClient: function() {\r\n        document.body.innerHTML = 'Hello World!';\r\n      }\r\n    };\r\n  });\r\n});\r\n```\r\n\r\n**Concepts**\r\n * Get the NoGap module's `Def` helper: `var NoGapDef = require('nogap').Def;`\r\n * Define a new component: `NoGapDef.component({ ... });`\r\n * Add a `Client` definition to the component: `Client: NoGapDef.defClient(function(Tools, Instance, Context) { ... })`\r\n * Add `initClient` method  to `Client`\r\n\r\n**What is the trick?**\r\n * The `Client` code is automatically deployed to the client\r\n * `initClient` is then automatically called on the client, right afterwards\r\n\r\n\r\nInstallation\r\n=============\r\n\r\n* [Install Node](http://nodejs.org/download/)\r\n    * Make sure to select `Add to PATH` during GUI-based installation.\r\n* Open a command line\r\n  * On Windows: Press `Ctrl+R` -> Type `cmd` -> `Enter`\r\n* Run: `npm install nogap`\r\n* Done.\r\n\r\n\r\nSamples\r\n=============\r\n[Link](samples).<a name=\"samples\"></a>\r\n\r\nThe Samples highlight some (soon, all!) features of the NoGap framework and how they are used. To run the samples:\r\n\r\n 1. Create a new folder (e.g. NoGapTest)\r\n 2. Follow installation instructions given above\r\n    * You now have a `node_modules/nogap` subfolder.\r\n    * You can now work through the samples below and try it out in real-time\r\n 4. `cd node_modules/nogap/samples/HelloWorld` (or any other sample)\r\n 3. `npm install` (will automatically download and install the sample's dependencies)\r\n 4. `npm start` (this will run the app defined in the sample's `package.json`)\r\n 5. Open your browser and go to `localhost:1234` (or whatever port you are using)\r\n 6. Start playing!\r\n\r\n\r\n## HelloWorld\r\n[Link](samples/HelloWorld).\r\n\r\n\r\n```js\r\nvar NoGapDef = require('nogap').Def;\r\n\r\nmodule.exports = NoGapDef.component({\r\n  Client: NoGapDef.defClient(function(Tools, Instance, Context) {\r\n    return {\r\n      initClient: function() {\r\n        document.body.innerHTML = 'Hello World!';\r\n      }\r\n    };\r\n  });\r\n});\r\n```\r\n\r\n**Concepts**\r\n * Get the NoGap module's `Def` helper: `var NoGapDef = require('nogap').Def;`\r\n * Define a new component: `NoGapDef.component({ ... });`\r\n * Add a `Client` definition to the component: `Client: NoGapDef.defClient(function(Tools, Instance, Context) { ... })`\r\n * Add `initClient` method  to `Client`\r\n\r\n**What is the trick?**\r\n * The `Client` code is automatically deployed to the client\r\n * `initClient` is then automatically called on the client, right after installation\r\n\r\n\r\n## TwoWayStreet\r\n[Link](samples/TwoWayStreet).<a name=\"twowaystreet\"></a>\r\n\r\n```js\r\nvar NoGapDef = require('nogap').Def;\r\n\r\nNoGapDef.component({\r\n    Host: NoGapDef.defHost(function(SharedTools, Shared, SharedContext) {\r\n        var nBytes = 0;\r\n\r\n        return {\r\n            Public: {\r\n                tellMeSomething: function(message) {\r\n                    nBytes += (message && message.length) || 0;\r\n                    this.client.showHostMessage('Host has received a total of ' + nBytes + ' bytes.');\r\n                }\r\n            }\r\n        };\r\n    }),\r\n\r\n    Client: NoGapDef.defClient(function(Tools, Instance, Context) {\r\n        return {\r\n            initClient: function() {\r\n                // bind a button to a component function (quick + dirty):\r\n                window.clickMe = this.onButtonClick.bind(this);\r\n                document.body.innerHTML += '<button onclick=\"window.clickMe();\">Click Me!</button><br />';\r\n            },\r\n\r\n            onButtonClick: function() {\r\n                document.body.innerHTML +='Button was clicked.<br />';\r\n                this.host.tellMeSomething('hello!');\r\n            },\r\n\r\n            Public: {\r\n                showHostMessage: function(msg) {\r\n                    document.body.innerHTML +='Server said: ' + msg + '<br />';\r\n                }\r\n            }\r\n        };\r\n    })\r\n});\r\n```\r\n\r\n**Concepts**\r\n * Add a `Client` definition to the component: `Client: NoGapDef.defClient(function(Tools, Instance, Context) { ... })`\r\n * `Client.initClient`\r\n * Add a `Host` definition to the component: `Host: NoGapDef.defHost(function(SharedTools, Shared, SharedContext) { ... })`\r\n * `Host.Public`\r\n * `Client.Public`\r\n\r\n**What is the trick?**\r\n * `this.host` gives us an object on which we can call `Public` methods on the host\r\n  * For example, we can call `tellMeSomething` which is a method that was defined in `Host.Public`\r\n * Once the host receives our request, it calls `this.client.showHostMessage`\r\n * Note: `this.host` (available on Client) vs. `this.client` (available on Host)\r\n\r\n\r\n## Full-stack promise chains\r\n<!-- [Link](samples/). -->\r\n\r\nNoGap supports full-stack [Promise chains](https://github.com/petkaantonov/bluebird#what-are-promises-and-why-should-i-use-them). Meaning you can let the Client wait until a Host-side function call has returned. And you can even return a value from a Host function, and it will arrive at the Client. Errors also traverse the entire stack!\r\n\r\nCode snippet:\r\n\r\n```js\r\nvar NoGapDef = require('nogap').Def;\r\n\r\nNoGapDef.component({\r\n    Host: NoGapDef.defHost(function(SharedTools, Shared, SharedContext) {\r\n        var nBytes = 0;\r\n\r\n        return {\r\n            Public: {\r\n                tellMeSomething: function(message) {\r\n\t\t\t\t    nBytes += (message && message.length) || 0;\r\n\t\t\t\t    this.Tools.log('Client said: ' + message);\r\n\t\t\t\t    return 'Thank you! I now received a total of ' + nBytes + ' bytes.';\r\n                }\r\n            }\r\n        };\r\n    }),\r\n\r\n    Client: NoGapDef.defClient(function(Tools, Instance, Context) {\r\n        return {\r\n            initClient: function() {\r\n                // bind a button to a component function (quick + dirty):\r\n                window.clickMe = this.onButtonClick.bind(this);\r\n                document.body.innerHTML += '<button onclick=\"window.clickMe();\">Click Me!</button><br />';\r\n            },\r\n\r\n            onButtonClick: function() {\r\n\t\t\t    document.body.innerHTML +='Button was clicked.<br />';\r\n\t\t\t    this.host.tellMeSomething('hello!')\r\n\t\t\t    .then(function(hostMessage) {\r\n\t\t\t    \tdocument.body.innerHTML += 'Host said: ' + hostMessage + '<br />';\r\n\t\t\t    })\r\n\t\t\t    .catch(function(err) {\r\n\t\t\t    \t// this can be a connection error, a bug, a Host-side `reject` etc etc...\r\n\t\t\t    \tconsole.error('Something went wrong: ' + (err.stack || err));\r\n\t\t\t    });\r\n            }\r\n        };\r\n    })\r\n});\r\n```\r\n \r\n**New Concepts**\r\n  * `Client.initClient` will be called right after the Client connected.\r\n  * Upon button click, we call `this.host.tellMeSomething(...)` which will send a request to the `Host` to invoke that method (given it is in `Host.Public`).\r\n  * Calling a `Public` function on a component's `host` object returns a promise.\r\n  * That promise is part of a full-stack [Promise chains](https://github.com/petkaantonov/bluebird#what-are-promises-and-why-should-i-use-them). Once finnished, we get the return value from that `Host` method in our `then` callback.\r\n\r\n\r\n\r\n## TwoWayStreetAsync\r\n[Link](samples/TwoWayStreetAsync).\r\n\r\nImagine the server had to do an [asynchronous operation](http://msdn.microsoft.com/en-us/library/windows/apps/hh700330.aspx) in [`tellMeSomething`](#twowaystreet), such as reading a file, or getting something from the database.\r\n\r\nWe can simply use promises for that!\r\n\r\n```js\r\ntellMeSomething: function() {\r\n    Promise.delay(500)    // wait 500 milliseconds before replying\r\n    .bind(this)           // this is tricky!\r\n    .then(function() {\r\n        this.client.showHostMessage('We have exchanged ' + ++iAttempt + ' messages.');\r\n    });\r\n}\r\n```\r\n\r\nAnd again, we can just return the message and it will arrive at the Client automagically, like so:\r\n\r\n```js\r\ntellMeSomething: function() {\r\n    Promise.delay(500)    // wait 500 milliseconds before replying\r\n    .bind(this)           // this is tricky!\r\n    .then(function() {\r\n        return 'We have exchanged ' + ++iAttempt + ' messages.';\r\n    });\r\n}\r\n\r\n// ...\r\n\r\nonButtonClick: function() {\r\n    document.body.innerHTML +='Button was clicked.<br />';\r\n    this.host.tellMeSomething()\r\n    .bind(this)           // this is tricky!\r\n    .then(function(hostMessage) {\r\n        this.showHostMessage(hostMessage);\r\n    });\r\n},\r\n```\r\n\r\n**New Concepts**\r\n * We need to perform an asynchronous request whose result is to be sent to the other side\r\n * Simply use [Promise chains](https://github.com/petkaantonov/bluebird#what-are-promises-and-why-should-i-use-them)!\r\n * NOTE: [JavaScript's `this` is tricky](http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/)!\r\n\r\n\r\n\r\n## CodeSharingValidation\r\n[Link](samples/CodeSharingValidation).\r\n\r\n\r\n```js\r\n  Base: NoGapDef.defBase(function(SharedTools, Shared, SharedContext) { return {\r\n      validateText: function(text) {\r\n          if (text.indexOf('a') >= 0 || text.indexOf('A') >= 0) {\r\n              return null;\r\n          }\r\n          return text.trim();\r\n      }\r\n  };}),\r\n\r\n    Host: NoGapDef.defHost(function(SharedTools, Shared, SharedContext) { return {\r\n        Public: {\r\n            setValue: function(value) {\r\n                this.value = this.Shared.validateText(value);\r\n                // ...\r\n            }\r\n        }\r\n    };}),\r\n\r\n    Client: NoGapDef.defClient(function(Tools, Instance, Context) { return {\r\n          // ...\r\n                    value = this.validateText(value);\r\n            // ...\r\n    };})\r\n```\r\n\r\n**New Concepts**\r\n * The `Base` definition is merged into both `Client` and `Host`\r\n * You can use it to easily share code between them\r\n\r\n\r\n\r\n## Assets\r\n[Link](samples/Assets).\r\n\r\n```js\r\nNoGapDef.component({\r\n    Host: NoGapDef.defHost(function(SharedTools, Shared, SharedContext) { return {\r\n        Assets: {\r\n            AutoIncludes: {\r\n                js: [\r\n                    // jquery\r\n                    '//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'\r\n                ],\r\n\r\n                css: [\r\n                    // bootstrap\r\n                    '//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css'\r\n                ]\r\n            },\r\n\r\n            Files: {\r\n                string: {\r\n                    /**\r\n                     * The contents of `template.html` will be automatically made available to the client\r\n                     * through in the `assets.view` property.\r\n                     */\r\n                    view: 'template.html'\r\n                }\r\n            }\r\n        }\r\n    };}),\r\n\r\n    Client: NoGapDef.defClient(function(Tools, Instance, Context) { return {\r\n        initClient: function() {\r\n            /**\r\n             * Append contents of HTML asset to document.\r\n             */\r\n            document.body.innerHTML += this.assets.view;\r\n        }\r\n    };})\r\n});\r\n```\r\n\r\n**New Concepts**\r\n  * As of now, you can define two types of file-based assets:\r\n    * `AutoIncludes` defines lists of `js` and `css` files that will be automatically included in the client header\r\n    * `Files` will be read and it's contents will be available through the clients `assets` variable.\r\n      * Currently they can only be interpreted as string. Future plans: `code`, `image` and more more more...\r\n\r\n## Multiple Components\r\n\r\nThe [Simple Sample App](https://github.com/Domiii/NoGap/tree/master/samples/sample_app/components) already does this.\r\n \r\n**Examples of multi-component code**\r\n  * Call `say` on `ComponentA`: `Shared.ComponentA.say('hello');`\r\n  * Call `somePublicMethod` on the client of a `ComponentB` instance: `this.Instance.ComponentB.client.somePublicMethod(some, data);`\r\n\r\n\r\n## Full-stack error handling\r\n\r\nTODO!\r\n\r\n* Feel free to try and throw an error or use `Promise.reject` in  a `Host`'s `Public` function, and then `catch` it on the Client side. You will notice that, for security reasons, the contents of Host-side exceptions are modified before being sent to the Client.\r\n* You can override `Tools.onError` to customize error handling (especially on the server)\r\n* TODO: Trace verbosity configuration\r\n\r\n## Dynamic Loading of Components\r\n<!-- [Link](samples/DynamicLoading). -->\r\n\r\nThis feature lets clients request components on demand. This way, complex web applications can send code and assets at the time of first usage, not one moment earlier. This saves bandwidth and improves I/O performance.\r\n \r\n**How?**\r\n  1. Set `lazyLoad` to `1` in the config\r\n  2. Call `this.Tools.requestClientComponents(componentNames, callback);` to lazily load components from `Host` or from `Client` *instances*.\r\n\r\n\r\n## Simple Sample App\r\n[Link](samples/sample_app).\r\n\r\nThis App shows how to start building a real application with NoGap. It uses `Angular`, `Boostrap` and `Font-Awesome` to do some real client-side rendering and client<->host communication.\r\nIMPORTANT: None of these libraries are required. You can build your frontend and backend any way you want.\r\n\r\n\r\nComponent Structure\r\n=============\r\n<a name=\"component_structure\"></a>\r\n\r\nNOTE: The following is a rough explanation of many of NoGap's features. You are recommended to compare the explanation to their actual implementation in the [Simple Sample App](samples/sample_app) to better understand them.\r\n\r\nEvery component has two endpoint definitions, called `Host` and `Client`, as well as shared code, inside the so-called `Base` definition. You provide `Host`, `Client` and `Base` definitions by calling `defHost`, `defClient` and `defBase` respectively. The only argument to these `def*` functions is your **component definition**: A function with three arguments that returns the actual definition object.\r\n\r\n## `Host`\r\n`Host` has two places for defining functionality: Shared and instance. This distinction is necessary because a `Host` can be tied to multiple `Client`s. Note though that each `Client` can only be tied to a single `Host` (as of now).\r\n\r\n 1. The **Shared object** of a component is a singleton; it exists only once for the entire application. You can access all `Shared` component objects through the `Shared` set which is the second argument of every `Host`'s *component definition*.\r\n\r\n2. The **instance object** of a component exists once for every client. Every client that connects to the server, gets its own set of instances of every active component. On the `Host` side, the *instance object* of a component is defined as the merged result of all members of `Private` and `Public` which we call *instance members*. These instance members are accessible through `this.Instance` from **instance code**, that is, code inside of `Private` and `Public` properties. If you want to hook into client connection and component bootstrapping events, simply define `onNewClient` or `onClientBootstrap` functions inside `Host.Private`. You can access the owning component's *Shared singleton* through `this.Shared` from within `Private` or `Public` functions.\r\nInside a `Host` instance object, you can directly call `Public` instance members on the client through `this.client.someClientPublicMethod(some, data)`. Being able to directly call a function on a different computer or in a different program is called [RPC (Remote Procedure Call)](http://en.wikipedia.org/wiki/Remote_procedure_call). Similarly, `Client` instances can directly call `this.host.someHostPublicMethod` which returns a [Promise](https://github.com/petkaantonov/bluebird#what-are-promises-and-why-should-i-use-them) which will be fulfilled once the `Host` has run the function and notified the client.\r\n\r\n## `Client`\r\nThe set of all `Client` endpoint definitions is automatically sent to the client and installed, as soon as a client connects. On the client side, `this.Shared` and `this.Instance` refer to the same object, and `Private` and `Public` are both merged into the `Client` *component definition* itself. If you want to load components dynamically (i.e. lazily), you need to set the `lazyLoad` config parameter to `true` or `1`.\r\n\r\n## `Base`\r\nEverything from the `Base` definition is merged into both, `Host` and `Client`. `Public` and `Private` are also merged correspondingly. Since `Host` and `Client` operate slightly different, certain naming decisions had to be made seemingly in favor of one over the other. E.g. the `Shared` concept does not exist on client side (because a `Client` only contains a single instance of all components), so there, it simply is the same as `Instance`.\r\nInside `Base` members, you can call `this.someMethod` even if `someMethod` is not declared in `Base`, but instead is declared in `Host` as well as `Client`. At the same time, you can call `this.someBaseMethod` from `Client` or `Host`. That enables you to easily have shared code call endpoint-specific code and vice versa, thereby supporting polymorphism and encapsulation.\r\n\r\n\r\n## Component Skeleton\r\n<a name=\"component_skeleton\"></a>\r\nThis skeleton code summarizes (most of) the available component structure:\r\n\r\n\r\n```js\r\n/**\r\n * A complete Component skeleton\r\n */\r\n\"use strict\";\r\n\r\nvar NoGapDef = require('nogap').Def;\r\n\r\nmodule.exports = NoGapDef.component({\r\n    /**\r\n     * If no name is given, NoGap will use the filename as name.\r\n     * If you define more than one unnamed component per file, you will see an error.\r\n     */\r\n    Name: undefined,\r\n\r\n    /**\r\n     * Array of names (strings) of all components to also be installed \r\n     * when installing this component.\r\n     * This is to signal that one component depends on or \r\n     * requires use of another.\r\n     * NOTE: This is important when components are dynamically loaded (`lazyLoad` = 1).\r\n     */\r\n    Includes: [ 'Component1', 'SomethingElse' ],\r\n\r\n    /**\r\n     * The `Base` definition is merged into both, `Host` and `Client`\r\n     */\r\n    Base: NoGapDef.defBase(function(SharedTools, Shared, SharedContext) {\r\n        return {\r\n            /**\r\n             * Called right before `__ctor` of `Host` and `Client`.\r\n             * Will be removed once called.\r\n             */\r\n            __ctor: function() {\r\n            },\r\n\r\n            /**\r\n             * Called right before `initHost` and `initClient`.\r\n             */\r\n            initBase: function() {\r\n            },\r\n\r\n            /**\r\n             * Private instance members.\r\n             */\r\n            Private: {\r\n            },\r\n\r\n            /**\r\n             * Public instance methods that can be called by the other side.\r\n             */\r\n            Public: {\r\n            }\r\n        };\r\n    }),\r\n\r\n    /**\r\n     * The `Host` definition is only executed on and visible to the server.\r\n     */\r\n    Host: NoGapDef.defHost(function(SharedTools, Shared, SharedContext) {\r\n        return {\r\n            /**\r\n             * The ctor is called only once, during NoGap initialization,\r\n             * when the `Shared` component part is created.\r\n             * Will be removed once called.\r\n             */\r\n            __ctor: function () {\r\n            },\r\n    \r\n            /**\r\n             * Is called once on each component after \r\n             * all components have been created, and after `initBase`.\r\n             */\r\n            initHost: function() {\r\n            },\r\n\r\n            /**\r\n             * Private instance members.\r\n             */\r\n            Private: {\r\n                /**\r\n                 * Is called only once per session and application start, \r\n                 * when the instance for the given session has been created.\r\n                 * Will be removed once called.\r\n                 */\r\n                __ctor: function () {\r\n                },\r\n\r\n                /**\r\n                 * Called when a client connected.\r\n                 */\r\n                onNewClient: function() {\r\n                },\r\n\r\n                /**\r\n                 * Called after `onNewClient`, once this component \r\n                 * is about to be sent to the `Client`.\r\n                 * Since components can be deployed dynamically (if `lazyLoad` is enabled),\r\n                 * this might happen much later, or never.\r\n                 */\r\n                onClientBootstrap: function() {\r\n                }\r\n            },\r\n\r\n            /**\r\n             * Public instance methods that can be called by the client.\r\n             */\r\n            Public: {\r\n            },\r\n        };\r\n    }),\r\n\r\n    /**\r\n     * The `Client` definition is automatically deployed to every connected client.\r\n     */\r\n    Client: NoGapDef.defClient(function(Tools, Instance, Context) {\r\n        return {\r\n            /**\r\n             * Called once after creation of the client-side instance.\r\n             * Will be removed once called.\r\n             */\r\n            __ctor: function () {\r\n            },\r\n\r\n            /**\r\n             * Called once after all currently deployed client-side \r\n             * components have been created, and after `initBase`.\r\n             */\r\n            initClient: function() {\r\n\r\n            },\r\n\r\n            /**\r\n             * Called after the given component has been loaded in the Client.\r\n             * NOTE: This is generally only important when components are dynamically loaded (`lazyLoad` = 1).\r\n             *    (Because else, `initClient` will do the trick.)\r\n             */\r\n            onNewComponent: function(newComponent) {\r\n\r\n            },\r\n\r\n            /**\r\n             * Called after the given batch of components has been loaded in the Client.\r\n             * This is called after `onNewComponent` has been called \r\n             * on each individual component.\r\n             * NOTE: This is generally only important when components are dynamically loaded (`lazyLoad` = 1).\r\n             *    (Because else, `initClient` will do the trick.)\r\n             */\r\n            onNewComponents: function(newComponents) {\r\n\r\n            },\r\n            \r\n            /**\r\n             * This will be merged into the Client instance.\r\n             * It's members will reside along-side the members defined above it.\r\n             */\r\n            Private: {\r\n            },\r\n\r\n            /**\r\n             * Public instance methods that can be called by the host.\r\n             */\r\n            Public: {\r\n            }\r\n        };\r\n    })\r\n});\r\n```\r\n\r\n\r\nGetting Started\r\n=============\r\n<a name=\"getting_started\"></a>\r\n\r\nTODO: Need to rewrite this with to work with the new version that adapted full-stack Promises.\r\n\r\nThis tutorial is aimed at those who are new to `NoGap`, and new to `Node` in general.\r\nIt should help you bridge the gap from the [Code Snippets](#samples) to a real-world application.\r\nNote that the [Simple Sample App](https://github.com/Domiii/NoGap/tree/master/samples/sample_app) is also following these guidelines.\r\n\r\n## Recommended File Structure\r\n    .\r\n    +-- components/\r\n    | +-- models/\r\n    | +-- ui/\r\n    | +-- util/\r\n    +-- lib/\r\n    +-- pub/\r\n    +-- app.js\r\n    +-- appConfig.js\r\n    +-- package.json\r\n\r\nThis is the recommended file structure for the average web application. As always, the structure might look vastly different for special purpose applications.\r\n\r\n### `components/`\r\n\r\nThis folder contains your `NoGap` components, and possibly (some of) their assets. You can name it anything you want.\r\n\r\nNOTE: Placing assets (such as *.html templates, stylesheets, images etc.) next to code is actually good style, if it supports modularization.\r\nIf your components have a sufficiently modular design, you can simply copy their folder, to deploy them and their assets in other places.\r\n\r\n\r\n### `components/models/`\r\n\r\nThis folder contains the interface with your DB and possibly other storage systems. They provide [CRUD](http://en.wikipedia.org/wiki/Create,_read,_update_and_delete) functionality to the rest of the application.\r\n\r\n\r\n### `components/ui/`\r\n\r\nThis folder contains UI-related components. That is UI controller and view code. Views (templates and HTML files) are in files, separate from the code, but they can be in the same folder to support modularity.\r\n\r\n### `components/util/`\r\n\r\nThis folder contains general-purpose utility components used on both `Client` and `Host`. They usually only contain a `Base` definition, with possible specializations in `Client` and `Host`.\r\n\r\n\r\n### `app.js`\r\n\r\nThis defines your actual application. You can name it anything you want. Usually, this file only does three things:\r\n\r\n 1. Setup your app\r\n 2. Start `NoGap`\r\n 3. Start your [`express` server](http://expressjs.com/4x/api.html)\r\n\r\nExpress is the standard Node way of starting a HTTP server and let clients connect.\r\nOnce it is running you can connect to it with your browser on the specified port.\r\n\r\nNOTE: When using `NoGap` you will not need to work with express anymore (other than starting the server). You can use it, but you are recommended to use components instead.\r\n\r\n\r\n\r\n### `appConfig.js`\r\n\r\nThis is your custom configuration file. You can name it anything you want.\r\nIt contains some basic constant data that your application needs, such as database login and other setup information.\r\nThe following is an example of a `NoGap` configuration. It requires at least two entries:\r\n\r\n * `baseFolder`\r\n    * This is the folder, relative to your application (e.g. `app.js`) where you defined all NoGap components.\r\n * `files`\r\n  * The actual component files (sans \".js\"). Whenever you add a component, don't forget to list it here!\r\n\r\n\r\n#### Optional Configuration parameters\r\n\r\n * `publicFolder` (Default = `pub/`)\r\n  * The folder to find all client asset files that cannot be found relative to a component.\r\n  * Usually this is used to store client-only and shared javascript libraries that do not have `NoGap` support (they are not defined as components).\r\n * `lazyLoad` (Default = true)\r\n  * Wether you want to explicitly send each component's client side to clients when necessary.\r\n * `endpointImplementation` (set of options to configure the transport layer)\r\n  * `name` (Default = `HttpPost`)\r\n    * Currently, only POST is available. Websockets will follow soon.\r\n    * You can also implement your own transport layer if you want, but you probably don't.\r\n    * If you are interested into the dirty details, have a look at [`HttpPostImpl` in `ComponentCommunications.js`](https://github.com/Domiii/NoGap/blob/master/lib/ComponentCommunications.js#L564)\r\n * TODO: Tracing, logging + customized error handling\r\n\r\n\r\n#### Example Config\r\n\r\n```js\r\n\"nogap\": {\r\n    \"baseFolder\"   : \"components\",\r\n    \"publicFolder\" : \"pub\",\r\n    \"files\"        : [\r\n        // list all components here:\r\n\r\n        // utilities\r\n        \"ValidationUtil\",\r\n\r\n        // pages for guests\r\n        \"Guest\",\r\n\r\n        // pages for users\r\n        \"Main\",\r\n        \"Home\"\r\n    ]\r\n}\r\n```\r\n\r\n\r\n### package.json\r\n\r\nThis is the standard `Node` configuration file. Here you can declare your app's basic metadata and, most importantly, your dependencies.\r\nIf you need one of the thousands over thousands of publicly available `Node` modules, two steps are required:\r\n\r\n 1. Add their name and your preferred version to `dependencies`\r\n 2. Run `npm install`\r\n\r\nDone. Now the new module is available in your code via:\r\n\r\n`var someModule = require('some-module');`\r\n\r\nwhere `some-module` is the name you gave it in the package.json file.\r\n\r\nCheck out [NPM JS](https://www.npmjs.org/) to see all available modules.\r\n\r\n\r\nDebuggability & security\r\n=============\r\nBy default, each `Client` only receives `Client` and `Base` definitions. `Host`-only code is not available to the client. However, the names of absolute file paths are sent to the client to facilitate perfect debugging; i.e. all stacktraces and the debugger will refer to the correct line inside the actual host-resident component file. If that is of concern to you, let me know, and I'll move up TODO priority of name scrambling, or have a look at [`ComponentDef`'s `FactoryDef`, and the corresponding `def*` methods](https://github.com/Domiii/NoGap/blob/master/lib/ComponentDef.js#L71) yourself.\r\n\r\n\r\nImportant Terms\r\n=============\r\nTODO: Add links + more terms.\r\n\r\n* Component\r\n* Host\r\n* Client\r\n* Endpoint (refers to Client or Host)\r\n* Base (merged into Client and Host)\r\n* Shared (set of all component singletons)\r\n* Instance (set of all component instance objects, exist each once per connected client)\r\n* Tools (set of functions to assist managing of components)\r\n* Asset (an asset is content data, such as HTML and CSS code, images and more)\r\n* more...\r\n\r\n\r\nFinal Words\r\n=============\r\n\r\nGood luck! In case of any questions, feel free to contact me.\r\n","maintainers":[{"name":"domiii","email":"contactdomisemail@gmail.com"}],"time":{"modified":"2022-06-22T04:31:46.339Z","created":"2014-05-30T18:36:35.108Z","0.1.0":"2014-05-30T18:36:35.108Z","0.1.1":"2014-05-30T19:08:31.570Z","0.1.2":"2014-05-30T20:21:40.694Z","0.1.3":"2014-05-30T20:27:03.368Z","0.1.4":"2014-06-03T00:31:00.682Z","0.1.5":"2014-06-03T17:52:05.544Z","0.1.6":"2014-06-03T18:35:26.055Z","0.1.7":"2014-06-04T10:46:21.700Z","0.1.8":"2014-06-07T18:32:09.141Z","0.1.9":"2014-06-09T12:55:35.160Z","0.1.10":"2014-06-14T16:51:50.544Z","0.2.0":"2014-06-18T12:15:09.845Z","0.2.1":"2014-07-09T07:53:16.430Z","0.2.2":"2014-07-30T12:21:14.155Z","0.2.3":"2014-08-02T06:32:11.978Z","0.2.4":"2014-08-02T06:36:30.169Z","0.2.5":"2014-08-02T15:33:46.043Z","0.3.1":"2014-08-07T09:40:02.927Z","0.3.2":"2014-08-08T00:04:01.519Z","0.3.3":"2014-09-02T12:50:55.337Z","0.3.4":"2014-09-24T06:42:29.040Z","0.3.5":"2014-10-03T11:36:36.371Z","0.3.6":"2014-10-14T11:51:14.294Z","0.3.7":"2014-10-17T07:45:47.990Z","0.3.8":"2014-10-28T12:10:21.611Z","0.3.9":"2014-10-28T12:27:10.293Z","0.4.1":"2014-10-31T08:20:20.993Z","0.4.2":"2014-10-31T08:57:31.855Z","0.4.3":"2014-11-07T08:08:16.225Z","0.4.4":"2014-11-29T08:49:35.873Z","0.5.0":"2015-01-18T08:56:00.231Z","0.5.2":"2015-03-17T13:10:03.423Z","0.5.3":"2015-04-25T07:08:46.460Z","0.5.4":"2015-04-29T20:46:05.343Z","0.5.5":"2015-04-29T20:46:50.316Z","0.5.6":"2015-04-30T11:56:50.475Z","0.5.7":"2015-05-02T09:30:15.114Z","0.5.8":"2015-05-02T14:59:14.303Z","0.5.9":"2015-05-03T15:25:36.089Z","0.5.10":"2015-05-03T18:30:56.349Z","0.5.11":"2015-05-08T07:54:33.692Z","0.6.1":"2015-05-08T12:16:08.028Z","0.6.2":"2015-05-09T13:09:25.527Z","0.6.3":"2015-05-13T11:47:32.665Z","0.6.4":"2015-05-15T14:35:46.094Z","0.6.5":"2015-05-28T12:01:59.439Z","0.6.6":"2015-05-28T12:13:59.988Z","0.6.7":"2015-05-30T06:58:29.729Z","0.6.8":"2015-11-29T06:14:35.766Z","0.7.2":"2015-12-24T17:49:12.885Z","0.7.3":"2016-01-02T19:56:11.439Z"},"homepage":"https://github.com/Domiii/NoGap","repository":{"type":"git","url":"https://github.com/Domiii/NoGap"},"author":{"name":"Dominik Seifert","email":"contactdomisemail@gmail.com","url":"http://www.linkedin.com/pub/dominik-seifert/54/63b/8b6"},"bugs":{"url":"https://github.com/Domiii/NoGap/issues"},"license":"MIT","readmeFilename":"README.md"}