{"_id":"@apihawk/microcell","_rev":"8-1fd1aa335d15a8e1853300aae5acb875","name":"@apihawk/microcell","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"@apihawk/microcell","version":"0.1.0","description":"MicroCell is a toolkit for writing AppCell plugins.","main":"index.js","scripts":{"test":"mocha test","lint":"eslint ."},"repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","dependencies":{"api-problem":"^5.1.2","chai":"^4.2.0","debug":"^4.1.1","jsonschema":"^1.2.4","mocha":"^6.1.4"},"devDependencies":{"eslint":"^5.16.0","eslint-plugin-jsdoc":"^4.8.3"},"gitHead":"a2817514927fd0d51c898bb18a45bb5c3d319238","_id":"@apihawk/microcell@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.16.0","_npmUser":{"name":"webfacebg","email":"anton@webface.bg"},"dist":{"integrity":"sha512-yPPl92qG4vbaBmhccAUGfc++zKYWCdgDG70u8rR6IwLru/mXCu9pm63WxH/1VyeF2sxIduNSYtwtnmHjVx1Pzw==","shasum":"c3e4740cc01cde3f59752a194f062f158d172d34","tarball":"https://registry.npmjs.org/@apihawk/microcell/-/microcell-0.1.0.tgz","fileCount":7,"unpackedSize":23057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc4pvbCRA9TVsSAnZWagAAmZIP/3Ap/b01QYFfBKC4R0Vq\nlf9XsZMCXprpi1SgvOlSDpPGfXYiyZTTkvA7Uaexcn73laAAgNNX2Z41BKjt\nak7PbHs48/j5C/uyj1yVM77IuVHFEQvK2GT/Pcg44jmZyrJ+2DU0b/cwGpXp\ns7V6n4XiLrHcbfz/qFbzgcPLXCR7L9XxuE57Vucwp5wTdvATa4bDusC1ZuEx\nUMsWo2lHSGiz5iYBbmcdLvla19a3EY3dOjtiFa/A9RUHOMOoTojwHC0FhOto\n5UDtOE8LtFy1s01cR9KiYpRDqcAk6yfAqfsHWVa5pDRuh3NC/zt+t3oHFkYb\nyNJ329/+4eCiF3xiPCR2rP5mHVw0ElUxQdewkwwKLshwhfcee/zkYwhQSUxF\nINRG+iITHvYq+RJsyGyTwoIX7fER+CIcipOhz9ZyLnjNYc1gy0AH7Cieo+cM\nG1X2PCCsFJBb5jGTrIjLBJa/NQs0Gs940AncCC+D0HxWjwxWXPL1M9X8CA5W\nwjlNLblOc3BYzerAZHDqi7oZ902F8R/yvMlga18d8z1qcqonoxHmuYPhJvgt\n1uQldjbgpd1hoiZ+dt6xNbPbs4jWfs7F8gBWonN+o0v/tTbtg3/bvDkKXkYq\nSTuC+PXuLaQ2DRNwmAs2ReA63b9o0xJfnUpEkSM+zsLgdSID8e7gOHgl99Or\nIku6\r\n=F3Ui\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzVQocLcGdUViBSmOxciOpTgmZZkyXMHOksJwqSQ5yKwIhALxzs2TzgdAIPDdLa/XLniiUHKmghUvlp70FrtZJnQf+"}]},"maintainers":[{"name":"webfacebg","email":"anton@webface.bg"},{"name":"pavkatar","email":"thehawks@apihawk.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microcell_0.1.0_1558354907207_0.7213286987529888"},"_hasShrinkwrap":false},"0.2.0":{"name":"@apihawk/microcell","version":"0.2.0","description":"MicroCell is a toolkit for writing AppCell plugins.","main":"index.js","scripts":{"test":"mocha test","lint":"eslint ."},"repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","dependencies":{"api-problem":"^5.1.2","chai":"^4.2.0","debug":"^4.1.1","jsonschema":"^1.2.4","mocha":"^6.1.4"},"devDependencies":{"eslint":"^5.16.0","eslint-plugin-jsdoc":"^4.8.3"},"gitHead":"7afc8c89f40735aed6cf85437bedbb604e7c4c6c","_id":"@apihawk/microcell@0.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"webfacebg","email":"anton@webface.bg"},"dist":{"integrity":"sha512-Y+Mlgyp024kADryifUmpgfO4VDaBweGCMpPnVjbA8Y6j8KCKzMNlB/5cvXnCHvxKHkgsh/GZiJ+m5/wp/FG1KA==","shasum":"c84c377787f32b50d5500e4bef4b802318556a50","tarball":"https://registry.npmjs.org/@apihawk/microcell/-/microcell-0.2.0.tgz","fileCount":7,"unpackedSize":23674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9oDnCRA9TVsSAnZWagAAuDUQAKEnnILH8mgoaYJrl9fh\nG0EfLPd1BDa18vMq+3tVSSe5CY62Abyv8xz4VO+Z2Xf0QgSnXIDMg8MQdNVR\nN6V0nuFXrzgm9wPDiFm3+b6+zuK3MTzw1igJRjt6NXUsPwev0q+FWlR9in8s\nWvYfVCQX9s8NOOBiCOKtoPie1ccL09tpvXV/WM0UKJ86digAFnkZnDAgMSsO\nLmCzJk7u7UR7JkNS9LWEaDzJVRjEw33nsC084nCV3ZjuDlVVJqhwFwwdevP3\nWZtS0Ud3NxPDnAEx5ggBAuJqfUOZut5UnxLxQXviwdsh01c/5A45StD9L5mM\nP/fbr+Cu+EIUo2DbF+o6kE24Cj6Uc9gjl+JaGy3aH+YvuJLKWaEfJmvam3js\nvAib9DhkJGeI15Aycx40dyv0RNzB8v8RQ16gK/lnVU4SFkNrWH7d32r4Zpav\n1WNuQKA3rvrnW12nU6F+JuaDbbNLcv8DYveBkbrj1R3j1LC7VkKMhRZbUEzh\nLpOu+iVvyoRYNMSoiyHZHxcwKR+r3BOcwohP0UYQWAXh1fRLfRzMAe69cyyK\nTyNgEEjGVSt3sC8po1InTbPA5Ro0dOeHqSsJTJCNfnwqNj6Dni1hbymT6bte\nJtiAcG9sNhoB8YXle5E/GHl6vsLQQS905RilyOV1MgY3twvVoVmcctErdB5j\nD8gO\r\n=6/Mp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDnSUD5rUZ21B6BnpTtpFlqVFbn0a833kaZoTpNGsFmVAiEAwG7O+JcYV+mdhygAFJgcwZ/+Faj9Aon6EkipRgX3cEA="}]},"maintainers":[{"email":"palazliev@gmail.com","name":"palazliev"},{"email":"p.nikolov@apihawk.com","name":"pavkatar"},{"email":"tsvetan.ganev@hotmail.com","name":"tsvetan-ganev"},{"email":"anton@webface.bg","name":"webfacebg"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microcell_0.2.0_1559658727007_0.22828394786958217"},"_hasShrinkwrap":false},"0.2.1":{"name":"@apihawk/microcell","version":"0.2.1","description":"MicroCell is a toolkit for writing AppCell plugins.","main":"index.js","scripts":{"test":"mocha test","lint":"eslint ."},"repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","dependencies":{"api-problem":"^5.1.2","chai":"^4.2.0","debug":"^4.1.1","jsonschema":"^1.2.4","mocha":"^6.1.4"},"devDependencies":{"eslint":"^5.16.0","eslint-plugin-jsdoc":"^4.8.3"},"gitHead":"ba81e2055ca636c880f775f19bcf58a98c24fec2","_id":"@apihawk/microcell@0.2.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"webfacebg","email":"anton@webface.bg"},"dist":{"integrity":"sha512-jaAuaOd0FGSVqCnY0oc5+BlvLrVeqzRmI4ZRgucb1tI1Q2l81rzKT06nMCNOcHCQpG4ok0DDm3sE+NnzJMN3dQ==","shasum":"e1169ce7b5c4f7b831a3bcb83565ac280cfe37c8","tarball":"https://registry.npmjs.org/@apihawk/microcell/-/microcell-0.2.1.tgz","fileCount":7,"unpackedSize":23737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9oUyCRA9TVsSAnZWagAAWmcP/3de1w0Syef5MPIjyliV\nX9B6PijLfRWy0N9qGEdd1HS6lW3dq0VHRVm0zoixYPovvV/SLKJFXsD7aHNo\nK/3pmNkw13/rk4hDhp2yghMcwQC74ckFM9VEFSjVo+163rnxQu+fFvPD6s80\nZEOD1BnTEhT0Wi8ivIWpfM1N4Vwd0NXuDdoJIMr3OR70Hp9/n4M7PqYPw2rB\nCRQ3LjaY/jv7OnHH3E1s1lupg+bvOi/crWQK7KnDr57cdEuvDeJYUftDwg0s\n2qQ8Es2dxZPcXAdfPI5vEgHrLzHYetVqLK/TB5FNWA5R0/Z78nn5Km/setOX\n+3ap8bKJCNnM+LV2jYwOzTdi+wUrbNrF3lhTm3+dYknYAUyoMPdYsKXq6cJN\nsvTFCFCrMupdDFzqRKcASDXv84p2aXmHPNPECeozET0e48coGi/xJmBovUGK\nsIPk1BIXwuQX2NYrxwerOPCy9m1ESph3V4GIysUuZa/RozFVCccUc0p+04wk\nGrNmR+jdQtYmVLl752b8lApt5eWfPdYNJ0qOAa3zOH3BbBA/NJuf6umHQXcw\nq83xJA10/O8P0y2n7EW4IQ+4EGaEX2rIql4IAfCYcWGsVp6NTNIH6VMICOsX\nZzs5jg29FITwyDIgoratZe15kt8EuwkaB9CKyNPyNjpW+bcgYxaHjl81Gw9d\noTUj\r\n=vfrM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGfAZ9Y96gmC0Y1ch2ymbXkAXwoVDz6/KmoNsMCiBO0vAiA/AHNAi1RgdZiUhQa9DBfaSOcUfQl+kAgiwlo972oxCg=="}]},"maintainers":[{"email":"palazliev@gmail.com","name":"palazliev"},{"email":"p.nikolov@apihawk.com","name":"pavkatar"},{"email":"tsvetan.ganev@hotmail.com","name":"tsvetan-ganev"},{"email":"anton@webface.bg","name":"webfacebg"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microcell_0.2.1_1559659825775_0.4617995700170474"},"_hasShrinkwrap":false},"0.2.2":{"name":"@apihawk/microcell","version":"0.2.2","description":"MicroCell is a toolkit for writing AppCell plugins.","main":"index.js","scripts":{"test":"mocha test","lint":"eslint ."},"repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","dependencies":{"api-problem":"^5.1.2","chai":"^4.2.0","debug":"^4.1.1","jsonschema":"^1.2.4","mocha":"^6.1.4"},"devDependencies":{"eslint":"^5.16.0","eslint-plugin-jsdoc":"^4.8.3"},"gitHead":"e1257eaec748113ef01ed38e265d9897a08ed3f1","_id":"@apihawk/microcell@0.2.2","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","_npmUser":{"name":"webfacebg","email":"anton@webface.bg"},"dist":{"integrity":"sha512-BsBgxXTpVa/rc0NLsrCFY0wf0+ASCmwiMcMaoLlAS5GIHWllX8H2PWgPwbdBPL2a3JxvVXWI1NBRsoDTtbzcWA==","shasum":"f553dd45d11790f2b87f0e87dbaefef9abe26b21","tarball":"https://registry.npmjs.org/@apihawk/microcell/-/microcell-0.2.2.tgz","fileCount":7,"unpackedSize":23741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG2NeCRA9TVsSAnZWagAAXvoP/2XwIFyKgfUVMMQO53FS\nRVY/oRxHLvJyZqb0wYccKtYX/cfjqd4Yu90HgUVwL7Ys+0yv1OMYv+74XuV1\nxg1FfuAh3mX1R1PDaBHeIHfJ2RWRL4vL5y9VNMt+Pd1ognFuNXlE35W4sc3u\nafp9UXLWrEcZtPupGFUbG8XaNAUXZjPzx2zmQvCU61IaKeGcHba/fVXkVcxW\np1DkDaOKDHezJywGLsezfgBhT5YNAmfMQHGGoQkXZ/RELqIwHVUkCWfJpI4o\ngluK3MScjPq38DYTu3LOi9ew5auSP9DCZFXhvXYb6O0o2SJAuGXA987XSDqp\nGN7d+TnQQokTUj80eVTb6IxNi1AwnYU7shyK3F2n5yiWpUUSJ0kG/7TvubXm\n1BbySxyoRdfUIP4gWRatLomnch9Avsm95k7XsdhePooVPyrzGRtCBk0MWAmw\nKjFzpPc/Ubs+OXvF+BQYfPm0/HYgTAVholl4NWU15oqt/pVn9KWxUrhZ7g+8\nJY/Z3FMHl+BqwiY8Kp2fWsqZk/Q+YTbTLKTDDKGPSU0zGQdRU951ma5A1eYO\nVY1kESv/bOWNpkXdRuuzDWS+SkIoGCVdb7oMVvWikgA7+fdAGcVi0TYAiVTz\n+nTJxKeMsSjJFdo9pc74L9N2Z1LrkEjh3z+g+b/zly5MCjzbV8VlEF0ljAf4\npH2Y\r\n=/fab\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAo4vUOVRezNJWdkp0/u8CGsVaKYXjtFAWRzM0BdfVFpAiAu8pkWjbdjlcydQFWqzwyTczStYEqJcOq8a2z/T/s5Cw=="}]},"maintainers":[{"email":"palazliev@gmail.com","name":"palazliev"},{"email":"p.nikolov@apihawk.com","name":"pavkatar"},{"email":"tsvetan.ganev@hotmail.com","name":"tsvetan-ganev"},{"email":"anton@webface.bg","name":"webfacebg"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microcell_0.2.2_1562075997700_0.2039948189056917"},"_hasShrinkwrap":false},"0.2.3":{"name":"@apihawk/microcell","version":"0.2.3","description":"MicroCell is a toolkit for writing AppCell plugins.","main":"index.js","scripts":{"test":"mocha test","lint":"eslint ."},"repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","dependencies":{"api-problem":"^5.1.2","chai":"^4.2.0","debug":"^4.1.1","jsonschema":"^1.2.4","mocha":"^6.1.4"},"devDependencies":{"eslint":"^5.16.0","eslint-plugin-jsdoc":"^4.8.3"},"gitHead":"44f71e8a14a727eb15235204f4e833af56d1ef02","_id":"@apihawk/microcell@0.2.3","_nodeVersion":"10.16.0","_npmVersion":"6.9.0","_npmUser":{"name":"webfacebg","email":"anton@webface.bg"},"dist":{"integrity":"sha512-OKducS71qvjkrUQMhGO8IvvdxvA4XgxWZMFiKW3pMvJA3IEjh13QfmrR8/dhpI2nmvkvv8pLMPwlz4ZfEjPxiw==","shasum":"5f98dacc4d18b6ed898bd15d0fa2945321f4c4a8","tarball":"https://registry.npmjs.org/@apihawk/microcell/-/microcell-0.2.3.tgz","fileCount":7,"unpackedSize":23725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdG2hBCRA9TVsSAnZWagAApw0P/j4oS/u+BalA+qYECiDY\nK8KstEfYHzQe/6QIXCAZEgPKQe42CMliyBu6vKwxI7iG3PK+OIdn8JbJcGw3\nBxNM9Sj5JC7M8tYUFMiI+TYssR8amZOy3xmJYwpUQM7MuXv6sc0Id0wvjpgd\ndpP88oy0C1hdAZnxxNIpsYN64tUPTWTuEpfINEXv32njhg/AxuljrYUdl7Th\nJas+zt9E11ISp+eb1fZHcmRFhWkX4Bwduy/QsLk/c9Q6C3olbiWBmB7iZxH1\nfgR8/qFajM/GO1av5s9BTOCFYput28lk5hnGWKKIrkKUnhMjT85V1hn91b24\nde/EYpMsk+5+tstGfTHDGyd7rGDj+AWgGz6TuRF7nUhzunLB+cXDF5GIYTrR\n8KsgTqSLtImRV6zC9+3IlZASsN2BhLw3HbDbHH8tmPcZfPs6kLFmytHR2Zvd\nGZCVbncD5M4RFvT0MiGlQb6pqOWegV+Vv8YdQkWo5HKGUfy9nr7O6HA0zHxB\nXrT3eFtDPAIvKJ6BO5rWq556mud2VosZoCs0Dg8INaBUeQQXibOC9tdnhRt+\n+srvv5beE2VnS//A3Av80DZJrKvf5HGxQKkxt/ctXHVXzItGbQS9llqja0fD\nrwlTKyAyDXVoXzzVgEXPCIrPhUAw98ySvrMMRGIojhXZnjvxPTi4vQUpprTP\n545S\r\n=cJkM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQ80tUvpdUPmmnph1wm2DqaHnch5m7b8Wh/MyOTnfUfAiBcZI7RjTd67JE00doT9zHg6XWDqgFU5zXqnD6payEP9w=="}]},"maintainers":[{"email":"palazliev@gmail.com","name":"palazliev"},{"email":"p.nikolov@apihawk.com","name":"pavkatar"},{"email":"tsvetan.ganev@hotmail.com","name":"tsvetan-ganev"},{"email":"anton@webface.bg","name":"webfacebg"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microcell_0.2.3_1562077248741_0.8340913973008743"},"_hasShrinkwrap":false},"0.2.4":{"name":"@apihawk/microcell","version":"0.2.4","description":"MicroCell is a toolkit for writing AppCell plugins.","main":"index.js","scripts":{"test":"mocha test","lint":"eslint ."},"repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","dependencies":{"api-problem":"^5.1.2","chai":"^4.2.0","debug":"^4.1.1","jsonschema":"^1.2.4","mocha":"^6.1.4"},"devDependencies":{"eslint":"^5.16.0","eslint-plugin-jsdoc":"^4.8.3"},"gitHead":"cf1bfe9a3a36e04e8cf4f995d49c6aa7a5d5f333","_id":"@apihawk/microcell@0.2.4","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-/ABFFdt1+M4D9mbPI0xEUf8TLsDiZcNsqegOFTMU5NyNn1xFwt3Av8Zt6CgynGbosrr11kqj7VXGszPPlXeXCw==","shasum":"dcd54c67e4fbbdd476d051b5e4718ec49c14f6c6","tarball":"https://registry.npmjs.org/@apihawk/microcell/-/microcell-0.2.4.tgz","fileCount":7,"unpackedSize":24044,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCM3BFL8qQkif2KEGc5KEMPIVKiaVWKUusYr0OtoHgSYQIgKbngXaXKhHsrMYvZbvN8Mxl8P5Sodxo6RxhJM5/NsbA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2T5qACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZ2A/9FoqgQZBiiMqRIf8U4QW6W8df+tuQvWvVwkqQEUEWu8PXHaD7\r\nw0LUPCDZSDyl18kM6tW+n7M742V/NjIHmfgiEvlRD1VgU+JyHrLbJGxNNvhZ\r\nAoaVPuY0q0DRqPsce7Jqmev94KTW+8vZA21jHZo/i2aWPEWx8v56BMA2z9nX\r\nfQ4jxSxrV/6Zr8n+8waO0Ef46mA5APs2/2b+/rqK38cZ/Co0E/Lm/XYcg+Sq\r\nIleZZkZ3MXug7S11cmp6d5CN4Uw2UwTEQMfeIMv8O7GlqXOAKx5giwdfQeeD\r\nNg+jSBUqWN3c/PYq3IilhCfyG+ZvL9auzE5YI0qKmTyGZec1xl5zoEgnul7h\r\nBj+GS1X9gW4SEotBPSQM3OTYky4CbPQwcgTtCk14f0tcLv+GLzix6W2hV6sh\r\n+MLkciyqQuADBT4zwpQ863qAj1wGC+tv45vrMmj38nDziRu/ixr0Hk4G029m\r\n+HWP6UfCODmkLpeZl9GWID7EkaqKkZoFqZwABFaU1B/zZIN+NT3dcUnQclNI\r\nOgxBS/Edl6BbxaFs/IXq9vWOG7s9IMAeRkvZfpdArElsJp4qV7hva7Sbb4R+\r\ng27GQg+2WGwELCzy6TaUfmghg+zkOO2cunYPSE1VBZllP0uuvgoqdZTL4QlH\r\n9sTNV16GBMwXJm/XyhbQxtIrR9Mfw53/i4E=\r\n=nLHi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"a-katsarov","email":"anton@webface.bg"},"directories":{},"maintainers":[{"name":"pavkatar","email":"p.nikolov@apihawk.com"},{"name":"palazliev","email":"palazliev@gmail.com"},{"name":"tsvetan-ganev","email":"tsvetan.ganev@hotmail.com"},{"name":"a-katsarov","email":"anton@webface.bg"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/microcell_0.2.4_1658404458287_0.49825686832394167"},"_hasShrinkwrap":false}},"time":{"created":"2019-05-20T12:21:47.008Z","0.1.0":"2019-05-20T12:21:47.349Z","modified":"2022-07-21T11:54:18.545Z","0.2.0":"2019-06-04T14:32:07.107Z","0.2.1":"2019-06-04T14:50:25.946Z","0.2.2":"2019-07-02T13:59:57.880Z","0.2.3":"2019-07-02T14:20:48.853Z","0.2.4":"2022-07-21T11:54:18.432Z"},"maintainers":[{"name":"pavkatar","email":"p.nikolov@apihawk.com"},{"name":"palazliev","email":"palazliev@gmail.com"},{"name":"tsvetan-ganev","email":"tsvetan.ganev@hotmail.com"},{"name":"a-katsarov","email":"anton@webface.bg"}],"description":"MicroCell is a toolkit for writing AppCell plugins.","repository":{"type":"git","url":"git@git.apihawk.tech:AppCell/nodejs/microcell.git"},"author":{"name":"Anton Katsarov","email":"anton@webface.bg","url":"http://www.webface.bg/"},"license":"MIT","readme":"# MicroCell\n\nMicroCell is a toolkit for writing AppCell plugins.\n\n## Instalation\n\n`microcell` is available on [npm](http://npmjs.org). To install it, type:\n\n``` bash\n$ npm install @apihawk/microcell\n```\n\n## Usage\n\nImport the library in your code and and choose the transport library you want to use:\n\n```js\nconst MicroCell = require('@apihawk/microcell');\nconst MicroCellAMQPTransport = require('@apihawk/microcell-amqp-transport');\n\nconst server = new (MicroCell.plugin(MicroCellAMQPTransport))();\n\nserver\n  .listen({\n    amqp_queue: process.ENV.AMQP_QUEUE,\n    amqp_url: process.ENV.AMQP_URL\n  })\n  .add({foo: 'One', bar: 'Two'}, (data, respond) => {\n    respond(null, `Payload is: ${data.payload}`);\n  })\n  .act({foo: 'One', bar: 'Two', payload: 'Hello World'}, () => {\n    console.log(\"Final response:\", response); // Final response: Payload is: Hello World\n  });\n```\n\n## Modes\n\n### Server mode\n\nThe server mode is the most common mode of usage. In that mode, the app runs as a daemon and listens for instructions over the selected transport. It also supports actions (`act`) as the client mode.\n\n```js\nconst MicroCell = require('@apihawk/microcell');\nconst MicroCellAMQPTransport = require('@apihawk/microcell-amqp-transport');\n\nconst server = new (MicroCell.plugin(MicroCellAMQPTransport))();\n\nserver\n  .listen({\n    amqp_queue: process.ENV.AMQP_QUEUE,\n    amqp_url: process.ENV.AMQP_URL\n  })\n  .add({foo: 'One', bar: 'Two'}, (data, respond) => {\n    respond(null, `Payload is: ${data.payload}`);\n  })\n```\n\n### Client mode\n\nThe client mode executes all actions and exits after all of them get a response:\n\n```js\nconst MicroCell = require('@apihawk/microcell');\nconst MicroCellAMQPTransport = require('@apihawk/microcell-amqp-transport');\n\nconst client = new (MicroCell.plugin(MicroCellAMQPTransport))();\n\nclient\n  .client({\n    amqp_queue: process.ENV.AMQP_QUEUE,\n    amqp_url: process.ENV.AMQP_URL,\n    timeout: 2000 // Force exit after 2s\n  })\n  .act({foo: 'One', bar: 'Two', payload: 'Hello World'}, () => {\n    console.log(\"Final response:\", response);\n  });\n```\n\n### Test mode\n\nTest mode is for unit testing only. It does not require transport.\n\n```js\nvar Microcell = require('@apihawk/microcell');\nvar expect = require('chai').expect;\n\nconst Zones = require('../src/zones'); // Import some listeners (`add()`) from your module under test\n\ndescribe('zones', () => {\n  const microcell = (new Microcell()).test().use(Zones);\n\n  it('create', done => {\n    expect(microcell).to.be.an('object');\n\n    microcell.act({resource: 'Zone', action: 'Create', _payload: 'secret data!'}, (err, result) => {\n      expect(err).to.be.null;\n      expect(result).to.be.an('object');\n      expect(result._payload).to.exist;\n      done();\n    });\n  });\n\n});\n\n```\n\n## Methods\n\n### static plugin(plugin)\n\nThe `plugin` function allows extending of the library with plugins. It accepts a single parameter, which should be a MicroCell plugin. Returns the resulting class.\n\n```js\nconst MicroCell = require('@apihawk/microcell');\nconst MicroCellAMQPTransport = require('@apihawk/microcell-amqp-transport');\n\nconst client = new (MicroCell.plugin(MicroCellAMQPTransport))();\n```\n\n### listen([params])\n\nThe `listen` method starts a server that listens for JSON messages depending on the transport plugin. If you do not use a plugin, the function exits. Accepts `params` object which passes parameters for the used transport plugin. Returns the `microcell` object so that methods can be chained.\n\n### client([params])\n\nOn the client-side, calling `microcell.client()` means that MicroCell sends any actions it cannot match locally out over the selected transport.\n\nAccepts `params` object which passes parameters for the used transport plugin. Returns the `microcell` object so that methods can be chained.\n\n### test()\n\nTest mode is to run tests locally.\n\n### use(module[, rule])\n\nLoads module with `add`/`act` methods.\n\n``` js\nconst Zones = require('./zones');\n\nmodule.exports = function({\n  amqp_queue,\n  amqp_url\n}) {\n  const server = new (MicroCell.plugin(MicroCellAMQPTransport))();\n\n  server\n    .use(Zones, {resource: 'Zone'})\n    .listen({\n      amqp_queue: amqp_queue,\n      amqp_url: amqp_url\n    });\n};\n\n```\n\nAnd in `zones.js` we have:\n\n``` js\nmodule.exports = function zones() {\n  this.add({action: 'Create'}, (msg, respond) => {\n    respond(null, { hello: 'create'});\n  });\n  this.add({action: 'Read'}, (msg, respond) => {\n    console.log(\"Read\", msg);\n    respond(null, { hello: 'read' });\n  });\n  this.add({action: 'Update'}, (msg, respond) => {\n    respond(null, { hello: 'update' });\n  });\n  this.add({action: 'Delete'}, (msg, respond) => {\n    respond(null, { hello: 'delete' });\n  });\n};\n\n```\n\nThe function accepts two parameters. The first is the module and the second is a `rule` to be matched for all the `add` methods in the module. `rule` is optional.\n\n### add(rules, callback)\n\nAdds a listener for incoming actions. It accepts two parameters. `rules` is the rule to match and a `callback` is the function to execute on a match.\n\nThe `callback` has two parameters. `msg` is the data sent by the action together with the filtering rules. `respond` is a function to be called in response to the action. Accepts two parameters as follows: an `error` and a response `data`.\n\n``` js\n  server.add({action: 'Delete'}, (msg, respond) => {\n    respond(null, { hello: 'delete' });\n  });\n```\n\n### act(data, callback)\n\n`act` sends an action to a local or remote listener. It accepts two parameters. `data` is an object containing the rule parameters and the payload. Te `callback` is called on response with two parameters identical to the `respond` function of the `add` method. `error` and `data`.\n\n``` js\n  client.act({\n    resource: 'Zone',\n    action: 'Read',\n    payload: { domain: 'exapmpe.com' }\n  }, (err, response) => {\n    console.log(\"Final response:\", response);\n  });\n\n```\n\n## Tools\n\n### error(err | null[,options])\n\nReturns errors formatted in [RFC 7807 - Problem Details for HTTP APIs](https://tools.ietf.org/html/rfc7807) format.\n\nParameters:\n - `err` - an [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object or `null`.\n - `params` - object with optional parameters:\n   - `code` - status code.  Type: `string` Default value: `'500'`\n   - `message` - error message. Type: `string`. Default value: `'Internal server error'`\n   - `detail` - error details. Type: `string`. Default value: `err.message`\n   - `request` - original request data. Type `Object`\n   - `stack` - error stack trace. Type: `string` or `Object`. Default value: `err.stack`\n   - `validation_messages` - messages on validation errors. Type: `Array<string>`\n   - `original_error` - The original error if any. Type: `string` or `Object`.\n\n``` js\nrespond(this.error(new Error('Something went wrong!'), {\n  message: 'Service is temporarly unavailable',\n  code: '503'\n}));\n```\n\n### validationError(err | null[,options])\n\nSame as `error` but the default values for `params.code` and `params.messages` are `'422'` and `'Validation failed'`.\n\n``` js\nrespond(this.validationError(null, {validation_messages: errors}), null);\n```\n\n### validate(data, schema)\nValidates a data object against a [JSON Schema](https://json-schema.org/).\n\n``` js\nconst errors = this.validate(data.id, {'type': 'number'});\nif (errors.length) {\n  respond(this.validationError(null, {validation_messages: errors}), null);\n  return;\n}\n```\n\n### validateHttpResponse(err, response)\n\nTurns HTTP errors (4xx, 5xx) into API Problem errors. Parameters:\n\n- `err` - an [Error](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) object.\n- `response` - a [http.IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage) object.\n\n\n``` js\nrequest.delete({\n  url: `${api_base}/dns_zones/${ data.id }.json`,\n  auth: auth\n}, (err, response) => {\n  const httpError = this.validateHttpResponse(err, response);\n  if (httpError) {\n    respond(httpError);\n    return;\n  }\n  respond(null, this.formatResponse());\n});\n```\n\n### formatResponse(body[,params])\n\nReturns a JavaScript object which includes `response` body, `title` and `status`.  The returned object can be for a response.\n\n- `body` - A JavaScript Object to respond with\n- `params` - object with optional parameters:\n   - `code` - status code.  Type: `string` Default value: `'200'`\n   - `title` - error title. Type: `string`. Default value: `OK`\n\n``` js\nrespond(null, this.formatResponse({foo: \"bar\"})); // {title:'OK',status:'200',response:{foo:'bar'}}\n```\n\n## License\nCopyright (c) 2019 Anton Katsarov and other contributors;\nLicensed under [MIT](LICENSE).\n","readmeFilename":"README.md"}