{"_id":"mia-js","_rev":"31-8c47a2f977481b6873c82d6e57870c8c","name":"mia-js","description":"mia.js - Middleware API framework","dist-tags":{"latest":"1.3.6"},"versions":{"0.8.2":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.8.2","dependencies":{"mia-js-core":"0.8.2","apn":"1.7.3","async":"0.2.9","body-parser":"1.12.3","compression":"1.5.2","cron":"1.0.3","deep-diff":"0.1.4","emailjs":"0.3.11","express":"4.4.2","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","memcached":"2.2.0","mongodb":"2.0.46","morgan":"1.1.1","nodemon":"1.0.17","node-jsx":"0.13.3","object-hash":"0.5.0","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","restler":"3.2.2","superagent":"0.18.2","swagger-tools":"0.8.1","time":"0.11.3","toobusy-js":"0.4.2","traverse":"0.6.6","trycatch":"1.5.11","underscore":"1.5.2","underscore.string":"2.3.3","vhost":"3.0.1","util":"0.10.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"63157566f2807bea9e9587cabbad972a33249f93","_id":"mia-js@0.8.2","_shasum":"d00b34780c5afc7b389204d1429ce5de137e389a","_from":".","_npmVersion":"3.3.12","_nodeVersion":"0.12.8","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"d00b34780c5afc7b389204d1429ce5de137e389a","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.8.2.tgz","integrity":"sha512-h+M24RDNeKCTRB6gcFAl1/uIaDSWv2531HTRLmxG8HZTGbjZD8AuDDxGF/dlLGUKIk0pw2DXJKbF4RnG1hjnAA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAlymsGrQ0Y7vf2P1MCf0ZN/Kc9BrqLdRRP6w+sRqyOfAiEA2BC5PNxpsEsK+dIBASaoVeN0luI9PDp5phn88A3OW3E="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{}},"0.8.3":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.8.3","dependencies":{"mia-js-core":"0.8.3","apn":"1.7.3","async":"0.2.9","body-parser":"1.12.3","compression":"1.5.2","cron":"1.0.3","deep-diff":"0.1.4","emailjs":"0.3.11","express":"4.4.2","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","memcached":"2.2.0","mongodb":"2.0.46","morgan":"1.1.1","nodemon":"1.0.17","node-jsx":"0.13.3","object-hash":"0.5.0","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","restler":"3.2.2","superagent":"0.18.2","swagger-tools":"0.8.1","time":"0.11.3","toobusy-js":"0.4.2","traverse":"0.6.6","trycatch":"1.5.11","underscore":"1.5.2","underscore.string":"2.3.3","vhost":"3.0.1","util":"0.10.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"64712c54fb20d0e4d1c90506de1bf7d7c8454a88","_id":"mia-js@0.8.3","_shasum":"72aa050f2c237dc18423eff2d429649593131d89","_from":".","_npmVersion":"3.3.12","_nodeVersion":"0.12.8","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"72aa050f2c237dc18423eff2d429649593131d89","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.8.3.tgz","integrity":"sha512-pZV1Go5p1KbPfEdIGaVhfsAC8WA6hytZw45hUQ2Mjb9Js5l46m9aJJ15E2faV7FjoIXTFpq29Bi3EV+EGYQWbw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqFuv3XQSzCO345KLpNSRhB+IU6E3qSxEKTsUzmIGEXgIhANJhCg7e1nzt6HYABdjk3vQo99qTSbAxYuUq+tMD5Q0/"}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/mia-js-0.8.3.tgz_1457085351376_0.9958985466510057"},"directories":{}},"0.8.5":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.8.5","dependencies":{"mia-js-core":"0.8.5","apn":"1.7.3","async":"0.2.9","body-parser":"1.12.3","compression":"1.5.2","cron":"1.1.0","deep-diff":"0.1.4","emailjs":"0.3.11","express":"4.4.2","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","memcached":"2.2.0","mongodb":"2.0.46","morgan":"1.1.1","nodemon":"1.0.17","node-jsx":"0.13.3","object-hash":"0.5.0","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","restler":"3.2.2","superagent":"0.18.2","swagger-tools":"0.8.1","time":"0.11.3","toobusy-js":"0.4.2","traverse":"0.6.6","trycatch":"1.5.11","underscore":"1.5.2","underscore.string":"2.3.3","vhost":"3.0.1","util":"0.10.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"da00878a2f86a493cfc20a7d1935c23a27d94744","_id":"mia-js@0.8.5","_shasum":"b07667337ec50991fff3c845b86b617e381cd170","_from":".","_npmVersion":"3.3.12","_nodeVersion":"0.12.8","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"b07667337ec50991fff3c845b86b617e381cd170","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.8.5.tgz","integrity":"sha512-FIiArIonm9F5BzEriImJ+rASogzvvnxBj4yMaXvzbJFa9mFpyI+dS5d1Js6j2CNFwZdXIJgfgbp5kGQZA1cN+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDbfomLms0kxsYg1pn5eYpRlPj9wy2r3WpjzZ0+jR64VQIgRhDBNXzRTIXsHHu8OCGelkgD9OYTYDJzStcCd7DlHEE="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/mia-js-0.8.5.tgz_1464351213375_0.7320138176437467"},"directories":{}},"0.8.6":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.8.6","dependencies":{"mia-js-core":"0.8.6","apn":"1.7.3","async":"0.2.9","body-parser":"1.12.3","compression":"1.5.2","cron":"1.1.0","deep-diff":"0.1.4","emailjs":"0.3.11","express":"4.4.2","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","memcached":"2.2.0","mongodb":"2.0.46","morgan":"1.1.1","nodemon":"1.0.17","node-jsx":"0.13.3","object-hash":"0.5.0","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","restler":"3.2.2","superagent":"0.18.2","swagger-tools":"0.8.1","time":"0.11.3","toobusy-js":"0.4.2","traverse":"0.6.6","trycatch":"1.5.11","underscore":"1.5.2","underscore.string":"2.3.3","vhost":"3.0.1","util":"0.10.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"04de45a0625bcb18f4d4cd6d83292820d14e0152","_id":"mia-js@0.8.6","_shasum":"c2f9504dffc1d38129c5c9adee0d682b3e8a2fc1","_from":".","_npmVersion":"3.3.12","_nodeVersion":"0.12.8","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"c2f9504dffc1d38129c5c9adee0d682b3e8a2fc1","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.8.6.tgz","integrity":"sha512-kqJ5I7T+yKZO3HxI6HSw5EOJX5DlfV9duOyhsdel1MK1diI+CB3p+tUr89WH5SSwhBluLLt/dFLYaWZA+igdOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHe220oQH1HrR+ZblYRHYaJ35boy80ni7fG9UhCatJ1wIgF9tAJQ7vedVM3O9fXKpuKksHOmZ1//jEOHHhOAiFVkg="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/mia-js-0.8.6.tgz_1470393158934_0.8212104823905975"},"directories":{}},"0.8.7":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.8.7","dependencies":{"mia-js-core":"0.8.7","apn":"1.7.3","async":"0.2.9","body-parser":"1.12.3","compression":"1.5.2","cron":"1.1.0","deep-diff":"0.1.4","emailjs":"0.3.11","express":"4.4.2","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","memcached":"2.2.0","mongodb":"2.0.46","morgan":"1.1.1","nodemon":"1.0.17","node-jsx":"0.13.3","object-hash":"0.5.0","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","restler":"3.2.2","superagent":"0.18.2","swagger-tools":"0.8.1","time":"0.11.3","toobusy-js":"0.4.2","traverse":"0.6.6","trycatch":"1.5.11","underscore":"1.5.2","underscore.string":"2.3.3","vhost":"3.0.1","util":"0.10.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"88357a419334f8def1560a197e9d2bfd44c389dd","_id":"mia-js@0.8.7","_shasum":"11c7797572e55d07a2da4bf30f9441c726f17cf5","_from":".","_npmVersion":"3.3.12","_nodeVersion":"0.12.8","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"11c7797572e55d07a2da4bf30f9441c726f17cf5","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.8.7.tgz","integrity":"sha512-ISb19H1EquDjBncDGQvGmdXK1BPUkvY4bn5KPj/P2J7tjbORns3/dS5nPqymfWS0e9LHUKizgPU4urmoIytFRw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBd3HXBUBlOHX0hnrMRsZ+WJQO8BAD/Gb75QZ6DvUOvCAiEAx4lSBz24+PyKzInYmU+qqCyJAY7NqyZxmxzOvwHsYfk="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/mia-js-0.8.7.tgz_1476889615126_0.07448667869903147"},"directories":{}},"0.8.9":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.8.9","dependencies":{"mia-js-core":"0.8.9","apn":"1.7.3","async":"0.2.9","emailjs":"0.3.11","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","mongodb":"2.0.46","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"2662ec560cde9ff1332c3c728d34c965531dc087","_id":"mia-js@0.8.9","_shasum":"e7d0918ecf7d8f090642a558640f8ae82ee1d328","_from":".","_npmVersion":"3.10.9","_nodeVersion":"0.12.8","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"e7d0918ecf7d8f090642a558640f8ae82ee1d328","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.8.9.tgz","integrity":"sha512-pZo6+kVJt5zxbUIMt6BZ6kDbYM2QkbyK9QPvgH7T66JSHMjSXewSrQLobxobk2X4XufZQcWa/vNsKjRMO5qMgA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9YBVQ5b9XKHiYEnYmvmM2ur0F7kMTwMY99bFN6KIgDAiEAqpkfq/H0wR2q2Q61zsZoRo+KtspXXbfvp77P/wIcMzc="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/mia-js-0.8.9.tgz_1481212598650_0.8378364038653672"},"directories":{}},"0.9.1":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.9.1","dependencies":{"mia-js-core":"0.9.1","apn":"1.7.3","async":"2.1.4","emailjs":"1.0.1","fbgraphapi":"0.5.0","fibers":"1.0.7","ip":"1.1.0","jasmine-node":"1.11.0","lodash":"2.4.0","mongodb":"2.2.11","react":"0.13.3","react-async":"2.1.0","react-router":"0.13.3","react-router-component":"0.26.0","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","q":"1.4.1","xml2js":"0.4.15"},"devDependencies":{"grunt":"0.4.5","grunt-browserify":"4.0.0","grunt-contrib-watch":"0.6.1","grunt-react":"0.12.2","grunt-contrib-less":"0.11.0","jit-grunt":"0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"b419f6373eead4d83dad76c389947c288017b67d","_id":"mia-js@0.9.1","_shasum":"0e80e6c770d5234be0c10889c58f09a991e8c965","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.9.5","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"0e80e6c770d5234be0c10889c58f09a991e8c965","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.9.1.tgz","integrity":"sha512-vAF91KB0PnpFw/u4KewnmLc7oWECGyP8kcGBN8IjW9XcZUwAidVgNtZ1XWoAL8NvPUZGM9H1e6vm4fs5t9yp0g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDu8IVi+Jei1X80oRrYWNmgJJ2MNkHUq0Q2A7TkiLW1hAIgBVqa3DkGOhn+DXeg4HUmttu+wcArLUzOzV6zIZAGP2M="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/mia-js-0.9.1.tgz_1487856937169_0.013430756749585271"},"directories":{}},"0.9.3":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.9.3","dependencies":{"mia-js-core":"^0.9.5","apn":"^1.7.3","async":"^2.1.4","babel-core":"^6.24.1","babel-plugin-transform-async-to-generator":"^6.24.1","babel-polyfill":"^6.23.0","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","emailjs":"^1.0.1","fbgraphapi":"^0.5.0","fibers":"^1.0.7","ip":"^1.1.0","jasmine-node":"^1.11.0","lodash":"^2.4.0","mongodb":"^2.2.11","react":"^0.13.3","react-async":"^2.1.0","react-router":"^0.13.3","react-router-component":"^0.26.0","superagent":"^0.18.2","trycatch":"^1.5.11","underscore.string":"^2.3.3","q":"^1.4.1","xml2js":"^0.4.15"},"devDependencies":{"grunt":"^0.4.5","grunt-browserify":"^4.0.0","grunt-contrib-watch":"^0.6.1","grunt-react":"^0.12.2","grunt-contrib-less":"^0.11.0","jit-grunt":"^0.7.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"}],"gitHead":"8763746be82e4635746dda0e2638b4c21631c18f","_id":"mia-js@0.9.3","_shasum":"482de44cd554c3de7385bbdccc132dbf76612330","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"482de44cd554c3de7385bbdccc132dbf76612330","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.9.3.tgz","integrity":"sha512-exaQZxcEugitxijANORQO4TRioMDBaevyqno872wq/ulc2f2JDVnTcPEd2yTM3z3eBkYI7FJtjwEoWaxSxV8vg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBiyQBeFlcZ6JCgAEkp9JwnVe8ij/e6NFpjldNJagkc5AiEAywNtqgoBjRD56qAS2+ki3Mach9Ui8p76GBfATQMOKfg="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js-0.9.3.tgz_1512138993813_0.04515979252755642"},"directories":{}},"0.9.4":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.9.4","dependencies":{"mia-js-core":"^0.9.5","apn":"^1.7.3","async":"^2.1.4","babel-core":"^6.24.1","babel-plugin-transform-async-to-generator":"^6.24.1","babel-polyfill":"^6.23.0","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","emailjs":"^1.0.1","fbgraphapi":"^0.5.0","fibers":"^1.0.7","ip":"^1.1.0","jasmine-node":"^1.11.0","lodash":"^2.4.0","mongodb":"^2.2.11","superagent":"^0.18.2","trycatch":"^1.5.11","underscore.string":"^2.3.3","q":"^1.4.1","xml2js":"^0.4.15"},"devDependencies":{"babel-loader":"^6.2.5","babel-preset-react":"^6.5.0","babel-preset-stage-2":"^6.24.1","bootstrap":"4.0.0-alpha.6","css-loader":"^0.28.4","file-loader":"^0.11.2","font-awesome":"^4.7.0","isomorphic-style-loader":"^3.0.0","less":"^2.7.2","less-loader":"^4.0.4","postcss-discard-comments":"^2.0.4","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.2.0","react-dom":"^16.2.0","react-helmet":"^5.2.0","react-redux":"^5.0.6","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-transition-group":"^1.1.2","reactstrap":"4.8.0","redux":"^3.7.2","redux-logger":"^3.0.6","redux-thunk":"^2.2.0","url-loader":"^0.5.9","webpack-node-externals":"^1.6.0"},"scripts":{"start":"node server.js"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"31e332808586048e0eb1105badb8a300b5b646a6","_id":"mia-js@0.9.4","_shasum":"0c271f0d8ee498fb27a9a1e94fcd2812cb115d17","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"0c271f0d8ee498fb27a9a1e94fcd2812cb115d17","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.9.4.tgz","integrity":"sha512-5zSVhREah7Ci9b+tixODW7uaFB4NK7qCn5/CROtJzCImLYe+gdx5pSeLEhwH9KB412s/AwipJ0td1bpGV0x1Xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqENm/Im5Zweo62DcLrJ6XoCTb+MKIuST0s4Umq1hrZQIgQ/VDMXaa3c5lwPEY2XtfXkIIbBXTJonHyd/UAKliYl8="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js-0.9.4.tgz_1514891142323_0.47258861013688147"},"directories":{}},"0.9.6":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.9.6","dependencies":{"apn":"^1.7.3","async":"^2.1.4","babel-core":"^6.24.1","babel-plugin-transform-async-to-generator":"^6.24.1","babel-polyfill":"^6.23.0","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","emailjs":"^1.0.1","fbgraphapi":"^0.5.0","fibers":"^1.0.7","ip":"^1.1.0","lodash":"^2.4.0","mia-js-core":"^1.0.2","q":"^1.4.1","superagent":"^0.18.2","trycatch":"^1.5.11","underscore.string":"^2.3.3","xml2js":"^0.4.15"},"devDependencies":{"babel-loader":"^6.2.5","babel-preset-react":"^6.5.0","babel-preset-stage-2":"^6.24.1","bootstrap":"4.0.0-alpha.6","css-loader":"^0.28.4","file-loader":"^0.11.2","font-awesome":"^4.7.0","isomorphic-style-loader":"^3.0.0","jasmine":"^2.8.0","jasmine-console-reporter":"^2.0.1","less":"^2.7.2","less-loader":"^4.0.4","postcss-discard-comments":"^2.0.4","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.2.0","react-dom":"^16.2.0","react-helmet":"^5.2.0","react-redux":"^5.0.6","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-transition-group":"^1.1.2","reactstrap":"4.8.0","redux":"^3.7.2","redux-logger":"^3.0.6","redux-thunk":"^2.2.0","url-loader":"^0.5.9","webpack-node-externals":"^1.6.0"},"scripts":{"start":"node server.js","test":"node runTests.js test"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"9013982910327e4cd973462c741ed702a4b2e34f","_id":"mia-js@0.9.6","_shasum":"cba25ce0aef03305eff9cacc5609fecccc89bfaf","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"cba25ce0aef03305eff9cacc5609fecccc89bfaf","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.9.6.tgz","integrity":"sha512-E4vcaEexBFQyR4Nn3p4RhSgwSMiX3cbihvrxbp7MLPiN566lShj9oisLQ+ZKKq+CvT+FyvQ7dDy7Dis75reROA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC85KJ6kx4NXLwqhelxpfgD6WsmnW3n0veGOudyikifPAiEAvpvt0F2PtnKYtTQb70jgzbL2FXRBU0u3Ejca+cg9Ams="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js-0.9.6.tgz_1516888621934_0.7047242163680494"},"directories":{}},"0.9.7":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"0.9.7","dependencies":{"apn":"^1.7.3","async":"^2.1.4","babel-core":"^6.24.1","babel-plugin-transform-async-to-generator":"^6.24.1","babel-polyfill":"^6.23.0","babel-preset-es2015":"^6.24.1","babel-register":"^6.24.1","emailjs":"^1.0.1","fbgraphapi":"^0.5.0","fibers":"^1.0.7","ip":"^1.1.0","lodash":"^2.4.0","mia-js-core":"^1.0.5","q":"^1.4.1","superagent":"^0.18.2","trycatch":"^1.5.11","underscore.string":"^2.3.3","xml2js":"^0.4.15"},"devDependencies":{"babel-loader":"^6.2.5","babel-preset-react":"^6.5.0","babel-preset-stage-2":"^6.24.1","bootstrap":"4.0.0-alpha.6","css-loader":"^0.28.4","file-loader":"^0.11.2","font-awesome":"^4.7.0","isomorphic-style-loader":"^3.0.0","jasmine":"^2.8.0","jasmine-console-reporter":"^2.0.1","less":"^2.7.2","less-loader":"^4.0.4","postcss-discard-comments":"^2.0.4","postcss-loader":"^2.0.6","prop-types":"^15.6.0","react":"^16.2.0","react-dom":"^16.2.0","react-helmet":"^5.2.0","react-redux":"^5.0.6","react-router":"^4.2.0","react-router-config":"^1.0.0-beta.4","react-router-dom":"^4.2.2","react-transition-group":"^1.1.2","reactstrap":"4.8.0","redux":"^3.7.2","redux-logger":"^3.0.6","redux-thunk":"^2.2.0","url-loader":"^0.5.9","webpack-node-externals":"^1.6.0"},"scripts":{"start":"node server.js","test":"node runTests.js test"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"a33f0cbcf395c50254e33e1c75801c822366b52b","_id":"mia-js@0.9.7","_shasum":"3828e1993ce07ff71234cc2dec4f14f5ea795dbd","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"3828e1993ce07ff71234cc2dec4f14f5ea795dbd","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-0.9.7.tgz","integrity":"sha512-wUrozDB60rszDZT98c72udMLyoMg/gIgh4IcvJ2pUhm8Vsz9T2Qbz1uB1SONiBFM1t54yrM22wgVVEe28cfHxQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEuXJ5HRBvZEyDlT6SWhmuSkUbI5fYdJNNQdIsmT7/nJAiBcNkEUNwyAu8f8eqVftTrF0lt0R9U8YkorRwjlfuuwQQ=="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js-0.9.7.tgz_1517504495332_0.11191786103881896"},"directories":{}},"1.0.0":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.0","dependencies":{"@babel/core":"7.0.0-beta.42","@babel/polyfill":"7.0.0-beta.42","@babel/preset-env":"7.0.0-beta.42","@babel/register":"7.0.0-beta.42","apn":"1.7.3","async":"2.1.4","emailjs":"1.0.1","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"4.17.2","mia-js-core":"2.1.0","q":"1.4.1","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"4.0.0-alpha.6","css-loader":"0.28.11","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","less":"3.0.1","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"1.1.3","reactstrap":"4.8.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"7b8acadf6135a5a7e61e685cbf022966659a59d8","_id":"mia-js@1.0.0","_shasum":"90ccfebbfd12e280c5d8a0eb975bbdca21dad910","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"90ccfebbfd12e280c5d8a0eb975bbdca21dad910","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.0.tgz","fileCount":149,"unpackedSize":3700663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3zFPCRA9TVsSAnZWagAAW2MQAIrJaQBnQxh5RMaJn3un\nn6RTI7MeuPqbfr1s5zHRYWg65eShk6cqL1nBbLlIlbuCMg3KfyHfHCdKijht\njvhODCW+663Cbr2yfRBRylr4P6eyL0NoFCipXSYMvqmjz4tcJK3GZFpXF1ZJ\nizlHo8hAfDWF91g2GaeOXH3Odm5GXUlPqFDSmmGaYP7TPXcXacrx+JM8MAyv\ncd1x0CUmmLClqzZgNyiKTd6d3J4C+rrgGSDdUGMGnkMYFH3AmLtkOu6sd8gK\nzy88dKj3AK1ah//P+jOJ4WsVt6BD7aP+D4voSCeDY2Jm+cpjfR3nMH5L9TCl\nwLfoIIBwHcjSVvQLwRdbPVBfMha0bq1hDxiHsvmCMQIY2lnDagT/hyxH3HB/\n/KlxVb+56V8F4G1PnlUQiw0TZH+IRJjdKIvQCrJFBFudmYx0lTiJN2iCW6g/\nD7cm2gQHthEONzBXWBK0M15WtgcwM6T9ZIfCwaEV3vFlz7hKQDqDgCtR5au7\nwJEPTEVZq56cJjy8kre9onfMjNStsOvfm0NdQDKXQi0CRrvzP9+X90jPG8S3\n/M/jd2LUx1Qf28IPjtn9rctGnbNKNtcr2lYUFFNS28N66KEtijc9ZP3qaNfY\nyjeQ5p/SmS8j/SAXuNMTluA+4M8b0UNO3+K3RBdxdXT3HMA5FPrtrYvFuifM\nbfQL\r\n=tpev\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-GCSBoIlXjr5CHHgR8Oxgh7ZZw8hreWrLnfKrYOgqq57iECW4dXrtMYKtBlfAgpghg8VTs6XqCUOEv3Ut2Wy3Hw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFMezG/9qBm6Pqz2W0EP0Q3Vo+gbGgwqZ+F7YaOebztqAiEAone834MYLqqeZge2RqH0vezhbZ6eJXJzf5cW8OgVK78="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.0_1524576588756_0.8080115550122577"},"_hasShrinkwrap":false},"1.0.1":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.1","dependencies":{"@babel/core":"7.0.0-beta.42","@babel/polyfill":"7.0.0-beta.42","@babel/preset-env":"7.0.0-beta.42","@babel/register":"7.0.0-beta.42","apn":"1.7.3","async":"2.1.4","emailjs":"1.0.1","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"4.17.2","mia-js-core":"2.1.1","q":"1.4.1","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"4.0.0-alpha.6","css-loader":"0.28.11","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","less":"3.0.1","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"1.1.3","reactstrap":"4.8.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"a88f155d0eb2152e30d65ae6e58675b27bb05841","_id":"mia-js@1.0.1","_shasum":"7e47d6b82228667a463fb565812cf8f8fa3a1aa1","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"7e47d6b82228667a463fb565812cf8f8fa3a1aa1","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.1.tgz","fileCount":150,"unpackedSize":4050237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+/yvCRA9TVsSAnZWagAAjR4P/1w2DyMhcWGUqXrPZfnc\n6J9Bm2tP0lhnmCnPhH9KIxtDJ+QwwhLrXs5F8LW7QkNx2Jr6H2NSIwB2Nwog\n1lz1RVUUWwRkIOvkv1Ho/j/8d6wBDKPAZLLZhnq9JngDPBQ9Eu3OrH/RzEYM\nk78uG7+BsLqJawE1fbv8J2tgfX7tdg7oPxHY6dAcbSyzd0Y0n9TbX1JWRY/f\nkKkSyjoQMt6YqHswau4utW3NG0yYBTjP15KkjEFCJQEI+tei2RQ9k/V0WvD0\n0/Oi2Xp2AEw1GdSq/sPXhbWnPG7HnlKsZd78QERg2ryyWf3KUgddUMFzAKUT\nCtd6CWFaTPJQzfTMtohQuE3sgrbxhVUPb4i1lv7YPf7On1T4kzsASCDdTH5u\nxr5dYDuzujbtpUBUPHw5/VoNgwKVFYcFUjksx2gC0owcAJYmpecQhYHQxuk+\nkbnEE02jxBe1z+BSUC70/Q0uV5jDetLJ2aKRzTjGcbFUp1QxulYERg9BqUIK\n5VFqcEjW7aYUJ60beaRRsUxyWoiJd2lpQdMOv48rojeZMZH5OIaUwaFKPCCW\nffARzOoiO1y24A7ZUGtUbLS1jRFoG6ecZ56JhGKJ5IkgHFvwFzvY3G0FwSA4\nFctA/3OfqnUKzlQ/pO1xxgkqgqBVzUvam5dEFhEOfxmecDfmJGQNyOLvAgu4\nBqEw\r\n=SCiC\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-Zxc6pMMYnWAnqG5uHPeBqW2eHjdqUUhs1tHa/vR3FyZ1TSpdRazUXuePHArFWG5N5Blg4DximVTY0ceDImjwWw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDL/3vjBUQbvYElk8dYbjDlP+GpL+6ZmJfkpVNybPtDdAIgfpVGPSGRGAw2bjkedxCCE5D8PnD+OzbOMNgFK3L7188="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.1_1526463660483_0.5663362894917336"},"_hasShrinkwrap":false},"1.0.2":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.2","dependencies":{"@babel/core":"7.0.0-beta.42","@babel/polyfill":"7.0.0-beta.42","@babel/preset-env":"7.0.0-beta.42","@babel/register":"7.0.0-beta.42","apn":"1.7.3","async":"2.1.4","emailjs":"1.0.1","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"4.17.2","mia-js-core":"2.1.2","q":"1.4.1","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"4.0.0-alpha.6","css-loader":"0.28.11","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","less":"3.0.1","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"1.1.3","reactstrap":"4.8.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"4e41c70e35a56b42cc85cc1dd61dffecccf0dcab","_id":"mia-js@1.0.2","_shasum":"d11927b2fac8d98b453aca5a9a1b9b4f8ad8fdc7","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"d11927b2fac8d98b453aca5a9a1b9b4f8ad8fdc7","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.2.tgz","fileCount":150,"unpackedSize":4050154,"integrity":"sha512-yJJSGEr8BFBXHAXWrn/Drr4O+BWYvPDRbJtDnre3v4kkpFBN1PgaIkPTGFZJmGDwDSU7HQsqDtIaZP1aw2G5yw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVlyXF2nK/9VBkGH0/qo/KQOOTnBs+CJOeeDjnWCi+nAiAYz2xW7rkUcEF+WJ4M2HO6R3/lw341jgMC9v2YC+ArCw=="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.2_1529073794430_0.9974361277449928"},"_hasShrinkwrap":false},"1.0.3":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.3","dependencies":{"@babel/core":"7.0.0-beta.42","@babel/polyfill":"7.0.0-beta.42","@babel/preset-env":"7.0.0-beta.42","@babel/register":"7.0.0-beta.42","apn":"1.7.3","async":"2.1.4","emailjs":"1.0.1","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"4.17.2","mia-js-core":"2.2.0","q":"1.4.1","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"4.0.0-alpha.6","css-loader":"0.28.11","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","less":"3.0.1","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"1.1.3","reactstrap":"4.8.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"f38e887fa83d39f237e1d671114244eadd03a733","_id":"mia-js@1.0.3","_shasum":"fb7f193f10cf0d39b2ba2211be2114deba3ea202","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.10.2","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"shasum":"fb7f193f10cf0d39b2ba2211be2114deba3ea202","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.3.tgz","integrity":"sha512-+b6+dCIy9zJvVEBsKsBFzoeEzGeyVyTqAGZvKTUJQ1pobVgk0Fa5U79cQC2nsaxNN9Qzsd1ovQNIHGZqslznvw==","fileCount":150,"unpackedSize":4057092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbtffZCRA9TVsSAnZWagAAqSQP/AxVywTd6YdS6a+GNDST\nWA8f6r1Ovfp5bkz25J9ix9M+nWvPtDf/kX/e7NDVfxpQ25SMGGIejCR+8xPD\nraTC+YxWhzczJBCvrgmd18j8s0D2rhmR+ZgocmZIzoioeSvF4sp17LDqUhxc\nKTLg2oX8KjAGWwB0Cey1dIlrJ0M11EObl4wzn5DKDiXYQ6cZsrMuWncMaV82\naq7Gngt6T8np8XZOGR607mBzBwREkkZzY4rkowcAPYUD78kbiJ7kfOQFHxD9\nGPgnVIPndnfpruMPUryc/uEaWjEm4OKcdNAEFIK0tUGFNo3MZm8utcob+m8g\n8Sn4h+1IowULvIzm26i6C6NuwuC/Oxx1O4QJkoeasrX6zmUUCnbmosJ1pMGL\nFoJ5f11stjisXlTgfoPOUoZl7LxJeKLTxd18k49ukPyRBrPlhmb8pOAaVW5D\nsagMJXGXl+xVZfd48Tg9Facg5UWpkIp7HRyZNsFXzy+jgkqVp5eRRfWf+CML\nI/UHaWQGGakmQFVuUk9MowEQN2Xk2xUNOzdO9pCxaR7eSxI9c7JXJQ99SX15\nzQ2lXv2Aqs9XWZYcqbK6Rg3F7VWASWqGtYNYvV5vDla43qjY8+Dyve31PVZ3\ndzuj+YAJpIVos8mbFRpKd7/GuyQDDJvNeh4rl+HvXC0DVI9aVFP7vREn3f06\nJIPV\r\n=vXAy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5lbT3TMKizm+5Dq2X4fIOA7CKACoD24gQLA3PixcX4gIgCETqMQOxzUuiv5nUDiBwDpwokPyK6ec7WQ7zfmp36G8="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.3_1538652120625_0.4762289605218941"},"_hasShrinkwrap":false},"1.0.4":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.4","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","emailjs":"1.0.1","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"4.17.2","mia-js-core":"2.3.1","q":"1.4.1","superagent":"0.18.2","trycatch":"1.5.11","underscore.string":"2.3.3","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"4.0.0-alpha.6","css-loader":"0.28.11","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","less":"3.0.1","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"1.1.3","reactstrap":"4.8.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"97b46bb0602c9dfe53daecf47d7dd9088439d849","_id":"mia-js@1.0.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-r/KAuaOgYXl9SpfdsPtmBxEM/zRtQyVP9XI5oM29WSOqY0NQwME5rO6p9me0lHuHa9lpHz4os5QwH1foLpY+ig==","shasum":"4f929fcd9c14359e9c1d163cc9bb7eacaed63880","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.4.tgz","fileCount":147,"unpackedSize":3660503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQawSCRA9TVsSAnZWagAA7cAP/inXtJRh1+4wAVzlky9M\nInHv9e19mYSHV/+1R1O7jKKIVpQGVB3iCMdSVl69nFgP4MQW1M5JvNgs153F\nsCL9pb38K2XaNAAlTYJxL/V7ji1/ENRlQUx32wRHh/qhLUbVMdJKm4jFuNOC\n+DGJzkxap+znh0XgNCrVk+eYuylAtQTkc13FZ2+YS8gP3ImXbpHB/aGSf91d\nO3KtkzaMec5gD76QfwDHlZGh3Rl1ebzn4rrXNB0RoEF+cV+AODtaWI78DzpQ\nge8cShRUJrdhydlWNCa0a8e9rob0+SxF78QJfs145mj9c6nJUhdF0BZMcjjC\nyyRbA3bhcd/4HD5NBHjkgGf87uihjlQuO26hufSP9qDn1wRTBHqem0nJs2Ot\npEZ2q1RJkMgyra1uqMii0VApbOd1wL9GkSuB/8QODqV1Bio0Zt8w03+XHCRv\ndxta3SKYin/ls+VSXHx/JinMHLr8pTBurf6Zb9SNoc3yWjo3ITisxXtQy8rL\neHWCPpw66s1pRzrq3eTIZw/qmjGz+W9wHJKmBYGzLW64wbGDXm9H5NDCaFhE\nR10DZ+62hcHIFrKYmVQ+UVOerBRbW0zMipoiLlCXGTAgceYqOGLgokeC10qB\nIdDkDgI/vufvti2m7kk+MfkNbH3f5fy2JAPv4Pf9doXjw3vHP3zHDg/dZ70S\nkNK4\r\n=4xcr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG8w93KyNIcJLH57+E4b9KzQ73Mq8uLZHZEvUIpl4k7GAiA+kuwtjr5TB9hGS+QCUHxi+2UspNEeuVVmS91y4Te5EA=="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.4_1547807762082_0.8665413978383885"},"_hasShrinkwrap":false},"1.0.5":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.5","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.11","mia-js-core":"2.3.3","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.2.1","css-loader":"0.28.11","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.3.1","less":"^3.9.0","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Tilman Buchner","email":"tilman.buchner@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"5df858799839f647652aaa523ba38db48b1cf793","_id":"mia-js@1.0.5","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-wAQkFuWiYQ2MHy2KqB1aSXZgBDPZcucxQn8ErGHiigYeLxo40iRf5WkNLANiBLCWOwLkPu9ILKE6W7pQMb0JJw==","shasum":"dedafd8928056a16a53e8d61b403e472b3d45ea5","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.5.tgz","fileCount":147,"unpackedSize":3789440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcm0CMCRA9TVsSAnZWagAAM7wP/1rRGRdOhN0PHGAYd4DK\nEX6cNslpwei8RRNslGXowEgOw6e08hOAI7/z0AHU2eIgC5jgkiI9uZyJGujJ\nq9Ie4ocDUnRjjv//hjqSU4AeWUrsuxREsVMPatRCkg1N4XDKqEjJzHWrnU4L\nB+vuwJFawz9fcYV9437U2la7z0X4arcu4U2NT17Ha8xhW+0jauIgV7aNTSZD\nFS7uqY+jgUg0eYvLDVgcf6hF1IQ2CuX/VTQZvjzpCfkkZa26KAsgkKsxLSeb\nZ7qYRc91PNKIj0wExYKbR/DouhJPGaoFjCtsPAMzS8gxoXN6hu6s2f9Khy+g\nQqPf2M9S+impp09mPM6AJanm+LtMmIsQDRP0N6MJnGdG21fqGCYY4lSSToEX\nQi/NJILLjVGo2PWjNrfAVP+Ib/6yjNGgZ6GILaVBK7B2faJcs4wR0kVg7Qp2\nZNPODZLgRxvYjh008yC/b4+jnzKBSfOD7Zfjj/TCUkpdqWnh8fKsD/d7HMSf\nbBk3b8bRQbtX5nlvbv2KQqbelYAjRJJXT/Oj3deTWLn4j1bLDcO2o7A55tII\n/BuvRxpO0ZAgFUFMpZa0tTpm4Nf9fg0i5xzRFZZSledP0sMD+CZREqGpW33+\nWAZscMNG3ymq5df6NIrgSdn30sZ/XKJZEAinUggdyrJ7ixzni4U3cRdy2ClB\ntctl\r\n=55n7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHXZRM24HFPJ7rdeSq0BXpyZ2hq3r6VaX05XiIuaGA8SAiBEtwp1mdPFjCVP9CT5zaeE1VMaMNwVBXtRWN2Em8W3Yw=="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.5_1553678475127_0.8110436550799116"},"_hasShrinkwrap":false},"1.0.6":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.0.6","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.11","mia-js-core":"2.4.5","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.2.1","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.3.1","less":"^3.9.0","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"fd440fee8037388a5a6441d0953680ca0db5dabf","_id":"mia-js@1.0.6","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-ru4Gu8Ud7ThmLVyNpzY3IoBIoBEPjyz9QPGb6wgCbJv9bInQV2uOXv02J2fuhbV7P9+1LycVysaxxS0b56MWZQ==","shasum":"ad1aa057802b940c39104cc61ea495f171d0af93","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.0.6.tgz","fileCount":147,"unpackedSize":3789435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcm0JpCRA9TVsSAnZWagAAlFgP/1fi+h3ExpoZeSDz2kxs\nUyUr87jyue56IOpKz+IpN2+iKOQOqgI9cxlOjPQE2StQ3P1jubMK24wOtRB7\nDkjdqknJSNntwsTIPoTd5JpEUtXDfomBQU4JHbathLPI84y0U4sVOQaQkADB\n5P8RKc3YA3n9+EaBOTRR/zQVEpQKXTtoLaB5cAdl4BScfnc6m0+WNFHPI007\n57cJ6zDOOHgFwaLOiG7MKEu5+t4CK0mVfusueWvlqSiPOkH7PYvzvUXzLW5A\nKIL3kDmqYq2IrIH/mk7IkhHr/EB11Kl68YBC9UaqRMhxAPR+sMNSDqyUzTLD\nORJLbo6BCnYhgu3xTqn0MZx8uPmdGVn1G6roECDv5dtQiN7ni6DDxy+Srkz1\ngNl6YmB6gTxAzCgrJsRseU3NgCQa/DeFchnxsr3+Dr3BW5pCHoR4IG6G+nDJ\nQE8tSl/b3AO79QTgi8yJJY1LZ2jKU35RxxOFkiHZ+vLmBd2WuluRlf56ZlR/\nQIwVfA/uU9EdU5veDej1/ipQ/yDx4Y1+MEk8OhgmahFY+Z56TyNW0ZxWYHIG\nrky/eIQ0AO28L69Pq/2uRbt339gqRr0ZZGM3t5aZ5Q1d0of5F2UAmFihnp/V\nshnkouNOnpGyUn9VVFGGkREn6mrH+2Mr9vCNra/St1imaKThXjo2PIRYiIS3\nFM4l\r\n=UgxD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLvachipbalsiVjWNchAOLZglvNmX2NiI++QfZVRzORAiEAtNHtcV/WbKIDhDsWeykyKoFZRHQkiQ2FRbx0pgREQcU="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.0.6_1553678952614_0.4342464745828174"},"_hasShrinkwrap":false},"1.1.0":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.1.0","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.15","mia-js-core":"^2.5.2","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.4.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"fa2900a9f6651a769456289f30b74ae910b80da2","_id":"mia-js@1.1.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-NndKD/OvFxR5IZw15uK8TU4pqoKjoU5XbfGlcBOeuTQBPgLsEpba1M7n9ZA2Aq25Zjl3IgWAwG9Cpp8OBsdZHA==","shasum":"16a06e9c9d48d13900049d317a6b2abfb15e31f8","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.1.0.tgz","fileCount":159,"unpackedSize":580790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpHySCRA9TVsSAnZWagAA4JEP/38DrZy7B3pn9WDsBhO+\nv53xqmfhAXzUDsmF+4J2p8V7moRelrVqwA7l/oLZyokVCrSdxOMXmgLvZKd1\nE+UamR5q0nUawXYS2sPMofVW6kURjiUhpLVtm+9F44jhHc0dn5OnJYUtN+gn\nLtAZLhenQVTlcQxwD6n1Rb1Skno5F0JHhq3fxfVDXt8Il3APJrCCIn+Wq//9\nWUoSQ5YDt8Gn1/ENZrjGn+182lD6BToNwD+bB0AhLbqrj+RtDzz7DElIAY7o\nqsb7u7VoHBE2uw+gmsYoPW4eqXmPEw70E/QiXebeFJQIaVS1MwB+2Dmmnpv5\nxbZwLRhvUNYlcSuIJwkMPBhmi3REpKDPwIUSRMCdmBlRXzOCyve4Qnk/ExGm\njVCIj/1bfYom7ikwRT1E+ETs+oE5mmfdRCnRhxA3AFGgs99ViNJp2WvVNGp9\n3TLMzucjRItQzVbgkzH6zH1dKpcXQHzpkh5/iWPzJrAtuiTKxH5eIyySx3xh\n7p+CLSEnoSIy5msKB39cTfKTyXnC9QOPElTSWuhcHUemk7NbDa6Gs31y5CxW\nUoPvQeWiRcB+Qwd1zTmQ1ybvPAjvC1oubutyQfla7mUdsdAhp06TP3zzOicA\nadAlwbEYm8GzVRI33eMb3Vi8xVnl+LA48b2VgYH7imZHAXw0BlLsDlfC/OZC\n5NXx\r\n=/4wQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFCTf1ar1eTFHD8yPRTxbTdCcpUim2+z+PNjkTdVt+Z4AiEA7wquouIvN6TrPMmc/eI9WIZwpyoH4ewjIrUI73h63nk="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.1.0_1571060881964_0.7871570075348335"},"_hasShrinkwrap":false},"1.1.1":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.1.1","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.15","mia-js-core":"^2.5.4","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.4.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"2eed851a57a835a13c7d88a88611e11c5b08b38a","_id":"mia-js@1.1.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-br+gfy4coOT8VQICNSUqbAEBD//C5R9sGLH+pbAlNm3EN/mxcyvy1DsrEcU4AOdXkYBr3u9FegC8QRn4FIk8Lw==","shasum":"9ccb1814df982a602a34736791a941651878c3a7","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.1.1.tgz","fileCount":159,"unpackedSize":580937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdracDCRA9TVsSAnZWagAAMWcP/0rPAf7FF2tEyrUpXEGq\nwuJqQpt6UlMqDrdpkFY1GSm1yysqPpMOpH7bYMQ7dvL1y1d+M3hwZmZdEphu\niHf1C5RIRClynHNp2uL+zpsI01rr5lu+Rb2nXAGjiqodQ3bYvYrUilTer8Eb\nMexb6KatF5UeLgxCcyUmr8tc8GI+++07M3xS9Qfz9eIs85Fa2v+gj3+Ouuxc\nZhAwpoBiyFbMv0ntLmkH/Cot7BAIAEQ5BGl9nZo3JXlWqo8zjJ12pGRyJwl1\n2SWjlgbQAgAwBDIm9//jOCL0UpvBlHekgucgGIYjNZ4R3jbEmCdPaaTvEdLu\n0mGNzb5odnCYfzpFjrrM2JPaHI1rUn7cxNmYk4gLipDXtsJoOPwA2LxcfPSZ\nMnk1cBSY1Rlj500dh4h+EtRjvwzyMFu1ZPya70ZK7WG7C7dEi42xPdXlZCeB\nL1Ac7ijFoS5udnw8X8IjSswBJ8tfES3WqS0bfmtPfi+XHtxoWlSAyB5OmD9p\nrTqwfkdoPxTz/pk9fp/3NOm9zh5IiiU9fXyaw1+L/GYAD/ZZICtZCNuAxfTd\n5YNm8cAMgUEWS4+wR/7tMdiUyABYsuDLubzuNhgi+oGnQkKVv4mXM3vZIp0a\n2dYxyjgXJ9P/l8Y866nIJ15e/dZ4gbJf+5TZFo2/afPkeSwd9jKp5OUB7LGK\nsJJZ\r\n=nFhk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgVV+C4B85+RHKzoxgZFFyOpGB5s0x4OMKI9I4DF/kYAIgLmEsvAWD1ZVcyHegtPZHTEjJuXk41FvYqwKIyjx1uk8="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.1.1_1571661570239_0.5090910196032241"},"_hasShrinkwrap":false},"1.2.0":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.2.0","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.15","mia-js-core":"^2.7.0","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.4.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"13bd57c9501c5807c2396927f947be63e2e1ac08","_id":"mia-js@1.2.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-6wn8aiGS1Ditd5wm0sLovfNGv+uJ2QUObBX6DfGmkUSBMvTJsdT8LlmLsgvLtXlAUZ+kpfqVp0R0KXPPlMJTkQ==","shasum":"804a492ad47f0cb5502e65c3d4f74f26272b1b76","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.2.0.tgz","fileCount":159,"unpackedSize":583580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJea1LsCRA9TVsSAnZWagAAZqIP/ihjOWrnIPUNdk2GQgUI\n2W6M+jo2DYuY7VVD+ryqVhm9odjOvcqmxKf7YOYsjSCpkz4Eyvze+2rmIsXS\ngIwt1M9LO8omy/xpmxrAcq/pP7OsbGUDu7NxGi12XI8Ze4SDZEskL0C3omhL\nGItlmKJ6dTj13Vtbw26cHW4ZYwjrnpslKomxGXN2kqNh2gI2pJs1lQbXe5l3\nzN2NONutEPLEh13+1cWsxlZumRdEil8t7pzKLN5VrHJIXFT/PRqxmOaMBG/J\n8V4eB3YyomybJffMkm48I+pMs4U3jSPT25ZrKJmGVR7Z4ekRKqqZqnKH0vt5\nEZjxI0+manTUdcT5JRTz4oi+Ptsw9gQF4O+X+C0LOCt/ts6O6fzrPxFaPd+u\nraBy62P58P5UKVBSUxpQ7DCkpOV6ynFqDLo5eQUDrWXGGLg+Z3aeMQZBiWQC\n/YKdVsvEnjVU3PMuKFQoZNAZMt2cOcKhOaBUk4p26fIU36XMXS7cS0FVxBs6\ncPee3ProzFxpS7F9Ko65ZGBr/1SpSjE8zPbm4OOSSaYgzUM5dkJvI1YBBeLf\ndzPcKhRbwoZiAdE1SCn9EpoUzliJedTgyH+OEJLc5Ba/dAKjAcOraEaKu7tb\ndiln5F0UJsHF/pWULVEQma+HYkB0vRNRbzSUXH8V8O45PUX8reFffOFGLlog\nMt1L\r\n=gHf9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9WJr3B2Cze+kAJVCNrDSXTVBi9nD5DmV4HuUYyX0JdwIgIf0WHcSjofiva7Yn2bMegwG43ZO7lmKX3USV8cIQggI="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.2.0_1584091883933_0.5263103797053137"},"_hasShrinkwrap":false},"1.3.0":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.3.0","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","babel-eslint":"^10.1.0","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.15","mia-js-core":"^2.7.1","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.4.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","lint-staged":"7.3.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"16.2.0","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","standard":"14.3.1","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","lint-fix":"standard --fix","lint-staged":"lint-staged","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"lint-staged":{"*.js":["npm run lint-fix"]},"standard":{"ignore":["**/*.dist.js","**/*.jsx"]},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"af4ff6417ddaf3f65f5663ea26f5d646fc17257c","_id":"mia-js@1.3.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-eTMJbB9aWXBXOMLSyLrFpV5DfjkuDVx3AbDvz9lLsXhhQPx6SS1MBr3MJhUPnTr6MdwRePHGS1vh2QBgMJR9dQ==","shasum":"57e807661454d0a8a272abc98cd090d946d716a8","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.3.0.tgz","fileCount":160,"unpackedSize":519604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeLEvCRA9TVsSAnZWagAAqIMP/2VecDG7KGTKfHUeXo1o\ng/10VPDXjpXrAAHbhK4WeprF91uYibZc2Ygc0lhhWJWyxFK5PN/McVQV2+X2\n/32vFy/YxMUh3jhAx83ewMdzRPQJXiXQT1YcrApKgH3wtCv6ClmT9nszOQ9+\nlhxSH1QuF4vV7CdV8ATd2+sUgnTYjsRAUaX+Ytkvinwj9E2wnH0HqaEhFXIB\noXgvFD3en873/srX7tk5ipAJDOfS3Lzi9mWOd/pC2FfyucDRlQWHJmZLOxzM\nQ7e18MMjjx0+pUHtQnOMi73l2ZGZWA1i88o7NeS/ugdpdwvBD/YnXKZNfCjd\nMg9qNExgz/OMMMZygScZN8+asVyuq8LKfu7jqQ2rCRYxu+t1/5ugmfp4/a4Q\nXv7vcNQ4I3fOV/i0XhVlBqAiA5Zyx79TMMulviJblQ4UPekxKbMtRBU21u09\nrgCyOs7aUQdsU2l+PI97QBnkzSsz1+lIG173f2meu9VhqE9zCDwdxERbaoSH\n/n1PPYpU/+HVaVOX3wpYICLWh10v8WlozMq9swO0RoUDF9j0mfdvrno4YlLt\nneuER3STxzYErTDM3GRyR4myr4tllzMFGmbrqyOwiagpBPPCZZJdXIeZkEl3\nEsTC01LBa8L8BWygfdzjz4MvtB9RlcMkzvGL84St+F8hyKJOg517K223g8g2\n8erT\r\n=9kHq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7kkRJUjAJE6Os29KY17CEHl19UE3u1Nwu9RUGQ4cHOgIgZ7uOUW0lstU8nTFIa/R2ASdOT+3SdGJCZjFyIcANjGU="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.3.0_1584967976050_0.18074229733027436"},"_hasShrinkwrap":false},"1.3.1":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.3.1","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","babel-eslint":"^10.1.0","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.15","mia-js-core":"^2.7.8","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.4.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","lint-staged":"7.3.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"^16.13.1","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","standard":"14.3.1","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","lint-fix":"standard --fix","lint-staged":"lint-staged","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"lint-staged":{"*.js":["npm run lint-fix"]},"standard":{"ignore":["**/*.dist.js","**/*.jsx"]},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"aaefacdeab825e51efcbf2183aee559f5e0e1a9c","_id":"mia-js@1.3.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-8Kip8NCef5H91cxA1eym+RX7AwRqUua3GW5cg+rBf8P0dzt/X3PeYEwS6vYnIyJUteCZ5brwYYBuzbociZldFA==","shasum":"a3bbbdd03f764ebf07123137858c8abb1e0e5434","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.3.1.tgz","fileCount":160,"unpackedSize":519684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJele0oCRA9TVsSAnZWagAANY0P/jEX1Q5diDNNMeTjyVO5\nuaRod23MZVN5RLuVHcT+3vpehYOW9USzfYjXZnhXHu3x2UpY/bPS/+ex0cii\nZoUZdCEGWw17uzwhdSLXMXaJQ6/yJ8UzgRbQolFncfUAn8eEfGs3JzgxRFh4\ncqt+rGFVXNM6b/aOnVt36Ff8A+WEJAHMhEpYJxTe0C1P757Y5QxzuMuUv9Sc\nfeDy1OnqLtJh90XwjtiR1E+zYTUcjKtVxk2bdsrdaKvdn9y1YIF2lU/hf5ik\nu3Z5B6X4K1OI+XSo/qDg5KVmrHmEraFSuoOOEC8bVT/NMNWrAgswxFNnQ2wd\nkh8Fy4b5wETs3HoUnVMQbWTdWmYH8VYCdfrI1n//GpjAxD8NlELQhaw5SrHO\nGsjPixmngGNG1+iAP7l6c2bpmsNJh601/uK7erNPQfmrFeknDHam1be8sDc1\nAJSlvikGLVJfJ3vmtQKz7CjM4udCA6czwmGm7j+Szr7jaEIHI14mKB3bnFIh\n/NUT8tqvaWgDhdfsF0HIGQYZo1l1XTQd2eNf3Uzz/zTBHLLykzbzh1nsR1AG\nP5kdeDKTiYlVB3e3PyDNy10O7IDPQa/lwOQ/79A29eTch5opLT98k9iNfe/9\nVfxiwiuPXtcVvGBjdefMv4ndUEuKHmW/DdKxvr5jrCAGrQpEVnR6kJSU9SeB\nur8G\r\n=v/iT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBf4uYnVNLHVg3YLVbM9KrxoOdwnwwzAaILR7ZeKpS7nAiEA6WGvA5/m7VuNQPzpWWcnTWs9NO/kDSA4uJ3e7ZgK9hA="}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.3.1_1586883879719_0.5346517454014621"},"_hasShrinkwrap":false},"1.3.2":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.3.2","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"1.7.3","async":"2.1.4","babel-eslint":"^10.1.0","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.20","mia-js-core":"^2.8.1","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.5.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","lint-staged":"7.3.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"^16.13.1","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","standard":"14.3.1","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","lint-fix":"standard --fix","lint-staged":"lint-staged","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"lint-staged":{"*.js":["npm run lint-fix"]},"standard":{"ignore":["**/*.dist.js","**/*.jsx"]},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"02117179b0f83500776f234f266bee3723707f16","_id":"mia-js@1.3.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.0","_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"dist":{"integrity":"sha512-7qZK3fCHn/DonF8gRZXwMyQp1gVLOw07rqlJZgXS7qFOjxpzQAEi62ruLGABHE1tOEUDujHOB3UgghYXQS+zHQ==","shasum":"b5ebf984b3e0ccb67d0cf00c0c34d21db490bd42","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.3.2.tgz","fileCount":160,"unpackedSize":519895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ+doCRA9TVsSAnZWagAAiHsP/0eifx3RGYtp+3FmJZbo\nF+6xjgP2ZoT7bnd3XApHZEbq7J8sDxeHieqtik+ZPgu/DeXiu7OfiM7ThpZv\nc2Fxu7sLR+kqS9+f3FXC5UTLbOZI0S9JM4lA3dkjR+RCUB8FXPGFP/WQ9mdr\n0ai9R33Au05BAbzjZj+8SUm/FOQt2Nd4ZPlg4+uzdQFnJs/KdCLqgVNxlCgH\nCevHXRBjcJ3tuE/c8BBjPcYUQ3EmHfg1HNamw3otgOZQfly0mkWswJLuMIi+\nZOEsdoloSZpO8tRnCL89dynP/Z3+qG8lUcaSY2yxoptIGGtBmHs894egF9FH\n0HqhJPfP3tBwFfiTzpN0vXMCVH2+KHOU9NOytshM792KD8soCtPJIo6gnHHr\npc2/V/lmgLd4u+cKDJuOIg1BXn4gk3YnuyIRs7+T1JneJi2Gw9SF9Dw+1O+h\nbRrVrif2SSxZnkaWSz0tepsDE70PGeT7F7Q26dRZrhveTlrk5cPOfXRm186Y\nanMNYRX+i1XeRT6XmpUgVxzO0PmDe+aa4uIu63PvVKaxqfluekNSfarEfSrO\nuMiDGG8+hy7heXfBBTPqGMvWWjm+PVlxumA4LHypq+8BSuqmbqVQy5Z2SnJz\nsdfz++hXDvdQ8Lhx4K/qgtra67ngWF8qYXwZ9d5kRwXXu1AoZRWpHSv1dDbq\nMVbF\r\n=C6WG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXhAT7KXO1kjx/Cf4S5fhQkn2gIet/dM3cgOy0c53tmgIhAJkvfUA6AwRiCD4o4t+LjBeHLpCyDCoDK+6t9EpdzdPS"}]},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.3.2_1598285671481_0.06475185642511705"},"_hasShrinkwrap":false},"1.3.4":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.3.4","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"^2.2.0","async":"2.1.4","babel-eslint":"^10.1.0","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.20","mia-js-core":"^2.8.1","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.5.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","lint-staged":"7.3.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.2.0","react-dom":"^16.13.1","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","standard":"14.3.1","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","lint-fix":"standard --fix","lint-staged":"lint-staged","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"lint-staged":{"*.js":["npm run lint-fix"]},"standard":{"ignore":["**/*.dist.js","**/*.jsx"]},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"cb0fabe3f7dcfc36accf1d90a886a8f7743443fb","_id":"mia-js@1.3.4","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-ynr3gUrUxhci9Iw+MQ9VIKrkrwJZDdj+qUZ6CfKX4VdHa7yx7sWcnS89k3QBpINb0Ia1M8f5hp4CfDUU4szf/w==","shasum":"fdf30c168c87c34e995c32473300cdeff237545a","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.3.4.tgz","fileCount":160,"unpackedSize":520499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcZK+CRA9TVsSAnZWagAAcJ4QAJrdEoxGa7eff0wJQ5bn\nJq1AGPyPaj/AnJ0IH5kwgJZf2QHmYgq9RT5C9U8CnGwV0T4O1fDgHGPaCEvt\n6I5t5iDJ1HOgZ7QJjuDy4GmFRzV/wyHwsZWxbra1UEiqlha+NgF0Wp8yCkXF\nSDJAul8j21ZTjNj2VG5p/GI12cixAVvcT5kbeUUEQUoXRSZAN4V7y4BKLRni\nqYxAoUrkuMeAIxnw7q1ZVtJATG58E2+lFW5XDAOHF+PTKr3GzpcOxqAcJ8r9\nEFUG5DyW0FOwmGOVJQFAz4Ugnz1zovdN326JUcN7TcD0MtTA1EV5JtIxrjE7\nB1JjXmNzzldgfLURUlfS+rzrGi58DAFnnFGYFvBzcslyCEKINLyx9csb37T0\nSih5zKAvel8TRnU0GkDniJ+N2MW3vl2Fmv3V0uD7t7UY8E0NNeviRfUy6Khw\nkVHz/r8uPT9wDx+gV05thRvHyEao5LppTTAzBZ825iAtTe9OEHjhjNfb0IwA\nk/EpptqeGxnAfva6tChTPZZgKU39k+fEs7F1eJUl57O7uwbZbROWEhvE0Gl+\ndqUG/1IPJrS9+UfkXmhM7M/4B7QfQwIkrGEMTjgpxoe4hnZAQjj2vKNsnY1a\nqhJyMd5KCsyJxF7W37/rA9KShsKApgivNHN4XiFY4LTenyfbCSkbIyDaKIW/\nioq7\r\n=eLrU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDP5qfazJJDQ8izAB4omIpYUBFey7Dh2CuSMjMdsU3h2gIhAJTWT3wNpd3E1C/+/eX6SU1uHMa4UUFO4CfzQExuJREg"}]},"_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"directories":{},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.3.4_1618055870238_0.47912175008848457"},"_hasShrinkwrap":false},"1.3.5":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.3.5","dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"^2.2.0","async":"2.1.4","babel-eslint":"^10.1.0","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.20","mia-js-core":"^2.8.9","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","history":"4.7.2","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.5.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","lint-staged":"7.3.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.13.1","react-dom":"16.13.1","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","standard":"14.3.1","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","lint-fix":"standard --fix","lint-staged":"lint-staged","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"lint-staged":{"*.js":["npm run lint-fix"]},"standard":{"ignore":["**/*.dist.js","**/*.jsx"]},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"a188fee3ceaff6af651f39946dbed8e2d0399149","_id":"mia-js@1.3.5","_nodeVersion":"10.16.0","_npmVersion":"6.9.2","dist":{"integrity":"sha512-qOhARNgeA/MY/Tkzxdkk0wV6thRX79ANgZ4kKP5cSYan6vH/Z8ftlMs8W00K+9jiDnbjr5pLcsgiGolqgW9vaA==","shasum":"ff4ce79daebee37ac22b0c05beee251d4336856d","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.3.5.tgz","fileCount":161,"unpackedSize":526783,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB/WKr75TyuQhyEGlERkOPJTMrdIDUgwr38XvHvtY+J+AiEAriBpiH/8r4Zh/fiJouV7IKmPAqsvnjfS7dIWDsGA/Zo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi39w1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSZg/9HOF992MRVBDbEq3RAalKSRl9leHVF6X0xaspLPk38btn0e/Q\r\nYndgLfJSmPrne6Y8XswMd46sWbz7JmQUJGBOB9EwameETrGtVrN6LRnbgM/c\r\nKoVRcJ+UCxCvWm4Xl1FuJ2wIVpB/ajHCkQImivmJQU1o0huTPSrGysDrp5Z5\r\nIOn8owLbnZvla+cVAN7sjJ/t8MuCCNaYSnkZxYBsYCvDkjoHvAImyB7jd8Y8\r\no00YTVOcrHUIDHL3yIAvEpPxL+ZvWPrUNjAhbfJr/jjZKHO9/gg2Vfd7P4h6\r\nMsDweGfx9kwtxwNMDWOBHXIIhh0+LWTUE7NF3xnPW0E1a/osPK7SAcb9z0dc\r\nls0aGCWk3m5BantPwPzvcJMILiRzLncuSXb6zj3/4iaQT6IKueJtY+vU1gPY\r\nKQTFrzxdSrjUftEdnLp277WfAJWb4H1FEwfnRN1vMor7bj/yPUyZLqrm03iY\r\nTKjCuixRLSlLAKk6nCpkQLVXbmgrALAbx4KJGE4htbLcpC7AYPNhNCwSEnzs\r\nE+Non1xP4POfCbql/oX+mvC9z/KDqmoqZZ4qOocDzezYW3RVY7Pq4WXoLn/m\r\nDPY86TQxWA73nKmDoT9BWWZYBg0hcdwzTQtlZcMaGDwVARZ2AM9qhsn+Dyuh\r\nOmkXF1OKm8FAp2qqI5cE5dtKH+HZyLF9oX4=\r\n=Y/1b\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"directories":{},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.3.5_1658838068896_0.7640476760075612"},"_hasShrinkwrap":false},"1.3.6":{"name":"mia-js","description":"mia.js - Middleware API framework","version":"1.3.6","engines":{"node":"~10.16","npm":"~6.9"},"dependencies":{"@babel/core":"7.1.6","@babel/polyfill":"7.0.0","@babel/preset-env":"7.1.6","@babel/register":"7.0.0","apn":"^2.2.0","async":"2.1.4","babel-eslint":"^10.1.0","emailjs":"^2.2.0","fbgraphapi":"0.5.0","ip":"1.1.0","lodash":"^4.17.20","mia-js-core":"2.9.9","q":"1.4.1","xml2js":"0.4.16"},"devDependencies":{"babel-loader":"8.0.0-beta.2","babel-plugin-transform-class-properties":"7.0.0-beta.3","babel-plugin-transform-object-rest-spread":"7.0.0-beta.3","babel-preset-react":"7.0.0-beta.3","bootstrap":"^4.3.1","chalk":"^2.4.2","clean-webpack-plugin":"^3.0.0","css-loader":"^2.1.1","file-loader":"1.1.11","font-awesome":"4.7.0","history":"4.7.2","html-webpack-plugin":"^3.2.0","isomorphic-style-loader":"3.0.0","jasmine":"2.8.0","jasmine-console-reporter":"2.0.1","jquery":"^3.5.1","jsdom":"^15.1.1","less":"^3.9.0","less-loader":"4.1.0","lint-staged":"7.3.0","postcss-discard-comments":"2.0.4","postcss-loader":"2.1.3","progress-bar-webpack-plugin":"^1.12.1","prop-types":"15.6.0","react":"16.13.1","react-dom":"16.13.1","react-helmet":"5.2.0","react-redux":"5.0.6","react-router":"4.2.0","react-router-config":"1.0.0-beta.4","react-router-dom":"4.2.2","react-transition-group":"^2.5.3","reactstrap":"^7.1.0","redux":"3.7.2","redux-logger":"3.0.6","redux-thunk":"2.2.0","standard":"14.3.1","static-site-generator-webpack-plugin":"github:alexlande/static-site-generator-webpack-plugin#feature-basenameCrawling","style-loader":"^1.0.0","url-loader":"1.0.1","webpack-node-externals":"1.6.0"},"scripts":{"start":"node server.js local","test":"node runTests.js test","lint-fix":"standard --fix","lint-staged":"lint-staged","dev-server":"node server.js local hmr=devServer","build":"node server.js production build"},"lint-staged":{"*.js":["npm run lint-fix"]},"standard":{"ignore":["**/*.dist.js","**/*.jsx"]},"main":"server.js","repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"keywords":["api","framework","middleware","mobile","endpoints"],"author":{"name":"7factory"},"license":"MIT","bugs":{"url":"https://github.com/7factory/mia-js/issues"},"homepage":"https://github.com/7factory/mia-js#readme","contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"gitHead":"7b9c509b7478455331b04bf22359f289c5f1a2ab","_id":"mia-js@1.3.6","_nodeVersion":"10.16.0","_npmVersion":"6.9.2","dist":{"integrity":"sha512-PoIyEDCdpG7Cnijmv1mHJaWj7Z5sTkZbgB5YoJVK2nVGZUibWLmUEQ+sYnFUq6B0KRllYT4mJT/gTHjOggSkdQ==","shasum":"1cdc3be18870d5bb35a9173e64d694af60270642","tarball":"https://registry.npmjs.org/mia-js/-/mia-js-1.3.6.tgz","fileCount":161,"unpackedSize":527161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlDEBjMy2qvRFmA8iAhhoBVgDqEnGu5ODGUGQCyCrfwQIhAIlHcIBQndQZ77wZoRLoK0pAbrelnOUKR9UukO0gpzxh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi3/kXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/nA//eRMABG9ki9v3HOGyqrXqiBsSm8O1WSJ9EtJSXAZz6YRFB6TF\r\ne7EaylstGmUDowiGnePxUyyRKpSejeVd/BriWsE5F+GvgUrp0Px7kXN8cCpM\r\nr+71bM26MPyjKqXKBNHNo+jjnaemAlA06FaSaufBSflduXhx1ZCkIAKkiiG4\r\naKjVZ4YcDT7qVDHGSvEjxi3XhscQBOhPUfWTYCTr0uA3++IQR/axSip1VABD\r\nxz8EIzSm+Mv0iAdqvYAir4AErIwBZNZcBPwDKT+rh2emYE4qyr09EVuB8fG+\r\nkJumX7IA0s3JwHg0zUI0NgzaNykqoEvIwqZ5bSNwoKDd4oYZJRriaKZJGY/J\r\noJ4MZJSaUcwZJzl1suK9LRMyPSzQ0a0frCiUyu3LmF2hQmymNZyNL0sR6ppa\r\nO85JpAL8IZYiAPRaQlvUuQvbwCbmuS0NK45b3uy2sJDVb6sQbP407tk+2HYD\r\nhgHCVQcO1BXplVEIWxyGYr4wIGFELtYh1/Y683kgbnD4LiaQth5dC/7+DdXX\r\nxgPTrpC/ktuf4dy4o4QRqZMJyWOOkMyH27tugVAr+wTB4yCdxIcqkfHX9Gxe\r\ngj/VjutBBjgOgWblNjvFMROG9oIw2lZnhzZQauUsq64oxsyX42YjYuw+J43n\r\n4PkSkJeHetcu04Pl7wCQqWvLMIc3mhQQjOw=\r\n=zORY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"7factory","email":"cmps-admin@sevenventures.de"},"directories":{},"maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mia-js_1.3.6_1658845462862_0.616451125159782"},"_hasShrinkwrap":false}},"readme":"<a href=\"#\"><img src=\"http://mia-js.github.io/mia-js/images/miajs.png\" title=\"mia.js\"/></a>\n\nmia.js is an API framework based on [node.js](http://nodejs.org), [Express](https://github.com/strongloop/express) and [mongoDB](https://www.mongodb.org/) that makes it easy to build custom or enterprise-grade api's and web frontend's.\nFocus of mia.js is to work as middleware backend for mobile apps to have all your communication in one place and avoid overloading your mobile apps.\nPass-through, aggregate or modify other external api's or create your own one in mia.js and provide them bundled as your project api.\nUse multiple project folders to keep track of all your api's and connect them by loose coupling of ids. Mia.js provides predefined functionality like user management, device profile management, session handling, authorization layers or notification handlers (push, email). There is also an iOS and Android SDK available to work with mia.js.\n\nYou can use it to serve isomorphic frontend apps too. Thanks to webpack you can even use hot module replacement right in the server which will speed up your development pace.\n\n# Installation\n**Install [node.js](http://nodejs.org) ~10.16 and [mongoDB](https://www.mongodb.org/) ~4.2**\n\n## Get the latest stable release of mia.js\nDownload or clone this repository in a directory\n\n# Quick start\n\nTo run the mia.js demo project first set up a mongoDB and create a database named `mia`.\nIf using authorization for mongoDB please make sure to create the user `api` with password `api` on database `mia` or modify the preset configuration.\n\nInstall dependencies:\n\n```bash\n$ npm install\n```\n\nStart mia.js\n\n```bash\n# Run mia.js with node.js in local mode. Pass environment mode as argument.\n$ node server.js local\n\n# Or just type\n$ npm start\n\n# Start the development server (HMR) with\n$ npm run dev-server\n```\n\nAt this point, if you visit [http://localhost:3000/docs](http://localhost:3000/docs) you will see the [Swagger::Docs](https://github.com/richhollis/swagger-docs) documentation of the demo project api.\nTo visit the demo frontend based on facebook's React.js that uses the demo api go to [http://localhost:3000/web/](http://localhost:3000/web/)\n\n# Development\nIf you experience a non responsive IDE during development with mia.js please ignore the pattern `.webpack`. You can do this via your IDE or project settings.\nEspecially if you want to use HMR in the server itself.\n\n# Features\n  * Easy routing and nesting of controllers\n  * Hierarchically chaining of controllers\n  * Manage and connect controller by ids not by physical existence in a folder\n  * Supports multiple projects folders\n  * Build-in cron job handler\n  * Predefined functionality for device profile handling\n  * Predefined functionality for user management\n  * Notifications Handler for email and push (iOS ready, Android will follow soon)\n  * Define database models for auto validation of mongoDB collections\n  * Use preconditions for automatically validate request data\n  * Auto-generates swagger docs based on routing definitions file\n  * Compile and serve individual frontend projects using the WebpackCompiler lib [[Read more]](#compile-and-serve-individual-frontend-projects-using-the-webpackcompiler-lib)\n  * Use [hot module replacement (HMR)](https://webpack.js.org/concepts/hot-module-replacement/) to speed up development [[Read more]](#hot-module-replacement)\n  * Write cutting edge syntax powered by [Babel](https://babeljs.io)\n\n\n# Configuration\nConfiguration can be done on a global and on a project level. To customize the global environment settings modify the files in the directory `config/*`.\nMia.js comes with a boilerplate configuration for the included demo project application and some demos of how to use mia.js generic controllers.\n\n#### Global environment configuration\nYou can define multiple environments like local, stage, production or your own with different environment configurations. See `config/system.js` to modify the following parameters:\n\n  * Paths of mia.js project working directories\n  * HTTP/HTTPS server settings like port, ssl \n  * Virtual hosts to run multiple domains on same application server\n  * CronJob configuration\n  * MongoDB settings like replica sets, ports, host-names \n  * Memcache settings\n  * Default culture and language settings\n  * Logging level\n  * Debug mode\n\n##### Configuration example:\n```js\nmodule.exports = {\n    // Directory names for mia-js modules in projects directory\n    path: {\n        projects: 'projects',\n        modules: {\n            routes: 'routes',\n            models: 'models',\n            controllers: 'controllers',\n            crons: 'crons',\n            public: 'public',\n            libs: 'libs',\n            config: 'config',\n            init: 'init'\n        },\n        config: 'config'\n    },\n\n    // Default culture and language used for translations\n    defaultCulture: {\n        language: 'en',\n        region: 'gb'\n    },\n\n     // Define multiple stages with different configuration i.e. local, stage, production\n    local: {\n        logLevel: \"info\", // none, fatal, error, warn, info, debug, trace\n\n        // Rate Limiter requests per interval per IP address\n        rateLimit: {\n             maxRequests: 1000, // Requests per IP per rate limit window\n             interval: 5 // Rate limit window in minutes\n        },\n\n         // Maximum amount of time in milliseconds that the event queue is behind, before consider the application as too busy and reject incoming requests\n        maxLag: 100,\n\n        /* Define virtual hosts (vhosts) this application should listen to. Use id in routes file definition to apply a route to a host. Hosts are optional. If a routes file does not have a hostId setting the file is listening to every host pointing to this server\n         */\n        hosts: [\n            {\n                id: \"myApplication1\",  // HostId\n                host: \"example.com\" // Host name of this hostId.\n            },\n            {\n                id: \"myApplication2\", // HostId\n                host: [\"api.example.com\", \"example-domain.com\"] // Host names of this hostId.\n            }\n        ],\n        server: { // Optional define http, https or both\n            http: { \n                port: 3000, // Port for http\n                redir: true // Forward all traffic to https\n            }\n            , https: { // Optional define http, https or both\n                port: 4000, // Port for https\n                options: { // SSL Options\n                    key: fs.readFileSync('cert/ssl.key'),\n                    cert: fs.readFileSync('cert/ssl.crt'),\n                    ca: fs.readFileSync('cert/ca.pem'),\n                    passphrase: 'xxxxxx',\n                    requestCert: true,\n                    rejectUnauthorized: false\n                }\n            }\n        },\n        debug: true, // Show more details in error case\n        cronJobs: {\n            enabled: true, // Enable/Disable cron jobs as a global setting\n            allowedHosts: [] // Define specific hosts (host names) to run cron-jobs. Leave empty to start cron on any server running this application\n        },\n\n        //Wrap each request function in a try catch block to catch all application exceptions automatically\n        tryCatchForRouteFunctions: true,\n\n        // Memcache settings if you want to use memcache to cache data in your controllers\n        memcached: {\n            flushOnStart: true, // Flush mem cache content on initial first usage of memcache after server start\n            servers: 'localhost:11211',\n            options: {\n                retries: 0,\n                retry: 5000,\n                timeout: 500\n            }\n        },\n\n        //Default db name of mongoDb to use for application\n        defaultMongoDatabase: 'mia',\n        \n        // Helpful in test environments to prevent the database from indexing if whole collections are frequently created and dropped again\n        skipDatabaseIndexingOnNewCollections: false,\n\n        // Mongodb: Database configuration\n        mongoDatabases: {\n            // Application dbs. You can define multiple databases\n            mia: {\n                url: 'mongodb://api:api@localhost:27017/mia',\n                options: { // MongoDB options see MongoClient definition\n                    writeConcern: { w: 1 }, //write acknowledgement\n                    poolSize: 15,\n                    useUnifiedTopology: true\n                }\n            }\n        }\n    }\n};\n```\n\n#### Translations configuration\nMia.js is designed to support multiple languages for response and error handling messages. See `config/translations.js` to modify theses messages on a global level.\n\n# Global structure\n\n  *  `config` - Global environment configuration\n  *  `init` - Generate initial data. All files providing a function `init()` are called on server startup.\n  *  `projects` - Contains your projects\n\n# Project structure\nA project is a folder with all your controllers, functions and other files in one place that logically belong together. Create as many projects as you like by creating sub directories with a name of your choice with the following structure within the folder `projects`. \n\n  *  `config` - *optional* - Project configurations, i.e. global project variables like api keys or host names or translation strings for error and response handling or notification templates for push or email messaging\n  *  `controllers` - Contains your project controllers. Controllers can be chained in routing.\n  *  `crons` - *optional* - Project cron-jobs\n  *  `init` - *optional* - Generate project data. All files providing a function `init()` are called on server startup.\n  *  `libs` - *optional* - Extract functions to lib files to make them reusable in your project or global in all projects.\n  *  `models` - *optional* - Define custom mongoDB database models to validate and modify data before writing them to the database\n  *  `public` - *optional* - Put public assets or frontend web applications in this folder. This folder will be available public using the url like `/{YOUR PROJECT}/assets/`\n  *  `routes` - Define all your project routes and define which controllers to call within this route. Controllers can be chained simply by definition in your projects route files. All routes files in this directory will be registered at server startup.\n\nAll files inside the project working directories are connected by ids and version number. So feel free to create sub directories or drag around your files as you need them. That's cool - huh?\n\nIf you put all project specific content in a project folder you can easily move your whole project to any other mia.js server or even split up your projects later to deploy them on single servers.\n\n### Config\nUsually projects have to deal with config variables like api keys, host-names, external urls or localization keys. All files in the config directory gets parsed on server startup so you can use them on runtime in your controller functions by referencing `Shared` - see [Globals](#globals). \n\n### Controllers\nCreate your own api or web application by writing controllers placed in the sub directory `controllers` of your project folder. To organize your project you can use sub-directories at any depth as well. A controller is a small segment that is performing a certain task i.e. request an external api or getting results from an internal database or simply just returning some text. Controllers can be chained in the routes definition files. So you can split up all your needed functionality in multiple controllers and chain them. You can reuse controllers in routes i.e. write a controller that validates an access key and prefix this controller to every single route.\nDue to chaining you can also do things like: A controller gets data from a source, the second controller in the chain modified this data and a third controller is responding the request and outputs your data as a json, xml or text document. Whatever you need, whatever you like!\n\n#### Defining a controller\n<a name=\"definingAController\"></a>\n```js\nfunction thisModule() {\n    var self = this;\n    self.disabled = false; // Enable /disable controller\n    self.identity = 'myIceCreamController'; // Unique controller id used in routes, policies and followups\n    self.version = '1.0'; // Version number of service\n    self.created = '2015-07-14T12:00:00'; // Creation date of controller\n    self.modified = '2015-07-14T12:00:00'; // Last modified date of controller\n    self.group = 'demo'; // Group this service to a origin\n\n    self.preconditions = {\n        icecream: {\n            parameters: {\n                query: {\n                    flavour: {\n                        type: String,\n                        allow: [\"cookies and cream\",\"vanilla\",\"strawberry\"],\n                        convert: \"lower\"\n                    }\n                }\n            },\n            responses: {\n                200: \"Success\"\n            }\n        }\n    };\n\n    self.favoriteFlavour = function (req, res, next) {\n        var color = req.miajs.validatesParameters.query.flavour;\n        res.response = \"I love \"+flavour+\" icecream\";\n        next();\n    };\n\n    return self;\n}\n\nmodule.exports = new thisModule();\n```\n\nTo define a controller you need to set some variables like identity, version and group and write functions that perform an action. \n\n##### Use preconditions\nWhen using preconditions you can define what is necessary to run this controller.\nIf a condition does not match mia.js returns a qualified error response to the requesting client and prevents this code to run.\nPreconditions consists of `parameters` and `responses`. In parameters you can use the following segments:\n* `query` - Parameters that are expected in the query part of the url i.e. `/icecream?sortBy=flavour`\n* `body` - Parameters that are expected in the body part of the request\n* `path` - Parameters that are expected in the path part of the url i.e. `/icecream/:flavour/...`\n* `header` - Parameters that are expected in the header part of the request\n\n##### Available precondition validation rules\n * `type`      *'Boolean','String','Number','Date','Array'* - defines the type of the value\n * `subType`   *'Boolean','String','Number','Date','Array'* - defines the type of the value of elements of an object type array\n * `maxLength` *Number i.e. 32* - Maximum length of chars of a value\n * `minLength` *Number i.e. 32* - Minimum length of chars of a value\n * `required`  *true|false* - Set if value is required\n * `convert`   *'upper','lower'* - Convert value to upper or lower case\n * `match`     *RegEx] i.e. /[a-zA-Z]{2}/i* - Value must match to regular expression\n * `default`   *Number|Boolean|String|Function i.e. 'inactive'* - Set a default value if not set\n * `nullable`  *Boolean* - Defines if a value is allowed to be set to null in case of no given value\n * `virtual`   *String|Function* - Apply a defined virtual function to convert a value with a custom function and add to values\n * `max`       *Number i.e. 20* - Max number a value can have, only for numbers\n * `min`       *Number i.e. 1* - Min number a value must have, only for numbers\n * `allow`     *Array|Number|String i.e. [2, 3, 4]* - Define allowed values (case-in-sensitive). Only one must apply\n * `allowMultiple` *Number|String] i.e. [2, 3, 4]* - Define allowed values (case-in-sensitive). Multiple can apply\n * `deny`      *Array|Number|String i.e. [2, 3, 4]* - Denied values that are not allowed (case-in-sensitive)\n\n##### Assign to the next controller\nAll controllers are chained using the express function `next()`. Append variables to `req` to make them available to the next controller in the routing chain or directly add to `res.response` and use `res.send(res.response, 200)` to output the result. See [Express](https://github.com/strongloop/express) for details.\nYou can use a predefined json output controller available in `generic` project to respond to a request or write your own output controller i.e. to render html, xml or even soap.\n\n### Cron-Jobs\nMia.js comes with a build in cron job manager to support cron jobs. If you like to run tasks time-based like clean up a database or send data to an external api you can define a cron job and it will run at the time you defined. Mia.js handles job execution and job concurrency on all servers your applications is currently running so all you need to set up is time and number of instances that should run this job. You can also define a single server to run all your cron-jobs defined in mia.js global configuration.\n\n#### Run single cron job immediately without bootstrapping the web server\n\n```bash\n$ node server.js local cron=CronjobName\n\n# Or as an alternative you could use\n$ npm start cron=CronjobName\n```\n\n#### Run multiple cron jobs immediately without bootstrapping the web server\n\n```bash\n$ node server.js local cron=CronjobA,CronjobB,CronjobC\n\n# Or as an alternative you could use\n$ npm start cron=CronjobA,CronjobB,CronjobC\n```\n\n#### Don't run any cron job at all (only bootstrap web server)\n\n```bash\n$ node server.js local nocron\n\n# Or as an alternative you could use\n$ npm start nocron\n```\n\n#### Defining a cron job\nTo define a cron job place a file in the folder `crons` and add the following code\n```js\nvar _ = require('lodash')\n    , MiaJs = require('mia-js-core') // include Mia.js core module \n    , CronJobs = MiaJs.CronJobs // use cron functionality of mia.js core module\n    , BaseCronJob = CronJobs.BaseCronJob // extend the cron definition to your cron model\n    , Q = require('q'); // Promise lib\n\nmodule.exports = BaseCronJob.extend({},\n    {\n        disabled: false, // Enable /disable job definition\n        time: { // Times are used as default timings. To change after first run see mongodb collection cronJobTypes\n            hour: '0-23',\n            minute: '0-59',\n            second: '0-59/10',\n            dayOfMonth: '0-31',\n            dayOfWeek: '0-7', // (0 or 7 is Sun, or use names)\n            month: '0-12',   // names are also allowed\n            timezone: 'CET'\n        },\n\n        isSuspended: false, // set to true to suspend this job\n        debugOutput: false, // set to true to get detailed output of job startup and terminating\n        allowedHosts: [], // define hosts to run this job. Leave empty if every host is allowed to\n\n        maxInstanceNumberTotal: 1, // max number of parallel running instances on all application host \n        maxInstanceNumberPerServer: 1, // max number of parallel running instances on this host\n\n        identity: 'randomlyGenerateNewIcecreamFlavours', // Job name\n\n        worker: function () {\n            // RUN A TASK HERE\n            return Q(); // Cron-job has to return a promise\n        },\n        created: '2015-07-14T12:00:00', // Creation date\n        modified: '2015-07-14T12:00:00' // Last modified date\n    }\n);\n\nmodule.exports = new thisModule();\n```\nThe task that is executed time-based should be placed in the function `worker`.\n\n### Init\nSometimes you need to set some initial data to run your project i.e. write access keys to a database or do some logging. Simply create a file in the init project folder and provide a function called `init()`. All files inside this folder gets parsed and executed on server startup.\n\n#### Defining a init function\n```js\nfunction thisModule() {\n    var self = this;\n    self.init = function () {\n        // Do you initializing here\n    };\n    return self;\n};\nmodule.exports = new thisModule();\n```\n\n### Libs\nA project usually consists of several controller files that handle different tasks. To avoid duplication of your code you can move code i.e. functions that should be reused to a file in the folder `lib`. All files in the lib directory gets parsed on server startup so you can use them on runtime in your controllers functions by referencing `Shared` - see Section `Globals`. \n\n#### Defining a lib\n```js\nfunction thisModule() {\n    var self = this;\n    self.identity = 'MyIcecreamLib'; // Controller name used in routes, policies and followups\n    self.version = '1.0'; // Version number of service\n    self.getAllIcecreamFlavoursFromDatabase = function (sortBy, ascending, limit, skip) {\n         // Perform a database task and return a list of all icecream flavours\n         return listOfIcecreams;\n    };\n    return self;\n};\nmodule.exports = new thisModule();\n```\n\n### Models\nWhen handling with user generated data you always have to deal with validation to achieve consistency. Particularly when using a NoSQL database like mongoDB you have to take care that your data in a table or collection is somehow equal to use indexing and speed up your application. Mia.js supports models to define what your data should look like. The build-in base model component and model validator of mia-js core module takes care of consistency by validating the data and can also modify your data i.e. by adding default values or calling custom functions on a model object. You can also defined your indexes for your database inside your model definition file. The collection is auto-added to the database on first usage if it does not exists and all indexed are set up automatically. When ever you want something to be stored to your database just use the mia.js base model functions that handles all for you.\n\n#### Defining a model\n\n```js\nvar BaseModel = require(\"mia-js-core/node_modules/baseModel\");\nmodule.exports = BaseModel.extend({\n        data: {\n            _id: {},\n            flavour: {\n                type: String,\n                index: true,\n                required: true,\n                unique: true\n            },\n            serveIn: {\n                type: String,\n                allowed: [\"cup\",\"cone\"],\n                default: \"cone\"\n            },\n            created: {\n                type: Date,\n                index: true,\n                required: true\n            }\n        }\n        /*\n        Add compound indexes as followed:\n        ,compoundIndexes: [\n         {\n             fields: [\"name\", \"group\"],\n             unique: true\n         }\n         ]\n         */\n    },\n    {\n        disabled: false, // Enable /disable model\n        identity: 'icecream-model', // Model name\n        version: '1.0', // Version number\n        created: '2015-07-14T12:00:00', // Creation date\n        modified: '2015-07-14T12:00:00', // Last modified date\n        collectionName: 'icecreams'\n    });\n```\n\n##### Available db model validation rules\n<a name=\"modelValidationRules\"></a>\n * `type`      *'Boolean','String','Number','Date','Array'* - defines the type of the value\n * `subType`   *'Boolean','String','Number','Date','Array'* - defines the type of the value of elements of an object type array\n * `maxLength` *Number i.e. 32* - Maximum length of chars of a value\n * `minLength` *Number i.e. 32* - Minimum length of chars of a value\n * `required`  *true|false* - Set if value is required\n * `unique`    *true|false* - Set if value should be unique\n * `public`    *true|false* {set:true,get:false} - Allow values to be set or the get. Set=false means disallow this value to be added manually. Use virtual to generate value by function instead. Get=false means this value is not part of the output of validation. Values will be deleted after processing\n * `index`     *true|false* - Set if an index should be applied to value\n * `convert`   *'upper','lower'* - Convert value to upper or lower case\n * `match`     *RegEx] i.e. /[a-zA-Z]{2}/i* - Value must match to regular expression\n * `default`   *Number|Boolean|String|Function i.e. 'inactive'* - Set a default value if not set\n * `nullable`  *Boolean* - Defines if a value is allowed to be set to null in case of no given value\n * `virtual`   *String|Function* - Apply a defined virtual function to convert a value with a custom function and add to values\n * `max`       *Number i.e. 20* - Max number a value can have, only for numbers\n * `min`       *Number i.e. 1* - Min number a value must have, only for numbers\n * `allow`     *Array|Number|String i.e. [2, 3, 4]* - Define allowed values (case-in-sensitive). Only one must apply\n * `allowMultiple` *Number|String i.e. [2, 3, 4]* - Define allowed values (case-in-sensitive). Multiple can apply\n * `deny`      *Array|Number|String i.e. [2, 3, 4]* - Denied values that are not allowed (case-in-sensitive)\n * `extend`    *Function* - Define a function that extends a schema definition dynamically i.e. (values) => {child: {type: Number, min: 1, max: 10}}. The function will be given the corresponding input value\n\n## Routes\nRoutes are the key functionality to build your application. Define routes of your project in the routes definition of mia.js. The build in routes handler connects all your controllers, registers the routes and handles route parameters of your application. You can have multiple routes files in your projects `routes` folder to logically separate routes or create routes with different compilation of chained controllers i.e. routes for version v1, routes for version v2 or routes for testing.\n\n#### Defining a route\n<a name=\"definingARoute\"></a>\n```js\nmodule.exports = {\n    group: 'demo', // Group name\n    name: 'My icecream API',  // if disabled path is used as name in api documentation\n    version: '1.0', // Version\n    hostId: ['myDomain1','myDomain2'], // Optional if vhosts are defined in global mia.js config.\n    environment: ['local','production'], // Define environments where this route file should be registered\n    prefix: ['/icecream/v1','/icecream/latest'], // Route prefix. Multiple prefixes possible\n    corsHeaders: { // Optionally set CORS headers to routes definition or to a single route\n        \"Access-Control-Allow-Origin\": \"*\", // See CORS header definition \n        \"Access-Control-Allow-Headers\": \"Content-Type\",  // See CORS header definition \n        \"Access-Control-Allow-Credentials\": true  // See CORS header definition \n    },\n    // Rate Limiter requests per interval per IP address\n    rateLimit: {\n        maxRequests: 1000, // Requests per IP per rate limit window\n        interval: 5 // Rate limit window in minutes\n    },\n    parameterOverflow: 'log', // Optional: What to do if more parameters as configured were given. Possible values are \"ignore\", \"log\" and \"block\". This setting is valid for all the routes in the file\n    routes: {\n        // Route /unicorn\n        './flavours': {\n            list: {\n                identity: 'icecreamFlavours',\n                modified: new Date(2015, 7, 14, 12, 0, 0),\n                docs: true,\n                description: \"List of icecream flavours\",\n                rateLimit: {\n                        maxRequests: 500, // Requests per IP per rate limit window\n                        interval: 5 // Rate limit window in minutes\n                },\n                parameterOverflow: 'block',  // Optional: What to do if more parameters as configured were given. Possible values are \"ignore\", \"log\" and \"block\". This setting is valid only for the route\n                controller: [\n                    {\n                        name: 'generic-accessKeyService',\n                        version: '1.0'\n                    },\n                    {\n                        name: 'myIceCreamController',\n                        function: \"favoriteFlavour\",\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-defaultResponse',\n                        version: '1.0'\n                    }\n                ],\n                errorController: [\n                    {\n                        name: 'myCustomErrorController',\n                        version: '1.0'\n                    }\n                ],\n                responseSchemes: {\n                    // Response Schemes are optional to describe what scheme the response will look like\n                    success: {\n                        \"status\": {\n                            type: \"Number\"\n                        },\n                        response: {\n                            param1: {\n                                type: \"String\"\n                            },\n                            param2: {\n                                type: \"Number\"\n                            }\n                        }\n                    },\n                    error: {\n                        \"status\": {\n                            type: \"Number\"\n                        },\n                        errors: [\n                            {\n                                code: {\n                                    type: \"String\"\n                                },\n                                msg: {\n                                    type: \"String\"\n                                }\n                            }\n                        ]\n                    }\n                }\n            }\n        }\n    }\n};\n```\nIn this example a route is registered with the method `GET` and the paths `/icecream/v1/flavours` and `/icecream/latest/flavours`. \n##### Routes parameters\nThere are some global parameters of your routes file to adjust the routes behaviour.\n\n* `group` - Connect your project files by giving it a group name. When a request is processed this group name will be available to all controllers to identify what route is currently calling this controller. Due to your controllers can be nested in multiple routes this is kind of important to identify from which routes this request came from. You can use this variable to write a controller function with different return values depending on the route path.\n* `name` - *optional* All routes will be grouped by this optional name in auto generated documentation. Using this parameter gives your routes a more \tmeaningfully name. If not set the path is taken as group name for all routes in this file the documentation.\n* `hostId` - When using vhosts in mia.js global configuration you can bind all routes of this route file to a specific vhost i.e. my.domain.tld. In consequence this route is only available for requests coming from this domain. You can assign multiple hostIds to a route. Notice: Use a host ID here not a domain name. Domains names for vhosts should be defined in mia.js global config matching to a hostId.\n* `version` - Mia.js is designed to work with versioning. Giving your routes file and also your controllers a version number makes it easy to use versioning for your route by simply duplicating the routes file and make your modifications.\n* `envrionment` - *optional* Define environments for a routes file. The routes file is only registered and available public if the environment name matches the current environment name on server startup. You can creates routes for testing purpose and i.e. just deploy them to your staging servers and disable and hide them on your production environment.\n* `prefix` - *optional* You can prefix a route or even use multiple prefixes to make sure not to have conflicts with other route files or other projects. When building api routes we recommend to use the version number as part of the prefix i.e. `/icecream/v1/flavours`. It's up to you!\n* `corsHeaders` - Apply CORS headers to a routes file i.e. for Cross Domain Policy. Defining the CORS header automatically enables all routes of this routes definition file to response to a browsers CORS requests methods OPTIONS\n* `rateLimit` - Limit the request rate for an interval time range and max request for all routes within this routes file. Memcached needed to use rateLimit\n* `routes` - All of your application routes\n* `deprecated` - *optional* Add this flag to mark all methods of this route as deprecated. The will lead to a notice field when requesting an api and highlighting in [Swagger::Docs](https://github.com/richhollis/swagger-docs) documentation\n* `parameterOverflow` - *optional* Specifies how to handle additional parameters which were given but not configured. Possible values are \"ignore\", \"log\" and \"block\". This setting is valid for all the routes in the file\n\n##### Routes\nDefine multiple routes for your application project. Mia.js has some build in methods and parameters to describe the route. First give your route a name see example `./flavours`. This name is directly used as route path and appended to the prefix. You can use variable names inside of your routes path to allow routes like `/icecream/v1/:flavour/ingredient/:name`. Use a `:` as variable prefix of a path variable. A route always needs a request method your route is listening to - use one of the following.\n\n###### Routes methods\n* `list` - GET request method, alias of `get`\n* `index` - GET request method with a required query parameter `/:id` automatically appended to routes path\n* `create` - POST request method, alias of `post`\n* `update` - PUT request method with a required query parameter `/:id` automatically appended to routes path\n* `delete` - DELETE request method with a required query parameter `/:id` automatically appended to routes path\n* `get` - GET request method\n* `post` - POST request method\n* `put` - PUT request method \n* `del` - DELETE request method\n\n **IMPORTANT**: Your controllers inside of a route need to provide a function with the same name (i.e. `self.list`, `self.update`) or you define a custom method (`self.favoriteFlavour`) to be called see `function: \"favoriteFlavour\"` in the [example](#definingARoute) above. If you want a controller function to be available for any request method use `all` as function name in your controller. See [Defining a controller](#definingAController)\n\n\n###### Routes methods parameters\n* `identity` - Identity of this route method. This identity has to be unique in this routes file\n* `decrecated` - *optional* Add this flag to mark a route as deprecated. The will lead to a notice field when requesting the api and highlighting in [Swagger::Docs](https://github.com/richhollis/swagger-docs) documentation\n* `modified` - Date when is route has been modified. Used in generic controllers `generic-listServices`\n* `rateLimit` - Limit the request rate for an interval time range and max request for this single route. Memcached needed to use rateLimit\n* `docs` - *optional* Set to true|false to make this route method available in automatically generated documentation\n* `description` - *optional* Give your route a more details description of what this services does. Used in automatically generated documentation.\n* `environment` - *optional* Define environments for a route method. The route method is only registered and available public if the environment name matches the current environment name on server startup. You can creates routes for testing purpose and just deploy them to your staging servers and disable and hide them on your production environment.\n* `bodyparser {type:'json',limit:'512kb'` - *optional* Mia.js automatically parses a request body as json. To change this behaviour set the body-parser type to `none` or change the limit of the body size.\n* `controllers` - Array of your project controllers to use for this route\n* `authorization` - *optional* Indicates if this route requires authorization. This flag is available in `generic-listServices` controller to indicate that this service is somehow protected and needs authorization.\n* `corsHeaders` - *optional* Apply CORS headers to single route i.e. for Cross Domain Policy. Defining the CORS header automatically enables this route to response to a browsers CORS requests methods OPTIONS\n* `responseSchemes` - *optional* To describe what the excepted response in case of a successful response or an error response will look like you can specify the response schema. This will be visible in the [Swagger::Docs](https://github.com/richhollis/swagger-docs) documentation\n* `parameterOverflow` - *optional* Specifies how to handle additional parameters which were given but not configured. Possible values are \"ignore\", \"log\" and \"block\". This setting is valid only for the specific route\n\n####### Define controllers of a route method\nControllers are defined as array in the routes file definition of your route method. The order of elements follows the chaining of your controllers. You can chain as many controllers as you need to perform a request and return a response. Controllers are chained by calling `next()` in a controller file. The last controller should handle the response output i.e. `res.send()` see [Express](https://github.com/strongloop/express)\n\n* `name` - Identity of the controller alias the field `identity` in your controller file. We should rename this ;-)\n* `version` - Version of the controller\n* `function` - Name of the custom function to use with this route request. Skip this parameter if you provide a method with the same name as the request method in your controller i.e. `self.list`\n\n####### Define error controllers of a route\nIn the same way `controllers` are nested and used you can define `errorController` to provide a custom error handler to your route. In every case an error occures in the controller chain and `next(err)` is called all controllers are skipped and the `errorController` chain is executed. You can use as many error handler controllers as you like to finsih your task i.e. write some logs, cleanup some data or output a custom response to the client.\n\n \n# Globals\n<a name=\"globals\"></a>\nMia.js middleware framework uses the node modules `mia-js-core` which offers various functionality you can use inside of your project controllers during runtime of a request.\n\n#### Shared\nGet access to shared configs, libs, variables, models of your projects inside your project controller by requiring `mia-js-core` module:\n```js\nvar MiaJs = require('mia-js-core')\n    , Shared = MiaJs.Shared;\n```\n*  `Shared.config(\"environment.{VARIABLE}\")` - Access a variable with placeholder `{VARIABLE}` (or function) inside the global enviroment config `config/system.js`\n*  `Shared.config(\"{ID\")` - Access a config file with identifier `{ID}` define in a project `config` folder\n*  `Shared.config(\"{ID}.{VARIABLE}\")` - Access a variable with placeholder `{VARIABLE}` (or function) inside a config file with identifier placeholder `{ID}`\n*  `Shared.libs(\"{ID}.{VARIABLE}\")` - Access a variable with placeholder `{VARIABLE}` (or function) inside a lib file with identifier placeholder `{ID}`\n*  `Shared.models(\"{ID}\")` - Access a model with identifier `{id}` defined in a project model file\n\nExample: `Shared.config(\"environment.server.http.port\")` - Get current server port\n\n# Notification Manager\nMia.js comes with a build-in notification manager to handle email and push notifications triggered from any controller of your project i.e. to send signup welcome emails to a user or send custom push notification. See generic lib [generic-notificationManager`](#generic-notificationManager)\n\n#### req.miajs\nWhen a url request is running mia.js processes the chain of controllers defined in the routes file. Mia.js automatically appends runtime data to the [Express](https://github.com/strongloop/express) variable `req` available in `req.miajs` so it is available in your project controllers.\n\n  *  `req.miajs.route` - All route variables like current controller id, version, routes group name, current url and many more\n  *  `req.miajs.validatesParameters` - *optional* When defining preconditions in your controller all defined request data automatically gets validated and passed to `req.miajs.validatedParameters`. So you don't need to take care of invalid data. Your controller only gets those variables that are defined in this particular controller. The next following controller might have defined different preconditions so the variable `req.miajs.validatedParameters` might have a different value.\n  *  `req.miajs.userData` - *optional* If using a predefined `generic-users` controller the variable contains the requesting users profile.\n  *  `req.miajs.device` - *optional* When using the predefined `generic-validateAccessKey` controller a requesting devices profile data is automatically added to this variable and is available for all following chained controllers to deal with device specific request.\n\n\n# Generic Controllers\nMia.js comes with some predefined generic controllers to make your life a little easier. You can use these generic controllers by adding them to your route method controllers definition in your projects routes file. All generic controllers used in your projects route files automatically adds their required precondition parameters to the route. Also see Generic Libs\n\n## Available predefined controllers\n* `generic-defaultResponse` - A simple output controller to return JSON documents. Attach your request response to the variable `res.response` in your controllers and set `generic-defaultResponse` as your last controller of your controller chain at it will output this variable as response. \n* `generic-listServices` - Outputs a JSON object of all available services in the project route file where you defined this controller as a machine-readable services listing.\n* `generic-deviceProfile` - Creates a device profile for the requesting client and returns a device id as identifier. When using `generic-validateAccessKey` or `generic-accessKeyService` this service is mandatory. Device profile data of a requesting device is available in all chained controllers during a request. \n* `generic-validateAccessKey` - Requires and validates a client generated signature key to secure the communication between a requesting client and your api methods. There is an iOS and Android SDK available to work with the `generic-validateAccessKey` controller. \n* `generic-users` - Provides user management services like signup, login, facebook-login (third-party logins), password reset, user profile services. Simple use one of there functions of this controller to enhance your project.\n* `generic-evaluateOptionalUserLogin` - Verifies a device if requesting device is logged in a user account and appends the user profile data of this user to gloabl variable `req.miajs.userData`. When using this controller a logged in user is optional and the next controller is called in any case.\n* `generic-validateUserLogin` - Verifies a device if requesting device is logged in a user account and appends the user profile data of this user to global variable `req.miajs.userData`. When using this controller a logged in user is mandatory and and error is returned to the user if the user is not logged in.\n\nDeprecated generic controllers\nMia.js offers some controllers, that are already deprecated so we do not describe them in detail but you can use them anyway. \n* `generic-accessKeyService` - *deprecate* Validates a client generated access key token based on a device profile id and a client deposited secret token. This key is static per device and does not change over time. Use this i.e. to protect against unauthorized access of 'generic-generateSession'.\n* `generic-generateSession` - *deprecate* Generate a session key and attach it to the requesting devices profile. When using `generic-generateSession` this use of the service `generic-deviceProfile` is mandatory. \n* `generic-validateSession` - *deprecate* Validates a server generated session key (see `generic-generateSession`) to authorize a device to access a service.\n\n## Predefined controllers\n\n## generic-defaultResponse\n#### Function: `all` (available for all request method)\nOutputs the [Express](https://github.com/strongloop/express) variable `res.response` as JSON document and sets http response code `200` by default. To set different http response code modify the variable `res.statusCode` in one of the prefixed controllers. Additionally `generic-defaultResponse` registers a query variable named `filter` to filter the response by JSON element name. If debug mode is enabled in global environment configuration and the request header field `debug` is set to true additional debug information is returned in the request response.\n\n## generic-listServices\n#### Function: `list` (available for request method `list`)\nMia.js supports a machine-readable version of a projects routes file. Clients can process this service listing i.e. to get all available services and all service urls and request methods. When using this services listing you can enable your clients to automatically update service url - if they change (usually you don't do this). We recommend to cache this listing on client side and update i.e. once per day. To access an api do not hard code the api url in your client simply use the identifier name of the service and lookup all relevant request requirements in your service listing.\n\n#### Example service listing response\n```js\n{\n    \"status\": 200,\n    \"response\": [\n        {\n            \"modified\": \"2015-01-17T10:00:00.000Z\",\n            \"method\": \"GET\",\n            \"url\": \"https://my.domain.com/icecream/v1/flavour\",\n            \"id\": \"icecreamFlavours\",\n            \"parameters\": {\n                \"header\": {\n                    \"key\": {\n                        \"desc\": \"Authorization access key\",\n                        \"type\": String,\n                        \"required\": true\n                    },\n                    \"signaturemethod\": {\n                        \"desc\": \"Authorization access key signature method. Default SHA256 if not set\",\n                        \"allow\": [\n                            \"sha256\"\n                        ],\n                        \"type\": String\n                    },\n                    \"requestdate\": {\n                        \"desc\": \"Date string when client request was initiated i.e. 2015-01-01T00:00:00\",\n                        \"type\": \"Date\"\n                    }\n                },\n                \"query\": {\n                    \"flavour\": {\n                        type: String,\n                        allow: [\"cookies and cream\",\"vanilla\",\"strawberry\"],\n                        convert: \"lower\"\n                    },\n                    \"filter\": {\n                        \"desc\": \"Filter response by filter string i.e. 'id' to only return elements with name id. To receive multiple elements use , as delimiter\",\n                        \"type\": String\n                    }\n                }\n            },\n            \"responses\": {\n                \"200\": [\n                    \"Success\"\n                ]\n            },\n            \"authorization\": true\n        }\n    ]\n}\n```\n\n## generic-deviceProfile\nIn order to deliver device specific content i.e. image urls depending on the device's screen resolution or culture code specific localisations mia.js supports device profiles. It is always recommended to know who is performing the current request and you don't want to pass to much data with every request redundant like language and region of the requesting device.\nTo use device profiles add a route to your projects routes file and use the functions of this controller. Ensure that your clients call the register device route on first usage of your application api to initially create a device profile with all relevant profile data.\n`generic-deviceProfile` controller offers two functions to register and update a devices profile. When using generic authorization controllers `generic-deviceProfile` is mandatory and the requesting devices profile data is automatically fetched and made available for all following chained controllers in the variable `req.miajs.device`.\n\n#### Function: `create` (available for request method `create`)\nUse this function to register a device initially. Submit device profile data in the request body - all parameters are optional. If you register a device profile without passing body data you will a least receive a device id to identify the requesting device. We recommend to use this device id on client side to identify your device so you might persist this id somehow. If you use the generic controllers `generic-accessKeyService` the device id is mandatory and used to authorize the registered device.\n\n**Using device create in routes file**\n```js\nmodule.exports = {\n    group: 'demo', // Group name\n    name: 'My icecream API',  // if disabled path is used as name in api documentation\n    version: '1.0', // Version\n    environment: ['local','production'], // Define environments where this route file should be registered\n    prefix: ['/icecream/v1','/icecream/latest'], // Route prefix. Multiple prefixes possible\n    routes: {\n        './device': {\n            create: {\n                identity: 'devices',\n                modified: new Date(2014, 1, 23, 15, 0, 0),\n                description: \"Register devices and receive device id\",\n                docs: true,\n                controller: [\n                    {\n                        name: 'generic-deviceProfile',\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-defaultResponse',\n                        version: '1.0'\n                    }\n                ]\n            }\n        }\n    }\n}\n```\n\n###### Device profile parameters available to pass in body\n```js\n    culture: {\n        code: {\n            type: String,\n            minLength: 5,\n            maxLength: 5,\n            match: /[a-zA-Z]{2}-[a-zA-Z]{2}/i\n        }\n    },\n    app: {\n        id: {\n            type: String,\n            minLength: 5,\n            maxLength: 50\n        },\n        version: {\n            type: String,\n            minLength: 1,\n            maxLength: 7,\n            match: /^([\\d]{1,3}\\.)?([\\d]{1,3}\\.)?([\\d]{1,3}\\.)?[\\d]{1,3}$/i //Match up to 1.2.3.4\n        },\n        vendor: {\n            id: {\n                type: String,\n                minLength: 5,\n                maxLength: 50\n            }\n        },\n\n        advertiser: {\n            id: {\n                type: String,\n                minLength: 5,\n                maxLength: 50\n            }\n        }\n    },\n\n    // Rate Limiter requests per interval for this device (when using authentication->validateAccessKey controller)\n    rateLimit: {\n         maxRequests: 1000, // Requests for this device per rate limit window\n         interval: 5 // Rate limit window in minutes\n    },\n\n    device: {\n        model: {\n            type: String,\n            minLength: 1,\n            maxLength: 50\n        },\n        os: {\n            type: { // OS type like iOs, Android, Desktop\n                type: String,\n                minLength: 2,\n                maxLength: 50\n            },\n            version: { // OS version like 1.2.3.4\n                type: String,\n                minLength: 1,\n                maxLength: 7,\n                match: /^([\\d]{1,3}\\.)?([\\d]{1,3}\\.)?([\\d]{1,3}\\.)?[\\d]{1,3}$/i //Match up to 1.2.3.4\n            }\n        },\n        carrier: {\n            type: { // Carrier name\n                type: String,\n                minLength: 1,\n                maxLength: 50\n            }\n        },\n        screen: {\n            resolution: { // Screen resoultion in format i.e. 1080x720\n                type: String,\n                match: /(\\d+)x(\\d+)/i\n            }\n        },\n        notification: { // Push token to send push notifications to the device\n            token: {\n                type: String \n            }\n        }\n    }\n```\n\n##### Function: `update` (available for request method `update`)\nTo update a device profile create a route in your projects route file and use the generic controller `update`. You can submit the same parameters as used in function `create`\n\n**Using device update in routes file**\n```js\nmodule.exports = {\n    group: 'demo', // Group name\n    name: 'My icecream API',  // if disabled path is used as name in api documentation\n    version: '1.0', // Version\n    environment: ['local','production'], // Define environments where this route file should be registered\n    prefix: ['/icecream/v1','/icecream/latest'], // Route prefix. Multiple prefixes possible\n    routes: {\n        './device': {\n            update: {\n                identity: 'devices',\n                modified: new Date(2014, 1, 23, 15, 0, 0),\n                description: \"Register devices and receive device id\",\n                docs: true,\n                controller: [\n                    {\n                        name: 'generic-validateAccessKey',\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-deviceProfile',\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-defaultResponse',\n                        version: '1.0'\n                    }\n                ]\n            }\n        }\n    }\n}\n```\n\n### generic-validateAccessKey\n##### Function: `all` (available for all request method)\nTo protect your api against unauthorized access you can use the generic controller `generic-validateAccessKey` as prefix for every route method. See example [Defining a route](#definingARoute).<br/>\n**IMPORTANT:** Using the mia.js iOS and Android SDK you'll get all the access and device profile handling out of the box.<br/>\n<br/>\nUsing this controller as prefix a header field `key` is automatically required with the request. There are two way of using the `key` field. One is using a client-side generates signature and the other is use a static key (length 32 char) that is directly bound to a device profile.\n\n###### Signature method\nWhat this controller does in particular is validating the signature in the header field `key` and matches it against the request url and method and device profile id to grant access. The `key` signature is generated with every request on client side and consists of the following parameters:\n\n>signature=[deviceId]+[secretId]+[timestamp]+HASH([deviceId] + [secret] + [timeStamp] + [requestMethod] + [baseUrl] + [urlPath] + HASH([bodyHash])).toLowerCase())\n \n**Fields**\n* deviceId = Id of device, see device register service, length 32 char\n* secretId = Identifier of used secret, to allow different secrets with different projects/releases\n* timestamp = UTC time stamp of current time in seconds since 1.1.1970, 10 digits\n* requestMethod = Used request method post, get, put, delete\n* baseUrl = Protocol and domain of request i.e. https://mydomain.com\n* urlPath = Path and Query Parameters of request UTF-8 encoded i.e. /api/v1/service?my=first&parameter=settings\n* bodyHash = Hash of plain JSON document of request. Default in SHA256\n \n**Notice**\nQuery parameters must be encoded as UTF-8 to avoid hash conflicts on server side. Make sure that all data inside the hash is converted to lower case. The timestamp is used to block requests that are older than a defined expire time. Make sure that the client has the correct UTC time. If not the request will fail and the server returns the current server datetime as header field \"date\". Uses this date to make a time correction client side and retry the request with adjusted date time. It is also possible to use a different hash algorithm than SHA256. This can be set in header field \"signatureMethod\". Currently this functionality is not fully implemented so default is SHA256.<br/>\n<br/>\n>We know this sounds complicated so we really recommend to use the iOS or Android SDKs. But why do we do all of this? First we don't want someone to get access to your services. So we need somehow an access key. But to prevent man-in-the-middle attacks and manipulation during your request the whole request url and parameters are hashed inside the signature. So the signature is dynamically generated and changes with every request - it is not a static key. Due to there is a secret part that is deposed on client and not submitted with the request any man-in-the-middle can not modify the request without breaking the signature hash or regenerate a modified hash by him self. To prevent replay attacks a time component is added to the signature. \n\n**Secrets**\nAuthorization requires secret tokens and secrets ids deposed on client device. These tokens consists of random strings with a length of 32 chars. They can be group specific to be valid only for certain groups (see groups settings in your routes file). Give the secret and the secret id to the client developer. Make sure that the secret stays secret and never gets published. The secret id is visible unencrypted in the `key` signature when using authorization. The secret itself is only used to create the hash part. To create your own secrets we recommend to add them manually to the `secrets` collection of the database or add them to the `init` controller of your project. This is what a secret entry looks like in the `secrets` collection of the database:\n\n```\n{\n    \"id\" : \"a72d0761805ecfd8733a82e3c4e35439\",\n    \"secret\" : \"190c5535a16ad38d909fac7179aef9be\",\n    \"groups\" : [ \n        \"demo\"\n    ],\n    \"enabled\" : true,\n    \"created\" : ISODate(\"2015-07-21T14:08:22.148Z\")\n}\n```\n\n###### Static method\nThe static method of the `generic-validateAccessKey` header field `key` is mainly used for testing purpose or giving an external server with fixed ip access to your application services. You can add the following parameters to assign a static key to a device profile and grant access. (Add this manually to a device profile in the database)\n```\n\"access\" : {\n     \"key\" : \"ec04611599e17a459b93d01c319e7b2b\", // any key - generate one by yourself. Must be 32 char long so we recommend pick a md5 hash\n     \"cidr\" : [  // use a cidr to restrict this key to an ip range\n         \"0.0.0.0/0\"\n     ],\n     \"blockcidr\" : [  // use a cidr to block ip ranges\n         \"0.0.0.0/0\"\n     ],\n     \"groups\" : [ // use groups to restrict this key to an routes group\n         \"demo\" \n     ]\n }\n```\n\n### generic-users\nMia.js comes with build-in user management controllers to handle signup, login, manage user profiles and assign device profiles to a user profile. To prevent redundant data send with every request mia.js uses device profiles to identify a requesting device by a device id hashed in the `key` signature when using using the `generic-validateAccessKey` controller. A device can be assigned to a user profile and so be marked i.e. as logged in user. In your controllers you can respond to this by giving access to a service or deny access to users who are not logged in. Use the `generic-evaluateOptionalUserLogin` or `generic-validateUserLogin` controllers as prefix of your route to validate the login status of a device and get access in the following chained controllers to the user profile data. \n\n#####Example route of a signup process#####\n<a name=\"ExampleRouteOfASignupProcess\"></a>\nDue to the whole user management is a little more complex let take a look how to use it in a route file with a **custom** user profile model and **custom** user profile settings\n```js\nmodule.exports = {\n   group: 'demo', // Group name\n    name: 'My icecream API',  // if disabled path is used as name in api documentation\n    version: '1.0', // Version\n    environment: ['local','production'], // Define environments where this route file should be registered\n    prefix: ['/icecream/v1','/icecream/latest'], // Route prefix. Multiple prefixes possible\n    routes: {\n        './users/me': {\n            post: {\n                identity: 'signUp',\n                modified: new Date(2014, 10, 3, 15, 0, 0),\n                description: \"Sign up a user\",\n                docs: true,\n                authorization: true,\n                controller: [\n                    {\n                        name: 'generic-validateAccessKey', // Make sure device id is valid and authorized\n                        version: '1.0'\n                    },\n                    {\n                        name: 'custom-userProfile',\n                        function: 'prepareParametersForSignup', // prepare require custom parameters\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-users',\n                        function: 'setParametersForSignup', // setup parameters for signup\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-users',\n                        function: 'signUp', // create user profile\n                        version: '1.0'\n                    },\n                    {\n                        name: 'custom-userProfile',\n                        function: 'onSignupSuccessful', // do something after successfull profile create\n                        version: '1.0'\n                    },\n                    {\n                        name: 'generic-defaultResponse', // outputs res.response as json document\n                        version: '1.0'\n                    }\n                ]\n            }\n        }\n    }\n}\n```\nSo what is happening here. First we use the controller `generic-validateAccessKey` so that no unauthorized device is using this service. Second we call a controller `custom-userProfile` what is the identifier of your custom controller (see `self.identifier` in your controller file) with a function `prepareParametersForSignup` (name it as you like). This controller aggregates some custom signup settings and makes it available to the following controllers. Lets take a look at the function `prepareParametersForSignup` in particular\n```js\n    var _options = { // all options are optional\n        salt: '04473ac659ffaf31a4be2dc03ece0934lwe67q3b2cdvk23vkadv', // a hash used for password hashing of the user profile\n        maxDeviceCount: 5, // Max number of devices allowed for this user profile\n        loginOnSignUp: true // set to no if you just want to sign up and login later separately\n    };\n    \n    self.prepareParametersForSignup = function (req, res, next) {\n        var data = req.miajs.validatedParameters.body;\n        // Set userProfile variables to use in generic user controller signUp method\n        req.miajs.userService = {};\n        req.miajs.userService.userProfileData = data;\n        req.miajs.userService.options = _options;\n        req.miajs.userService.userProfileModel = UserProfileModel;\n        req.miajs.userService.group = req.miajs.route.group;\n        req.miajs.userService.appId = req.miajs.route.group;\n    \n        // Add some custom data:\n        req.miajs.userService.userProfileData.createdAt = new Date(Date.now());\n        req.miajs.userService.userProfileData.updatedAt = new Date(Date.now());\n    \n        next();\n    };\n```\nThe function `prepareParametersForSignup` fills a variable `req.miajs.userService` with a some of configurations i.e. the `userProfileModel` that should be used for the user data and the variable `userProfileData` that contains the request body data submitted by the client. If you do not want to adjust the signup parameters or add custom user profile data to the user profile you can remove the `prepareParametersForSignup` controller from your routes file and directly call the `generic-users` controller.\nNext the `generic-users` with function `setParametersForSignup` is called to set all collected data followed by the `signUp` function which creates the user profile. After successful signup you can call i.e. a custom controller function like `onSignupSuccessful` (name it as you like) to return the profile or send a welcome email to the user. At the end a `generic-defaultResponse` controller is called to response the request. \n\n#### Using a custom user profile data model#####\nIf you want to add some custom fields to a user profile i.e. phone number, fist name, last name, image url or whatever you need to fulfill your task you can create a custom user profile model. Just create a file in the folder `models` of your project and define the model. To use the model pass it in the variable `req.miajs.userProfileModel` before routing to the function `signUp` of generic controller `generic-users`.\n\nExample of a custom user profile model\n<a name=\"ExampleOfACustomUserProfileModel\"></a>\n```js\nvar BaseModel = require(\"mia-js-core/node_modules/baseModel\");\nfunction thisModule() {\n    var model = BaseModel.extend({\n            data: {\n                name: {\n                    type: String,\n                    required: true\n                },\n                phone: {\n                    type: Number,\n                    required: true\n                },\n                createdAt: {\n                    type: Date\n                },\n                updatedAt: {\n                    type: Date\n                }\n            }\n        },\n        {\n            disabled: false, // Enable /disable model\n            identity: 'my-userProfile-model', // Model name\n            version: '1.0', // Version number\n            created: '2014-10-31T19:00:00', // Creation date\n            modified: '2014-10-31T19:00:00', // Last modified date\n            collectionName: 'userProfile'\n        });\n\n    return model;\n}\nmodule.exports = thisModule();\n```\n#### Function: `setParametersForSignup` (available for all request methods as custom function)\nThis controller needs to be placed before routing to `signUp` of generic controller `generic-users` to assign and validate all user profile data. See [Example route of a signup process](#ExampleRouteOfASignupProcess)\n\n#### Function: `signUp` (available for all request methods as custom function)\nSignup adds the user profile to the database and returns the user profile data in the variable `req.miajs.userData` on successful sign up. You can use this variable in all your following chained controllers defined in your routes file. So if you want to response the request with the user profi","maintainers":[{"name":"7factory","email":"cmps-admin@sevenventures.de"}],"time":{"modified":"2022-07-26T14:24:23.206Z","created":"2016-01-27T05:12:23.797Z","0.8.2":"2016-01-27T05:12:23.797Z","0.8.3":"2016-03-04T09:55:54.965Z","0.8.5":"2016-05-27T12:13:35.535Z","0.8.6":"2016-08-05T10:32:41.602Z","0.8.7":"2016-10-19T15:06:56.041Z","0.8.9":"2016-12-08T15:56:41.365Z","0.9.1":"2017-02-23T13:35:38.186Z","0.9.3":"2017-12-01T14:36:33.985Z","0.9.4":"2018-01-02T11:05:44.326Z","0.9.6":"2018-01-25T13:57:03.625Z","0.9.7":"2018-02-01T17:01:37.153Z","1.0.0":"2018-04-24T13:29:48.955Z","1.0.1":"2018-05-16T09:41:00.597Z","1.0.2":"2018-06-15T14:43:14.685Z","1.0.3":"2018-10-04T11:22:00.869Z","1.0.4":"2019-01-18T10:36:02.309Z","1.0.5":"2019-03-27T09:21:15.365Z","1.0.6":"2019-03-27T09:29:12.828Z","1.1.0":"2019-10-14T13:48:02.189Z","1.1.1":"2019-10-21T12:39:30.376Z","1.2.0":"2020-03-13T09:31:24.187Z","1.3.0":"2020-03-23T12:52:56.314Z","1.3.1":"2020-04-14T17:04:39.873Z","1.3.2":"2020-08-24T16:14:31.609Z","1.3.4":"2021-04-10T11:57:50.421Z","1.3.5":"2022-07-26T12:21:09.204Z","1.3.6":"2022-07-26T14:24:23.115Z"},"homepage":"https://github.com/7factory/mia-js#readme","keywords":["api","framework","middleware","mobile","endpoints"],"repository":{"type":"git","url":"git+https://github.com/7factory/mia-js.git"},"contributors":[{"name":"Adrian Kühlewind","email":"adrian@kuehlewind.net"},{"name":"Kamil Fayzullin","email":"ka.fayzullin@gmail.com"},{"name":"Patrick Pittich-Rinnerthaler","email":"patrick@pittich-rinnerthaler.de"}],"author":{"name":"7factory"},"bugs":{"url":"https://github.com/7factory/mia-js/issues"},"license":"MIT","readmeFilename":"README.md","users":{"tapmodo":true}}