{"_id":"ut-port-swagger","_rev":"92-d00bc55d37125b0945c7b4afdc9a8608","name":"ut-port-swagger","dist-tags":{"latest":"4.5.0","next":"2.0.0-next.0","audit":"3.1.0-audit.1","report":"3.1.0-report.2","auditAndReport":"3.1.0-auditAndReport.6","authorize":"3.9.0-authorize.2","bluecode":"4.4.2-bluecode.0"},"versions":{"0.2.0":{"name":"ut-port-swagger","version":"0.2.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"swagger-parser":"^5.0.0","swagger2-koa":"^1.0.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"623fc07018fe4767e2b04968301d395fae808a75","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.2.0","_shasum":"c08555e8f44fb7aacd1804a1905d80034ea470a4","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"c08555e8f44fb7aacd1804a1905d80034ea470a4","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.2.0.tgz","fileCount":25,"unpackedSize":45108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDqiWCRA9TVsSAnZWagAA1JEP/01h+jcF+OYVh+GsG2nY\nOm1nWg7KEy7uC9CjIKbRbUkOI0ItdHhSWMhRhJ0h8rNOfPZdwGY27Na05Yip\nCUfxAbN1ePEornK8eSL0Ub74YJoLuwMrBfavOXU5JdfTfGnHOczUeZfJJJqw\n3IkKhEL3un7sDS81/Mc/2LAbqSdx9k0OOnfa1pWbctSnD+80rxMOMNhnxf1b\nwhxcdoX7tYUcnFP2TPtQAPufAQpRinnilWYgQf+t//Wvz3THqbV/3P9DepyC\nZljD4zJ94OwYeiQzXttLm7eKrhgYnF3PSIdq/czG4sWWrQZDnyE2ZPIeMLPO\nbEWrqTSGsKJeFpjCht3SQBxRG3PQfxtde03+JtEYSUn0B5sT/Fm4DhbIIhsC\n1oHYJzRh/wnH2kfYUYYQE6FLbobXpzscpdkM6IM+QnhHtZNw/570HyvfJONz\nB0wqDAWKjv8lUEPFm0L4H/G1Gz3KD20ibr451JYHRQA2XD3UJ1mh1g2v3PX1\nbxVrJpdEzPEJ3kQJXeTEHb/ZBqvmMdk9MsScwmmvXPUiPjnSVypDxP7/iB+d\nxEQc/DmHOlZOBK0KJtZP6jJCrGoX3b/934JH3YFX2aksx7WFEUMRnMijMpG4\n4RRv4qd6nK45y6+q3wGS3N6Z7rUJ91Zy5/sNbtWzjE8nuwUlNbp2Bxs8NhdZ\nkh+V\r\n=NVHf\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-Dr/uPwt8Buxq4AzbH/JZM+/ZSoE/cYLYIcOAsWNuCL6t3mVzW+POftjE7S95zlxPneTlZgj9hcgEWz1hhoc8jw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEHRShgx8cADekBH2tv0dNCqCpUUMQomXD5aLRFLAahRAiAgjYXPB0KTlT0W2hWh/Z6ZmdsKYpbMTSdSVqSO2oV2Ew=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.2.0_1527687317784_0.43526177145873945"},"_hasShrinkwrap":false},"0.2.1":{"name":"ut-port-swagger","version":"0.2.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"swagger-parser":"^5.0.0","swagger2-koa":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"fd26255e29ecc5d5ac6bff5cbb70d6483943d355","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.2.1","_shasum":"df6b66df4b7c143096f05c710e22fbb9bbb8b69f","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"df6b66df4b7c143096f05c710e22fbb9bbb8b69f","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.2.1.tgz","fileCount":23,"unpackedSize":44066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbD6zHCRA9TVsSAnZWagAAId8P/2Fw18w5aiMXNgJEnYzK\n0PT42BfwiRX98p0Gro/FOrfeDuWKOe15t6B8nXOA6+VR+ghdsgkt2pnwqyO7\nMpVnPFXboUnSG5PudiHGMx8XPC5UkefPswtoOSHiuuXbwN7zYzO77XqJ0fWW\nqp0O73ZuN3cWsykzqhAHvQaQCCdF5qXP0lPxVrrGDeWeu7t+vMUn0cjOaNJD\nMDMovaZKoE4VibjtbxuYioI1Lfv706cdNVkc7MqkkSC9XkY/AwGwycR6/i2p\nC+2GuHJc/lLiSE1/vXjWi0RIAlGMjwpgUEpVwek2SZbJ4OleL2FmGPHspQ9P\n2PuOPi6+z3ix8Fj2ov0vLq/zLPJkRkZT7+udXGCZQFokvy28e5EcLpAMxr90\n4vGpxJOmD782hDBgUDw8TMOr+aMBgYMJWd7dfi/Y3i2QcsWR+IbbzXDle7lD\nlddk3uNyH/pX4ieGfY7CXziQTM7pnpmC/3X05Haefe4E4fu/reL8D182HxgY\nqQGNz06NkEFukJrlqbTZU05oqgpqaZvQ4WFwz5aYSKYLxrq9Qz78iZzhFWBA\nxaZ/S/J4Uk5g9hoEuSZnYREweTw7SvXcngNuKSbdVRT+Ydmcsh0Lw3Ogk4MK\n++m1RSTjSbbQLqZAbTu/ZwxiooNXyISueaCCgOAq5GqMBdo5vKku64qn+Pvv\nT3hW\r\n=wKL3\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-aelVFN3c2O9VqI7eTE8linO8l8MnXiVd/7+xPCpGzo7QlyYUSGqNzquBr4oMcl3aW0XSBBSnNgdpyPQc1rY14w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/42HJZIrHOgQtzQeV5Ucv06x/1HkIRGV34iZw9ofzDAiEAqYrjlgLDo3CeBwAEfQpDheiKTshOKYW40JFe1bzW8ZY="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.2.1_1527753927107_0.5780073785044935"},"_hasShrinkwrap":false},"0.3.0":{"name":"ut-port-swagger","version":"0.3.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"ccdafbd04063049a2edfbcb6168355cdb678a7da","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.3.0","_shasum":"a577b4bfac1b9c2168092010afac70f2de414fca","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"a577b4bfac1b9c2168092010afac70f2de414fca","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.3.0.tgz","fileCount":31,"unpackedSize":52282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbEUopCRA9TVsSAnZWagAAYaUP/0GEmA9Z+/t5Es9XewRr\nzAvIWNieKcgzcing0kmxUdwd9y2HFkSaxFFeUC23CKnnjGZJvXJh4MSN6ZVT\nM8vKl20vQSFs8JtIHryMX1PeXESS/3yy/ghAXj8wmV9qstgDsboX8o8xh671\nnMQ36hGDFH6auY8FOdB29jV665fnm5CmDCSBlTYdGPHF9EDBrDcHIDEFWgxc\nbhw/YtdLu2oKvFmZhlm5g+3Pu9u2RqO7Gq/4uIniHH7eE/adYD0Q0umJLBDG\n5FxuzlDElnvt6xUEBd5TFq60T1g5OxeEqU97dljnvtJu+Bhhmkr8M3aAQan5\ne5eg1kSEkRfi/c3ZiZpx9R46Uq6vyJ7LTT1vVQ0a3AqUkTuV6xYbTJHgOzyQ\n74StY3MbFaLuBRjphAOKpnmoRZYd45kvPk0cFgs7WP1bMsbQ9hf2EGStQ6oF\nhBamwRiDxDeTBgPSWU3h0vyWIQHFQB38I1Mh5bb1rTvuc4OAyq8AjVFLqnLx\n50y2la9qA5nWNtv9qKqm7MyRtulOaqGA+RtSguFzNSd1rwCiFn/UU5oUJGUu\npDiDOpPGnQfZ+gQ8sMRDU1E592jd1A1t+7APxUePGPUGCQAsDu0PxHX8QUx1\n4UvBa5fuR8dWH3ZWxpBkAY5QCMwQsFXuEYQOsaQKXommhAQVqL/I2I7Qgwmy\nPKW0\r\n=PrYG\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-UYHo+6VSEuDrIUzLMjJT5xQ98WoepEcLigpgjob8RAmYLjOU1oeXzjyqWmqI55hBcQfzxt74F0g2b9pQNo/1lA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqRV8dAKVTm7+TZANwb4eSvIo4kJIGBb3wih5BBWrO+AIhAMuscLs/7IfhsEcI2aX8gprrA17asC6l0lp6H0kFF4pQ"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.3.0_1527859753072_0.7252659215321575"},"_hasShrinkwrap":false},"0.4.0":{"name":"ut-port-swagger","version":"0.4.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"4b722c9c57fc58f4eec32ae99e2ff513bff1e51e","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.4.0","_shasum":"1419e0fe5e33f10517eb2255491bda56601d98d9","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"1419e0fe5e33f10517eb2255491bda56601d98d9","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.4.0.tgz","fileCount":31,"unpackedSize":52557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFShZCRA9TVsSAnZWagAAjnQP+gOXqMOL49ypcM0kmGWz\nDqGkTbNdvJo4XnLyrky89kzMhIjf3tkQJsIgmvBewOMnVKiVqzhfO5vesiTG\ngrLtm+pqBsWuUUBxY0caB7+xrcDgqQnZZcxICPLY5ucEzqxMGjy3VCv3Pr/r\n5T9b+/5moMZxN5LrVP6gSToJncnyPAPNy+QH8lefm+dSiW9i+LlT4uxxWGmW\nr7apfDS+TKqe5nO8YrBmOqTv5FmmJ5VW26K0ui3fgD60bBQggz7kptXNE47/\nl4Rtamupxx+dcBKBghUtWG8cpNLp9ZcFFFlgvIJkGetjAlZ2L96Xlxyi2wgd\nQZgrMnKRgsXuOlIkuH6a3w4hIPXLTsdB3UvxDCOK8Hm72nYdsdnQ4pbSw+6S\nHOa/wzRz/Nn/nAwCeRmeUEF6yrCPrnvCHPujE5BQhxM35fEqcE9ae9JW1jBo\nVvhIOFzDHV6VjdK3VX/ducH6A8siFLx+tNJWrs5ukU376AdeBKqT8mCJyzVH\nCdbwKkWM3C1Kja8J+D2Gox0tIUixwRNjxO4/OFrYwtX+QpsiSaocaasbewa2\nN+nu/m52v6G0BhXSR3weE0qXxcjBV59STyCJILcFEjUfATtbrF7GNT5ycKzp\nJMsShwNlfbr3GVOFqXXfmCHF57lKvKiq4hPvo3cfYDMDwst66TOKVFkPOgXv\narJk\r\n=Ez3B\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-QadstNJL2Kaovmd3+TY1LYb/YtkD8nDdu/xBufuwacC7eghpN8DQR5RiBiTKIGkLgk1+TAV7rFeo0L/Rf0Y2Zg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJNzCLv6v8sHn6jrKpKjbuLB3i0ZiiFWTLOtoxgMFiggIhAIm1vlZ13hVNQgf2xr/IYRW05e0RKlxjRTt+O3FaETAM"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.4.0_1528113241075_0.1980685124610364"},"_hasShrinkwrap":false},"0.5.0":{"name":"ut-port-swagger","version":"0.5.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","lodash.merge":"^4.6.1","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"023efc782fb44db5c7d20fa852463cb536a71203","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.5.0","_shasum":"2b3b920e286804bbf0ed1f06eeb1c85f3d9e196e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"2b3b920e286804bbf0ed1f06eeb1c85f3d9e196e","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.5.0.tgz","fileCount":33,"unpackedSize":55030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFkvKCRA9TVsSAnZWagAAm6MP/inJO50eo6QgnpyAGNHt\n45QOW6XJVEmCjG8E8mAH+2RqsNQWh3wEw28IjXXwAL8nz1LdPOQVzbhUpbw3\nksPP4eHFEEpfJ/l8DSZThromACk2bwvtuxVcKJfohBsQOLDjtRYe9KOq7NNO\npeWLoK7Mu4eqBvMiSu/6dB4yZfjI76axGY5UAgBIfJAo3glhM+aWPKEv/FWc\nPonTBieO2fMXAm2WvgIKWS2CtCLfeHw3qtiuKs6XMjY3ZWO+ukAW639yuOx1\nCykCXwFL6a5oYVMYT0RdJ8ny0MKn50DYgyyTmb2gQeIP2imdLMhrz0ceMCw1\nAlMXdu4o8YDK4uORilTekUBVw4MomkjIlHykszMBBb57a5X8phEOx5gLCAzd\nAK+VAW3+sXeeBRYrnhy6Q8/6fLoGjwyZ7N9enCdub+1b000yA1hwew0epCH5\nVi3/rePSYEklmDizOyltth4CZMfmgT+JVbrfetPs54pAUy/HzZyVzl3WSk2P\nTZYQTOqYgSp5RHMOK9JRN4B0+6Xi38msDrr5qbM2DqY3llwEwSsUTL15XHhY\ndCwtl80mY9f0+i3tX4YsmKnoxZGB0YdSY6eg032Yz9MI+Yv9Byqz9pl0JRYf\npXSPb7xj+xO2tQlryDJNbmiKVZhxpIlINsglBzL1PNYdqbGiSjrmtz10GY8/\nvzuF\r\n=4SDT\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-dAaQmZ6Zd7sKr1FM7RSME3JwhYDEZhkffNAxwaHWK0OVTKdB9ndwAIexOKXyNaS1DtNIAWfyUW4yhaJM0Al9ig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrwU3AMXLsX23WoEME2iEP6rfNT/3YkkIC8vMkPAsM3QIgKtO2XcMhqOeVJv+VVX5q/FLVj3NWd7uO8NdOt12Oqi0="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.5.0_1528187849823_0.6619818010956096"},"_hasShrinkwrap":false},"0.5.1":{"name":"ut-port-swagger","version":"0.5.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","lodash.merge":"^4.6.1","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"5779cc17fae3d03d6441b882362315879d705780","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.5.1","_shasum":"b2bb581e30332847bb2c313ecaa18a097702fe18","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"b2bb581e30332847bb2c313ecaa18a097702fe18","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.5.1.tgz","fileCount":34,"unpackedSize":55582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFpOiCRA9TVsSAnZWagAAWFAQAImK1Uqf1/Rb3jtc3wGx\nsI+kHQduz0J/hHbhNrszCauDdvDBDHoBfiGNGCTEpZppxlY9RhKuTyifItW4\nJaDL8QdEEvj34HCjT9pBLbQpFbFPZzIqXottx7t9V2pIq7OiIbsargFw60ky\nt7kS9sPYrC3CXOV5JGULd78HsyGZG8DMwgECKEdukZW0q2FDjXX3QunWcCtG\nAVaQSIfvEKzh8Qwr5tp6ZeNaSG02AV0YjxRWunOVFXAxbpq0TrwHlJadbyzm\ntxjRjQuN/XOq2hrcCDVT91F8N3t9yx4c2wjA5bkYTiw9maD4mbFQoWxljPKC\nbbXyP3QsOs1k3WjCsqUOP48Jf8kQCPvvI5gwkL7SmBs231+YcBVbcDWMRegu\nJmcBUruBXV+NDvzKtRPbx49YvVDxNNMwmoqwLKAKGyAoXByNdOUp9hwiiCRJ\nT8FiPBgXsuTr/aPVl+onrzZeK2NjDV+Llh0N8yuE/df0xiCNlHJ9m86k6KEt\nPQPPSGKVT/LYwQb3lXzvJC1utqF5zfv0llBKdgxO6I2gHkkOw212221YexA8\nPyY0AQv+iByBWoN/D8ecdI7153bKt9vw8qF5DCP/H6dhrmK9I40j2p9jVSHz\nIskUZ9q49ceSXo0GAv3v419TtaSuhsicqVv9G/s9jjuoV92lzjXDekD9ZDwn\nxE5i\r\n=k4Ss\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-dn+AjG/+hKyCLSdHHara/tddg0lrNOVSaKF1aEad57UyjXYlWX5cVN7bIHi991Rwq/T9dFVJNghezx/se5HLzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHBKn+mLi02GQNRWE3XCO8QYzIi6NLITgxgD41k3q9itAiEAkuonDzw7EF/SBVxi9WxjDcZE5PNyjMOSWGNcZtbwMVQ="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.5.1_1528206242489_0.16827909710852773"},"_hasShrinkwrap":false},"0.5.2":{"name":"ut-port-swagger","version":"0.5.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","lodash.merge":"^4.6.1","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"2fbe186be64de79f2bc62b75c96d8e801e6ce6b8","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@0.5.2","_shasum":"82ff7b53b96ebdf92af7abda96eb4feb2f159fd8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"82ff7b53b96ebdf92af7abda96eb4feb2f159fd8","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-0.5.2.tgz","fileCount":34,"unpackedSize":55710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFpjGCRA9TVsSAnZWagAAm0AP/3nnhqV9Be7cq8ECFcfH\nenqlXse3zUuGmlYN3ej9fyQIVPD/OwvF7ql2cTkilSVnn+YXj/EpqCysoNqJ\nNLf4YgX0w8xTXf6eFNiyJy7T6Sg4xRDr1qLkD5mhdND4NjAD8sMH614kixjg\nU+NeHWx/KQwZTeZyIodLtbPptzWYmYGycYv70mvmZDl0jF8wCaPMWog6p82S\nsbFFiTm8HMenRqHR9S60w6w3xw+Tgd5kHm4z4RTAr/V5PhooWF0v/DKJlo93\nZvs3Cjk7VzzhFE2SD+4ArRNTr9JiMidK7pd9KjVIvQ0HEeNPu59PeY5Wyb1b\nk6Mzu+rFfT/kzhBFs87A+zZWRWM2nDjLiS0yiVZFPLRUyacs1ao3CTkzdAdI\nxn0tdDCxIkhkJ9AY2lav7PpxT8MeWK8U5oa5lIYhOU6uvtUf77ixoeZzzf0t\nTiLwaQSUoR3r5mMNtu/nhBmcYZogH60a4MtVzFRWbWPHIzSKohNgbpQZkPTq\nvn7K4r8a7zhJiZXY0SNz3Dr7iG1FvgmCMhzBMNjCKQ7mehswi6zvT5JR/4Jd\nKuF6tC1MxQ4E0IxP9KfueB+2cov/fc8FRCCzTltipxXfgkbQlC0L/QgGVJa1\nmpJrES5/pCgYVkmDZn7gEbkIDsJi15GatVsz5qzi9xGuTQSmnWXZEjnY1pRe\n+m24\r\n=ccAt\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-N3Ks6kbqrNMmSo9oDXQuOQbNccueoEBA4T6ezkDMCJtdiCR7Zhb6PcjGwkHMwXid0GlNrls0n8qTY5tAGdLaxg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9XwE1FoL+rQOEdesXYa1oHomZ4n263GqJ3bv5EVuI3AiEAzpwo/GITc/A1kZLIngpgDP4iL86/j9orizw6QwX0EMM="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_0.5.2_1528207558270_0.7262509093626113"},"_hasShrinkwrap":false},"1.0.0":{"name":"ut-port-swagger","version":"1.0.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","lodash.merge":"^4.6.1","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"54fbd2ed84a0b58826259d1d5f59a8037e01cd23","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.0.0","_shasum":"cb251422c4a1af29bafc4461a19428c45aa238f5","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"cb251422c4a1af29bafc4461a19428c45aa238f5","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.0.0.tgz","fileCount":34,"unpackedSize":56654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbF9nTCRA9TVsSAnZWagAAdmYP/ROCcwkA5VROsgdpqUaD\n72ZNGcucho6EuUeJkAQIPiFayxdWu4aCfcD/rrXBxD+4mnRWPEYcO1rXUju9\n/VDJkyhoZDDp/9zEtMxqAjuy0Ccvy7jk8toZYj3EANlyJpZhnGggIY2DTDcp\nDOO6JxqfIeKksC4n/0Hr2PtHrh01Jkr+2SRmnzalUVSvvKc3WA3PSeSeSuXw\nUk1E6V09ZfV08VO4xo9M1dHAhdeW10JqmdfESuyLULR0SUgIRXn4oYzS+STq\nVCNl/rANrREfM9N4p1sCPf+0+WgEF29zCh3xAvIowmTIikfPA+K09yys1nYI\nKxabm/A/ocfVhR8R/vZ7rl7UoeWIycscQzKRub+dVMvdH7C+In4dzByXdvOA\n7vqsA0/h82P3CO5Rl7TLST4W368BXdMvRDCMjFgWIH8c4/vyjJ+pNos+i+3M\nfE2MrRl0FVJRqFCZctIEEpXFtak4MqRrPNneLUJlBz8XSMlgpdLOOox8rgHN\nL7wkv855iozeIKvt+VFa67z9Rmr3dMvUtP4MP0oHuSjSt0FcW6ts5Jd4t80C\n5EbGmx3rVpm7iwS3BcaobdCLC9t+E3SPyKKun7npv/v8fBTi9voLJ8IvzF16\n6FUDtbuXbrZlPHh3dZnoK/7dsFKH6IoftirSFouonHysC3BSqSx+oLl2i22G\n4W/7\r\n=J2d3\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-uVYGyM7HT04IEBPqeeTgBopZk2pDTgL8SMnf+5N2a2bnUQJeAVKNIz9UWPgSNquP4nhj7IvfD7nwAOi9MSSFwA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICmsZjZUJZIpp7ppeV8aIsTtzAJWLF9wwoaMpHmVxA9qAiBMgflqA497LBPoMwhA1vMFLeS17Dkya2YF1r31LYk82Q=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.0.0_1528289747511_0.0237309395489127"},"_hasShrinkwrap":false},"1.1.0":{"name":"ut-port-swagger","version":"1.1.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","lodash.merge":"^4.6.1","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"8e0a84b93af73716cddf0fc6ce6121c26bc119e5","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.1.0","_shasum":"dc039a7d7bc7a510b1d5f0bf68619e7db7345644","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"dc039a7d7bc7a510b1d5f0bf68619e7db7345644","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.1.0.tgz","fileCount":34,"unpackedSize":56910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGjHQCRA9TVsSAnZWagAA2dEP/1fwGPpyq76DnBCIRHQL\nL0KBO3dBKODnEEVbpdwOoTC87x3UDqV4p1b77bECYyze1NVPzOF8NUyHqmdF\nku49QTrIaX6lM6NQyfLGrQtlaIDQ1hcRj6nAbAqrRJssDyrtyKeM30sOEKh7\n5C3EG8SGd6cE5TReLvGVCmwIq7ZjNWQl+xc8DcakO7PJ35aS6AbqTo58dmx0\n2gaEjyz1cPULuXxEicdMIiip4fOjbr5rII8ogyApDHINNLYquHlVsfB41wTl\n3O1GNJbAE9+KoUPkDTZAmi3G84WlPdZ1oERZPWxa204rlRKgMvigvfphZUbq\n3YTwPZLHTJApnWAW5V6NluCg7mscBVAqjSATwW2i32rXH9opxbkzpFeQT94u\nEJfgWiNoq6nMAlZ8MVSL5577Qy4L3fvIhCkTcPzX36ofzPzt5s8REMdSOP6I\njaDPQ+3NqhHiN/jMdCeN6O2thZNm1jCEhmfT592k7+GTJ6tY7en5yQLu5OxZ\nhk6v6DNK4c3Vd1uk0tNfoqSVycPVkVOxDrQuYUv4XrQpwJmfwOAJn20+CjKY\nqChPLjaoDg5xa61ENV3zfmawv9E29WkD8yB7DnryFk59NVLTFI+390DhB8hK\nX63XYnMC28w07c1VDsPPrSEXX/pT4CmL9USSCnh55pvlvw8jkIhv1/n1h87w\nL7/9\r\n=vt8c\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-02LLnnYu533x3msKQmRcRBWhuDquNi8c3RaTTj/Dsx7DEioGScOBGjs7wJy1nT5a4fooXrMons/xh06NqNpvJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFNF4L7yovSmMmkPd/x/Xoy8+mPdr6SUsEzEdoORsuQYAiBjjBhKwJdwRAmCKDlqshoM7JMaQD3KDOz1kToNL46+nA=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.1.0_1528443344336_0.30604946284913304"},"_hasShrinkwrap":false},"1.1.1":{"name":"ut-port-swagger","version":"1.1.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","lodash.merge":"^4.6.1","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"d29f4ce0c78e9bfd0e998ae898145a0e4e02b865","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.1.1","_shasum":"67ff8638249aa96fc3bc56e3d647dbcfd4306764","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"67ff8638249aa96fc3bc56e3d647dbcfd4306764","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.1.1.tgz","fileCount":34,"unpackedSize":57681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGotxCRA9TVsSAnZWagAAViYP/2bG2SDROgWLAx+/pKcR\nrKJRwxpm78XAAERODrSSuMYnS8FX098ntwFK+O98sbb2p/Qdl85lwp7SO8/b\njR5c93cYOHrpGmvrwsMClL5IiLqK6bbhNhR39jlJhKEnOYOpmmZdYuNmUq+3\nooWdMsdr5lGEkpNjFgYl7jRaCJH6FaYoHkE5Yp8CYlm3MPbJaY2z9pOraOzs\naPp+6IyudDn+ewH4BvPYA48CrNT4l9N9nrYMkiG6y74qKqaW7C/kZAPJMFHL\n7mozNvvL9mWpLU8vGqF5tlTwXE97eXXYZWstgfgcAUn84/OMgTrBeElf2hiL\nV9uF1RSe2ZWvBjL3vM099Ju6hC/Mu+25S/NptiRTV6B7OUsdF7zFxzib5D7i\nvWm50IkahnrC5UNKOWDW86cWXDztIPc1I1Il5SPV77ASpaBQt3ufMVIHhDB+\nXAhQ/vVj4xDpnJCjn7x+n/1+Uch0pANqd/sjs3HIMMx99zUIYcWZkrVBsHYZ\nWh/CDeR8yp+HOgXe2QzLlQa7pyk/PBoBTPbBfimnvHlPpBBHLgpM6Pq2bLPK\nWHJiLJ+CehTTJEaB4Wt447V0DOTyFI4haSkjpW2dqAVr5wFXj0sSXH8pZsE3\ngvXYHH1QRtEkxPGTG6+MRCWHSAfOMqMoqiOA6pvxeRzZayJT7QG7FKgj8wvM\ny0Q3\r\n=5tVs\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-zMJjmqDwMeRL9Nbt0IrMpcS3vn3YT9fyqDt0aEO7rlB+UHLKUk3HxrpbrqcP4DGbWg5QTXFQnSDm4S4nnXcakA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnpCWxRIMnpeZFampg2yLeaZfW2BATKavYcl6Leg2IaAIgdHq7ZHiJ9Vvv0xtDp8QUY+qGsYTey8H1wHe+F3EbKYo="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.1.1_1528466289449_0.9746035989018806"},"_hasShrinkwrap":false},"1.1.2":{"name":"ut-port-swagger","version":"1.1.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-cors":"0.0.16","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"5436bac594465ca687f6b524f18c05d4b6af8f54","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.1.2","_shasum":"b007c6bdf8583ff97ca6ece522afeaf35b1c2a49","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"b007c6bdf8583ff97ca6ece522afeaf35b1c2a49","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.1.2.tgz","fileCount":34,"unpackedSize":57871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbG4CeCRA9TVsSAnZWagAADJMP/1cILKtDhBrBH8L3Cs+/\nS3GD/FF4dI0h167hJUchLj5imyVQapPWinhZnnv129rsjr8DwXRzb+zvY+UL\niGgS+lEiu4JbZqk7K35wk8Rkn1DrvAHZkxP6qQirVoFDR0LxPaHfphfz5taU\n+1HENmROTq3IKPhVvFhstscSUrqP0AgGRTTDAvdVFuw7DdS3KzpuuedTZ5/4\nlPx53Osbxhsfso6Fsnf7I4+pdAjK4ip4P4mk/WsD4nsChiWsF8wdurO2KcSC\njuiTwXjiLEWg7GFmE95lbjxJgaISl2egYWEqKUzZ9bHxBlpReDB0IzPbiy7g\neJjGyxJVO1wXweEuLNA/Gan4rI6+27kbAwEEO1NcJy75hXSqhUYArRQabKX9\nK+SNh2HyH8ZaYZyzMry7a7lQwj0Q2ODd4RNS3JF9RJ2WZfhQQoP7nj4M4foT\nFF3h24CK9ysq+9r4wbE4pfMaY7snkuDtQvhrfavg8f9uznidMzBB9iMhWsFX\nR7zqjVSfUVgSMyI6oqAMQL/JGRSU0DJfu1XTVwlDpql0z9nahy3wWCiXY+OU\nUYY20sxbBCHWiCE+nYQe0DrdNSj8zJjwUkesFiX0QeXXU5T+o2rCEM/40uKx\nSd3qTFtDUWtg6hPxkeIyqs4eGTqVaPAvBOsMENuS8vs3JhViejVin4mDPnfn\nMvHU\r\n=YwL8\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-LXLmoYf0gnSzNSgD1mEr3PIPNg89yi91RnNruSG25c4aTVUD81Qwi8NOkAXkmxUqTEa2UpbssHguyJ1YfLrcdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjxran7wT0VfTVq4ke1eb+rE/WM295MaZ5/yMKztMpHQIhAPDjbIFoKDUEpiZ7u1RJB1rmj9wdlLDGcRXYGM+dZxPC"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.1.2_1528529054208_0.6004005658510276"},"_hasShrinkwrap":false},"1.1.3":{"name":"ut-port-swagger","version":"1.1.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"0868cb4ce22d6d91fd19889c975a745a5edbf41f","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.1.3","_shasum":"bd33e52050a3c98656ce8886f5d1bec7462dccd8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"bd33e52050a3c98656ce8886f5d1bec7462dccd8","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.1.3.tgz","fileCount":34,"unpackedSize":58159,"integrity":"sha512-O0rWXjJuD568TsD7XTWLgrOXXlaQcnNiq/8nvTiTBs3avT9XJ8yILjCShK60RoM0+Ivc/r0diqGEShSvIX6Qzg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLVDBQC7Wl53KVbCmtuvFXIP0FttVURSH0M2TspM6YggIgaEESzYCEL/FMBBiAUVUEOx5pemieWbIUtrA01BoWjqc="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.1.3_1530094767539_0.7499878119071577"},"_hasShrinkwrap":false},"1.2.0":{"name":"ut-port-swagger","version":"1.2.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"ajv":"^6.5.1","@koa/cors":"^2.2.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"7132ddf806fdd429e71dac74433f175628f6286e","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.2.0","_shasum":"fd8aa8ca74c2d63ed90f2db135ed3ead9000c512","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"fd8aa8ca74c2d63ed90f2db135ed3ead9000c512","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.2.0.tgz","fileCount":39,"unpackedSize":80634,"integrity":"sha512-qxmNOX8ZPwRXCW7HY9HqCMLgQbcyIbMRbikUHl+unCY1HfkQA/6qBBU/abhRcx8VwtVKHPZ9y1WRcaM2y2P5TA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBlMQAJRHOOAV4imaGHAwU+KuUfN0mOoyTE4Bqy+VlSOAiEArQRvL1hovtut0ySQeanIh5qN407YY88J6kuPW5VVPcM="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.2.0_1530198220453_0.6569839869617748"},"_hasShrinkwrap":false},"1.2.1":{"name":"ut-port-swagger","version":"1.2.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"ajv":"^6.5.1","@koa/cors":"^2.2.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"b23bff25f1da7926e5455d26f4993cc73e50329d","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.2.1","_shasum":"ecfe4d8c5299c34751ece2de43eb3611562bfa48","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"ecfe4d8c5299c34751ece2de43eb3611562bfa48","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.2.1.tgz","fileCount":39,"unpackedSize":82001,"integrity":"sha512-/o47/qTyGXOtWv6PPhSBu3WhUxUp6SwUxLHGBxVR8Ht50MHRepGTw9EFCB8RFwSYEXscSJ55DuT8HckJ2PLW/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBHgJpxzeH1TMO9nVNHCaQ5Zsg9B89p8nNtp+fjqYzeZAiEAkLkRcyaS3DzTkuVl8YtvebjCBQP066La/M/vV6JybBQ="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.2.1_1530623655180_0.7355297642702978"},"_hasShrinkwrap":false},"1.2.2":{"name":"ut-port-swagger","version":"1.2.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"ajv":"^6.5.1","@koa/cors":"^2.2.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"20b2999d2d610c1b7e75b82968512a7f7176913d","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.2.2","_shasum":"4b6e8dbe6f41d50409f6148c179b5143c01d7b59","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"4b6e8dbe6f41d50409f6148c179b5143c01d7b59","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.2.2.tgz","fileCount":39,"unpackedSize":82303,"integrity":"sha512-Cpl5a1TyVMR6IW0fqJGjjtXS26fQGy4ricD5YmTww/AjRLMVeLph88zlytihLGUrndl6ZW+2VaZDCH3zo25WMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBFIvlvu7uCrz9u0G6AoqWx5lOLd/b080SJJ+6KCTydrAiEAykEV7wUOr05kqzpgKHrlFq6ETBkaTeu31ldk+868hG0="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.2.2_1531148055481_0.18859572772940902"},"_hasShrinkwrap":false},"1.3.0":{"name":"ut-port-swagger","version":"1.3.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"8ae584ee66ea2c8cd2fa07d8f3b69cc07aab6174","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.3.0","_shasum":"e94b1ea40ea39f6f6b8ed2540774f8e19a342467","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"e94b1ea40ea39f6f6b8ed2540774f8e19a342467","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.3.0.tgz","fileCount":40,"unpackedSize":83471,"integrity":"sha512-4G39vdEhTitXPKcAJsgvS3k3ee1qFbz5ANh/g+3ZL8MpnyltC3pkVHbFh5cpY96ZjKLO2xsuPo+J0BimQxQBig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqwNX2vMxEG8CYwAGZ9J8gp7b4oeVSOsxnNWa9sJlE4AiEAt2+AuB3JJ1W32kLErbPCkR2ye9EdFa8PJwD4hIKDDGg="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.3.0_1531923825922_0.20991265543900828"},"_hasShrinkwrap":false},"1.3.1":{"name":"ut-port-swagger","version":"1.3.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"ae6359317f47a5d3c94a9e4cfc17e3905fead4db","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.3.1","_shasum":"c958e5e4feef9a842fa4aaea0d814b3634ad51a8","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"c958e5e4feef9a842fa4aaea0d814b3634ad51a8","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.3.1.tgz","fileCount":40,"unpackedSize":84123,"integrity":"sha512-QkF5zO+cQQH5mPkkl6Prdw3qtnKsMOFI/LJW15Y1zDpWSWhvOdYdcjIMQz6flbBzHsNU1VFucR1vdK4ZM4ZkdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3zERYtW4whT72iBqsuYFZdSdpYgIkH8S8AGYAtKMHXwIgC/UWlNkmys/4WkMUL6aOruJDyaHmz98AWEu2VJZYLTo="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.3.1_1532086520284_0.529830854167398"},"_hasShrinkwrap":false},"1.3.2":{"name":"ut-port-swagger","version":"1.3.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"c7524dd8a8522718dc48b8d10bfb667547c04c28","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.3.2","_shasum":"3fc1da6173b2f1159e16600f844c8d0972077921","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"3fc1da6173b2f1159e16600f844c8d0972077921","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.3.2.tgz","fileCount":40,"unpackedSize":84962,"integrity":"sha512-6A9dVA5VQW4qZ0jABFi4vt9NKEZBcXQZRhjaKOQNdV3rA4fVAJM5WXtzcrVPrpSP1hlsOgp4PIja9i8GYi0Irw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIrGz9L0DXM8GzHrpsQfl4++FzzAX43o8inh+zbPp+oQIhAOrpPxePxTvoYzKax7W1PxW2nV0z08roYARiCTQpmeU4"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.3.2_1532516058396_0.1315000777083717"},"_hasShrinkwrap":false},"1.3.3":{"name":"ut-port-swagger","version":"1.3.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"8641f4a77c89878a06b16e0644978a68b94becc3","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.3.3","_shasum":"c3e22becf0873d092bd87e13895d2a38ab8e21d2","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"c3e22becf0873d092bd87e13895d2a38ab8e21d2","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.3.3.tgz","integrity":"sha512-M7U9I2bxaqG3JvZrttJTR5ZnAklcUdkl2v0x5r/42l/bQxhHW6KhEI8MfCJRpd1UGfY0otuzgaNNqRDU4XHh6g==","fileCount":40,"unpackedSize":85239,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbaFe5CRA9TVsSAnZWagAA4AgP/2HFMPaFC2Dlf76TNiLG\nw3MARrKKLpnvdDBmKT5/uq649NiJFqaAdVs+fJai8Xi86SpGqU45MLHeVO8c\nLBQHyYlvJ9Tohw31H9t963NK0FEQ87F77BVOECRC/CC74Id6EikXA6Yyztql\nfx50hXXIpiUvi3ilU4xwfGbogbRZyaCHGBRgbPU7v37GiDQZcQgVBvmdD7AP\npuPMhBmKqaebTZkFOCikoIl/Te9lOn/CuvVgKDYs+wHV9Y0IQXsT5Wdse17S\nnu0mAf2PeaUx+s2vHB5HhMjNKViy5Vew458PYhD3uB7LEdGmRd5iP0jLylox\nQ+sQI+Uq7u6pcgUVabslM+Dg0fPFbxwMkaNpldTpBOk3JD4DRXr5P051YH9j\nBuceIgswIR6qo7kPPfyrWVzfVQJbAvGIBlXG6Uq8h4qp8jowNFL5bGGF+jsX\nCmw0tL7108LwpgzN6l8rE7bdT79gDdCXUs5vhcLBDPTaiszJh0YY/jZknYZU\n6M1yq3RWJkCUUSEMym4joB59WjG/PRrYjHezGF8WnrcXo5k1I7LUjR199sf9\navuU3Dbe2VV7LEVG1sJu1YXWxwE3YvlpcfxvHPgHm5hbvzWdQ8Mxhm39wRKb\nUDCrW2RbGcaG9k7pxk+XwY1wPWWNymUmfw9/uCFojECNj8Ed3effVDz4eISD\nwzWq\r\n=ipUl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnsZY4+Nhzw1xzguaiDKJjjO//dXN+z5b63c4s8QrXHAiAPT4kbFvsJ4/wZjfg8OBzg0l+CC9AUMeYe+8DuXENmWw=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.3.3_1533564856492_0.6761402975020203"},"_hasShrinkwrap":false},"1.4.0":{"name":"ut-port-swagger","version":"1.4.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"9e7ee97d51cc6392a97c58048078f6c4f439ea83","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.4.0","_shasum":"2abaa80349f190df09246c1f5718d39d8ccd18fa","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"2abaa80349f190df09246c1f5718d39d8ccd18fa","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.4.0.tgz","integrity":"sha512-UcEQsr4h4lFtZ+6X3FwzfA4R/T0iJRvKQeCWtdxQYmYR1XWeqKUEaV5PT2drfc8Tmq9r4xdkEPpLVvT/HbBeJg==","fileCount":40,"unpackedSize":85762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdBLbCRA9TVsSAnZWagAA1OkP/06ikrpXx1tGWddsdXRk\nFuRsoY781/ZmwwL/wERdYXG9TgexfxKqFqzTnwSINDPzxuOXusfpKwWfoVYr\n6X9+t+6EijS4USOsacOvb4GWrxNfWZyT+dLyER7/CgcG/Aunw5w2/rVL1Yfi\ndiIdRZnJ9NXEPJHdB93iKUiwE0h0UXsveuaOFpTgj4UCyEM6CeGuX1MG4ywX\nDwA531B5Q4bRxbBPQS8Xyhwcl64APmfq2/sTxylPuP3W8riAJGOgSrvS2fyV\niH7ZjBcxI9346ao3JFKegrYds5+wchAuqUi+al4fHGYPDMSQ+6BdPfNapCnc\nQ+9Qx0RS/ROU7IEcUO/b52C2SmZW2KhG3pYH49QB8TzayFo7ZEgQuuLRiT8m\nYQFmJ8KzMvxom3MEAs9hRZSCPvQedU/+jz+itaVzI2xmbt5XoUg2CQPQZ+a/\n+L2D7LqWIcfwGAZud8/cV1wimPILjlcMDppaYOB3d4knEigMTOIQeEMyxIxk\n4awr9sp7Tk0nTz6CHz6r+fyaTA6kHdBr7EOMjcY2eZVLZFyXX0uLMhDuVTIq\n94RzXETDHG01JAHsFHFuWSAC/G+G37MxSg7tw+vf9Vgx3GssPcJN3ot8ttrb\nbS37SzWIyjKBexUxOBueJzNMqhODzkKNnc4wQMZYdXjez7h7pbuVWOCSIwp8\nr9Gx\r\n=OdsC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFaM05kS8F6mFVNYKfwYhd19JhVHIxIANQCyaKtLhe8GAiEA1Zs14BlGCigP0ghEe7KjjmZze2dldfjebsP/iB5Wk90="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.4.0_1534333658882_0.2072739598531299"},"_hasShrinkwrap":false},"1.4.1":{"name":"ut-port-swagger","version":"1.4.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"57b69daa048d7b712be0ec21882bae58e8203c6a","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.4.1","_shasum":"3c3dd0661bdcc80dbc6c960c9576e7ccdcd7819e","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.12.3","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"shasum":"3c3dd0661bdcc80dbc6c960c9576e7ccdcd7819e","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.4.1.tgz","integrity":"sha512-APu6T26/+VBvIRnNlwViRyRMt9OGtt0ut+9gXsMlZax7cc6Blp5CHP1E4ei/MhtV1DIKst/mVQlTwPCqgDVLCg==","fileCount":39,"unpackedSize":83837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJblnGnCRA9TVsSAnZWagAANS0P/iNCyeRUX3bCMtjqB5T+\nfhDxIyPOxSjcQSK83kTkc74NBjqkSkNLAyYGe6HQxCIE8ZH6uXQYjhPHU54A\nMTrit6oV8Bi95O9TYx5K3tpZzjhuvxgR0m3yEU1f8tugUDt1hQqZH0F3EsIL\nc5LAty0No2DOnlepgx4gAEy6d4pFEdIZFLUqZ0I97KKc0GS3h4mz4not82+e\n8i77TQwYLKTrTHJy0AdmMRIB3k68wiazOiJIIMq8iC9m8z/IF5B7ZxMCjxwn\ny4ZmC/8ElUHVRQIoodS+MDzbEACYg4PAoYVPRCWjByjCFWdwjYQbagmzeRcB\nbhOua64ZDRE0BUeEH9CwhuIrINEjSDXAWWGIh9e8fMSNqvLRzd8VE9GhwobI\nI1j+yE46ZncYhY8x9YKTtbXlTsUkfd+JcqBRoS0r0kqKin6t+04E+ZTdikuN\nIQyw88MKzKQ0px/elmRQHjW+7XJLFpjbC6zd3ZQv/HAkUoqyCo3Z4uLAndCD\nPvldZZtMTNfcX3hpf72XJO3xlcRgfJMyyJK1Jhi3QXqOA/27t74JrTlentkJ\nas4gE7XE/TudmQFVBQsr+/OoChS1bbKzMovKqU901FAeXJlkcFHTW3CD79OC\nZ7c5GpPjnz8/dg5iv14rKMbBF5Ugd9VNfXrADzg1Ka/htvouJJ5qlAAXpU41\nuP5u\r\n=sO+J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCW1vNCTud7JRtwxVhCuKe0rp12O6okrPF+qbTqZSxEwAIgQr4tIBbVTPiG0xSMWqlivlQ7KeTg8NzjL4uiKLQ6ryA="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.4.1_1536586151233_0.7437319302929462"},"_hasShrinkwrap":false},"1.4.2":{"name":"ut-port-swagger","version":"1.4.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"389d223b653869cddc1c6191cbf0edbed7d879e4","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.4.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-hoQzdTUZ4dBHGOQlXRqgmCNk/klRM5uv4BWIi+bAYpJnjTF2X0UpclqHbH4Cl0e5hSaNADUns4ivpo5/88FGdQ==","shasum":"6aa8de44b8df2a9c1df07d144d5c32a97446722b","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.4.2.tgz","fileCount":38,"unpackedSize":84085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGk4wCRA9TVsSAnZWagAAhkcQAIc2t4pEJRL5UE1hjfwM\nx/ULh7qlBrMJf3GtSmB6o/JnyvCSuoUHlBpfV63H6wJbRNBOgH5BHkrXg9xq\nwHrZUCRhV6kEBDf9h1hqKEg3FrPkUwfgqdBvQY4PiCpxOZOyTXAdbiWVLpIb\nrMi7HPd8+saHeljKFNJaZpVvKXke1F7UFdnDzZFgHANYcEV1uhmJiDW00m7q\nxK7LVnvb0dOycx6fJ0nUzGCtu9wuUDgKwgXpQxa5MpUti+HS0b6guYvZ4oXX\nq9Skxpf7Sc8PqCBg9GpIBprSjPOZAAW5LpljgBu9h6H/IXWYDcKKod/j3fyv\n+niWYeTl4P0lSQEkRW2p6oYImhbli5C6v39qYNS8RsqSNKC14ec6o1VyyspH\nQ9Qt/utO7n0ABuzSFgayHpSWsSrxKRJ/iYUsef+5/9uL96d0uQSllDl8lFC7\nzgjY6/KjnIXEgnjPOsCoa+zHEvLnGd6sZmr8ZMTVYzfB48Ir+BhpJVMCIYUc\nC824A81pE7rNvELCqu4Z3Gz4FwVJDnQRSUwv0uN+Z/jtXeQB9Y52U+TLIT26\n32WTwRkIJdm6DCsHjL8FL4hX+v04HP6QUB5yWM1syJrGLW/VN/f0HDe1fb1y\nAbEyQ3vZ0/KHGGMHiBxpLy0uKl+bZbd/BsPFhahmEJYfL0GXEPvGXnZ2eBWf\nbEgv\r\n=3VYn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC7FgkPV3gMTNYtB+heZrfNS9vTBgvIF0b5VjLXQvkHHAiEApNn9AABZqmVcKWj7Xuc2xDXaekwtOsCCN2bCYovQ6lQ="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.4.2_1545227823835_0.3611387725850219"},"_hasShrinkwrap":false},"1.5.0":{"name":"ut-port-swagger","version":"1.5.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^5.32.10"},"dependencies":{"@koa/cors":"^2.2.1","ajv":"^6.5.1","koa":"^2.5.1","koa-bodyparser":"^4.2.1","koa-compose":"^4.1.0","koa-jwt":"^3.3.2","koa-router":"^7.4.0","koa-send":"^4.1.3","koa2-formidable":"^1.0.2","swagger-parser":"^5.0.0","swagger-ui-dist":"^3.16.0","swagger2":"^1.0.1","uuid":"^3.2.1"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"edc2ec98b6102afdcf75676b05afcdffabce2be5","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@1.5.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-mxMqH0F4upK3s2skYhWg8c3ZcQGoaTbH2opPlQG29x3E0WsCv+Zp67L923UgbpgQNSqt3VDZqs/wJ0MAAqASRw==","shasum":"5868ca660b1f2b048a1c9e5f39f9d9722bfe510d","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-1.5.0.tgz","fileCount":38,"unpackedSize":85052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUrP3CRA9TVsSAnZWagAAChsP/iKsRj61vx5IXzL7Ws/y\nXfWUXKsf1GH/klTejUvSWzsjuOReQbrcMHEwT8VOf4CsbQUURL/Ijpr0lC9E\naXFWr/yx85hf0K/DwiCC+aQNkHvMqRa+J7YKnveeiDcfpE2+rWyvXdj8H+ia\nWYwbXFNkZraFF1IpUHYNpvuGfJ+7qqoKTfxfI42157G8zcU5nQjW8L0j92C/\n+HSHKaUM1SDCzrF2nA8rNbRoz6Aaqficql5WWC7qNkIElaIMJ2+EwxqorO/d\na9iw1Ele9XStIm4HhPr8lcUZ/AyIqyT8zTRR3v9xThOl52EF+0Sh1VSBghxg\nLH+jqzEuDzLpRYbJ9lxCrw65d8/fASTZn66joxqGKxz76dqvFnqDyljNMi7m\n9UWMhNsFZXD6lK/qhTrEtxj8ClH8sb1wPZZMrtev9Kor3VqnNPBbkVzGQ6XH\nfp4xGjwjovpPo/z6tEInG6xhcLK+SlObQDqmlGYtC7pkGZq/PgxXwcAy/9os\nNXXLarei0V4r6tLoh+SP7RVXX4krnuLpwqvUIqlHvKs1SH/swnHdJqnJHoot\nm4CO6wn0+dt+80cCC+jE5tBWgEsKcBq6A3BKabmHqNGzmt8QHax0XnPyu3IO\n/Tj0EoWXA7hNDkm8YHoF1p0IvTSMBsZpX4QeRTq4ghZxFw0J8IQTXnR/Idsq\ny1kB\r\n=E0uh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOH+jKkqGOVuUH3EWuYxrNCu2ALvwPSLEzlp6w29+GqwIgRcb4+b7CBY1ORBalNsDUEVfZY01JoIZW8sibHhmrr5I="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_1.5.0_1548923893990_0.8729744024889532"},"_hasShrinkwrap":false},"2.0.0-next.0":{"name":"ut-port-swagger","version":"2.0.0-next.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^6.16.2","tap":"^12.6.2"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","generate-schema":"2.6.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static content\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /meta/content/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The content properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  content: {},\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema extensions\r\n\r\n* `x-bus-method` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"de62e103197b4b9c11f8f93f81f4f29c29856d97","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.0.0-next.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-LkswcMbb8ziUbOWAktFnI5DA19nztNlt7xt4yUeJNPx4KOcgcoGuGqxKIYvCe5kzvDwZyCqQdDaedqpH1XZS3Q==","shasum":"312f96121a166b21533f4b7118f24b6b9f90d67d","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.0.0-next.0.tgz","fileCount":49,"unpackedSize":99094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0of8CRA9TVsSAnZWagAAWiEP/jirj7glR29dN+SnD5cv\ng4C4DNLLgqYIlQMwmweUrEHoA+UR0zhDAXjXyA3uIeKcG4EOuI02Z7Lrkipm\nWSsbjuDOrPSExn3M6d7+dI2uI7tNphUxMYU84FsZQ9kSezaas7z3hduPCiQv\nVpLya0qpn1idY7qd0U86d9mckeQ7d8ZbwnNjp0nZN1Az3DMpXaUIc466Si8r\nPoE5h6D2dZpBMn6Aal531i43LHgUQIu57OiesNwctOW9Axtwk38Eqq7+8uq3\nHdR5yr64mumj4k/hpJtaD83s1VHdWLMUsAtx1j50e8oM1P3sIVSoTUOLA2dy\nLRaxRJnyyE8fOXzblERcTIsjO8IOPGmwUanCJEfEHOAUxPtaXkDQOTRS5Zbu\nuireFjwnGXiBawy+VTjGb+b9MaoV+JTh9tcGQVz66wC9g7lFMaLpKl64GoTM\niTeyszIHgG/QxKI6CfC6SFeGJ+Ze835/UF5i/DRJBrdllOsGYjHbStqhFSz/\nB5q58v4Gzya3o977i7+I60JKD5PnJJ/JxPD+b2i4RjYcdXiwPlkbbE7k/f9l\nqFVUJ0L1Vwv9nFRw8KoApB7Nkv80RPPkCizNFMFlbTG8ID+NQSo2J1CnOWp6\nEeivP7cQFs/peGmKB1BCcy9YJMN5NfsEYwbpMejUM+eFx+tgSoTtpbOBSw6t\nA/md\r\n=91Qo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYD1IHkvanoqg9C7SX4Qm6poEhY+mPaTNvpODFlQAiaAiEAyKgQlV9/QQTApPL8MumalfGqfE1PLOetNvAESEi7a4A="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.0.0-next.0_1557301243701_0.69434844825641"},"_hasShrinkwrap":false},"2.0.0":{"name":"ut-port-swagger","version":"2.0.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^6.16.2","tap":"^12.6.2"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","generate-schema":"2.6.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"99f92aa9e73e925cbbe8da03e079dfe619385a27","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-Xlx/pTBPil4Zd191M3v6HKD5gI2f6S0z9toUt+vDqrRzM0rukmwjS3qhKLAWFynxBpj66H4T5lbBPM8oy4ZheA==","shasum":"04e74c96f1122cbf73b5ad5c0ba6a05bd59edd03","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.0.0.tgz","fileCount":49,"unpackedSize":99161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc0p3HCRA9TVsSAnZWagAAoz0P/i/xlLpAHwp4YazocpTO\nb8dOTy5kf6rBaiHfUCNOPlFSJiLsKBsksED1XRnb6josfdgMtf0QJVaMAANz\nCtGF5eWHeg/B30N2Des0HzSxJ/4xHznDMaykIwdrQRehS/ArB9sfaZs1y758\nbVrDaHzQGsgglSzEzok+yY/KO8gV5XZc6XpfYJdD9IaMoUL+pdnsFsdb0lfz\nT7OuZA+C27N4MfCI/TTCH8Wv+Gk3i/4DlTpvMIbX18yTmR/7614mbGw2Rc4p\nL0clb2VI7B2YHDrsuIjIzJ/FYAWiBrBQjY6twX0+kWmAy4pm1I8Da/tjvkSu\nWDdVL1qiVtfogHpqaTF9odBoNvjCmP2vZCAZRM7P3LBbRvECihCK/x1FMyh1\nx8WvWYysCoQHIltHpMuhRxHCBok7QouiKE/apHStLpVKqgWSoylrICClalAA\nKAX3bZFCTtDw1ZxE/Qh4elnkf3C2TOiwooILYUGCaX/IyE96LCrmx/f3Ak1u\nzE8Xn1slSS0UhrhZDo+g5tJuZ7VUmO3skLk5QST9NHarlkto27tuKmwdnwaj\n5XsgdMlKG1/kE5QVGy8IIXsn0mHH+e7lAKojycCj39d1Xw67dgdx0YbKLmC9\nsTwixC/dN6zars3CWC81v/w6kJHKPczffpTqSBHzixHkH8YYlUVBaM9wQ/cS\nhajZ\r\n=g49S\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzBb8S25RVhZkbA+iIQXzEdDJ+SCV6zeUhMQXFPAB7+wIhAMXkTPSz3FOQqs3fVLycAfbzLrBKr0tnGKRDqgbcyey8"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.0.0_1557306823139_0.1638341016466356"},"_hasShrinkwrap":false},"2.0.1":{"name":"ut-port-swagger","version":"2.0.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^6.16.2","tap":"^12.6.2"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","generate-schema":"2.6.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"1c6fed8af8df2c16da59d3a167bcf938db6a6c58","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.0.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-3TgKoOq1HwNuDau2jTORLRBG7OK+2ul2fO42493ka514nKiRZiQIqQazhBTdc32kgf8g82edlV893ShLENj2vw==","shasum":"ca9863bb69cd1b6b30a69b44eb892e435cc34aa7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.0.1.tgz","fileCount":49,"unpackedSize":99434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc2szQCRA9TVsSAnZWagAAayAP/16jQoWQwKYq469qFHDA\nsFNq9vc6ggcapWAlWZxo4QUFPw0NdVVW+6543SrRWIHCdJe/rQ5t8DhbYAYl\n5OhdmNXaLU8ipTYHkGxL9HH6zUxDzEb4Zo2c7nneMQpT7ElEf3V8wNcF0rvx\nWy3lUjCPk+9GtFK5yzq5JbFvFuPzurG/dOGkHO7iLgk1I7agAJ/QAcAQkuPT\nOrM/LCp3PjqFsI0Xrngk1Bx3LgVqr/Ewf2TVzDC0lilmCOqkj1mrAcAfM5DN\npPxSsFIN40/jfS6Ap9h65aVJIhec8lnahfrmgtTKGDi5Xc1I43Oj5TzMSIHi\nom6YL/KvxxGNZlrWp5BAGTreuduymlJLCorSzVW65TTMoJh4O68YBeGxDJ2R\nFocmr7YH/kX3Z4MrsVgepClh5N7i6/+Umok+jv4NLaCpCLpXp8UZzZbTWmss\nCCWosG+c0PvmbkfVcvvZicNnTv9qRiAA1LtxLQycfZidtqFfccpb/cK60a2h\nODhZmcoJS9qUGhsinFmYmWZcbr/N3NLrJJ/LUvCmNs1ZT2fS2fMOOFDeufwP\nMOw25dkg9a0T/wlGHZXvcoU3QsHx++c1ZVidOP+BLM/9I8IoB5CRL9NysS8s\nYF0s9+i7MqeS/cU3c5PRZZ0SkXFrkM20aZgyhUE4Fjo11QAJK+BnWJEYHFOv\nkcOJ\r\n=VX/a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLMs9iHBEcn5xq/t5exoNuqC/UJ8twSEQmTIw15F5BIwIgK973MNXCVqNCJJ5V9y4qKrTRx+kp/AEMHNQS2GFZH80="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.0.1_1557843152177_0.3193298767469568"},"_hasShrinkwrap":false},"2.0.2":{"name":"ut-port-swagger","version":"2.0.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^6.16.2","tap":"^12.6.2"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","generate-schema":"2.6.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"35dedb9a0f446dcb2e7f69737a0aacd838a8df8e","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.0.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-cyNIBFdU3r6kXtE1eFEMHIO5z4C0y3wOqt7BsnHcHc6621+imKs5/t3M3cFlxLrS0H8/0qDyjiIUUBwR/FHonQ==","shasum":"e2fa93ed216a1b86d89af3b65d18e303233e36ef","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.0.2.tgz","fileCount":49,"unpackedSize":100117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3DKiCRA9TVsSAnZWagAAxe4P/jPKOC6FVpHXnsD3ZxJJ\nfisnTmz1EmofnGK7GHlb745i/U7dt006NdfwM85pFgbRi9M3ir9pV8mJhI21\n/ntPFkgToQzw1OZa4RDvzEOPLn136Zj4ljpZU6cdvEOlUm7H4HOoJ9DeK6+N\nEP29WeFSFy5I1eHB0fgmpLV1zAMOzN6OZ6wz/36cpU/e09Vis+0Zuq4USEoJ\nL3MpYi9VAwVPqUUi48HoFU1jpTOYGwUzJCgxcYR6niBrxaVpWr8s552dG5kx\nAPn17nYqABkSRqN39HL/iPrMi9bjBSS4FCAa9sqHNIfby5AOCa9ASmM1rbh6\ngVzrZJrz2XzqrYLBr6kajz8K8xQXaKYybCFFO+wmK8dnamdWmjOL7KRx5r5v\nueiirBTWc2qFveiIc0+e+q9auqACaB6OmBFaq22diZwsJrg/S8IA1kcDnf7z\nxUCB4MGPj0yqonr0epO8UOJOvdObYhVw01JWW2NIBKIU1myL+uav+M286njR\n6ksfn9t0YtVFXixywp6+AFBBu0GGGzJDlHuY1GAFqknKPrf+vl3vZjYcPVh6\nw8xAz9nk5HRVAyWwRzOj+aeLzCGyE3fgwgaDYROzPEK1zfd0Zev0z+aZnoy9\nrJxgB6XlFjsYTR7oDAkGzGYXdHBMUUB4u6kxfrzJwubtoYJIkFmI+XmwT3Lt\na+dq\r\n=U5vJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGD4yuvm31AnbZg1SYwDvYwbFjn5IoW9eq+96g8mQTopAiBk+KaJe8nsVKh9gQ7R/taluHI5QBEUxBdkmfiFmImp2Q=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.0.2_1557934754044_0.5661803422046705"},"_hasShrinkwrap":false},"2.1.0":{"name":"ut-port-swagger","version":"2.1.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^6.16.2","tap":"^12.6.2"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","generate-schema":"2.6.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"6bb2346d0b6fef8f0bb3943292a5387822afb60c","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-5w2Yi24EseJ1Xos+egSTewl2jGgF23ZhAHE8KGBSXYkyCui6IExkNl6EcDp1WLWfUYhGosc38ryMQURCpOzUrQ==","shasum":"96c3bf6c90f50b1e1d0528ceed8f042e375aac5f","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.1.0.tgz","fileCount":49,"unpackedSize":100312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3W9eCRA9TVsSAnZWagAAT40P/1pvLzj3h9MUGpRn9uRM\nL8KJoAyo5M7IkO2e5WW4/RYbAY1yvdQam5opdQ6EqH2XyBmIjH/qa7Ga1gVP\nUdBkv75Sbkas1dHKcxne4IkKcCjPJkmFZnjLsqpax22vowReOy8tD0RzVsyI\nDLxrf0q75h7aY5wO+wYAnG5h1S+YFVbDyjePD4pcqLpMIVMZwWUr/He4PePa\nILe17IcHibQtG9vTHMr0YHgTDH0m4Lv5+eafeYmXPV/cF4QleKM/foAj6GuW\nOQ1t6sJf3kpbEE3ynsc0kLQ4nHbvXMyGlpjgRcRHDLhMSDtWSx31NvNp6TZr\nPX5a7VQfFR4V93auvcpJ9A02kNJAwmyQzdWwlaMuw9G86xRj7Jfl0IguVuqp\n2ZytKxc0E3qy9PmM9KTo1xgJVz4+iip0wkoanApH6pNQtb4sUNpw3F0yrKIN\nJ7u3dLn/njdXsx98/lz2sEoZVFlwgVfZCoRZWPeHlt+j5s8U9xYAXxNguRhY\nxDN4v0r4o46FGdlwOmgQWUmLZSUym7+JnOr9FpZkVgaLL+YpLk6q72nRwuiV\nnogGUJW1ejJm83DmtPBUWJnyPYRA6tevP/yWGnM7mMnWB2H1aLa2qf6zaRER\nMV2n4/ptYuZPzAWpJR8bpR3CX+JWUJM0VHnsQkd8yBq5DgaZ+XpBbtmQBDUm\n/ZcF\r\n=Xw6O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEZmd/HMGurOTK9O8bvJcfwTpGL8z/EoNxiOMk3xFfn1AiEAwcNu12ysqrr4jdqlrEWr3i11pe56gYRp8WoOzucE6i4="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.1.0_1558015838062_0.08467882939453575"},"_hasShrinkwrap":false},"2.1.1":{"name":"ut-port-swagger","version":"2.1.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"ut-tools":"^6.16.2","tap":"^12.6.2"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","generate-schema":"2.6.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"e004f2a72dbdd50447f424d1d997c5f5a9f11cc0","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.1.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-zY+8vvwZ3hIhAkvpJlbWBsImZrGrPw33KT40Im4hmdZXqQrW2S0AviS/YmQ2KYaBkR0U+MdElpDtXkhD6UaQPg==","shasum":"4deb0c69ecede88cff193b023db0742736a57b56","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.1.1.tgz","fileCount":49,"unpackedSize":100649,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc3nv0CRA9TVsSAnZWagAAshgQAI+AM+UPMYGLe0Xx4zt3\n5xr0O6Pmw0DMB22RAkdHAshKLoiYeYhVKScJUUgAmxWlxI+Rg1R2CbDwVTf+\nmg4r23Gers/PH3eR1Jrae825/fkw2OZN6dk8DBZCcEecp5UsF343o1mepMdJ\n7x6NjLSfGWp2eXAraclG7NcAsnOY5HYIAwJC5ZSZKKW9qkVm44FdcSFNTKat\n0w7CsdDWgkDr2Q1NYN2JkZpB/28n4oEeMUVDvPTITmIUCZnAmbT2r/PVN05I\nBRcoObXTFfibusUY5dsxlF2GJAQXRxas6bjNaWuXoNgQCCf1ueIiTh4Tddck\nQzHOiXDI3lwRsdXmlFDXoAG2Dgj1sy2OwIcqpE95ueYbWRXtSf985othL+/p\n+pjsCGyPLg+tIae0CSxl/cobwNFvB+uXwT+ByMkm5pD6Eh2ZthXAsmCt1k/9\npSfahMqOEiYo5+ljzFc4rOhqhZeB7KUZAnqc48gfvXR8BumI9hdRcJJr2WFF\nYLwbocFOa1HqeaJDZ231bhCjAVdhiLyyH2t3nqr2wV+OWgHC4FloCZ7lWsng\nYu6kMOw9hDRHO2lt4xt2tmLtK0lTCjeh90RSDGZFpHihpBRfHBThPexkCbqm\ncaN1wtlFoNS8Js0Utl52cpGt8s9pPeEiGofOqDwTrCj3CO6Sn055JEKen6Ji\nvtav\r\n=qbXZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAcYnTp9x5HLflHS1k2PZECqmORa7Cd4E/xPf2mMYAYLAiEAuhdQ+HmV36KFwMKZ6d1HDz5r9BNczgUxp2VwqeX09Jw="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.1.1_1558084596034_0.08021750779751602"},"_hasShrinkwrap":false},"2.2.0":{"name":"ut-port-swagger","version":"2.2.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"1aec4faf019674388f945109bb395fd633b4dbbf","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.2.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-kLUVWRC9LXJR7bWtnYs/2m0GP/WbBs9wkiizZr9Ns84+nPzgw8TsZ9omQezzw9n7ZhCxJuqrLYsTQvnqXFQwlQ==","shasum":"4c6460e0eb0e3aadd19829b41e75797e6e8416eb","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.2.0.tgz","fileCount":51,"unpackedSize":101639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc78WsCRA9TVsSAnZWagAAysIP/jE9NOC0/MXUEZNLdT8c\naMJg5zsk2JpnItQaE9ekfIJvH0SWvQa+ggsE9L4fa9l9y/imnn2VJcSUaT9y\nvQAI54LO9fO6xDGrQLTKyhE3WCgdCOAc5wkb8zLTUvrH4gGuLr/BnUDb3uQy\nmfH9cAYu4/ZSg23eUD4OII+gzy4IwcJK0pT8aytHfgI2AvnuT8RUsaGZUXqr\nUNxHePdRKCpzT3ZZH+iaeQpqiA3Xyyk6iceCNqMYTKl2TQ0O9COk4uGpzgRv\nqmumLf99ybJvcrxKYx3wzo0C2pX7ZURQKG7Vhh0Hc62PXZWccviLFbW04JGC\nxnAzuJM/3huPha2Pvec7ixa0xhqcmZu0sC25LMhzDZI3QM7D/LU/J+pFgKyW\n/OjZRdZ14VJrHEVKdHK7+MAQNuhorUp7nOZDWIe0ZWsvZINBAQ0jxklEsp5u\nQk2UmemyFdUKFHH0I8UDWtwHy5/8z5sHzBcFRm09HM6DZTVkIaqY0tAyDzkH\nRlTCWyj39dWtPE840yT/g4AWXn4Du7mOoK3km4+6q0qU7O2SzAcFLDvTCCpV\nD0OFTruPTDrEPwckeifuaSZ6FNnkNj7ligUSxgZUbN2Cxy9R0GE/iwq1zFi4\nqYQF9SeAo9e5M33PLahrPBAyViAgGbFxNTihyBFuP8eN+k9yf17LMwZV1h8E\nXXhb\r\n=aQTb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3LrXUCvZ84D74qc02BVxI+MRz6PXFQ9E1kRgfrcgm+AIgez6i9ZuLWfFe3Mb+1+Ia0JaWf7XhTbmYhYKx5E3M6FQ="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.2.0_1559217580298_0.5402558344324155"},"_hasShrinkwrap":false},"2.2.1":{"name":"ut-port-swagger","version":"2.2.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"793e024334600a019d673b00c7d651bd3b0aabc0","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.2.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-jbi/rNbEZnoAxhqas09SEU5o92H3UYP5vBShBhz3PY+6FoSR9uYS/Z+ZuQxl05V0uMw+QVV4TbuRVDlfAUnc0A==","shasum":"dbcb1a880b549497ddccd2c40d64f905c88daa99","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.2.1.tgz","fileCount":51,"unpackedSize":101960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9Nz9CRA9TVsSAnZWagAAc6EP/053bnn0fbuj4EFutzQy\n+5NgEEB3/qB6LYZ/8dBIkf4Yq30un0tzWizcyV9eF5mD6gksGA6whU2j6/Ae\nQcVVC1/XQ4w8l0ilqqmST6hqFWTr6WNCmNvqT4E2e1n45SdSMp3OdvD/AikX\n7SxESURko1rIa6WJqv36NkgF9uOT7mloBaNG/p3ZuQB5TiUd1u4hFm94CtlW\n8i4g10gUz7xQu/5EPovWlKgy9dYFUYOTLFhEymWuo3wSUu9WnatrLdKf75nL\nvp5QPDAVVHebIkFuWTmkLrSr7FVaxlKkiKybrVsBBQfrr30Scs4FN3YOkBrV\nOIf/mCeJHNkmW3pz65TxhFWhTe2JeEWiGo0UsJIz2lGIQa0p1lCkLjJY6Jig\nKyKZXR3trUMc6xbboZDBeABke9rP0aOV3K9KMbScyae4JboLG80G+IeqZNwS\nzU8/aFmhqU101DQHbYwltrF0TyZMX2kZaDpYEZzYkD4bwfnF2ewAAZOphzDj\nAkE4S7HL39d/4COS+H6GiMtIHsudkFvQ+F8XNHezWJKhBFL94J3laQd7yd9S\nEVITav3r5Oo/5wQ0bUY4rh1ST/9XDvKXURVnYWnWN4lEm9E8Yc5I1uMtKwJZ\nYRbWPz88ay/5A1t2ehj0lrjmhjQPGs6sHBTo6DhqvWAloAT1MBCI5XY/5Ad+\n+iUw\r\n=Kqq7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdr+1Luo2iuVYfGlN+FGmE+ELMh4kM5vnI705m/nGCaQIgPkpImUX1Bx9dcVT7UXS0HPXHJCXdA56FEBeLJLhzhPI="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.2.1_1559551228192_0.9361534186300249"},"_hasShrinkwrap":false},"2.2.2":{"name":"ut-port-swagger","version":"2.2.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"67b5361e70fca7155fc38368d3da16fd3f1111af","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.2.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-hBCaVQTtN4N6/1q1WvbndeupjHeBzDG2xVnEH7KpMTE06TOA7E+b6mlZ2Q4YVh84IyB+Gs6Nl/llsnKI/ZuTfQ==","shasum":"321bded8bb6c3c77a495500a3c6dc71969d13228","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.2.2.tgz","fileCount":51,"unpackedSize":102757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc9nmXCRA9TVsSAnZWagAAZqwP/30pW6GyUrPXVF2Q3pOw\nIzAQ7xj2LmFjIkxtNIJa5ntrE6oIQFs3dABGkHiZheSbcmoto5e+/aTqBIUn\nOb1H1RgCoKf922pbOISED2VCQ8YAfD03Ohb/10nmJD7FfHofZRrE3blcQU1L\nMhE/72gPUc67AY2FbeTOwQ7stPY3mznmdW2VyVKL1HSTvtj2+C6UuYolXoHK\nZT2NtGz/1xwWS6OkuKgAplgqufWE0g4XX5upvwp80qb/GKGx+W8J0xbxWApE\nNo1TOTZg7qEcfxCGd6vkKMobeR6ao/+e0LcfE7w3+HXp/V1Z411p7lQ8vXt2\nrTGbPCQzqWXkOB0a4RUbtQnv3rwW3vgTxzUtPSjjVZvY9cU28t3ykitY8qMD\nALcCt/vH9kYziCll1Bm7SXLwSOTmmqFB/zqmR9oa3uc498z2ilp7384AFauB\nvWGTodWMZX9zQiwTsjzk/gFh/JlUgvRfMWYnM6XZ9mUcx7Xpx3C1LunSgNgR\ncUWYUxhfMl24n4IOfIHVzZY6gOGAxx6RUMbmjbZy5qHdwNvHN50auAks0a0U\nwrJvI3X4/0BybxJRNASsqGSorRqKSdfMr0Yl4rbWZO+PY4lOBDjMWtCs8AuN\nLM9ngPRVSdjA/+SYhSZQla7Lrje+tAKaHww8moobrY4Cn1VTjwa1SpDUwQHT\nItkC\r\n=rXDY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF8OFJSqHmJkRKbU2jwKhLoi83uz7rhQXVOPhIhYBjbnAiBw++oBKVvRG+HpvdJdslURQ/E38dLTzmNRTKs8nFk9bg=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.2.2_1559656854613_0.37112568781528266"},"_hasShrinkwrap":false},"2.2.3":{"name":"ut-port-swagger","version":"2.2.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"31b8d7fb4ed4c3948cf8e8d6c3cc0d208e1c2aa3","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.2.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-mPAm6ejeQf7b2rrPnfGVnLI7sWIx2skYhQ6xkZA+wLJAeGkFAafTpAEn8XHPUaTA3RVD3m+rCdEMK1mLjS2piQ==","shasum":"b4808e0bed551fa5072bb120fb6fcdd8f1f6651b","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.2.3.tgz","fileCount":51,"unpackedSize":103191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc97XMCRA9TVsSAnZWagAAI7cP+wcPgFpvnw3RNMVZJdOE\nqhDncfnhLTv+ZeXJ6ivvAt961AB+IXpDBkyF6+33lfKjIxcr64KjDnZ6PkYZ\np2qr4W7V17PxhpIY1TxlybxwggnjF2LxF6Pm4FgAftu57JGSF74FtfFpcYSk\nd3BiVcsr+2eiAjO2dHJR9Q5lW7dx08AMg4M2sXm+1tG9phvEFwow8sXmslE5\nrRIEndJYVYzTJB53SvN//IQsLppfR6HlWni6gONhPlt3bkTnmxw/UjKzm2I2\nBkOZpQGrIm55pPUACov2a7Ke0LMG26Zkwg5WjJGdlEHyLvoLBggHoAj+VbwO\nGRGQ/R4diGsHCnh1phPi5S9jKUyj0ZqnL2SWZ/zvZeENJ2pTbcXnmsFMODIb\niVhHe84L6r1ZUeFqOVjHBLn5nW/YJLDYS6mpz2/9vu49xJo9jcOjZKir9nLW\nnrnXSIr4qpezEQpli+iA8SRm7UpESD/4JgLA8ej/yXza5N1GOF9R6nvfFtgC\nL6xrQtFzzqflDRa26bJFZ+Hn86PmI3dAyvQP/S8l82RjJlRJVZbZgplSqRzl\ngJf7MtuK8wDETvUjmElA9jGavla+TI4TcdMH57i7VDMXi8K7xeOwEa9C2CuT\n4GhJOVnXPPZbz0BVIEv0DywjmoJCi3BT2mOQZrtjjf53m9lX/iu7lqgOq9fN\nDlhN\r\n=MWwO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6SSjYdx8qmwlMbKoJU/mRu2Lpb4m0ldCIgJpC3frsugIgcEhRiV28ASG7neNSUnB2b/sLLO0RkRA9Ch4NEn42hsU="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.2.3_1559737803712_0.8912800198119193"},"_hasShrinkwrap":false},"2.2.4":{"name":"ut-port-swagger","version":"2.2.4","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"afb14bb7702af2fb8e8e6c1dfc309188fc0068eb","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@2.2.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-Z95bC5XJSq74zCGzrxW/1fF8StQwV02xxRFc5Bbk7jHjvJoQH9ExUw6LB9ihqF91HplvoXwGJaFOUqO8qBRdYg==","shasum":"7c46a46f4b54cd7c4b3fa497c19bd433cda81514","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-2.2.4.tgz","fileCount":50,"unpackedSize":102958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdAgWeCRA9TVsSAnZWagAA1ioQAJU8faIb62iHTz9H0eVl\nhwMnjah9PP5PZq+sLDOj+bCd258/d6nL22dcS+heTofh2p1TV73moztks6H9\nKYRLiXhg/Lkmi8TFR6bsJu8DyDBLHoDkIRM54balGlImmk1fvnZocpXg44J7\nVmOFTLZo0xylyw+bAqOBQmGQMQMOcEY32vzmNh3CtbkYGF1EGO2JdltJAvVL\nsvROs8cVoD+mq8F3LbEh8KOdfsfZbc+Q4hxo+QXuqZF8TndPCavPF8he0FMU\nft8IFNqlVhl88zLHq4fj3G4flfM+h+ktIb501m3Pb+R29YyEM4xvv8uF6mBQ\nj1o8aau1x+bS5AY0NzpXQwaWo6SCWxiHIYLnruiT2sGwcLL5OXCT4klEN0rS\nb6M162Ss2B/balfs4KdbVG5SdhbXpBEqs/9Z5uXZ3w7TN3XrRPQOPiey6iB8\nLXpQgai2B/5XsDvtE8QW+fQqkH7R9pnM1ME3CmJ3yFYglarj/yuXQtgM13fZ\nP8ZjyZpSdqwNr00kpdDDRfeAmp0ch1LqMs+k6QU28vjtX7A8lN7YP1Om17aq\nGPNKGeg88zie9du4nJ7CsjkOVpsCYxVL6V/4jaYj4MjnFem9zqHoT7jIEiqZ\nq7wobIh59DRdknZ0LXFGOfoyBEZvxDAF+3F9FEt451nXkHpd2ZTMzFlcbzNa\nMpmm\r\n=ptWi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC27Rqu3pl6GuoH/V7GAjkBEe2iaRL0W3McEowL87ODVgIgVEM8hy3gyg3dIc3zuc0uv/9tQf54J1g8O6Sq/xjcOJQ="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_2.2.4_1560413597505_0.3696910397415647"},"_hasShrinkwrap":false},"3.0.0-audit.0":{"name":"ut-port-swagger","version":"3.0.0-audit.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"1f7f2d60aa8d17cb600680f2c294ba31ef8c9d59","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0-audit.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-P19zDeoaFnap0ZzSpwjf2t1jyk8/bjDkf4LhukVERT0yMKq1/Tc4ryRdR7JF6eHKeShzTqqJQi1vourEFZWWXA==","shasum":"704fb4736006d85731dc3230fd77ce74ad427aaf","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0-audit.0.tgz","fileCount":51,"unpackedSize":103679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDLovCRA9TVsSAnZWagAAHNkP/ArgEqsq9RcY7tzuyGbe\n5jsDLZ4jyOFtXVnYR0ySbFDR4rp64sMROa5eoTdWKob7lwctPGKkfQtK60SP\nCrog+Uyi3GlkYBBzMr77wV3rJ3ZxkZsh7YycP6cLhdolNwdeOj21QyI9Iygw\nAVJgWSkGuF7terCw3/VF1gEA3tZJejViiBq7R8bNYZfVxqtzio+t+V51SAd3\nVRu03Rkfm/A6q9UkPXTL/Uw1PJK+ugefaL/wWthOcubrhBtsyQ3fd1QLdB2r\nUXfZD/Xcu53e0Ay0zzwDJKFjw57yNxm2qjcJqa2NSg7Nf5Rg4H5zJgTMHQV0\nb4gPnAzFHpGRCrryTj6ReEmaQuyOqa5XmSdDfDxQBz0vQ6fm/UcIeu0BWgmF\noVMfdvoIuq9mYT+BcYfh65Doydef0EZkpTK7cMhqibaujHV+7jLfs3AXPj3b\navyonUr0d4MPm7BDLjgcesSRIFUeWE/Wch+WpdaCQNIyy1ZGfkmMxdyA3zTY\nsHhNRryWp8Y+kiepNzk8mP2UZWNggpdl7gffTzXv965qwXJfMs7CUiWSIh22\n67Z3DD256XD1rMAJuGyzYK4aa7B8tYqp9wzKdBiaW6wuxj+gD22E5W2lKc+4\n7hjWFffghPcEt296vFOjRW3nWPjD3Z+ZG3BGpDpfyOOTd8J+M9kn09MqN5C/\nz+Wi\r\n=MHVJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHe8tZ+6YNI5J0wFBWHH8QBikIcHRVqJuzV0oKoqXxG2AiEAw7Ngv00GqkIfPWbPXDEI0MOOWZb0/cI3UNVA0sS/pjA="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0-audit.0_1561115182599_0.7353270655792119"},"_hasShrinkwrap":false},"3.0.0-audit.1":{"name":"ut-port-swagger","version":"3.0.0-audit.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"9c84e26d458d287a8a966b029951135fa716b142","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0-audit.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-7YD/uVkfsTSmaxQhmAbqMSHjFSpNiofc9RdNMChNaEFgPphrEyRd9nnaS9GSjtSHUU+DQ3Hztw2eBNlTcGCfxw==","shasum":"7ab2cf9c1d5ade15ec45c80cc65b106c39b10616","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0-audit.1.tgz","fileCount":51,"unpackedSize":103715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDMR3CRA9TVsSAnZWagAANdQP/203cUVsimefzxmoZ5/J\n0TbeFV+txIvascXC5Dga0WpKZjzRLW8haxfoRRBQSb2UCRtj0nIFnSUoKr5g\nUZrdMNS38exZL2C6B1B/uQtwscfUNYqWWQ9qHS7AFfkh2Fh6rkNRy5c5lR3J\nw6dUEx2RwT+7G4HesfZybrXkAwRdz0wiIXTP/cUfIvMBxUm9yFH1MDK7fHqJ\nz1CD+sN50q7z43+sWwh0P5MPpNeub86+m3zrccD/o08FwAD5vZtXpCuutM2C\nh3qZUUi0LH6VEriJ/xuHTkrOUv3tySsIHkNK6r/nO1cI9m9LRwzZRAK9m7TT\necM3JoqwrdVokYbaMKKiZ1J0jGltj/WC9ftGBMaMiyoOuPnJy85uEW+CLQmq\npvpab9VWlg/g0Mifc13JiyVKX4G2jTsXVVHmHwkp8fOWgFP5U8QcWXKAx9qD\nFAZt7TekoIkqbpFxb+EoG0OUVH1FavDvWOgwEwlFMqfgpytQ8Qu5u4Tm0cCW\nS05WfduLozSVurNZcmNGME+erwjyvDnmMo4Zmh+iAfG+4EJHy6/aYLPyAudg\nTbad/pshlh8rXAS7K9ZtZ1oiVfvB9XYo8kBpR4l9tbhIqeAAx25bvNUCdIEO\nR2gtjg99pZq4L5eIR7+ebYcOA1ChR8/YNrf6/0FXIg87hI3KwQCpWWrmpc22\ngf/1\r\n=Qv5L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAZi2OLKJkxT0ZMtFvmkJCyY8liQgyKRNul8cQvaqWIIAiBR9F1cITETXtM2YSpxgSqg867O20OMg7YjixOohfdmgQ=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0-audit.1_1561117814671_0.6199838893390925"},"_hasShrinkwrap":false},"3.0.0-audit.2":{"name":"ut-port-swagger","version":"3.0.0-audit.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"138a9c7efa941a477ea701bf8105a1bb1d45e1e8","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0-audit.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-ActlFizo+XroxqVEaB1VREED6YUNOzdZ6o6DQ/qDtrhajSwQTU/gyZthFfbcYq2gVmEBYLJv434h+78DtJOVEQ==","shasum":"d706421844c5bc4d3828d517ec9ba12935defbee","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0-audit.2.tgz","fileCount":51,"unpackedSize":103600,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDOJNCRA9TVsSAnZWagAAGFoP/iG0S98Ob2Q5yDuAEypR\nu/zNBuyL0qkLvKzgwv8BLeHdtwauRTAyK9CSMukmvU3b75bg5XMicgR4EoNB\nDXwZ3OPMbk/W3yDcVc/5tbLBYJXE7FC2SyRS9gfIaWYU/uJUPLrhAaH0c95I\ndUNq/y2BeLv4ctltVwK+Koh+4esJ1vdmoBygJPOLamfwhT3Lf/zSiSoI6HZF\n9hsj7QzBNKufoCgStX6ApsHmCU1sKH8t2iQifRyahdJF8wAQYt/SONUoBdKH\nKIhjANKT6Q63jpl4R/121fVEinByhQJrjwjLwn++1ujVx1YWXLSubSm3Gl5I\nadWKga/1yoTuEXoiu9ON36tavC48ll4FXivyOugQ4Jjk4JTBqho0g1RmefLh\nb+iMdDBk1ow0q/AN/U2IwGn5aLEjjneY39w9WEPyX3wb1RJwvyBquZsYZajD\n7ZeJAOTf3g2bB4+giU9DwBsAo+jvHVCO0lHa/tprrXl/pLJZRKfFCjZM0zVX\neD2rt/5YgPjeo451xKPasntVwEcG1AGrrA3GHllleyuLmvq84q7GmHeY9enA\ntYjQ3AuiNeYx7CR9YRVa/8lJsKaIL1Z6fA4GLX3edTAiEKpbeBHIij07Q4AB\ntTxzU95nq+rHzFCWo/LvFPyo+VPQWdyYx7ju6CiTQueWYjTB85Ybl4je5rRx\nHbew\r\n=NW9X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxgjTAjMNb+ta5ywZOdtNfeo8fEoLQH6kYCovSmpZy7gIgOh6m0ER/LsiMD5H4mOQYc6fvLRrF13IA2pMMVTN7iZo="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0-audit.2_1561125452885_0.9093930740531149"},"_hasShrinkwrap":false},"3.0.0-audit.3":{"name":"ut-port-swagger","version":"3.0.0-audit.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"d5c217ad479e17c96132ac5044258b43dae67e75","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0-audit.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-Mu9/FWWXMeyulBg8a6dGlu2I3614uWBP9Zv+93tx19R7Ai2TOp2C1DxVqKITDtvkSLf1KnAsvrEGnhHPO+mqEw==","shasum":"15c183668d8e50935c7fddff53ec23caae9ccb07","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0-audit.3.tgz","fileCount":51,"unpackedSize":103693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDPBKCRA9TVsSAnZWagAAmxAP/0OIS2hTFcKlVQGuAFVd\nETms4r7jtmnWsx99nHiacxm3Ft1mP9EnnbOkPmqz2vDhlBJ677Mrx/0/FAFY\nXuyEdq/U7hjff7DkvEaP0pUXSaRFKYbV1ZakdHB0DxMUWeU1YpZY+huaPmJf\nZSeTkC3Nklfz2yATWJxMawYBFsHfyHFMG2L+QWv230BgBH5kJ9fH+c6eBT/4\nr+c6VqryVzIt1Pt9vRuyzCZuRVUSFMHvWrLDaux/aHEe9BagjzopFDq0hvaY\nhd6i62QQ+9yMUB038iHa8lYXw6cOnYh52qeR7Nm0ipoXlSmafCT/XKTZ0Jks\nwEBGCi1rxsVPOP35H8U0FFaje8T2d9rrXJV0IcqIEauqLZ2vdrDsSxMa8YN7\nbVeBfuOqQ0MTJvh3O8QJGiudpVkuJkHMgGHgFPP97D5mSOVr8nOeR3gblNCF\nM6PcsXqRvH8CAdB5BnkfW+rT7UKxmgmt8DNZJvSHa+5XusREf7aXLmmOWkjf\n8zbaAX/dr/LWBydB/arvEuau8u9BeqZG4oQ7pZVW1aLz0jeJ3NtUvUIqWvMN\n8sCBx54Hx8q2SF0DWMTNRwKEhfZ9K/4A6ZuBmjLa4zebCoBY4sc82KU7+o5i\nnmI/NnNdj+mlPsJ3/LpSAAFxMaTef4M6+X9N+QLcxKWbrhf9ddUaku3MF/L3\n8FJx\r\n=V46w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3KZSPgvN4fZyrV5W8PhDA3VE+3YE0S8tgv1WLges5VAiBuemIuWSkeC5DNBiN2wz5GioJfZXSXvuQWq8KlPhUsEg=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0-audit.3_1561129033716_0.36308401678972624"},"_hasShrinkwrap":false},"3.0.0-audit.4":{"name":"ut-port-swagger","version":"3.0.0-audit.4","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.19.1"},"dependencies":{"@koa/cors":"3.0.0","ajv":"6.10.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"a946446c582d798a35354a3a6c3bc3be6f61826b","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0-audit.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-0QvvopO2oFiib7kReDGYUcMCGhmZXoCGtyIFSqInPZvg/TYzGWdELuN/6PXgsWn5BujluRGuvsoT22jJ9Y4zBA==","shasum":"cefb3d92021b2cb41ad9182f5cdd874bc01c6d81","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0-audit.4.tgz","fileCount":51,"unpackedSize":103695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdDPEeCRA9TVsSAnZWagAAAvIP/0xua6nJA2u486CyPXw6\nhkqu0ONYcCRBHYKoddLck4roISHM4UwY/uFTSryinZnNYhVN3n/v2F3RVxEP\nO8qN87jSBXGSpc15Z18JrhtpBklf6XFBu7VA9LioFR2J3/Rs/T+1wVKws4Mw\nIOYxIBcOgzqxRRRpH9E3D3W75YkF08ZFHOHxjDoTdUV7gD2uB3gJKqkKnwyM\nGNWHMxJz/c9/rGqALxG0FXY3f/jmQ+MWsulPB3ox0aDvKhxysIkr8uRX3/j/\n7/GKXHdVKadP6JDNH1FxP0wTVfkQq9FV0AMH26q1aregre90vTKUm+It7iSA\nIN6pzTO6jykwfbGU254YIriYfMZyrg6xNrYlqb9SscpiEp6/s6EQsboVcpHv\nPljvMhbOvVqR4KpA0UjhAAJ+zxZb51f6ci51/TzLV0ED2yLd9ijf79HBO5Z5\n6a/LZ2LyDHcz3CocTfAt4FU7k+HO/FJvo45t4DH6htrLE/Of3lFQddyrqj4A\nDjgiZdq3Nr5/fvW201gcALvwN5da4lXvMqeqim96dzDGAb0Ah+TuOpGeWDYX\n+wP2e5XAJeKZZ+opMZkELVPY1E7wQS5hRFcj7UVcPtIZkbxpaLXijXN44Oyl\nQ39RCvN+bdv40REB9FNAmp3JnxN+3r+sM3hR9zZhsNGzVj+6ngDI890xWNKn\nZjpn\r\n=mb8O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHY78IsPwoBlS3rctuY/J8n6i44uwLOSsFCCfCgkNDi5AiB63i9AE60faSylKrFuxRM1hlgJEpxN3EbCx8+iYEessA=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0-audit.4_1561129245471_0.42932595599354095"},"_hasShrinkwrap":false},"3.0.0-audit.5":{"name":"ut-port-swagger","version":"3.0.0-audit.5","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.20.2"},"dependencies":{"@koa/cors":"3.0.0","ut-swagger2-validator":"^0.1.1","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"9b4ac334ffcd1756a9150e4ee615fe688d0ef29c","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0-audit.5","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-xP5slrJO1q1x9mhjuHJoTkK/Yfq0QLwyHXcQxH+KnOEiDcSk/GsS7wzfb5wzkZGHMG2IwQYOAZE0fog99NL6hg==","shasum":"561ce71bb2e757878051639a6011e2628da4a86d","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0-audit.5.tgz","fileCount":48,"unpackedSize":89034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEKNACRA9TVsSAnZWagAAGwAP+QDdZWGh2bjA3e/w5Fkl\nZbsoTpSPpCNSkR+/YmWGoTNgJM0RWo1BmDMNG1oPjEgVkOz/PlUO9HUFpLtk\nK7JqTcxG4KfjOBO68+fjudabYxLcWRwSiIKsxeFTkZZ1zCgdayc1vLaCoedZ\n5fc/2rGLLQKQkTBet+dgyW9Zsrt+8GzR5/aOmBAj8fMt4mtu8YEzDM3KM2Fn\nOqLZW3+IR21oIRzN0+c3/ZSDwd13Jfcu9DOxam+MArv0flwLOKEMdrE9VLFW\nP9ZySgWGrXRcFQKFqVCUeqCmHqKRMby4w+KbTECZZKoyzJwPXE9AjT4WOJLY\nSIPIpum9BckitHUua0yvYChFy4RExOVWgcK9ZyL3J0lx8XwKE9QWHhL2vLA3\nu7SqgcKnewWUKgj3aUw5ENo/z1XJ+mhQx1g3BsN4b5VuUm6tHiIWUCQ9jCOL\nn8F1WoC4cC9EfSC08r22fLn57NZHSILTdFPcyWjYz893P2XC9d2w3SXgP1xH\njunXzvrAxsyAwiFeoze1m7D+LCe0ttE1acFEoHtf8/Hcj3OHrFofpPJvlFYf\nCdIJKLLsHUxFmG5U46UiwltzFBaCxm+SVNoqqE9e/MjnQx/8Y3YTR1OZFI9M\naVYFuGwwICaFvcg1Uplfcz8nAOOC3pKTzocwEQrS7882au+Ivf/6mOhrOqOV\nGC9v\r\n=aV6B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHG2jXGov5Bv7wFADtbjBFXss3TMu92xLECzge1WzLR5AiBlnWX1pdk/4GKWuH2VCGVvx2ABY4oFyNIPVPjPDzhJGQ=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0-audit.5_1561371455651_0.03306760360218908"},"_hasShrinkwrap":false},"3.0.0":{"name":"ut-port-swagger","version":"3.0.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.20.2"},"dependencies":{"@koa/cors":"3.0.0","ut-swagger2-validator":"^0.1.1","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"54c32d583772182168c79c7eb837a00bb23ad530","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-xKKl/UKMJ1xIvlxEJ9yhYCWAuuhJlfFtzMqmX4WfcmFZ1OmW+P6wnnqPs1ZV5+d5jMBP+YspsD24bhtnLGGTLw==","shasum":"bb411f0c24cdd39b9eeaefb0d572f607a25093db","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.0.0.tgz","fileCount":48,"unpackedSize":89085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdEKk7CRA9TVsSAnZWagAAdmcP/2cwrEE7//UM5ouoXEgm\n3KHnB3lJvD2MNUT5t6osnAKS5BXuZYhvMo1+VKkX+n9VU+oY+gBUL5+8/oZR\nAni8ggtjLO3rJqp037ZgI7b4MlQqGImP0xCHgvIPkPYOPlw3hrNVuTXqBANs\nC59CA1JNqmupf0BlC9Uxhi314ppRsO4of8IMiWgtMc5e6N0ySC/fQwwPvBSI\nPfE6Zpo8UoddBg/yZdJ9+rsHstoCOY51AItIAZOeX8yxIyAvraML81QDxx2q\nnIVCYWbob3shaEYoDy66+eiNyn+O9uCKlsCe3Kx1UvYdmufJ3zWYBqaRd9RK\noMmBk4WVNPq+eut5W3XdfK68jfh5ieNXhHvv94w1Vdp/ljq6ftARCj0SvLCW\nKX1GSMJwTh1DtNJzHVV13H4hOQDqfd001pnIGS3oLHZ87sPekDBepQiI/sEt\njqHocpXuImVevKPq+5BVDQCt3SYV2/uU2jhtq3zVxySkIbPKS0gtmCV1KfJk\n1ReXRI96xuUq275Nzgby5uiOkwMjJvDRX4u3IQe6uX4pm9p+su3FJWBFZu4Q\nAgDzyDtNqPcYU/WgId0Z5M1OR1LJBMWvrcR+Kc38ElyP3T3AhX8caydZH4BJ\nRd48ifYQYAox1VzhWRkQkXYGFuUpBIOoS+ANWb5XHJ0yAKYo3ra8tOoZhB6E\nKuRM\r\n=HTdI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWGgNwG2K3wRVJQ2/gMIS9HgyfQKknGuHe+H9detZg/wIhAORyJE/hSzvFuyu2gtPr7tTlIvChCf+SXePm3N9ACfHF"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.0.0_1561372986556_0.10123384633319743"},"_hasShrinkwrap":false},"3.1.0-audit.0":{"name":"ut-port-swagger","version":"3.1.0-audit.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.20.2"},"dependencies":{"@koa/cors":"3.0.0","ut-swagger2-validator":"^0.1.1","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'swaggerUI',\r\n      'cors',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      formParser: {},\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"8900cbdd1583c3442f79c6192c165c8a6a87d6aa","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-audit.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-acYclFXm2tLOg+NCCqcILvhvQEEROGSW5t6uv4dJCetGw+LwftmLbTvbu7mQGCZI5Y4Ey6jKb7Y7cR4mCwa5lQ==","shasum":"2fb8b3efa66058b5ae70aef14f3be162ec295332","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-audit.0.tgz","fileCount":48,"unpackedSize":89980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHHBvCRA9TVsSAnZWagAAaeIP/jmV5AfslmyPEU5jhmev\ncZtOnV/5XxZ6NVk5P/iJ6NiT+RJI11XjSrLNxZyzajgsd94vlFcFlRxX7+KW\nhgYMTfPhoOrq+GAucTdnEURy1p1+uoXTD+GHjrEB8h9VY4aOmK7ePDJmxO3A\niAPttUYyjssCentKnHkO8EUVbDN4OuiW5acqkf1PeBL1qPVUtDByrXY9tCmD\nc4OXewQiVIn6evihVlbpRPtylYJXsMS/xJPd293o0i3NuqgzZvwBovMoWDSU\n6ZbGms6c1hdJwoAG9E50jmnhSlRr9bDza+nTA04NNt+fte3mJ2j0qmmNl3Tk\nydG44d6Ls5WyNJwjB3Kcgld328cgzwHsMS20qTX64S1SVUovYzwMhESIWj13\n7Fk34i91MJFG8sqCFw0yMbiPam5QjamnUH8fBO0cSKj2HJryQYSX7jHo6cEZ\nn06yokAuCBFoHLpWdedmvqgMop5AkqJXJJjVttstYuPhDO7OFJhQs7Y/WnS6\nL/90wRhSoqhAGoYSsnJC/lV3x6MwNQSKuDO/mCBBUHng2mjc7a/ajtsx0SIC\n3Yv87RaT5Hwco0ZAQdzACojLGPGzZan6O8yO+CZJ82M5EUsccrdZXk91NYwk\n/B5296LJkmR/Sud7IdoKkhR88mLRDAfmbXvhIJFMhdynZjYKJHVVZxaYghtx\nlVBa\r\n=WZ+u\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHIqTygHLwIXqqN1t8xfRqR8iwO500jZ50QryUR19bH9AiA3hNvC1VXSSL2Q1sr65GcU8SMUPA5tST/wPS2aFrby/w=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-audit.0_1562144879275_0.5762086035651759"},"_hasShrinkwrap":false},"3.1.0-audit.1":{"name":"ut-port-swagger","version":"3.1.0-audit.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.20.2"},"dependencies":{"@koa/cors":"3.0.0","ut-swagger2-validator":"^0.1.1","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\nThis middleware is responsible for sending audit events to a message queue (Rabbit MQ).\r\n* configuration options\r\n  * `method` (required) - what bus method to be called with the generated audit message\r\n  * `options` (optional) - Rabbit MQ options. May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n  * `exchange` (optional) - Rabbit MQ exchange\r\n  * `routingKey` (optional) - Rabbit MQ routing key\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n  ```\r\n  {\r\n    swagger: {\r\n      middleware: {\r\n        audit: {\r\n          method: 'audit.a.b.c' // required\r\n          options: { // optional\r\n            headers: {\r\n              __TypeId__: 'com.softwaregroup.audit.dto.AuditDto'\r\n            }\r\n          },\r\n          exchange: 'asdfasdf', // optional\r\n          routingKey: 'gfgfd' // optional\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### swaggerUI\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"9899ad3017f7d402f962163a31b454ae1e09cb6c","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-audit.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-jGhFesK2N9EwwX/jyk2rfNAapt7ueaqJVqSkAzL+PjimrWEaoWUraBtuFvWZE1cs+ZIhbzzyQ4spKYn7eybpcA==","shasum":"d5528622b1bf9be30afda1bd8100c29e52d659d0","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-audit.1.tgz","fileCount":48,"unpackedSize":94948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHINDCRA9TVsSAnZWagAA+JAP+gJHeme4cZpPZfkxDCuR\nyoHAcRrWsLy6PriVtrn1hVmMbVS/DIpDbCuH9TutKsnss097k96qjB+EFeh7\nX0QzQMJlUr6WkyVrVdeJBkBE02nVczVwB4vNFj5oyfaNI2+xQgDPu3Jhv1r6\nwguRAnISUKNfeH3QLAOEW4x8c6gZIh0hEPncard+PiMJhI/74hMehex2k7cI\nZlN5jb9ouwwNyOG/c+sN7xDu4badnggxCHejQn5X2xCkWIhD0TOnwnjFRkL2\nbbBqpTuKv6bhLWF+EE8VVdzrIEcG3s/Rx/qxwkFbqx7EMmuknzsR6If5uA8j\ndxGZi4jQLxxPl3FMj2ckXK5MMX2wWMMKbQmb49kmjjJhJFMNwdH2QXfBfdUm\nDoPccAKyOacMk8QefNqfcgjYQ/HaYnOp1EIAfYuXGMjRdN+uHM88lna3dL6z\nIfrC8+6iJmMTXn9y0t685EgS+Ihw3MPCpkrQ8DR7Xb4n0qSay/LumIoOmHX9\nPVXE5klNWoh3diKS0LW1CsXgXwyHfL/iU4SC+ThDAbfQBw7+YqcOG2L6psXM\nwb9BWiO9sYc5BxqbF1Da211c5PIYz4R6PhQleS/rScPhj4V5/nTkMG7b6AOE\nZj7Pbr3IxB48EXmfVuKYyJhLLM0OEKNnVLvZCXSQSPR/v4N26SqjqG4JJ8Uk\nBog9\r\n=Z+6k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiouoagPbQ3BUYA11r5/GR1chEF1xezG+72N6YKQ6M8AIhALD2TvX0HODokfW025lmxpfY7ri7KT+kc/2a/v1B21Cq"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-audit.1_1562149699131_0.25179426984326736"},"_hasShrinkwrap":false},"3.1.0-report.0":{"name":"ut-port-swagger","version":"3.1.0-report.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"method\": \"audit.a.b.c\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          },\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"e6e94da170d0f605f99b1aa30780dc0e1abd89c9","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-report.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-70T7jLL1C2q2XUvibETGhzMmzJkI/gLRKm/psfpzaH+LmqOARoMcD5LFuhc53oy5T2hdI4BD71uCgTkEhp8aUQ==","shasum":"499fbb3b6a40fc20ea6aa1000995d2db1b06ac13","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-report.0.tgz","fileCount":49,"unpackedSize":97023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHJu9CRA9TVsSAnZWagAAPpgP/3OVOAVZ3gft46LIwFxF\nhAmmZk/oi9DSe6bscdicfeNrgkY2A/ZrlhT8/hm38teY1p7njknyfDc1vxba\nXlNtzBqprjDSOEvSZU69IroMiDnk9cKKH1G7IzovnSJpP7Uv0XcKMFYio14/\nXQNRUK/pvY2yIw2RQsnPid9ObNehNom7eL+OY+VRaLitwWxyiYGJBPsOrD3M\nnqXe+H7fyEJ29yoHrRq1XSob6+2ZW6HHWIHmalS8dkofnB3ADGfdDOEdgZGu\n2x0csl2A7w4rPcZd043H245Dx2vS15cdPcs7UtB656ftmLntFdgC4d5xzHZn\nY2XAy8bN//+BKCiITSYVlF0wJen+TGCaeAclrcX72O0W3XeG9W9ytsVEt2iO\nKpbijajzPhlwesh1OENZfmJLInQXxkDeU94qNfnzpqdcb2/rOOOr+XERHW7K\nU2Uo2QulI+OBtxocPSwUSTYug/g+wsiizVZbBSv4xgmJzQ+39nxcVRy95LLc\n5E3+SJcKqqUydwD5S/NSW/hD/j3OBqkmv758aNhrwqL0RMMr8+Kzbe4xrTjm\nGa8I6o9NOyMnwHvurrypcMR50/K4ffC4+oftz1orIzEbnHSik/PJWBb7nJN/\nPBsM79HqzhPhox+YlMGWTOYFSkz+/qu2pz+OGxykB9TV0IF+zCgwaGIg5tiu\n8WOz\r\n=EZqA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDW6ck+HjdzuRPs83fhn1/HyWkJn8hzqRBGiE5rDYDUEwIgYJrJAhDDsxxAaiFV+XdVNsrWlIgoiBGOnk8Liwb9w6Q="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-report.0_1562155964561_0.6774127671331176"},"_hasShrinkwrap":false},"3.1.0-report.1":{"name":"ut-port-swagger","version":"3.1.0-report.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"method\": \"audit.a.b.c\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          },\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"ca76977c2290c6f0ce343f4f19c464714087e399","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-report.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-L7WgFdzt/D+WKsbxP/xT6NeHbIxWtzYOHE0Mny8VHKMbTSsb4eMBXpc1FZ9uCXSHSG81b6+b22oMGISsldQH8g==","shasum":"ff8a76cd19911a2965544e1e2e686c23e05b23be","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-report.1.tgz","fileCount":49,"unpackedSize":97030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHJ7yCRA9TVsSAnZWagAAmCsP/3MaRvws1TKkMFz/7dDi\n15LW5/lU7Ctp2QiPLaDiQbetO6hA9sUf/kLQ2Tmq8hZcKDbxn8R5OL0xrlHi\n3dx7asF/Yx6aZQhsqu+EZ8yJQ+DKruoqZp4Fkbwkp8iPIFSQJZjeb2xgBxjE\nyFW6Q0sfKgCjJY9V6b8chx5mK4tGziCLG1IiTYuwPoOv5zdY8AvfBGlOR9dF\nYkUY/DFzVJpU1shsTblY95YL/qSYjcXLEb4sdpGqj3Wpd9WzJ9LS2utbkyn3\n2U7VaXylmu9IQVmFLdbPt7SD/sk1KaeihY7SrUtxEwEVWuccrl8+oE70Nw5N\nVu3xOh2oMyP0sYpDPsO3C+msUkGMGJpeSk38HTyZ7xYNKuZ2r5tpXB+JBsU4\nT7pwJyMt8ujY78eZpjxC7SAeaIJD75IB9fCEaTTeV+nic1gViSsSZnFipzKP\nUaPUufxrbSMuV9ih1JA6NFHTCNtzZ4c9GIWsbqcATd0tR4vFbIb1g+Yd4YBG\nsWrgU+c5PXVgGSBCRdcF6uLUOgE+zWfcq3i7z77beB8h0oEVDghpdHCuEZl1\nHyNYWLwRZOA08yHaF89fCx2o3L7d9EiXEk2+/AaETkkLsvK80lR9HHvMktIO\noeGNfDWABgRWQU0gHbOgv0x3DNIGfCxlkrKz9Du1ixKRMs76I7G1pt8lT4qI\n4gIi\r\n=W7u6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC09lFFiUZegPCnYb3Dh2rYE/icAFdlIjfgv5M88oDaaQIhAIunOH5neS9azRpQX2PJKmOjN05rYboG1AMe99lCcGIB"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-report.1_1562156786042_0.6102932238716066"},"_hasShrinkwrap":false},"3.1.0-report.2":{"name":"ut-port-swagger","version":"3.1.0-report.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"e5d2471bf29b8cdc61bbcb980b87855c3e39d729","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-report.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-LzEBiTk2QwSywOuWO7c3uuGMCoC/CUKl2gpcM4xjSMUAfddnYmeUEN50R25yXIgp4xgJPE3juLIIzRGRg3HXYg==","shasum":"96ac18cd844e09264401a1bc68939f0dc35f645e","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-report.2.tgz","fileCount":49,"unpackedSize":97027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHKQfCRA9TVsSAnZWagAApsIQAJjsq6g0G9JNUGYUHsMe\nXsmhHDydfj4Q86eZfDa03iTs9OERP2/h2Q9rC/BWPwW2l7sOx/NLgJ5uE6Dl\npac49CILMtmcEPca6a/WqxgBgwMCcwkIS77yhq/iNl+CzEjf7JuYmgv12jpY\ni40jCqFSkeOyrZfRAxeRS80GTeIfULIraxg+D9aX3i7njUtTavvqLMMEwqOg\nDpM5Wn4pm+f9dhhlKubyJyHL7ChbRUbo6rXKty+2BspjJIg7IKm+sZGk1G+q\nxZowWjgKon/2ZhNrwi18tl6lLW76AoAR4Nom5a8687+aR3p2njPc5EGNoz+R\nxQuGjLXBjAbmBRJZ/B9oApYmv6QkQlcQubpmS3C9t2lHd4wfwlFaUtXFTrha\nc5MhJQ92/ottMwBRRLze0av4jZ7Dp9GYZc7+vicxzVOOHNNX0pJwx9McrylX\nGAO/kaRJeKOvCML5xwmXZhdhF8IYduwTwf/J4YW3s/LzfVZw+k6cZCKT6bEz\n1NMAJwfzsWqPwxuHYMZV9Rm4lAkxleJ0Z0ROnzmE8fn/+9DEu0tRyiNMezI2\nLtdQkbUYsLWDdYWWuEk2HUQm+ktWUozx6w3ybba1OQuydTKhEoiToqY8qWuR\nldUr9ilgDnpFTomawChl+TefT+GP/MNlJmBj86z+e9ATQjUBycA4AlNTd0ua\nmoNJ\r\n=/hVr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDnCtVehCzxGJ0MGlcfc31lGb4+VMP00q/Min7ixeSMTAiBxlTQK1+2wR+dgl0CZjVjDq+Rm1P+Bu2ovGIwGG4HLMw=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-report.2_1562158111332_0.011233915710939124"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.0":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"6753ce4d35436a71c6bb9dcf76f6aa0b7acf0bf0","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-cDcL7uyMmbUIizomxXEAGv35X62gQXQqbpXyeuAq6SDYKG0RhZ6Xr278NWAY387H3Lqb/6gTxQBPR2Wpw3W1Jw==","shasum":"b0b7670f4fcd81e56015e5e978ac1f47cc9034a7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.0.tgz","fileCount":49,"unpackedSize":97887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdHcB8CRA9TVsSAnZWagAAq5IQAI2N301jqG6WPQ5tzG2G\nQxPtKSaNlxMrMwKxxP+9iSciBxJ+P4ZiBcvohpy2M9w8Qi0oDZLssvv7xQZ7\nF8qrY+IgtFhf5hB5oN9gtAg8iFmCjIJZ4CYCh2pQJimnrb5inIDvcHZWuEa6\nOp1gbk8JNhg00/D++yp3DwEohLl6RjkBGteM5w0Sc1fcgHrsImsQdQWb+4P5\nzBgVw5oYZTTJTBInSgiT9N+2FdlA4/b+VuvJD53I9yOgIDk3Qd/vk9B2U9WQ\nrItTajOcUeLRDvKjB0m2sDUQdHK28evuq+kdTLWMLHfY3PdiGUSz8jmbuWpY\nSIvy0QKdrbib/tCLAsrNzsVBxfyjiaF20OSbecrVJUBzgJmOskxT5MkqNPHm\nbOmLL8pbJ1+EMZHqCrqFzaKb/+7GNoGEup9RlyABhOzYzDEXpH8RwbW97kS0\n8o05vqEWyDrwzQVq+T2m8nbqZ4KW6cN0fo2PG3Bd0QSfyy7DW0mJZk8nyaKD\nD8JizSDHqooXZomh76RSiJeWbe19ibSk+qc8GbBLVlsEgw4laaqGm3C6RwPI\nBEp730mkfjo3eiUCjLLzIO5Nxkaq1DSqwXMmqX8VQUXbr01sJ8Dyw0ZsGLw9\nsXuHX9vanqmoAfrMxk89pcLbigyN7eZl/GGvwq7i6+YSJQo0qFmDhpqxVb7x\nhOc4\r\n=H2tT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqM3gmEbTAdiDluepmmuymLemxk2L5rBWFNPh5NwBnoAIhALojT2WPl/0HxuvROFqeYg+xHnbYjQgOTOUzBKscvgbn"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.0_1562230907624_0.628886657836476"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.1":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"61e2517e4bed9bf5ff23161854ffd0b772eeacb6","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-80FIqIron+BpfVUisdX4oTKyIgw6td/ib2/Qo3nDaVDsnHft1HYRvxvIOETvqf4VkULHiyi9ytn2lVhTl/T0zg==","shasum":"ed7715e42a63f9b089f0563a1c1c5ee4aaa7d755","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.1.tgz","fileCount":49,"unpackedSize":97724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIyQfCRA9TVsSAnZWagAAJu0QAKMB6Wx+n6WLSQY8wtc5\nlh1s33JfsWCZbqoodH9GIu5D2kmDybL5rz04jQNzbxPNNyR+tK618U/2zS21\n2fABFkPOgiflCT080lLgjV9A2mnKkAReeQISsQHOp1VwphdIdBQAk+2iUmRY\nGQ6m3VjpWUNUMryeAbZtRNq2GNspMJ/sSeYH1G/4pHB1Lugl3aad6qXF8aOZ\nF17oBRYZysxxYAtkZg4RCqxhu8Dpdre1fnedev7osOyUlDcgf6DVANOEeXSB\nDNVuEhC7sf7u7VPvUGda7Izdz+ATBq2tBQIwyEOuF/ZGFpk3Srw32b/rrkwn\nJvKQJ3/TFQ13XPDkTmIYTcqFbeqN/cE+Geq4qykk3+ZCqeSteshARhX0NdhU\nhvxslXyiJxM3TXk7/EqLBy7Xjn/jazL5w3ISO7mar948X1YYl1ldJHKquOGQ\nHCck3DivmqwHcWqibTBotZYUKRSRCbFED4OniGxfxvjPZcTiia8hk8IoXNE6\n9O0rDkaUlwUtvPXsWT6q5ebABUe1vMtMEKdKpEX98853QmGLhtOU2xe51yj1\neVibwvnfZfHSSOK6dWHWvSVlgXBAqE6lJNPT05gGniT+2SU2pndey82bo0kn\nQ9EMsN9Ge3jjc9FzQgtDn4E9cTRGpiSq7ybxc85q8aZqSxXkjgTof/Wkg8zw\neLGT\r\n=kyr8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlWwgvuFDlnuSrGBWWCscXMD0cfBJN8RvluIkNVblPsAiAOmIPF5mnJf18KKk5vGmtYgAGn20uDJcn7kt+mIyCzFw=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.1_1562584094359_0.14830229193383349"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.2":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"972644beb6700afbb042f7b0892434b33a8413cd","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-t+4O44SrKoNhft2qKi8Q03EB3AA2L9e+NPvf25gt1dCLQIR7zBR6tfoPFBueOlQY5nKH6LsmM5Kn5ysZKfRLBg==","shasum":"7b38f4c43f3b0020754e6d9119ac4b2ffb7a3793","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.2.tgz","fileCount":49,"unpackedSize":97669,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIyYNCRA9TVsSAnZWagAA0mAP/22J7E0oWYU5oQ7tmLOF\nDioTP4PjaSMZYdAYG2opAHNBFoivWaNw9kg6x9dmYb9dH2dW2bEgSmi1MDTj\n6NbOirTcIDNoLcUMtqrFMkFr/gEborbyfadD4F673hjkITK1f2Icxsmwc4uu\n+URpkkXeMUC62AOiCkhKJStOhpvk7x4dkRhYUB1Q6FrF9HxzkiXoU3SCzkaD\n2A9zERS4ecAvsgdPYTwe60ysR8B9yd7imciKxYzl+rJgBzT/4QPHtHVDiCBD\nTXOVY7jyw/BsuJYlRpXgQL4ixHJ1sjg4BCT5++Nm4C/5e+ifzBk6BmrLR1Yu\nEr6tj19m4mKpRbGqDYBV8Rcexi9rpoN/qG6uAMix+zT5DmaruktTBOiSzsgl\n+DoNQRGjQN/8sH+UNRAI8B3zagMmNWnj58Ux+g2TNrkLlh6g0L8lBmbLRdj5\n5RLOyQzP3fdQIPE9mKzpwUHevs9pSBmeFXDDs6zt4b+syFUvcWT9nNUtexWU\n1NVQXrD3FGR3W+jdLsMDPnIz/bnvn66SNn0b1vUxAV9Sn58kQ87ou0v/yzUP\ngJ5PvZokASmHLs5SXSYsp2/yYjvGloVmgj/LwtVvl7CVQrB4QXndzOO69KHA\n5dDjxJHCHKdcbRvcKQkfW1KrT8gYSqWAzkK5F2F/Ok6l0zciNmfWfmQIjrfv\nb3PO\r\n=Ugfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAOsojZp0/iWCu0NPC5mbG4nQLjJHMPQa3Q7b0ilZi5cAiBoy1JD1WqG+m+615sYHoUR2pD4hV/UfCKoCog8Rsb0dA=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.2_1562584588607_0.17998656901213916"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.3":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.1.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"c55191f189df8b1804328bb8567e5581d2d239d6","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-e5AoupbS2x21x6TWLr8lLzlr1ZtjR3IL+jTt74/FVRkWvyNaNL4V8/ItKJ3RJq9ClOO3x9thPEUPT9uDc0RNpg==","shasum":"07e94635a28a72e2cd25ea34ced8e6917c2bebff","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.3.tgz","fileCount":49,"unpackedSize":97778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIzf4CRA9TVsSAnZWagAAwAQP/icTX2Ni+Evk7u3gt4fr\nz5m3NrzS5t5y61jqLxIZ88dVV777kjQ0K2Yh/3l5Ws3l/UjhRZE15Ohn2fDW\n2PBpgyXgutnOLM2fmfl1p9wr1ML4kbpynbIgDi7r+9G5t/u8ywAoeAHacS4w\n5IE3Odz+2gWrrozBgspzvcmPNSIKh2DMDfiP13B0UqdPKi2dtpnMY5DmwA3h\n9saEJnOZkGgT0b+BmlZKGcwJoF5IqoQHw69xMHwL4wep+0MD5aQL/WG2DSTJ\nubDpCF1jhQlpNqqX3/CZ341v8LvyZa/qfgFJZN2Ws8ar7dbPHcwxL3pJpDNP\novTD7pULajrqA9Qa2flDSMbsmBKjIak+6dZUYsPqgG74SbPr2BTJoUb3VXTI\naG3cYX+Y//sx6EB44J1FamxTy3PTtz1ClHWCwApgvi+kHYVzXqzRjhsHroDl\nzDQWyXVWzYy6VoAmrqdo3C2y6XQeBPKiuSZ7X5Kr4V/fYyO+pgSUzCqAmV7P\nveehGy2vEbDzDQPXD8Rtj2Yibs1xj66y48pRTg4aWELQK247c0HhkUn3aEz1\n9VW2+r8NmtMIEJ/52NTqIhTKYpfzzXePH/ahndeWxbsc8m3QLGZEF/4Ge6ZP\n/7Po25sIO1WX4WhYdptX7mhDpW1l2zZhiwrJmYrwpzHeOHpKSxUT07C5G5bv\nQ79J\r\n=tzQX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC4RU0srpBOloyJ0bcWXGdqUWBmcLlvase1tTA/Vkye1AiB3UfR9EpnqfAIkMoqgMgPFJQFUoExCqPZNyGchT+NqKg=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.3_1562589175549_0.9893215958825754"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.4":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.4","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\nSwagger comp\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nTO DO: `jwt` middleware description\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"4e489dd1498d832501c7adb6483cb608f1efa1cc","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.4","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-U6TMq4XwEuQTCf54z2NIsR3oZkvQrmHPxk53WNDNUCpjy88t37+nyBAK5WOEi1R1TXl6+GsKDaMX73ELR18aDg==","shasum":"37f43aaca25d9469e75aae13973d40e9f1ead112","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.4.tgz","fileCount":49,"unpackedSize":97774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJHQ7CRA9TVsSAnZWagAAz4gP+gJjYwikkugAsm+LN6dt\n/xWXgwSRG8P0AlAyghIoL/6kDAD7874cIiJ3tKD1iuk3nbk3c8aors1kKQHB\nX2Xtl9jlJqzxWT2Q8MHjSwSJhuaxsWx0w/5FKrrjBxfDpxOWB78dZrDtDYsz\n8zrLXY1eWcnmtkCfh/u5d4ZxJhOVCnAkFecGmt3FOTR5uSAs1aKeXH5xix+g\n+/f3YOCPO/ufP+Rl6y+nwoapca9KnpexSx/+a806SP0X+WoQkO2MFOpqvtp1\nSEeYnbrIfSl5uO0zuFiB5TTcMRQbWhL0rJKD33wl+fWIQ8+N0bdWgS5HI9qW\ndTL4YkVB8dYPravSEyUJbFyjIOfws1EFvvfDxCwvpQS6F0r9Uz845EK+iwtD\nUFCqkldW8ApJVze0ndTd3aOVbSoRrK4bp75fNtPz2XYYmGXvOthBXdZoVXQC\nhhDD56RM0qN+zI3ut4PiZdyoF8pd5EYMF+LzcKCCGCjzE1DRE4do1GNGMVkv\nHkYiKBY9WAvBhmki2uTJRRboWeeuRf+hOTiS2JVcxA69kARslDQ6ntK/gVuQ\nybJrkc89RxWd5VCskOj6q/TZBOj8X6STYGh1hBSWYzFV086Yz+L4FDD6vi9s\nme5B4fIf90Zp/rIqD37MGaTVs2X+vMOFlK3U4lDhOL04vUapbYNFxB/95PQq\n1uZx\r\n=sDFC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrvbw8NG+KFzhn003rFq7FjvOci8Zp9vSibrPyTMmeDQIgOC/505svTXE/LhYgQd92/wqxHnX9kYezETC3F9Q66Xo="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.4_1562670138324_0.23348038343081456"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.5":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.5","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token gets successfully validated\r\nthen the payload will be accessible\r\nthrough the `$meta.auth` property.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\n#### configuration examples\r\n\r\nUsing a symetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"]\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"59f03913fa7cd9b6d81edd2754fa49e2309c8d98","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.5","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-c+KUGrTDkb1IJ9LwGZ1kkwFOIfKAd2nY6RJTPAUqyqH1MkaIknEdzH90tMT+06acLCpadSOOyav1jYA0KeKbgA==","shasum":"0a9ef4d23d7add10356b52d39c927cc09b371f08","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.5.tgz","fileCount":49,"unpackedSize":100083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJdvCCRA9TVsSAnZWagAArU4P/Rq8WNL0CP6K957jfZwF\nAXA3pRwq2IVqjvpz4WJs2Bp9HdIQ1mI6pEP6gP3Ah2FxysTuZhdGxhxlPQmp\n0j14/p+ydIjN5FzP6roGjc8G5ggWe2cydsN5A9oyjya/NpPIqeyg04H50jfU\nEczNuYYXdA2X6m0V3sSC3PBZPulkJ0VysMZFLORLOUlmGLel8Y7au3dQfCsP\n0Tr2y6AYJ9K0oUSFixYZM6TDf1QttcWK4orkqKCvu1hvzPEZb2kCSfSSNg4+\nFah/oEXMSdzWLTs/XGJ82xnca+y94ZM3aaWw0PY3ghOknGf3gPucRgS9CidC\n6HDNu0+MqvHWmt1g30Ud/f8WfJfVijKVkhPLOFaZ1RsE8wZKodi6OUwX3GKh\nS/RUBF0u52jIDtpA7u4uGluZMyl9BELsf+LVVNY1yZ8DnK2CxbT2GdSTY9h0\nOddjpZ0Vt2NICnFskODe+J4XZrc/XdPg0f4ugHOvisjthHJznBt0WwAKw74w\n1JTrxZWw9GQzL0K19Y4iS4bVL42yeYaSZ+n7+BTQFhVkemmTQ1QrM2NblrVu\nuZSWS7NlLT8hbaaaCEus4RPOBfG1R2jCnZGlMiAMZPvR+eThfgnyViEPrfIJ\nSXxSLKRh8R08mQp8LUQ9+Twe4+6fb1lRmkPN8O+4pyqN/eEf0heXCMxG+/AK\nXh2H\r\n=BKLo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFFl5OPKS9hvvDMN9UBuTbXJEdlhRJoDAgvNKe7Ej9vDAiAXll7J48JdNF3qgSRqXSH14W6rMtqDHMpSXc5Qck/cRQ=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.5_1562762177639_0.17811484367303554"},"_hasShrinkwrap":false},"3.1.0-auditAndReport.6":{"name":"ut-port-swagger","version":"3.1.0-auditAndReport.6","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // swagger document, path to swagger document or a function\r\n  document: null,\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n  */\r\n  schemas: {},\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n    The context properties are tokenized and can be used\r\n    within the schemas and swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  context: {},\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) - Rabbit MQ producer port namespace\r\n  * `exchange` (required) - Rabbit MQ exchange\r\n  * `routingKey` (required) - Rabbit MQ routing key\r\n  * `options` (optional) - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) - mandatory field to be included in the payload\r\n  * `methods` (optional) - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\nIf the token gets successfully validated\r\nthen the `$meta.auth` property will be populated\r\nwith fields extracted from token's payload.\r\n\r\n`$meta.auth` is represented by a normalized\r\ndata structure no matter what identity provider\r\nhad generated the token.\r\nThis is achieved by the concept of `formatters`.\r\nCurrently only `keycloak` format is supported\r\nbut more formats can be added in the long term\r\nin case any need for that arises. The formatter\r\nis set via the `format` property\r\n(see the examples below). It should be either\r\na string or a function. If a string then a\r\npredefined formatter will be used (an error will\r\nbe thrown if no matching formatter is found). If\r\na custom function is provided then it will be\r\ncalled with jwt's body for each incoming HTTP request.\r\nThe standard `$meta.auth` content format is:\r\n\r\n```js\r\n{\r\n    businessUnitId: 'businessUnitId', // null if no info\r\n    businessUnitName: 'businessUnitName', // null if no info\r\n    tenantId: 'tenantId', // null if no info\r\n    tenantName: 'tenantName', // null if no info\r\n    userId: 'userId', // null if no info\r\n    username: 'username', // null if no info\r\n    roles: ['role1', 'role2'] // empty array if no info\r\n}\r\n\r\n```\r\n\r\n#### configuration examples\r\n\r\nUsing a symetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"],\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey,\r\n          format: 'keycloak'\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\",\r\n        \"format\": \"keycloak\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nTO DO: `requestHandler` middleware description\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"3401f8968d574b12e790671a5ebf0032f0dbd253","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0-auditAndReport.6","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-hp1IOwNPZv3elDA5i8hjHJ4aYsNDUcuibRz08D1Srdpfk/PmBh745oPzyORzX33xU9T6+g1Ili844Fpbe9Lv7Q==","shasum":"cda560a6f2a0df31a3c82c940ccd0191d25b7cdc","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0-auditAndReport.6.tgz","fileCount":50,"unpackedSize":103598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJzx+CRA9TVsSAnZWagAA/NIP/RVNOS1K6IGEkTbtl7sw\nx7K5tMciz/QfVWpl+yINY/lYYYvpO17QnkQ1htEiXa2E0+WkwUVz+NovDKkl\nyvp0/DW49SFia4J0RQg3RssddqZzPR9JJ33ZaEqV067ydX/6wvdaLnsfPm5V\nYoe+QmWaU6qKbazmiAyxkTl8HJE4NKwQ8mYPk7A9VBo+MjYtWix2oKLYMc0M\n1/kGwiOPDow5a2fiBCLHjp/Oe8JwCpaV6lcQkuvLh6TXdBIDXCRZ8JL9nJIi\n6lP2u9xXfqzM/ufM+cYj2SsjZD6ocxd/H2yzQ8bnqhpTC83W4YQ+SOqJfio9\nBjEw8e4rbmWEzMZ50o3ytyPAXfu6smBGQEx29/k/kh/CvufIStXRX/xqsSxH\nWNLQDDzoQySeh4qvaUKiuGSiesKXv/b4yy2dVjV7/os4PG2qF2pxf8RVPqSa\nGwmYoVY8P8nr0sqAT0VRYI06xgF2gG/714J9j6TVYrCZvrnS+Fvqeq5pCPOl\nbgF8do6dtFFkrSmhOGd7+bVpeCmGH9QfV6xb4M+zarZo9zzdjg0/jAYaCZ0l\nZr8gtO8hMJ6TsvOBireZqYgxZI0NfVaZDbAkukCPyjvLkMyVqQzQNRpy3rpA\ne5+nFQf6fwL0CWsBXFrIz+1iKwF0UR/AQzDqAvK0bU86EJ0neIG154RZRgDT\n/URC\r\n=26pU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICs6Whtq5Lgh7kryoc5B2Ph2YVjsee9Ye35vz1vB2d29AiAnXbHBoD0NkINdxkCSUaZyS1i48fEGxXjjbr6UuVC9iw=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0-auditAndReport.6_1562852478033_0.014936101215476727"},"_hasShrinkwrap":false},"3.1.0":{"name":"ut-port-swagger","version":"3.1.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"ee9975bbc2e261a3b8d0765f3d702e528798905a","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-+bM5AvjUFPAUhmtYUtD5MeSY1ZOk/Gt+qAyz47jv3aV4T5nCJJddLnDumVOfH2lqZTKocVzmKmXtr0JRioPkwA==","shasum":"7ea946a41820333e3d1e4692e91c94cb968bb36c","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.0.tgz","fileCount":50,"unpackedSize":103665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJ0YrCRA9TVsSAnZWagAAqcIP/1AzAJ46HgHQ/Ozjo2sQ\n6uONv9uGfZzyOiVnF4DqxB6J6zymQ63rK42HyETIB9FO42KF7GRKjoGn422x\nQ6u/KdxmZYcvXlT0sxddVfv50rYf1eG0Pfc8cPyEjDVByGplfSQbH3f57vIF\nXVKmfaPN7KFXZ2hOetWmN5CfJ60sxUfprurrQqEsJLqnqKwELvAHJRkcTKCA\nNdauix/2h5LU25Zw0xvnUR99e7MYMI51JRoQYsUbYHBr/ZP52PtRBCKGTbd0\nF8cA7U4Lnn/i1eYO6D6IequsKC7T9iuPIen5aJ/83B2WM5BiV4cmcX+/4puH\nWon4GCGC9B5gFOF/ajJIHe0gr9UsHWIxlxZiKt3ch7Ob+Ogom43U5HEpEFUb\nLS7rqwYAwH5Fpba9A3TVRY8+l/perpvUA8aEn+He4jhWNUFp1+T2ZOjldpaQ\n4Yv/r9sHPmW1n/ux+hIhXjLjGvt33qwpAFs1pAYDEU28YBawLeoEbQ8inAxF\nQEYRFT8y143mJt6i/fVdNFE37qJEfQpxlVUsiEetJBEM2pygghl0hO0FGl1z\n7LKHm0Byv8UM8/4G2FKKkvNyrQ+Q+2aRjRzL6DtoRz1/EIvVI72+KYuGzxBy\n/aFYt3uEO3AaszwED0WQRa3neTqNr/qMafb5I/HAUgw7TDTmCu2ZLHAimFm9\n9oJv\r\n=ydMo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBoOlBQYeE0+ALE9I9FeyMYNa7fgqaDS71tBbYSH6GUtAiEA+JQ5rVwXqYKzWM7yFjRy/D9glWCAayfWx7njkELPvUI="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.0_1562854954303_0.770543435965046"},"_hasShrinkwrap":false},"3.1.1":{"name":"ut-port-swagger","version":"3.1.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"5639517ed4bc192fe05b8e252254966a655f61fd","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-JeV4Ka49rax5LXMjv1RIFFnfq6+VlY/8s7J0PHVmWDnVcRVJrrZ8XWcX9eRWvpbq1zmkz1UZNFRAzR5XvM3vog==","shasum":"45770309fafb232a6c21dcd31dd1114c73f50253","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.1.tgz","fileCount":50,"unpackedSize":104071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKDkDCRA9TVsSAnZWagAABSgP/i3bXCxvzH6xQGpGpiab\ncpGV+dYUTCLcRh3vWRx14MAGmwk6yS7bKx8Mc6T1hUfk9IxaU4Lnj1EkkvR0\nfGHoU0CwjQT2N3xrtS0y5goC7AXaJyWFYJrz2rcJ3aa1OUr3Ln6u7Uo+L30x\n2VgZj9u3YaJLYMUuZ3Og6hRhaSVcrixX3URQ1fMTAsQJrgEYc+OMyZqCIfKE\nGpXlvcElw9Fqkc0a0BOhID11o7mri22G0RfQqKpU4mEl9xSFYpO6nyDvSrHy\n/mRsa/UeUXYmBWwF2RstXpZGmh5QznZ44a4ULR9IJ+3QkMMl4hsAsS8IGdnc\nfcXpj90obUVqLWZDDvWmOueKuIzSBoJCtYVgadwT0MXVRyEN5bdDIImF4JeL\nB5QiKXjdx8u1fvhPUKQapneVl35cenK8ceYEvsb+NJEC+on6a+Lbat+PiE8Z\nFjr7fzo3ktaUzPPJoe7dTkTD1XmGJk3nCPQwBA7w6HLshGsgi75v9du6prcj\nz9OsaNjSMusNZzP0/DHloz/oQEnGRnIDpuZfLmDAPJDu8ae34GV58HMAsuT3\nKVw8jAafTWIqGtycDyI0Z/iPFGCnzEqTIP+leVlsfu6I2kBWl9L28szKsajJ\n7PuFCx78GkO8vz3TXsB6ORBNOb9fB7qQVlomMSnhJ45JfyipLhGRf+AQ6w5m\nCeef\r\n=X8bn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID/K+qIGwhz6inDsWQTcxd5+yHOQi3GQBX+9jTonvuM2AiBhILyVsNmS/OQyWVIq+ItHcXQHR/fiqa+ay0MCAWaP2w=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.1_1562917122376_0.5141098165135942"},"_hasShrinkwrap":false},"3.1.2":{"name":"ut-port-swagger","version":"3.1.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"a0bdd4c9747246f82f6d52205ffde3b671e3a589","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.2","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-A8/t+c+TaQ5JGq2pM7p+ORtAeVhVojiwXtS6D8BOIqQz5z7FA74UJvB5aI1i3pALsQADPHj0RLiRTewAwbJ60Q==","shasum":"19af8c7b4b6768738b70a9cdbd54be67b1a745e4","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.2.tgz","fileCount":50,"unpackedSize":104478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKGGmCRA9TVsSAnZWagAAVAwP/2K6zeHt8HZhn6LVjVmw\nX0R8e1oCMF3iH4jdaFq9oJCOimqoAkMVS1Uk6/foax0N7wB6rkRSrP42wlC1\nLu+Ee9iyqgH5slKwuUtO/4RnCfcVbtivE7GdhLiLldlVcbztw0cuLUAcY4D5\nOqSCCRqX9Tk1d0DWgR/GQVnoCUAmvb0T0jYjEkx/Em8IHEb7/2/iUmJtXQox\n2Z9kKizJQ85zAi178w+AuSxlplOv0d4Po70aB6EtO5eaSuZI4wbmC02pCiTZ\n+dzrA8DYJrzaMOVStUn7h+H6Y2bLPmIeHUGBlebvuChB9rpJIJ07AMGFme2V\nMRPPKivda68walIpdQbMjWdlk9Xvpn0N4F+6Dd+qzYqVxHQslt6sudY+m3pv\nb9QudLmntWv6fY1I2kgIVqe/3C/kXMVZLAIF7jOgMXWvMGrBATqxrpw3xQSF\nmkF8w1WiR5AJlREoA2dkos8oN2JERJCWQSlywKMxhPjSnNJdFJtGT7S8jXzi\nq//SA1HnN/H5TQ0c2XYTZk/5t5duPOlmcVPU6mnoJ5TfdriIdHyTxcwfKXs1\nuBVlOXWIczPhdiXlGNOuP/zgxgBdNKlUEqbj/xNAGYl/hk6J4jSGr9cbVIDO\nJZ0GNPkkaNZqp+pc3QVAEVY2+D1vo7rCxtmLa1QXSZMQuX9LjU359FIWKXUE\neXCN\r\n=7cya\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHAG7aRX3krSOy6ZkMYmbJzVvokvUGUPbyBP6/z10FOFAiA/FeVOnZsEvU5GP5Zfl1HjtvcE+b7KS2cvqRDeDmSufQ=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.2_1562927525455_0.33849472175931616"},"_hasShrinkwrap":false},"3.1.3":{"name":"ut-port-swagger","version":"3.1.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"b84dd07afe2d829977ce1f07c975ea0bf16c79b0","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.1.3","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-Dk7TjiHw6qpSEobqLsjCQ8uCP2OqyokrlBkdBps+WgfXadW1KB5YLK+XH3aDW29Jevrp9pdItLKRoczxEEuaNg==","shasum":"969e466d7154c937ef567fced53086a74ecc9df7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.1.3.tgz","fileCount":50,"unpackedSize":104551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdKGPYCRA9TVsSAnZWagAAvacQAIriw+T2Sxm3Xou7opS2\naHl7G2fW02YZBgQ18kzo3rJICWKZxAmSLNIK+NSE7IyFS0bf0Tpt2+RCOK7g\nKzDYNby0z5aDhgk3Z1oglkAF7osY4XKdFLSp/ovrqPWjW9t6zDGpBby0THi8\nEXps0y3nFHeJnyoD6DgaFqP7rgz0GFxID4TrNLA+JB9ifmYwvfbYKxjzAhSp\nlHI8s+32UfZg+dENyRkiLMU7R2R1TxJGZuDVa+IsMA8iAg91lRyJ7tDUpkZY\nDKNDb/vVRgC0r+NQf8OKXyBSrIXPSrUzkE+1JSfmkl+eBgxX166Cxqqb6h21\nxpsP4QkOC9D5EXQK7MJAkUB62X8/QTxCc37/XK3GOoEQQrakESy5/ivmKZla\nRjE9FDTe6+7PBIU7KA8l6L/VkwTs0xi2m50B1tnx4foEXt7T4lOwPXkYaIh8\n4gHPRWityQvyStERJfEcNc3wlreZudfk+x0gLorX324OvYLaFHr5mUvXJVoU\nyFatvam7ZfRw3ilphJx0j3bJNDIhuRd1JHsIg2o4e2xs+0N9LqT3TVxN5ivd\nHJF1WWFOWGxzvK0FKTRHvph6ZbTGf4q9bbLWHQO2VmH8EhyC50xacnoc/K/z\n8dfbgb0GCBnVJn3k5zxYxlNSyXJqo4Wve727cL2CPpTt/geWTsSN9brVVd4d\nN0mO\r\n=yd5a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmuN6nxcF+i6xaG5KKUO7vTaPFfdPRUXYdGRxrWDQF+wIgU37foiQEU3m/pY9YdzWvHN/8CxBw199d8XtQDooVFGA="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.1.3_1562928088125_0.07707081215416323"},"_hasShrinkwrap":false},"3.2.0":{"name":"ut-port-swagger","version":"3.2.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"31c7680dd5e5d2fdd78f6e64357e90229e6899b5","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.2.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-08qYl2Nd6jtPJcM9kVm3vxKsLpqUX5dYXlVs60et1Ihz0Gf/biCiv1TpgvYB1BCxXXrAomfvyiDcTxwnduUWBQ==","shasum":"0683312e518c0f4a7eecf194cb1c89a3e6b38240","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.2.0.tgz","fileCount":50,"unpackedSize":105383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLHxCCRA9TVsSAnZWagAAxhsP/iEfVL1F0pKHZUT5rFr8\nkeHwECgbv4b/96Qq90NrUe0oVWDVyu0ZLQPgTi6DKnRyaCtKgbH38f6Sookj\nDcrX41/Deg+aTaRCTfvVGxmQYGG4sLgY0r3ML09QTo/A3R7ao/XzLgBaTEdI\nkXSExJ5MC7j/ZDmFWc057VGt/XRZnjxT+XBVWCAusgXqms2YstjFQFY5cgYP\n9tC1o0sXmKBKf7mewQL85zlB+fiucgpS7HGLA7he7ieqtrWR4w7Oox+JLtgW\n/SrFQz3E3fzSWERB1ERK11uXWj+d4iiXKMpEXZz6gbQsbQl6fXy/Z9UoevRb\nAVW6fuTG6pWNEDMUzlc+8SV4kaXL5UIFD2dE7spJVQ2nAOUZyNpQAuSyfMHC\nbfdVOBaNtxrMArsiH2Xm4Yr4Vu0vJ5huI1V34LFCTAOa4EpmSv2bN+qkKoC9\nwjqsIosQdXimj8+eVofaakF4IEeQtlM9I78I6ibsrJq0G//e/9+h+mG6g0N7\nCUQUpdFdoh+MgS0tB+JAtcUyBX3ju9FxEyHxvSbkx2JkD4UJXYNFyzQnRQzI\nHqPTvM7sba9NhlNeIwR/p1sUyRBbYjCCbvZyQ9yJ/HJR0+emCQwvDptxC1Q4\nGfIJeQWYAjiYkAJ81BAX6f8FRYP4R8Jdt4hkVmKqA5Xsz9a1TAkqfSF2l3JQ\nO2RV\r\n=iRrb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzsRG2WvIH4i9c38OzdzLzgq4mdpdx6mpx8SE0U2vuKgIhAKVXf8ZU7jh6N+s4gDPtNI8Jl6igTYz8Ty+8bP/RsY3G"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.2.0_1563196482129_0.3921181459373406"},"_hasShrinkwrap":false},"3.2.1":{"name":"ut-port-swagger","version":"3.2.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"dd7b137fecd2c8eb942b49017560e8dcccad205e","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.2.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-3ISOcpEXIjkTcUdMGmqgq8OnhSLy98ZTYx8htO11W6sINp6XkS8TEN945ccNZ7+jCdQVd3BwJYGVnazgYqym1g==","shasum":"2e6178ed9dd5f179d3e0b599e841df4d6a7f707b","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.2.1.tgz","fileCount":50,"unpackedSize":105834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdLIKOCRA9TVsSAnZWagAAV9oP/R37cfAoRJJMVs6YUsm4\nk4lmGE+YLBnNY6NEByuDZHqerpX6Wl11GHVOe9Wlq73EKj/Bsgex/7dRYlu9\nkoeDvfTwBnUlHe4cJ3symbJkHK867cdlqGxYVY0ifDHNMdrkkH/M6N3tciLn\nGrwDnO6mei/dvFl1A5iEIfjY55nzubmCmvif5D79jLBbEhwfr6y5CXQsBYqF\nKnVJD2GrV0OOQF+jmBm1JbLNM1H1xTVpZKbDJwLW8XuAIduxmWFYFwvI4nWs\nlOBCSQZMqkz2DHjNIZrNQPDUK5NGT2m+LhXkmyfDKdgPhgxJ9iOyzlCZ1DTs\ne08jLNR/RrN8GEowL8f2qsZPZRdqpLmKeVFfO5JifKwo7RajAsFvfdPMgejR\nSghlTcGxR+ncv80rXsscfhrf5Vh1MNolKBTOYMx60XFeHn75pHHZj7xKvyRe\n7MLFm7rUP21Y8jiPAHSjb15Z+/DwH2EKeCedgmuPW1pcYHg1fC3kNSf/NUIa\nGARHXprBW1eR9julWxtmqGG7lRGrRkONKUKDqvnanKSDUeKTy9KxisnVZ08v\ntRsPKgRQlPjlSPcqq+g/YT1yS5VLAxy9FX6uuFe7nrGNYzD+TxF9izTl92/O\nDIKZalvJHkYtmKQDc3o0nno/LQj9FOjGuVmrgdTy9fePvfYy7XgY4xuKScqX\nn17F\r\n=IX5x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWnkFwh19wBva6NJSsP594ZW0tHyOO8rfJlc1vHnSyKAiB8EEKPeSTORj/1cC77RGkp3VLtqo3Imorzeyrrl/969w=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.2.1_1563198093255_0.9516301412153425"},"_hasShrinkwrap":false},"3.3.0":{"name":"ut-port-swagger","version":"3.3.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"71b27a724435ca260300b22a0ea2f006d9651d3d","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.3.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-U+ViAPFtQ6ui/27zMkTeLsuiLS+erQauCVB/qIzdVVYTkviWJ8wOx/pcB8RvXByWkVWCy3eviPCkcLLRx5/O7A==","shasum":"9dffc55b1ddfd0715cce23a318abebcd95ba7e22","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.3.0.tgz","fileCount":50,"unpackedSize":106924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOC45CRA9TVsSAnZWagAAaHwP/Rk+wN/uxUrGG8gmLeiC\nXzrPA/kOjFS8yql0MJkMo5V2dzRIQY9yTmFi/V6wO+S/ih6tPDT3agbFjNLU\nPBwIxabM1ETNwMOE5SR72Cbuhfd6DfPoMxALVqDmtUDRvRpjop2zyWHhy9H+\n0cWLUTyaWcBcTRA8xiNwY8SqQAv02JrVJ7EjWSQkkWNBD2dxxHRn/tKKtoKS\nwbqVvCG5fgQAMm7sD0KM09orwRNIDMNmvU2oIzYDg+KbLDgYTDnC7s95ZFcN\nACbl4+2x8enQ9zolLr3KbUDd1Z2MEBofkxDDHFRGNPDGOv93c2pbFp4t+a1y\nCJARu4zt2p+9izJrjRqPg/oF9Z255kqpf/TxFkbiXlrfSTQAHnTSoNshbuUx\nzlv+Wu9jrX2Nk4wPXcniWsfuoN7JcPG6zEAlKiMH28yIQi/Bi3FVgK4TLsqd\nmE+T6Y/3fTcVkewcn3X5sMGi55Qv2mSlTlf28h9HvZVaRoQGg6VzyNiqLBdx\nuxJUa2xKoj6srvRYmExWCkhJprRxt01rQG5ZkAbMOoQd/CnW5o5r11IHn2/+\nOBWhHjmb/8XiU7G0GSIaBzI/z8CWV02Zl3bKZ4r3SyNwU5Z1u2CWgkvxnWV1\no0xTma4OADzkDk8NJbYkzAy4uzgYFeSgqnCgP91w9G0ofEBMtW2ibDzzMHZq\niPf4\r\n=dpgV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDaRp6InDEjGvsam3B+fU15DJkhxwLfpF8siq5o01hb1wIgdAJNF97w+kQlBQod2af7b8lKksVKnE9Di5nwfBeGAWM="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.3.0_1563962936795_0.4738756301146414"},"_hasShrinkwrap":false},"3.3.1":{"name":"ut-port-swagger","version":"3.3.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"2589baefacfb8ce4b069d8a272c53d56f41f1c95","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.3.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-4iSyI+k/u6yOmP0wWSNLGIh6RDFJCSpoZ56/YO8RerYcsNZi7kQafnwpoll/QT7M4Plepb8Zn+cZ6qdSPtIHQA==","shasum":"2c9f3d403ba037fd37b09eddc24f73f1dd25c0a5","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.3.1.tgz","fileCount":50,"unpackedSize":107040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdOGA1CRA9TVsSAnZWagAAzHEP/jKeCWqaDuxcXvHZjDKd\nv96Qr2krFYpbN43YedeHambyrvNOFtJYf/CpHcm8wlXGjawfbEOhQcW5AQJE\nPE1dCCynyUAxenUvSwV48/0FoG3zUa1C1dBn+pnXVFrFVM993/7A6VEBXO5C\nE198J5lLa5FUhh8r7BCWJGPnHNAcixyvi3wYC6mO6ZGBgFjJepuoix223lsF\nwYRgr9BiPveoKa0GU1ToAzEEjDmNeatNiJ5j5cn5eRlnRMaE1x1AL7/QOnNN\ngdAazptVXn1ejc6T4c9tgl7numBpWJO3soWiQzjcfxY+gNpSYtlEI9KgAOLL\nzRU3nUY0/vlYf+mS4J2rHHWd0RBX2M5/40TqT6BAovxagcDW6R4yQorkOHEO\n7a2/AhBRe2bn3G/k8cSwuSLm97JWLfk0ZvL4MB01Pve+T1RJUnavz1E/afeK\ngeMEyBG4akgYxafDO0pL17bd9PsNSmJbg75W3yB9B3JZIg3ZnZfnK1ScOdFD\nS2hXTm480U/VuP0QrNKQCduV/3Co6YIu96AIdCYH4cakjecD+fAWV6KS5k8V\njYhL4zI81iffSJ01xACGcI0PWsQ6c4WQrg60AaeZHmUayWlw5AZ6zhfeLlOk\num7iFz23OrEpcmkOvWDzx2FZY0QyYn/feHf9CyIeSSdHXu3uPp4DoS73Y1BQ\n18xw\r\n=77YM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSkIPVffJuvlviiWfHvvv5qH9dVT2UWRb2n2TQeD8mWAIhAJ0SNP9n7082htfXIwAJs7xZue0Y+dM4kCBmanPLS6IM"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.3.1_1563975732782_0.9886265339305136"},"_hasShrinkwrap":false},"3.4.0":{"name":"ut-port-swagger","version":"3.4.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"896b7efa1523c2dcce6f0af34f7963725115f2e4","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.4.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-UUorylVdqDPoPoOd9n1ePFdfCXdVN7Em6TA+sAfNFZwDKVn+VEvDx9CCOPlxOVFkpoIxtfk1WX7EqX2M8qUBzA==","shasum":"14a8176ce9f5a5da04d2489661260d03cfe83dd7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.4.0.tgz","fileCount":50,"unpackedSize":107707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdQuoUCRA9TVsSAnZWagAAwQ0P/i0e1WadcQY839+YILdK\nbRzEVqtHJ8CDWbjAEWSf2K+QuqRA2CkAuo6tMgSv6FUM2e3u7QLy+OjBtOXl\n5YCSrFZH+qyk/3G8yl7v3kZnl7hRMTzgUn67TQlqqEWTMN4K5MaT+u7B4g8h\nvt6Iq2549ZGa9dLagCHCNS3JBnq6NhP0N7+PShf7K5C8M4R9Fw5OrY+Oy0FI\nyrJ/rl0//MnWbDg0ZpqCuDcau71nYBNbynJrNzvgL+1WCuDRLNV4epP65dJO\nP1e7HXcKTDEddduYgKidScAPHnIOydpDYTmY821iw+h9AojFuhxkFhYOY2wp\nZd6Xy9utnu4xSs1pp0umfO5f0+ze+PT8Cjr0rWzGgpdKjaKAzgpDo5ytjYOj\n52BTB3T1A73kcD5uum/Sy3u/YeiHYXA0SZfUvWUvlfAoG72WMKqQZHzHf5DE\nP9LNsMni6xAnxYbBEnjwftKam2sTN3p5N35Op+WzzHd1oDDNO8oNxQ41HplH\nIW7n2d60yhp8KJqWJucNpxFRtaWFj0gsg6GQKqE5hD7aCAsg4KU82UWDxGtV\npQjJG8iNFDjVedmoiXX7Nh4jUGXmLsQZofCAC9sGtHntGi9fJtvfdQ6bSlnT\nZ8DlXZKrEdJ/EAAnDukAuF9bKLIuF6lveK1+6sDh/m7GvvLYzWhpskthDYY9\nb6Qu\r\n=rx0D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEeeHjj2AKzpQLC8uQEfqdYhEUqEcrWJvHIfl8Q3K0ozAiA8UJinYKNMZ46gqvv+UdmK1wFf6MR4VYW5jMFrF6yW+Q=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.4.0_1564666387748_0.22064901608946874"},"_hasShrinkwrap":false},"3.5.0":{"name":"ut-port-swagger","version":"3.5.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"d21b74c3920af5f5ac86a494e87d4e25e17c9c96","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.5.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-Vk6jEGvnuhfs0Y3Z2II1Vscw+RGaMu/ALl80aEbbspOXe6eXUYLTpPx31H7gggTlxHB3WgSOCCma2Wx8IF9zxg==","shasum":"3641d42c804fd400f404f85e565a2ef9ab51c7c7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.5.0.tgz","fileCount":50,"unpackedSize":108606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSECHCRA9TVsSAnZWagAAkTwP+gPY7m5IUl21+Z7r7PSg\nV0sxQsmks82WPZjnyCAHWXseLsHz6Dfcu3a1McGNw4tsMpyn5f6dRoH0DIAX\n/ONfQZ1osLyzAciidrjzZLQD7a5Yd7cZv8WdoaFLJQ6lA3EJ+MNO3pV+Hj/N\nuTkC7hePmbKrhAHxsRAmHsPrJOCca6vg2sWT+sBCGS5e0cxxCLA/hcbDuyem\nQpAcPWmT/NuLDTkCI1cris9T9IQG+rWOAiEAlBIhEqCLekvKhVKrGeukofO4\n6dyKA7qkdQjM1nuNj/lLdQME8zRaB94ezbK3SpeyvqWOjh+orz4L/WSuPnif\nPD7cnQeNIMu+skk5Q1h74nyXIVQxO5HViLjqyrLbpvVT8ECZd0aK0cXCQJZ9\n3Ee/53SLepVbWuOVoC6OSiMbXX2ZdHt0/PaTDmPzBqBiy5z07vaF7kWKQZr9\n7XfswDZ3BUGT2ikoRg8pmKjp10YSx8rvJGR/dI3AzaCHv5JeG2tK53s0QcsY\n41FsQGR3HnNMeO92RY9iyZUDKqvYy09EuaDo/CSfMWs9ZMJLd2C8EXFxdc0n\nG870JK/ntb1AHU1g+v4BlhdkPIFhtLx1eBf1hgcinaRv1hrcucBHvtjm/rO0\nuqYKFL6FQ12tqG4KYtKE8d1tNQte4CN6h240u2YonnfoT0y0576ER4XpTqXr\n/t6h\r\n=OBEa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOswzMXbvXqR12JUVNyNqEJ9GHqUhGRDFhl/zq46/pgQIhAP06al1x3aKyiHbgtIQ0EHKJV2Hc9VrVkYMT2OtsYbie"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.5.0_1565016198478_0.6065172418079525"},"_hasShrinkwrap":false},"3.5.1":{"name":"ut-port-swagger","version":"3.5.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.21.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.2.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"17d1a593c2806fadd6fe52b9b3b561105d92379c","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.5.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-vsTsQ9UUdmJkSYh81HPVz3Nt7DE4B5OjpQpV9K2lWZaFrsXyYslRAMGsy72JpB6ETZiydJK53uXmePgAUAVkQw==","shasum":"f598e1c2243308c0a0474da02caf73eb8a315dfa","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.5.1.tgz","fileCount":50,"unpackedSize":109445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSZ3RCRA9TVsSAnZWagAAjtAP/2lK+N6tTNLOLczz6iKu\n7B0MTW9w0+j6vZkgNE6Vw+aRUTVahrbt5wxGGY6/1c0cf1nQTLM8nKkk2CSp\nh5h6W2v2M8pYTta2ysDcvK9mpvBaM0fCIpOPq9lT6JLW/75cXb4GNfnLVUNk\nwpKlmgeSCA6Duc8Wg3Y60utjV8EH+Wlj+O5+dYEAbPXm9dkP4GH4qqG6THNf\nZMAEOH4vuVtJHYrvirGE64jUMHZc8jziqZtx6NFwIoUpY4of4gYkePEJNEx4\nYYyv7k7nYgBcCgWcaAu7nY6nhFl1lROGdqQ5tQNqMy+3911ztkeoWLWO+tJq\nUQMoN5snWUi5p7R+wh8e1Jck+KzNYJIHZwYZ6dUDEted1q+LqGMbONG1Q2lk\nVGWBAImvS5GByf96QLl6Tw9PS1aZfZDmdw0R0ofLR8PcHSS/S5a02/LqBld1\n4XAyWazXHpzaguaTooose6nxmLzIJppji2yF6usKfdU1c39gYjCwS3RTpZjQ\n9xSHYkrqf5cPT95zX92eVsm132oOUHQGXATr8/+NR5fZvHoS+aU5vUQV5Rnb\njT0r1k5P+ESkbozbsCZMk5r31jBgu1t2Ml8fyDunFfNmxvN3McP3Tltsv12q\nnidRb+RAcbiDvVEwPNk5NzXwPnxL3Uglc8fDfaarrCfd2bXmR6ZAE/xyQUQZ\np6kz\r\n=gdTl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVzVOP1/tdfkOcmS7Zy4/I+bVryCreXZDIPs+Axc1jSgIgdmgpa6L/AJGDiOMTYYoKUOk/K1+7wNvV/jwu8yjc67Y="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.5.1_1565105616585_0.21119878040531104"},"_hasShrinkwrap":false},"3.6.0":{"name":"ut-port-swagger","version":"3.6.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.23.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.0","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"29b608163d3507379a5cae376fb4e675247a83ca","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.6.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-TYsirV7T1yqPWYRLBgOp+tZMsydjY8Q8ybuotfTnQrOoFnoTC1fz+Rn3OUXRKdisTozro8X9qMEUWXxDiS+akA==","shasum":"454ddd9b1868b9a32efd714ddcbfdb1bb5d05c49","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.6.0.tgz","fileCount":50,"unpackedSize":109665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdSuu9CRA9TVsSAnZWagAACyAP/3e+dRzfWxf9/kgZ6/BK\n7PTCn+FZpkPHQaFQS6ovnSP+o6H98RKMKLa2Qc8tSDISFKAn+qgstqcSmCWK\nEO1R+kNsfGYfTg5IuUVt8RY2xBKSQySq6LozBFhRXB/OZUVnxug+b58SPdo+\nAXvNttCzcMHJczjRFlrXNV8m0Mi4gEV+kpGR9aoX9sBmNWJmTFGXDhcMulmG\nTPlElnEjbKyskIaljrgMVJ7c3HPAMt+VDZoxaMrj9CklNBEIBZQoiMbBdkC0\nU+523nUTtJj3aKuFQ4aFufD44cJ4O2eAuV36PQSJCaLi5/UOBc4hOoDz3zwJ\n178/KOVY6+TfiTboyVvloOEeWkgVjktta4EgKAgjGnlyiYyZRkARourG0Zay\nHvTkMC3+iT2C/toxzrIRFhxq5SeXxFZH9v7Xtv9LrBnByJ9TAqIDZN3oQHPW\nyD+3E3geoKEB312TPv3Iw8IFg+jUJaC8jE8o94I+Q2tPqbK5Ync3KcbZXtoB\nxj8fp0OE1HJXDICowwYAblxyz5UysoPHhZcapHa9rBI+3nX72N9cu7fLlw6g\nf5jX399gip3KA2qDR2NRKZqJSMNsC2ubu4kDEQaZNrGq3Emr0MntJ9zKCbkK\nH/Rl9VKawSlqocPVL1XDhAtbpcj/oDmGQ8djf/4ohYqRqnJMO9M2Qf6AVZMJ\nWW1f\r\n=ESNz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBgZV7XIBlVRfUOXuGH+wkPucDjbULEXgkgHOGqeZwWAiEA1kfTJhk9JgBnVJNa0qpw6WKplyQBOQgd4gS9SilR2sw="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.6.0_1565191099998_0.22836148664720635"},"_hasShrinkwrap":false},"3.6.1":{"name":"ut-port-swagger","version":"3.6.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.23.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"53b5d7f4293d4cc5076539cc933e491fc740d40f","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.6.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-EYxBGtsmj5SdTF1CoJi7FshtCdg0UiNCvDFkA71+AR/oqMEG8Y4M/L2lrJjb/fFiQeh/1GiS6F2cHblOThMKpw==","shasum":"a4652038f5c9596490759c9456bfe5ac00a73f39","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.6.1.tgz","fileCount":50,"unpackedSize":109880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdTAGCCRA9TVsSAnZWagAAb7cP/3qVUVvC0lqQxxgKHmmP\nIpx1aWl23Wh/1pUQ+9VsecV9cySoMMTX9z8CgA6e9SYnHohhyB+d7+4F4FLi\neL8YB6M4nLMkVUU+jpyY/AMi+MpqeGKQozedFHNHm6nJGOuexVY6vJsqIVoM\norZSufw9eu1jI/FnDuFwS3vk4gJMxMiQraCVRI51Y046/O4fb5aeK2YhVIyD\n/b1EV2Vuw6HvvWYNan7WpRdorAEY7WQQ21nYFzfoWxi48TuY9XB7xu1ElCZ/\nEkwvng+yVJQ1F9qercKqioJI+2SXX8PFFoRUPft8xwD9vyvPFGg1OlQVJ9uI\nG+oEgEXlrhbgBLd3M6Y2SWNmHOyWF3PlXG++O8s0HvAWaovfxkNXzz0J16YD\nqd2qU0yOKIrvpC3CTFpJ3BBkzSTfxBK+q7i7bNJ29rcWDtpuXvNJThm50pLs\ncHg3zUgjaAr+EjieUI4UffIhDKt+Gusa0pbfd7gMMrbDLfkT0Jb2CBkZWPZk\nLDdoyKeHkQ5gTwuj/MqQgQ1exOGf8caDZue/vkbzZB6ipArBrOdU+bAfjJQK\nkZ82HrlLFQundPNwFiU6MZl1j/orpaXqQH03vODJqgqfjsVGeYGKXAx4rxYy\n9tP1ACmfCoIw1RIU708E2j9UOAKw2kvSWDo1H33PxSYkVUtrf3yNc2/hM5sX\nWw3L\r\n=vm3+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBAoavkw5dQHmyAsC4/xtbUgAcadc8nLZpuyuXCzGJ8+AiBZ4fHg+6TooZpgLZ8w5TOk+Fn3qlfOeZJyhDprtRelOQ=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.6.1_1565262209502_0.5699960311559109"},"_hasShrinkwrap":false},"3.7.0":{"name":"ut-port-swagger","version":"3.7.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.23.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"21831d79066e046955dec7a66c5800ba5e900ed9","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.7.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-tlU5qm4qfte7WyaWTZ7MQroNGhhT8/X+wIGg/ykZTk//Cxm3ZBQywhQfw2qYziT3C3dotLmfZ/nE4QltraYUEQ==","shasum":"65cf5e8f71d9219d57d8f08bd63e23a575a9d1fc","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.7.0.tgz","fileCount":51,"unpackedSize":111463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdUXPrCRA9TVsSAnZWagAA604QAIMQjxxsctDdKBsL7K8E\nx5IcEydxheQfqDYCEvANh3D5wVKdIw5a2NxzlcsR9YnAd1kF64kIEvu6Z3Uk\n46z20QS4Y4dOnX4XDNDeLrRABC6+SuXluOVnCHjo2WguW7mZ61GBFQuHc1tO\nHDdmBQLazXgBwjTnhh99PX9gjHdnPZdbuFBXnNLPEIFozEee8qjRsYaXYonN\n9vDGnVt/12H9vJCqUsPs1LvjvnmALWU277v7r0vqbwUo6F/WtHhRM+u3s+ZV\nRzH6jzwp8+GRDnXl/BSl3Lk/0/jSFxrWu5SX4ur9/JF3wrEZ6isKHpI+Ahw6\nYbZpb7tPvrStQcvOgXMBvqF189iIQZiwM40XHfdD9ajTs+ZgUVJwhRncu7x3\nV5uLa0C66KfflabQjgy0BCZzN4lSyMXrQN2gLX3iMbG67uZRG1H6nj+mh0bk\nq/77gOOfBK1TRPbn0SH/+pFv99bWhD37MHtrsS6pHsvV/ONKtNGQE5GzCjXJ\nxICM2TYnfzihHvPuiSfA3OWhayx3lAkpK3vD/dJUcWfWcQ4qIL/hYJaylfNw\nO+GpW4LIvahYOygzc20T7sPkgBlHfxanTq7c65UO72lKWnG2lGgwhTWbB0Vk\nCBeKHUX/oHCYJInwjd7tDF1ofUYhs/GtnRkUVdW+9Q5jEei2gPtu3PmMaGhr\nLN+I\r\n=L88w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzdxnzkKUyKIo0G015j+0ie63XVzJusVNIHSLv04zN0gIhAKqg/2Cdi7Pbmkb/EtTNRCXZ21jk9UBvPPdKYrVub4Da"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.7.0_1565619177669_0.26508214225294946"},"_hasShrinkwrap":false},"3.8.0":{"name":"ut-port-swagger","version":"3.8.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.23.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"c416c70ee8e59cc378b18d516b90a9475da27fc6","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.8.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-+j0oG59KpU6jd7jSG+z0yACFbN2KGvljyrOkbKXQoGl+/77jHC9qGjcciytMEIemSfr3JnG4xVhRorrYny2ClA==","shasum":"5fc8cf9ce200d9cfd0e3bf36f3ad272b7f640fd7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.8.0.tgz","fileCount":53,"unpackedSize":113327,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdVpynCRA9TVsSAnZWagAAhj4P/2KgoXiQsXeoMu/X1Hl+\nr328DMw68xydtu+KWrzNWdC1pNmG7qTrr12FrC4LmlLC1ZXU//GqCzWDvbUb\n/uRbq+CuOXoybq9mxcnHjlIkFilxosMCdsZ7TlOQ0mNcDMY88QH9S6zc4uNN\ny2fNsgJmYyhA+63VYs7nHWImJzJZa3JLpSJ62yE3WrC9YvJSa1rz1ka0JG4u\nhP71PW4wzKeN5756yuI2xvuFKdHVmru5LKA8ZpqW5IMPIkXXib2+F8cRRmya\ng8eXiPJHr2rTdBx+oeJdwB0BM2nfl+nt23C1NSRjye6U0ECEK0G6WkI/e/7z\n5tdXAfjm4AGfkxtew9lkD3TuNPn0p3+ohBLpgvn0uqa2zA/AWKY4/RaIoKbw\n1bdXToQmydhIR1SoeK4c0TQ2LMT4rgILSwBm1sIHZKwBpMGOVgpKfV+wd+Ix\nBa8ivv48ngpL8c2nV5tn5KTExNIGcSjLxgK9l8DmC5vFe/EcruKTaREefxij\noFWniFhZRGunXPr3J8c5DfmIl01eR7iZrlJkdJ52TvpU7IbBYXnS3mjo/ZYR\nKBW8GrUposFss78fD7D1k7SMzuTPtTgLde4s1xsvX7DRTDVFMMHNr1Knod/G\n/EiCKIMCKutF4hEi3ccTUHuB3riRfArIAveizsSfQWgQBAxpPaS5dUwFhPzS\nVHTj\r\n=24IR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCISFdiDouhuXeTzHZGjcJQE5xxUm5wFZb0sBLmKObkqAIhAO6dJlw/teG8y6Mcuh0vIGVSjw67J/+hSoU6Ya7A/8E6"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.8.0_1565957286820_0.7184199752857561"},"_hasShrinkwrap":false},"3.8.1":{"name":"ut-port-swagger","version":"3.8.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.23.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"3.22.1","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"aa501caa309b9e6f5664d5efc50bcfc1e98b3ba2","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.8.1","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-rp/OJBQgFS5NWUeoKHFLksYr0QI/Kx3C8537i9SpBNX9Pen4PyiO9Scp6rZk+1NNxspzmHgmFWvRwcPNu23u+w==","shasum":"dbd2aa6c2d50c27e37804656d08dec1c7c1475c7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.8.1.tgz","fileCount":53,"unpackedSize":113542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdekbKCRA9TVsSAnZWagAAu0EP/A060qW4UPi5ar6ngjg0\nfIAJqWrqfJOvgwQ9MCTYud3rJy+OHWAIYQ6ApRVrXXo/QfrVDqq213iX89rZ\n05cweVpBUYaKYp1cUjXN4osAGgLfrkcUF5mMnXYZWKTK3M0uD36axBaqnLTt\ngGYzdJntWM++Wzg7Pq70718fAnLh4rHRvx0Et+DG5aHN54FqrPeinrjYxgtl\nYf0IuZFC8t6xnuP8tgCmazK4rWSFSp3yjtzZr3BNrcnFhzWXG8EI2I+FNSgS\nfL519B9ocw9gs82nELMCdQO75jUCTuDbXoBKq90bVDTN0M4jcC2QQPdhzvhl\ndmu/HMeDdp5z2Zd/1kQUr/WmY/1J1TXl0pHYavb0neldpHQZV+UPk7xVeiGo\nQkY7ZWzTLTinlSAB1lP0dacdyKv0+NngwRLChNAR2ZijSn33mxutS4PzoLZ6\nvy0BCEM/2pqQCGRLEsjX/zHUqtBgMA5KJtsZVtQz5mGD9emDFKj8lgyjYAW3\nX8cv224/PWo1SE3jCgzedc72I+y6PIcs2IOxL5DbyNgDjZWByITx87ZZbJZ1\nG70ulZPvggSAKHkLLC3yWEI6CRY3cpBUWreWX2xaiFEESkvGT8tGRc/FKrHL\nkNtUkNnIQET8CjHiANPxmPRvaLThqk6s9DO/HfgmLWDsj+clP0w5smf8Ype9\nCIxv\r\n=Lc3U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgy4mGWZ6z7Rgx0QgcPvXMtB4XIG1009HVUIW5l+8NiwIgcvjoolKBv8MWYyg4L51Z36mWz02WKhGkFXcQXuFX1Oo="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.8.1_1568294601719_0.4119707020906591"},"_hasShrinkwrap":false},"3.9.0-authorize.0":{"name":"ut-port-swagger","version":"3.9.0-authorize.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.29.1"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // static context\r\n  /*\r\n    static contet that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n  */\r\n  context: {},\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n\r\n    The context properties are tokenized and can be used\r\n    within the schemas via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  schemas: {},\r\n    // swagger document, path to swagger document or a function\r\n    /*\r\n    The context properties and the schemas are tokenized and can be used\r\n    within the swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${context.status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n    or\r\n    {\r\n      \"definitions\": {\r\n        \"someSchema\": \"${schemas.someSchema}\"\r\n      }\r\n    }\r\n    */\r\n  document: null,\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ)\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) [ string ] - mandatory field to be included in the payload\r\n  * `methods` (optional) [ object | array ] - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\nIf the token gets successfully validated\r\nthen the `$meta.auth` property will be populated\r\nwith fields extracted from token's payload.\r\n\r\n`$meta.auth` is represented by a normalized\r\ndata structure no matter what identity provider\r\nhad generated the token.\r\nThis is achieved by the concept of `formatters`.\r\nCurrently only `keycloak` format is supported\r\nbut more formats can be added in the long term\r\nin case any need for that arises. The formatter\r\nis set via the `format` property\r\n(see the examples below). It should be either\r\na string or a function. If a string then a\r\npredefined formatter will be used (an error will\r\nbe thrown if no matching formatter is found). If\r\na custom function is provided then it will be\r\ncalled with jwt's body for each incoming HTTP request.\r\nThe standard `$meta.auth` content format is:\r\n\r\n```js\r\n{\r\n    // user's session id (null if no info)\r\n    sessionId: 'sessionId',\r\n    // user's business unit id (null if no info)\r\n    businessUnitId: 'businessUnitId',\r\n    // user's business unit name(null if no info)\r\n    businessUnitName: 'businessUnitName',\r\n    // user's tenant id (null if no info)\r\n    tenantId: 'tenantId',\r\n    // user's tenant name (null if no info)\r\n    tenantName: 'tenantName',\r\n    // user's id (null if no info)\r\n    userId: 'userId',\r\n    // user's username (null if no info)\r\n    username: 'username',\r\n    // user's full name (null if no info)\r\n    name: 'name',\r\n    // user's roles (empty array if no info)\r\n    roles: ['role1', 'role2']\r\n}\r\n\r\n```\r\n\r\n#### configuration examples\r\n\r\nUsing a symetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token is normally provided in a HTTP header (Authorization)\r\nbut it can also be provided in a cookie.\r\nSpecify that by setting the 'cookie' option.\r\nIn the example below the middleware will expect the token\r\nto be found at `Cookie: \"ut5-cookie=encryptedJwtToken\"`\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n            \"cookie\": \"ut5-cookie\",\r\n            \"secret\": \"ut5-secret\",\r\n            \"format\": \"ut5\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"],\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey,\r\n          format: 'keycloak'\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\",\r\n        \"format\": \"keycloak\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nThis middleware is responsible for dispatching the requests\r\nto the backend.\r\n\r\n* configuration options\r\n  * `authorize` (optional) [ string | function ] - Authorization handler.\r\n  The authorization would fail of the handler returns\r\n  a falsey value or throws an error\r\n\r\n  Examples:\r\n\r\n  * Custom handler on port level:\r\n\r\n  ```js\r\n    module.exports = (...params) => {\r\n      return class swagger extends require('ut-port-swagger')(...params) {\r\n        get defaults() {\r\n          return {\r\n            middleware: {\r\n              requestHandler: {\r\n                authorize: function({message, $meta}) {\r\n                  // apply authorization logic\r\n                  // based on message and $meta\r\n\r\n                  // successful authorization\r\n                  return true;\r\n\r\n                  // reject unauthoruzed\r\n                  // return false;\r\n\r\n                  // reject unauthorized with specific error\r\n                  // throw new Error('xxx')\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    };\r\n  ```\r\n\r\n  * Custom handler in js config:\r\n\r\n  ```js\r\n    {\r\n      swagger: {\r\n        middleware: {\r\n          requestHandler: {\r\n            authorize: function({message, $meta}) {\r\n              // apply authorization logic\r\n              // based on message and $meta\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n  * Authorization via bus method:\r\n\r\n  ```json\r\n    {\r\n      \"swagger\": {\r\n        \"middleware\": {\r\n          \"requestHandler\": {\r\n            \"authorize\": \"custom.authorization.handler\"\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonetype Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Phonenumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Isprimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The Ismwallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"548ae3db9c7cbdb77faec2dd5dd1968302896f57","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.9.0-authorize.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-DO4NNvr/G5cWirgCoPnPyO66xT1FfFVkVvHtsA14kN6DFsi4VNfJ6CqIcYa3ucbYyM1TMeiAiqxcd3YPIqjWYg==","shasum":"5447f4b85a340e873908b45791350f7ac23a06dd","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.9.0-authorize.0.tgz","fileCount":53,"unpackedSize":117171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2/xFCRA9TVsSAnZWagAAmb0P/R4bEdYOLTk9cNZC88JF\nckY3MTbjoeUGVFN57fVu9u9njlH8glr9DwATJ40smFy2mL/N+/E/Trnr1CWF\nkqvB2ehgrIE0t0kJpc/OpJTaKNCUQrIWlG/QG2POFzw86gvf+/Bi18bGmt42\nwpBKo/bkRXsLLspEtsPGU0+LGfKXXUFamRsYVFs4Ph6QZZxd6t0mLLVKHQzo\naIWPstUWCzSRaBc+oVFJbtYXmxcEHIsceKO5qKO7JZXj73CWgDFmHdd0OQxz\nkR200pMJFPfql7sFQ1W7XXtM0FxhbD6wg8XPM7LgFLtc+9L9PxntwsQC3Uhm\nrJmwreVwOt5eXNAaL6YSaaPO7D6ZJH/itZV91hSmycB5kBn24YmeVDMVBx6c\nAsZKrJMt9VVaGySIArcyctmdowCVqthKEIr4sesovFrdGeiTyF896kj5iTjZ\nFppIoeGqezoCrD+wN1ufkgP4DxNflfXhJMzJRPXYTRzm8zfSPfIn4Q6TwBcc\n9oUsKJfXmYRWJQx2HWgw227hVmkOyZ3SN9cToS74BBr59bKazRPKVvIJccMf\nX5J/gkd64bhcX8afmMibJl9iv3bjlIcZAT5OtUTQlv5kEesWDL+kL6OdvmNg\n4XXIw1c+aSe1J9D9aeRpG4fsvDmhlxw+PDYYx19KziLnunHrH0Ehdx8zm8Dw\nnbu2\r\n=NJvR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZfwkPKYfCg65h1Kc83fIFDqnccTFBrzv7slv46j8RGAIhAOXIfXBpruyAuNcCvxrn7V87ni3LEeyEFrx0DeSWoItg"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.9.0-authorize.0_1574698053204_0.849572553726321"},"_hasShrinkwrap":false},"3.9.0-authorize.1":{"name":"ut-port-swagger","version":"3.9.0-authorize.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.29.1"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // static context\r\n  /*\r\n    static content that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n  */\r\n  context: {},\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n\r\n    The context properties are tokenized and can be used\r\n    within the schemas via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  schemas: {},\r\n    // swagger document, path to swagger document or a function\r\n    /*\r\n    The context properties and the schemas are tokenized and can be used\r\n    within the swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${context.status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n    or\r\n    {\r\n      \"definitions\": {\r\n        \"someSchema\": \"${schemas.someSchema}\"\r\n      }\r\n    }\r\n    */\r\n  document: null,\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ)\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) [ string ] - mandatory field to be included in the payload\r\n  * `methods` (optional) [ object | array ] - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\nIf the token gets successfully validated\r\nthen the `$meta.auth` property will be populated\r\nwith fields extracted from token's payload.\r\n\r\n`$meta.auth` is represented by a normalized\r\ndata structure no matter what identity provider\r\nhad generated the token.\r\nThis is achieved by the concept of `formatters`.\r\nCurrently only `keycloak` format is supported\r\nbut more formats can be added in the long term\r\nin case any need for that arises. The formatter\r\nis set via the `format` property\r\n(see the examples below). It should be either\r\na string or a function. If a string then a\r\npredefined formatter will be used (an error will\r\nbe thrown if no matching formatter is found). If\r\na custom function is provided then it will be\r\ncalled with jwt's body for each incoming HTTP request.\r\nThe standard `$meta.auth` content format is:\r\n\r\n```js\r\n{\r\n    // user's session id (null if no info)\r\n    sessionId: 'sessionId',\r\n    // user's business unit id (null if no info)\r\n    businessUnitId: 'businessUnitId',\r\n    // user's business unit name(null if no info)\r\n    businessUnitName: 'businessUnitName',\r\n    // user's tenant id (null if no info)\r\n    tenantId: 'tenantId',\r\n    // user's tenant name (null if no info)\r\n    tenantName: 'tenantName',\r\n    // user's id (null if no info)\r\n    userId: 'userId',\r\n    // user's username (null if no info)\r\n    username: 'username',\r\n    // user's full name (null if no info)\r\n    name: 'name',\r\n    // user's roles (empty array if no info)\r\n    roles: ['role1', 'role2']\r\n}\r\n\r\n```\r\n\r\n#### configuration examples\r\n\r\nUsing a symmetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token is normally provided in a HTTP header (Authorization)\r\nbut it can also be provided in a cookie.\r\nSpecify that by setting the 'cookie' option.\r\nIn the example below the middleware will expect the token\r\nto be found at `Cookie: \"ut5-cookie=encryptedJwtToken\"`\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n            \"cookie\": \"ut5-cookie\",\r\n            \"secret\": \"ut5-secret\",\r\n            \"format\": \"ut5\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"],\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey,\r\n          format: 'keycloak'\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\",\r\n        \"format\": \"keycloak\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nThis middleware is responsible for dispatching the requests\r\nto the backend.\r\n\r\n* configuration options\r\n  * `authorize` (optional) [ string | function ] - Authorization handler.\r\n  The authorization would fail if the handler returns\r\n  a falsy value or throws an error.\r\n\r\n  Examples:\r\n\r\n  * Custom handler on port level (recommended):\r\n\r\n  ```js\r\n    module.exports = (...params) => {\r\n      return class swagger extends require('ut-port-swagger')(...params) {\r\n        get defaults() {\r\n          return {\r\n            middleware: {\r\n              requestHandler: {\r\n                authorize: function({message, $meta}) {\r\n                  // apply authorization logic\r\n                  // based on message and $meta\r\n\r\n                  // successful authorization\r\n                  return true;\r\n\r\n                  // reject unauthorized\r\n                  // return false;\r\n\r\n                  // reject unauthorized with specific error\r\n                  // throw new Error('xxx')\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    };\r\n  ```\r\n\r\n  * Custom handler in js config:\r\n\r\n  ```js\r\n    {\r\n      swagger: {\r\n        middleware: {\r\n          requestHandler: {\r\n            authorize: function({message, $meta}) {\r\n              // apply authorization logic\r\n              // based on message and $meta\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n  * Authorization via bus method:\r\n\r\n  ```json\r\n    {\r\n      \"swagger\": {\r\n        \"middleware\": {\r\n          \"requestHandler\": {\r\n            \"authorize\": \"custom.authorization.handler\"\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneType Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneNumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isPrimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isMWallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"406487e5810a566225805e40a10a002b7ca01d86","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.9.0-authorize.1","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-DOi/SDzxUggj4RKMAVkafbjdNqNrhFp6DVDpUEkQZUVyMx72LSMMIpERTHYwOAb3zPW27VLpsiDzyKI7geuApQ==","shasum":"53b7039b62c604548f05b4c8bcf1121cd75e3e0d","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.9.0-authorize.1.tgz","fileCount":53,"unpackedSize":117134,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd3ka0CRA9TVsSAnZWagAAieEQAKOaq/OvFR3/zfUHOVa8\nm9nrojA9lCeVThEVQelfXM4OPEnAct1aUWN+sNOfS8gVmg35kutOGTNrR0yV\nw69yEAJC+x3xzXR+wviEpNsbmY0ejBgpq29cdGGBkLgO0yXbNZ4j0a/9fih3\nB/mzTXAituXClMNuWXwfxgzK5/Ux80F7bW36G+ZsQTqjY715eLbeJ8/uy2s/\nDaNHNI4Prvi/1hLo+OBptjUN/oikfFZ+cTTz6boquVI335Z0BjWZwS+ZLyXW\nQyXOfMkfnx733F3G8EXERTZaK5KPweUaEzfkxymQC24ddb9KmQt0S6OVCowC\ngdkGpbdDC7ztX4VSB002PMLis6pU8b5qDq7Q0s6OK9GJHg2VFreuGvcYnCzV\nXfYtydAXHfLFiRgYJBcWegL8eMHJsuMeEtRRoIoSR1ncmaUYgzwKQjBV46ZV\nuLqGmj/awcwfPJR7yzR4Vw/bp9QUOwZF/k896byDVs5y8CAq29zWKyGDa1Ng\noE9ldwLmA87sEooFDAp7Jwj7kCye8z73W2WcHKV9I7FQQNaHapvsOnVVJx0p\nC3DUo/2Ye1JJtQ0RherYKKW3ejCvvl/Wzo21jWfm1aFRx5LajMvykwCFhW/e\nlelSYhSSmUZBnqaq9MRminn2bw/bi7uIeN865eq4/SN+SFo57mFDzxpKFyvf\na5wQ\r\n=m7Z9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC89z1Jxcp6o3qI6z/taJdg4BLnDbskTOB3Ec62biIPNAIgP/4TAa1YUbLnqJ4kR1UIf2cdlp9oA6tVpXJZLLhU/qY="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.9.0-authorize.1_1574848180070_0.3407269372852564"},"_hasShrinkwrap":false},"3.9.0-authorize.2":{"name":"ut-port-swagger","version":"3.9.0-authorize.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.29.3"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // static context\r\n  /*\r\n    static content that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n  */\r\n  context: {},\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n\r\n    The context properties are tokenized and can be used\r\n    within the schemas via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  schemas: {},\r\n    // swagger document, path to swagger document or a function\r\n    /*\r\n    The context properties and the schemas are tokenized and can be used\r\n    within the swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${context.status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n    or\r\n    {\r\n      \"definitions\": {\r\n        \"someSchema\": \"${schemas.someSchema}\"\r\n      }\r\n    }\r\n    */\r\n  document: null,\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      jwt: false,\r\n      router: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ)\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) [ string ] - mandatory field to be included in the payload\r\n  * `methods` (optional) [ object | array ] - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported `objectId`, `eventType` and `objectType`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: objectId must be in `dot-prop` format. Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\nIf the token gets successfully validated\r\nthen the `$meta.auth` property will be populated\r\nwith fields extracted from token's payload.\r\n\r\n`$meta.auth` is represented by a normalized\r\ndata structure no matter what identity provider\r\nhad generated the token.\r\nThis is achieved by the concept of `formatters`.\r\nCurrently only `keycloak` format is supported\r\nbut more formats can be added in the long term\r\nin case any need for that arises. The formatter\r\nis set via the `format` property\r\n(see the examples below). It should be either\r\na string or a function. If a string then a\r\npredefined formatter will be used (an error will\r\nbe thrown if no matching formatter is found). If\r\na custom function is provided then it will be\r\ncalled with jwt's body for each incoming HTTP request.\r\nThe standard `$meta.auth` content format is:\r\n\r\n```js\r\n{\r\n    // user's session id (null if no info)\r\n    sessionId: 'sessionId',\r\n    // user's business unit id (null if no info)\r\n    businessUnitId: 'businessUnitId',\r\n    // user's business unit name(null if no info)\r\n    businessUnitName: 'businessUnitName',\r\n    // user's tenant id (null if no info)\r\n    tenantId: 'tenantId',\r\n    // user's tenant name (null if no info)\r\n    tenantName: 'tenantName',\r\n    // user's id (null if no info)\r\n    userId: 'userId',\r\n    // user's username (null if no info)\r\n    username: 'username',\r\n    // user's full name (null if no info)\r\n    name: 'name',\r\n    // user's roles (empty array if no info)\r\n    roles: ['role1', 'role2']\r\n}\r\n\r\n```\r\n\r\n#### configuration examples\r\n\r\nUsing a symmetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token is normally provided in a HTTP header (Authorization)\r\nbut it can also be provided in a cookie.\r\nSpecify that by setting the 'cookie' option.\r\nIn the example below the middleware will expect the token\r\nto be found at `Cookie: \"ut5-cookie=encryptedJwtToken\"`\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n            \"cookie\": \"ut5-cookie\",\r\n            \"secret\": \"ut5-secret\",\r\n            \"format\": \"ut5\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"],\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey,\r\n          format: 'keycloak'\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\",\r\n        \"format\": \"keycloak\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nThis middleware is responsible for dispatching the requests\r\nto the backend.\r\n\r\n* configuration options\r\n  * `authorize` (optional) [ string | function ] - Authorization handler.\r\n  The authorization would fail if the handler returns\r\n  a falsy value or throws an error.\r\n\r\n  Examples:\r\n\r\n  * Custom handler on port level (recommended):\r\n\r\n  ```js\r\n    module.exports = (...params) => {\r\n      return class swagger extends require('ut-port-swagger')(...params) {\r\n        get defaults() {\r\n          return {\r\n            middleware: {\r\n              requestHandler: {\r\n                authorize: function({message, $meta}) {\r\n                  // apply authorization logic\r\n                  // based on message and $meta\r\n\r\n                  // successful authorization\r\n                  return true;\r\n\r\n                  // reject unauthorized\r\n                  // return false;\r\n\r\n                  // reject unauthorized with specific error\r\n                  // throw new Error('xxx')\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    };\r\n  ```\r\n\r\n  * Custom handler in js config:\r\n\r\n  ```js\r\n    {\r\n      swagger: {\r\n        middleware: {\r\n          requestHandler: {\r\n            authorize: function({message, $meta}) {\r\n              // apply authorization logic\r\n              // based on message and $meta\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n  * Authorization via bus method:\r\n\r\n  ```json\r\n    {\r\n      \"swagger\": {\r\n        \"middleware\": {\r\n          \"requestHandler\": {\r\n            \"authorize\": \"custom.authorization.handler\"\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneType Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneNumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isPrimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isMWallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n","readmeFilename":"README.md","gitHead":"ec33d0cc2ab30bc7b46391b1e2dad700441a465d","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.9.0-authorize.2","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-vMcmjZVBm+t6Ei8ZymGYU26369IFZS9N6091+Yra+jorTKVMdpocovCrTdvozbM4u+QR1Sl5tGswL36MoUYyaA==","shasum":"a2cbf667eb8568cfbdde77bff1fbb16f9693e4a7","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.9.0-authorize.2.tgz","fileCount":53,"unpackedSize":116360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5QWeCRA9TVsSAnZWagAAjQ4QAKBt4AnrPm+9ILgiAZ+i\nmkTtO+wsfQ1XEKFr7JgDX+DAbBiAEFYSWq18D36qP3VK30GdAEjrle2WhL+l\nuW5gwUe+OrIiowP8ytSX5N1RBAip+TU2vh+jFGkMhKQ4M/sJAvaNEeBnrl1Q\nHLU1EeYtxtiijEf8hwF1lkLvMiGHjDvKaX1HueXRG2iMCMyd461kJsTMDj9U\nVvlOjRVYmoQTRWNidsJcLEvosSuYjDr/3kOopFhjFaKr2jqCFzwLTaohT+dg\nBavW70iRIKbWP1H5b8yl0cyuF93TpRtpBzvM8rnS73HNGkTQySzFG4wyokUP\nQWHdyyUM7vaq96IisDJLwTsIEOrkL4JX13IFr1LqCU065AMC8yu3KwYj8+Sl\nkbr1JuEJbCr9cnrwymeEK7De8WQJyVdMxUnVF6/MPWbm4Y/BMq5PCNb+AhvW\nrQZuqu2AA5931YLXThQlurIpGtuEy7cvKqjggNHad1p+uY1Z9quztSbwplSI\nZfLW0OK3oc+fzmJwVrsE/z+9X9BmjeNDWCi9XM80qnl1RQ+IWTobFyQGvZdD\nvCAJRzapwr3OMXqj0ufuANUQulsG5dm776Hgz0RAod/jNoxKECS6sojYs1IK\nMn0ChBt0rVjjKNp/BZjKGkIhe7W55PWG9SgJTHF5UGxxIdtHiqOFA36AylPw\nbk8u\r\n=3tsj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDGMMocpD1aj31jAFswOg7nrKTOKY2/HIbjzcfQq+JWCAiBKyAjyNZZhbbq0Dd8jCrdel/dn/1Efo+rX2W3y08yCdQ=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.9.0-authorize.2_1575290269964_0.6747540976808097"},"_hasShrinkwrap":false},"3.9.0":{"name":"ut-port-swagger","version":"3.9.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.29.3"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"dae12654d12de99bee36ec06d72549ef3c44c42f","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.9.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-jBBq/qUNUvu7QmDbDNBrvZnNmd2ab2O9Mot1Lv44vHNn3Km2Sw/a1QbWo5lCwwDHW+jaIHtNqqyab2DEKQIKcQ==","shasum":"8e87db5718ef55b7dd5edafdff2dc4543ba94a73","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.9.0.tgz","fileCount":53,"unpackedSize":116424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5QZ6CRA9TVsSAnZWagAAuEkQAIUI2Na4cSme8Eeo0t1y\nzCtBb0TSk/B1bk+9z4c0nTaC8KkdNnVwSDkixLggdkOM0YmHguH7gjIEkqdW\n/gpqVeEfB06exkVuRX6z+OC5PpVDmwekJOjz2AcGc0dtOvoEnVgGhAZJGxzY\nn9rF6QknHe++z9A3qP5IrrO4P+AgTBrt22lNhPowVly6hh80GQJv9YZ2d7lT\nD/5XWLzxGGxHUKJeKxsKunb8ny7yGJKr3bCa0cTywvKpT2m+2lySaoaDusKJ\nIfUbjWGBOkv7aIRKR0OKI8kFihjqp6nDMkOey8PKmIKqenL97EpEheL1kvaD\nzAA7qZNUDxPTMYk2L2pQYjkMrR4iveJnzTrfiVNxnZoRJ8qaSNhfLHRro6NB\nIgFQ81pV8ojtaE9o6wDfiRVRAffx1a+90smvussgY8inIO+KSq8mpbjXvLYT\nV7RejxzenbToRq+WJDmWv8yYCOXWT15/fwjaWgEvGzeU1q+bdV7D7FD76q7y\n9Omg3Wj+sE9tof5IIqj78Nm1sfwjvmqTZ/uaV5kzj0cUss3yoyTArTLei/dB\nMmZ8K9w/3I5EMTMIEhtz2fUFPo7BZR4FPenQbeYMCMldRN0KBb9uLPDpaYMU\nyvbyrv30AiDzRzhqr9AlSpZEswolfsmYn9zxqXmBQ7HsM/Q1erPxXuNoidzd\nMlJS\r\n=PcPE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICihyXR0M9y9xs+AXfGudfLdZD9LU3qW2sVE0r2f+YKhAiEAxvpOn7sULHD9TuFPnPwsJQjdLYSHB/m+v7Hv8h0D81k="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.9.0_1575290489603_0.2911777964653304"},"_hasShrinkwrap":false},"3.10.0":{"name":"ut-port-swagger","version":"3.10.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.29.3"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"ffb6ae114e749eb1c7d767c76d7e577bbb46b382","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.10.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-rKojMrIosk8DB7a1DEKAQurquuc1KBQTYEn5vPnc1HKjCPCRv0TjPnP84GWv2vY7BAWFvUhNKrKT+xJV0cWWQg==","shasum":"235d44d6e1451c4a58f4860df1667f3a2f51fa3a","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.10.0.tgz","fileCount":53,"unpackedSize":117388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd+4otCRA9TVsSAnZWagAAAFsP/Rnx2nbfB3Ht9UBTpCEv\nCga7dqBeim5u7TOu0bHYs9cKBuYQSSdPvrkn2DDlhL0lGn95r5CbfsMXOier\nThlswv+c5sXJVGpQ7EJOJ/0iYkmns7HLCGFgfosk4yQIDFWKGJjo0Ju4T6LT\nEENMa8RWEYHX5VaBOd8nWxvBDCkuZ+/1/Zvt5CWJYPevIE5SmmmPus7fpEOk\nNxA8tGpFxeRJ5kQeKuCgnLou9Gb/Vl1XY8OvBRbjhtjUW7kid6JvV/q7lwmP\nuFSr7CdeEqOV7jvHgJjujAo6TouSbmeHJ5fJ4Q23qSTJsIYpOPWpmVQmaxMZ\nF8Af3Dl9x/hZPppe+WttV9+GF9L5Ukjh4K4wIcUv6Qd7pndQA7O1b7KRyrkO\nGoN8aXOX87OcNNYkYBgEsiGC2ym8o8VcmRBuoIYWvFyHmXidawG+3X7sZSFO\n2ReaGN64Pum8UNy9qFH9y37YiNY6KmcTF0KqWO2pvQ8NwnnfTl5Cstrtrm7n\n0x3/ZnP+mjJP8M6v5vq3Oq3DJHtV0CGfF7+rPQqBEYIOiqpTg3q/l94A4Sqp\nldEcg+OYFK6711BFLdblI/N/EAapZmAbkuDK7aYg16ts0HVl8g9yMkSjuuPU\n3dNEE4MWueCH1nxF5qe8T9MkblQd99IRJVV/0BHqTeT8m9TXmwlRrslIn0ET\ndPGw\r\n=0MZH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHvoTmFw5waECKSVTQx7szNI9foU2EpGsQg+RNV+6sq3AiEAvV4QhtWfT1AxFOUj5sFDJ906ebLTqy9rggnqNHSgQ18="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.10.0_1576765996565_0.15598714423140825"},"_hasShrinkwrap":false},"3.11.0":{"name":"ut-port-swagger","version":"3.11.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.29.3"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"916377c08664be1434fe9244ce11c02c68bf8b42","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.11.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-MRoqAbrEkhTpvJTuI780M3FHydLoqjEqSFE/BxOCJZ6Ki54lM97ABoIvDfa/y/BawXy84n2NAKs5FQJEO6x4Ag==","shasum":"4d2268cfabd4978480686136646946365a1a816b","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.11.0.tgz","fileCount":53,"unpackedSize":118458,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd/IdQCRA9TVsSAnZWagAAOicP/jWUO6hr4s4OpjbHiuVb\nCRI9qk/0opZGNZXfq8q2XsoYTop5az1X6UL+2RdTK/NQOCFCCcXGGxphrzm7\nzjt/slBrqYCkX41WFqfZ+GVTg3l7tfqRoguire5QqZvUE8fRAIgVk1yd2Ay4\n572tYuvcIseRNZqGeCoJ+ic9m5XcaG4JATExqTocdExeyi3ykyRgH/hwWtZp\nP7UmNq3+svOPTHgDQJCfYhyYxjZU7NfIsjZdeiPEIRUWscWNAw5rl8dcJuYw\ns+eOWHVeuks/TddkqYPibYR4KdYY4XiC30c3fqxDKtfmwagEA/ap4i5GDGxE\nDtHE+ASZyoGC19wkYOh8yiiY5+VHYX5hj2eNb3L0eiGTc0+oz0xhPwJFT9XB\nb/jX1uj0KaSv1H0wLP4vJG16eyw01DztSugVOk+GUuqO/6GhWlvdz0wPwC2D\n5zN3kR87tMm3ZYCdwPjcQPg5NF9NJ5Q5LvA1AWMqOlLk89Umeu4YVoNyYRzJ\n7iduq2DB8UtwfT5qSklYPJ9cgWOKDNav6OhpyQcd5OBmdaflusqjavwuUAEQ\nLm8tWRYnIynzth92HHNPhQS3JzOykse+e1UROWXkJTXqo6/XBOKEN1wSXxHi\n8Dti40QxQfzgySBHiQ7TmNtSLvkM+rUK68rBLciurOSqZATLRABQyy2PN7Hf\ngHG1\r\n=JOzm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxvSBpsN29fEUeFdFXWRpHU9aDDcO+aMX/mFZcpcqF/QIhAMaFxtCTAc/JHnHj40jqk5uch/PBn1FMtNzYcg717wMV"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.11.0_1576830799785_0.38026530707159534"},"_hasShrinkwrap":false},"3.12.0":{"name":"ut-port-swagger","version":"3.12.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.30.6"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger-ui-dist":"^3.24.0","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"f581e351ef25b6b6d030c4e8c48f8622bcc1f699","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@3.12.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-pU/oc1FxdZeJCjeniX6scrXlYooFV8lu40Jv8y/AA2M8te8xWLPJyy4LztAeVcKf1/pnFTMcQ6xN9Ts6zF0dIg==","shasum":"cef7b1629306196fcc667e9da9d412e0ae3378cc","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-3.12.0.tgz","fileCount":45,"unpackedSize":84395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeJr5VCRA9TVsSAnZWagAAJtsP/2rtQ2gQfeHuTEAoxhIO\nTLprZD6zGQFphkJMkZn2SY5dvVSpd0z+4CSDQysDtk3930L9kJlxt5dKPZuU\n0LvCKF4wafdOx8z02SNwVIhvXKXRvUw3UFDZlBRR0rpFmqV0Xy01VgA10w7a\nUYlWt4A9PBR8hvAPNJwbBc9n1mMSP6IFujak7SdiFYUA3pknNae0wRcz7pyG\n1bTyRhIhYzPBQm76qXLIy/dD8vkW1BWANNoqGAPtk3ppoHNScegHsHJNO1eB\ngBHp5luj3h/6VyfSiEYSYaIDwHMtVHbxQYdVQcbyoC8rA/TL9yQ89eT13euF\nanbleNWbfsiyKQMCQcrDuFJc4nruhGTDoSkLMWEf2kdrAjAE7S7YDD58nxgL\n38XOy4iOFokq3KuCJOdG6lReD5F7/4ZlGhWd5I9az96f5D1CSozBhQ34Hk7u\n1vUmQTjj4jxP261CH3Pa4g8VHCSqFsI+wS/JmlRFII845IzNjcY3FYSk0stx\n5k1ORDUmYl2085aCccIWa1qqFXDnrtvipqKFJlnWmQ76uDLjXUVl+47Kva0L\nFW9rkx9KZ7vCrI0283sNGCIvDpJrUlG1k3MqkihJQti08wgPkAt50HwTLWxB\nLKK74uoIcdWsQgh4v2dit+qNY0bVwhHqZOfABKxhPC+1ebXuaSRntM6Q0vrG\nxhIh\r\n=YyLJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIpgaukUA316gvX6mg2riWW23sPhtxYV7GVWKjTMUoFQIhAIH3PWYUu29jwDZQlMsUj2wLePLGn15X0Aj0+d5yCBEc"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_3.12.0_1579597396675_0.36421010108050655"},"_hasShrinkwrap":false},"4.0.0":{"name":"ut-port-swagger","version":"4.0.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.1","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"9c3951464ad664f53a510dee168e9c7dcdae2300","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.0.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-F64q+X6mws/ADQmYsi7lkQc4zEXBM+Bz/i/AU8HKf5jyF0TGOUIx+YdgsXxZRKlrgnpy84QX0Y2OXC7smdfUeQ==","shasum":"46736f0a014d2675f479c739b5b92fc43241cda2","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.0.0.tgz","fileCount":45,"unpackedSize":87312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQVbxCRA9TVsSAnZWagAAngEP/A5e70QsxS465wzpahYr\nFtPD5/WWnTi0QTIakmnIoU1SjX0AJYAyf54BOZjwqXIX0oKKtQoC+FXZ1yI7\nC5v2LeHR97CdWz5xL3+KXUhlrz5qNNPpKRUOwMrhMPoz8F1VaZyzE0NmhWmA\nj+6wMmaWXWx30kIeD1LB1vgvZRil/Z2NZBp8iciV3JIGyVftECqrixovhP/1\nIZ1F7fOi1ARFxggOoWukugYDXZS4zSHTEEV7e1mpxDLmLBR6B4Sq1z7gvq0E\nt736y5eVQQdDDzlvZeteD1ZtT6WEnZbM/1NjnkJw8k1oQXzANTvX2LwmJxMX\n4k1JFHy7N48LOBY9snfJtBAOnUxNvsQxgqnZdC6K7e944G8ks5i9HLp8NVTk\nCFIZIqUvdsYL7JXX6phHrZ+X5iteyZZ3IAaZ2PT6U18w324dJhybQ33RB/FX\nW1alv3Hx8+KjkqZUsYBPs5pFtravDg/LeDz+cTcdwcdnzG2HFEQ9jZZajKqm\n992Xcvih8PbSvGn1F0mXyrx3ctQYuBhkwq4SWVrumDpzCYyXhEZQYeISRXpi\nmxsQRqM0+F4q9bBLN9A39JcfbniC9HR8R4MVzJttTGAYvQSGxJIDonCuwTS7\ntxNT1TFDa+tPBNgJ0d87MFjYtF1GcP+BV/WVr7bk7WpULHYfEyhkvzyznspx\nifoL\r\n=pSx8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGh+c/YVLLmoPLx3GxA+13nX7ClDHJoE5+FIPGaWVEqwIhAMNIek4CpQW4MyP6td3WseY8ya4g5mGOXdhtcmw7emqW"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.0.0_1581340400376_0.7396176546268458"},"_hasShrinkwrap":false},"4.1.0":{"name":"ut-port-swagger","version":"4.1.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.1","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"38af13d65a72b441a7889b1c4bfd28f9ed1b3a6b","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.1.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-f1ePO8atu7QH2/PNmpZqA6ceC1Dmp24AbduxtIiQhSam82R/DefHDxaWH1pos/ADQr9z8wqe/Wz/XD4Eim/olg==","shasum":"3168cfcb054f7731659ec92c300863b4511cf655","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.1.0.tgz","fileCount":49,"unpackedSize":146566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQnmhCRA9TVsSAnZWagAA2CAP/2/xGWNEoWM1pgDLxqvj\nq98kTp9BhNa82t4mpCdtIma+33NwTxtRDPaihFK/SKDsIamHAkmwv1HFEG6B\nNnnNDor9r3u5Qjaaxr2HJwzPt9uAQqP4Msrq2lrEasaGwmFtnf88tNrjMGyw\nju+41z9BWnjbXoCSq01Y4cikkVmRDOgKofOhxeyBomJKnscG6Y3fm/s+yKX8\n9bR3SRgVo3xyHdoT/TNqNikYQKVrVRwH8dARwBuOF4P0ndYXD8uue3irWinW\nyWXUpyYhkUIiV53tbVVdWFM2ZhLtNq+csGF5jaAgWs/PUFbBTvZbSTDChOvj\n56fuuIPS1kWZ4GAb6iR7Npz0sGNsFPt4PRa+EZzZZgQvMdI39psABWZcYIZr\nZNiHy7M87gYWb2iEC42k99wxbPnBcWxXsSFMkF+w323ggqKjUx5HBcfQjya5\n8vYO9GaaFhNX25ih48eOnq3zCem7giUGUQ53bncM9krgFrcUNEyzUG3/XhyC\nqbXUV7pLZEX6Aqq3iGOBQijmykJG3yhzeCgtMeTagWLbE49PKB+d6cHIHCAL\nKnioWedtt9NUujVhYQSYIgqG5gc2hjzbqAxA8MElzkMIFeOLIOllQN+ZSUR2\n439LXxqrRQVZXn3jQFQKy8qr4u5IvcvaKKLj6b7CUt13rR56dSGuB+EyiZGY\nP6NL\r\n=XGVN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDv4frFq7cFX7Ak9+GkXt4n4vACBitinFVC6yAPPKG28QIgCpWSyng52fOWo2fWUn0HtjDyo/bu9OOTjkGzYtqxDd0="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.1.0_1581414817298_0.1627580544441034"},"_hasShrinkwrap":false},"4.1.1":{"name":"ut-port-swagger","version":"4.1.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.2","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"944faa197812bb5e45646d244b5c6583f68fedca","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.1.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-uaWSzLoM7GljyK5QCpXRupMIdTv3vouMXxlImncvnjoxnIVpkNbxt8UY84x0jxzI76orwJ9IlvEIxXdmIF0G4A==","shasum":"486353bb9a74d990d0c5fe9f24f01a129c9de9a9","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.1.1.tgz","fileCount":51,"unpackedSize":147219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQ9BHCRA9TVsSAnZWagAAvgYP/iwiikSh7Or14kWF8BPU\nHU6cEKyoN3FTSxkF6DpNT3Pe8Vv2x3FdCG7UGd1ri8vUyO3cwGeS5OttMlu/\nYoXfDB4TLNojBBZDYmBXOv2nv7HBZSudnpvNzb/QNdkDrUWFGsmDhCd2J14P\nGgt97SveXM8etyy5ZH5zgEq7HwSOSJEd6c3HACGEm5UMWXmW+dqQ76MZNP0w\npo1g48A4uEhh34AYDftbMcavvq6eD4el9zeUZZZ1ZVJ/Zldeb1KjbNl30YxH\nwqUBV0VJZsZVNBOFmIaDVXImofTk+ZdwsSVgWekmnCkblgt9WMzitJ+NIGx7\nnkpg3emFzSRrTrIHi60h0XuTXKfAXrj4elo+d+nOL7d0eifl7KPpx8UddjWU\nUGjOSFlMrGfQLGdxyws6CdGsVudAX5aRLNf28yuD1/S5+hsUOP8lut6rLoZI\nfZHy6s+d/P1ohpCcMCl3UWCzrvP2ylG/LzY9fiIeF65/E9pMHZebhJbhlzcy\nHBKekmdl2AUDIqp+rcc/puQYBvpMsPUStb7kE4boM8QDK5fMi4v8uL2opRNm\n1GANLW35lzH6fxioeL4rpIemdc/4+Z41dikMd0QJyffEaIw1orNehuTDYvfA\n+lsN1dQDTDqHqOlYrBH86iLSgljF1Wl83JQQ26trCv9JkOeqx446cYY/OZAT\nsMVM\r\n=pumU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDNCbHJi1VXueKWKrpcPLZlcs8iYewkBifSiMWf7mR45AiBGh+v7BagDCl67qWflpRdv/BSZ4wBSWLZiDz4o66f1qw=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.1.1_1581502535068_0.7238890132307116"},"_hasShrinkwrap":false},"4.1.2":{"name":"ut-port-swagger","version":"4.1.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.2","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"cd4fca098a70fd18cdabbd666765e1960e9655ab","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.1.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-zUJ3OKL0OuwPzwhm0NkLD4lr7M++nvE6igGdsehDqCDKiGc3IvdNVx86oYICMsm0XvfUVXjb0FXwyRd4mIsQSQ==","shasum":"ab79754dbab127c9454a2cf4ec0f3d886a14ad93","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.1.2.tgz","fileCount":51,"unpackedSize":147810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQ+TNCRA9TVsSAnZWagAAofEP/3nJxcPDboF4dd6XQCWn\n1XGpvGHDgpXzJoOyK9HHwQC3wR7/agCciL/+JL37dhix3iFcmexJPF3BXEsC\n4LuSnI9BpRWYPLVwkEElumySi6PnghnNcaWAIIdqxyMNEQluDIvd/diiOueS\nFUxEjZvwSt2SeDdZP05RCcyFSo5hlIBKas2ErGpFhIVEWqb0Tekci/1TOgPL\nw34vtZ3gBZC8wKq4diRujWVQPrFKIpW4zQBNNivdJ+buPESARTLTobL+mm0D\nhxmnQA9Wtq/9hbGWunHJ8PF8t9ao6FCBy3FtH9i6ed6cO5ywQwiMzea9TCAt\nM1lLzr0Nk19zrTLSgjv3LrtXOKl0gqe+sAsMmyNZ3gk1tOhzuhA1eq6pE7p8\ndrZ6dWWKdBshmsvcckbKljZTlC7kFrJJtUplfgycBNp58D6cVwJNEVa7naZD\nGApUoUjIUGTly0gPCFS/gUfF06ZCGEgMMttHgmBKgBWOcmJqpNVcFz6MWgYq\negzz7/fgjHb9nEBwB5Nv8NHJIgU9WnWSqTdp54DIqKCyLRYE0HL0oN2bOHkJ\n48NogheGI6t7ACtFeY+bZyakAVq6JLiE5MkRFxV/Q2P2rDDE63I3mMmNP8vo\nMORHXodBGMLrifX7xaPJ3/0QO2FPQ3Dz9o84WRb/XvIMX9W+BWSTRr5ZYZK4\nkWNj\r\n=6uAY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHP+eECywPf377U/YR3ILqBv+mTbNWAhSO9XiAXnwI/wIgIBYClowkRwlsR3EDqxV58oHgyP6bPnBKvSz4oio1qXs="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.1.2_1581507789237_0.43843954383211314"},"_hasShrinkwrap":false},"4.1.3":{"name":"ut-port-swagger","version":"4.1.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.2","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"dd9422bf0a4a34faa3706d026b302d00076b61f1","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.1.3","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-m6V1kYKPl/PvwhJQTZaIc57bWm2eSq4IG3bQfYHrU1Eak53+eJaWTbeyXCI6UuWb8cPLrujHqnpNzQJTVC6GsQ==","shasum":"30af47103a6c99622c787ab6273d3a9f0acbe1cb","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.1.3.tgz","fileCount":51,"unpackedSize":148870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeRNUBCRA9TVsSAnZWagAAkFAP/3h0qw47Uk01S1gEympw\np4EoijeIlyzbhJ9EJU2QkRWQqTVuWbLt8ia8B4dcVFmwS7o3fRUJYB7mpg2Y\nH4gaWL2t3cs/EMNiP2qlFex98/vx/oxm4loBXUfAmf+iR3WVI/WW0O/ljMAV\nsJIu7ZAJ0bStXkSDcR1ykAirb8bjnWyHXk3aARluQRoK/2WxbYOHCHfK0Hj2\nKzXLf6l9e214LQQVfGibHVmVE5ln+JmynKc823gaExX3jowhEECLN7G2+NCk\nppSADMrppVpZbg5aT6Flv1KEj+cv1vRQto6bQTiHPA+QlkCgjvOrrn3o1aFq\n3kvvvVYuAvS5gOdp9FFnLOgdnm4MVbWpe5D5k190ZDVkj2aeK10MJIAeaI9G\nekkjcWGftfIyLA6zr5Hes4OG+VSpMuT1+ZxYX946r9v8pzzYIzf4BbEbrrXs\naX+O/y5zWwDl2ToaUaACWzAz112fdS6W68R4BdyLksFg8+cba9iZxNiLf6CT\nrlcVgQtOKdN4/60eZ62rdrtM98fKNk2xrMEwx+EZ6HNvJ/VX9MSczkAwhMfi\neQ2UwlrblNpYL4RUrXtTAodeiNlCRTAvaxTJczK9Ptwkn+T5iGLuloT4zz5L\nF93lz66q+G59TmwRWqtlMUl/C6GHYh3fm0HTJuV3Lqv6ASOIGpRKcyWH7VFq\na3Uw\r\n=HZgm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHgRJkC8lgGRzkPGHGhIretLaiO5bFDjnJP3lKuxZJleAiBFPvEq+9CalBghKMi1MSeK+sqvfsY9MGJJJQmiBJhbaA=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.1.3_1581569281297_0.4110107567652448"},"_hasShrinkwrap":false},"4.2.0":{"name":"ut-port-swagger","version":"4.2.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.2","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.4.0","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"515ca6a56755eeb154f2a4181ea6d5b61a62dd30","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.2.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-TQzMtUgg2TjZBIMXYoskiX28vpzLOhnOUnXiLH2flsyv9NvBmxcm4SYCcQ9GncpthRjfRzbuHdbC3S4sEgBm0w==","shasum":"43193783f85fe158e8c651b457f417d236735ab6","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.2.0.tgz","fileCount":52,"unpackedSize":150930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeS+CWCRA9TVsSAnZWagAAQj8P/2boVzl7/LV5wk4iLAje\nkaqUUnOrIyg7dX1PSaMz1uHsYqiR/r6Q2bWi+NBbuO8P7xatyVoLaiF7PRYM\nrmEyVH9L5ICGymUshD4m/BoP+TEFEK+EV/TyxaxlrlovtbMKLLmfLKyh3d0m\nyPEgPwoGVIAN9UydGrFkHCrz3qMmgK9uz3VtColqETeJaH9cJBD2RDQPRZ5Q\nC4DnW4WrqtdXQsZ78OleeRYfLkpuecnLDugoDMjs6UzoIcre1fk43il+rYo+\n35ctsws9jvA8O5taOwYa2HlY4JiJc0IqcLLjIkuZb85H+l3+FyE9unepL5XG\ny8hwrUbm3MoGjRs7D3lf1N5Yz88EqaN/rvR8HbhWDF03lvajaYYKUL6bEt1u\nZoB2WYSvNCPwU6UTaXWPQ7YXQPqKe+PNc/eLFDIq0lXiQIUYnQPYI43hUVmQ\n5p00rfELxDzMpGtUkFVeHp9zycUfQJnms4MNL2XxOkGrOY1pDujbXzPS3epT\nGwr1oU3Fp5MxJOsC+F1/bvCBavmH/lhy3yh8Mm1xWKq5Sv95yAO+AdtIu0Tb\nDPSJz8jG8C7VCszo+Ypq9NwjH2iNVC+QMBuNUf+CIAuoN3DJdYnA0TeZNu+D\nIKgmc38vqFJDifJMuXUZwmjPGA6LWV4/WOxAbzrw/WsGwwqN76pRbyMAVV0Y\n657G\r\n=gSSO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHRD83HT1gfA3NLE/XjVQbaNjkA6TcSDlBu/TpiJRXnXAiA7/eni2VZasM4gTjarfhXexhu5gRa6imGDF7hlPDYd4w=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.2.0_1582030997796_0.8272045520706246"},"_hasShrinkwrap":false},"4.3.0":{"name":"ut-port-swagger","version":"4.3.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.2","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"3e15137fc918e052d864afb9b940fc70cf7d0f3a","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.3.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-+fYmR9dFe+OW5aAtoQw5tElmpy7EH7QK1Y/JIESziLY+u1o/LvL8zcq4ZU/R2zLlmmOrjqqfLhxJNTrtHBZZMg==","shasum":"5e7ec03c5946ac2e972a76067f70b3a69ef33572","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.3.0.tgz","fileCount":52,"unpackedSize":152048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTpSmCRA9TVsSAnZWagAAZOYP/3YtTk8iLbRZDmMYNhRd\nnNfHhjtgBkwZi5UeTSO40XVPDQixa+u3dKVA2GcNKaUoHG/zCYGFFlrtNDWj\no1swTzl7Sr+O0jFYEpZf1zdZMN9e/FiR2/6THyj5ygXdaDACbHZ5hnxHeLg+\npos2LMht21uG22lkv0KabFA2mplEbMpZNQsZyJZcHkzMIzWmNfAJvamCK35c\n0+/jLA+dJqhQT63jRNvjDXzilxoqpYm7ObeB/g4014skn7NV3EUBhr3ySF7R\n5b/FGfoG8ytmfrWgZ+oPUr/Unwj3T7E7zcwp3+Jga15zw3WDiQPDSjbq1ddK\n2RsGJxPS2SaHzU8pd+Ypp1ss6KZR1lj2Uub6OhqyOWjDtjybJ5s4Roddmg5q\nYnUkRVDbnvJMxwGQ+twngyV6iO+pwsO7dnlBTRApyzoLsmsx2FKl2y6/6/Xe\n9kwNljAa31c02lwcwhbgy9FAf+faHwbue4rxcr7+470pvQJde/JmaO0zpIp2\nUkCFTTB4+ryIGMrKr6Ov2S0yZv5kxzc9EKev/50NU/E242Qou1+tGp71RnkG\n6Uhhdjbsh+OUF+oy63G2OyTAsPeRPgfFBWIG1baYyBjXw4vWWRIbgMKeosj3\neaLJFDhepkszyo9qb9eMWDRqpQVcyMY+mABBXVQzDWSsU5rrd5WC6py6dsyT\nRErk\r\n=qRxT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDXEkSbuJQFqluczcXctHxB13uVDMl+fO+y02YI+BTzJAiEA8dhIpNSgmd8nselnjhBrG15HUoSmH7CioAtYJGhVLu8="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.3.0_1582208166174_0.6828359340033103"},"_hasShrinkwrap":false},"4.3.1":{"name":"ut-port-swagger","version":"4.3.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.2","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.0","ut-swagger2-validator":"^0.3.1","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"d36fba67f1b8011d18a44028bf4c692f2ab6fe8a","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.3.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-F60w28kUXCKbssh8WJlXhMYw3LGI2oiHkQI9z5XHzhyBOepxhOwyVa0Ci3ec0tGybBNNcEMVhHynkwSp5GQ05A==","shasum":"eae886978e39800a35088b163162c57a4fee9fbb","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.3.1.tgz","fileCount":52,"unpackedSize":153392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeTqSGCRA9TVsSAnZWagAAx1MP/jmj+tz6c7i1qIG4CRc7\ngn+6BkV129yOsy2O6rMqjLhAreSDAWIbULvNbXREzQY/ZX0xn2OpvxVIZzrU\nc3gyqH2X3gK+1/E8IQjn1U7X6cuW+y/5iWpHL2wGqcrVf40BPz1qkXlZqU2y\nrwp4vLEfXnRUYHjEftjL8IBaTXDupAP7rlW6boHLRgYFy+x2VbI9eWZf71cz\nHDVsl58cGX3vIaJ52ksLei7z3/KxB7HhV5UqbzpOUydFkSlZYg1/nsnAkTRT\noCM9+cAeLAzaEg/yNjFQRfXzcLq77y1n20UoWRm79LPXadqQK4bNgBiDR9eN\nSwgG+bkm4uKCduS7h4cuwBhE1V7erefE2tuGaF0yzO3xRs1U0TTA1JNyQHuz\nQrJZPexvqzQny8IKXK6aRH4wlVU15LNYdplgBfTBlsU41IWkkU5rKJzxdCur\nuMM/9pjLNyNNHC4Eg8K0shtBsu9I932h742UdpTJlO2CE5WKRSFzTzloq3JA\nxeoZedEImPfz0grKsBf1kYySvERP/n+6s3g2PjHpCUmYBp8ypOkrxSfE8bs0\naomRJnJ35Tgd6UzMyd3oX0zXeb+YyvAfJMwe52eBxzDCUsnvS+jxKRTq5TbJ\nKwq9+hoX0W9SyvDhveYMcVD8JCL+Dxl2cxsKKqOYEGSb9uJZoMew7JAKL5wE\nYo33\r\n=hgFM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGqD2b1NQbLYzopFdHrJtwLZmTCoL7MPKU2PDaFpGuAQIgLxQtfvUALzNNI65DKa8Ot3vLQz0S8diOX5rYKJba9HQ="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.3.1_1582212229700_0.05846354721892699"},"_hasShrinkwrap":false},"4.3.2":{"name":"ut-port-swagger","version":"4.3.2","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.4","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.2","ut-swagger2-validator":"^0.3.4","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"263f21946c59046205069be50f177071f4cbc8e2","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.3.2","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-SBnMtagUuc7jfs1RbzgRZE9Yu63ZskIXXkTcATM5sOGOsq1iAuNuM5MhX43Sqd3m/HWmPXEUL1kJkczUWa0BDw==","shasum":"f635140675a69fa6e4beb40cbf7d7f35c816e9df","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.3.2.tgz","fileCount":50,"unpackedSize":202566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeeI/JCRA9TVsSAnZWagAA9+oP/3Ei0MOJOOoqzf2B6DNV\n88yDCOVC5aAXYb8lSFmCq6/ZsywiCOaKkvi6nrJr72ToN7yzFfP+qXcS3LAq\nSUNNzEoba7zXpAtNIE98ljrAfUBnztPmp0Ez5KvdUhv9L9H9IdGclaD21hz2\ny7NUgoO4mPXGLmwc9YeuIHwQTrMilXPrGOnY0jOoFc89rtQEZhGNguLvpexk\nAj9n6pYIPfeh6F1AZFaSIUHca5qMnPIavqYYvN8hUiaImfnqBIKxQq9C7VO0\niuEF0AGOkRmoekkv1TBnvb/7aHrPpkqoga3ZKddXj10BlWyBE/XwQ5knqQJl\nP6oDyiLndvTU/J2kK1XfYfIXVMOLr7R8rozv4XGZKQ8YfvF9pvsX0e5BzQSd\n/GuOED4R6pptukrbMY6GW6rQRFGsPB7rRWEDeP3tPDzjRdRM1Z0iO6tcGoto\n7rk3UrzbZkb8JInIGmcg3Ss2Vdz6KQDYPNYj0JOXKF3tB7GwYHhPW9s3UTvz\nDPwr3zqDesdVizYb98kjORV/+8BgVRu2bfkvZ4LLSEswdWQufVeriJHwxknr\nQd6md+Bu1qrfGM2bVmuz8nutMGogGm2xMBIx2exz+E5/msPFSZYKPD8wMVYy\nBmXcBBwhZhfzf5Rm0Y4OfnUFXuEFOBOnrDxSUJPJ6OgHt4PKMsWzDSHOW7Ba\nzd8u\r\n=uTgt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+707h0tthMDC3CVsHp1ehGASVWQBwxyaHqJYQJubTzAiA4AfT4VOSY0rHzz5wtGb/op+AtD8zU0+XsIZbmvWviCA=="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.3.2_1584959432616_0.7811429430039842"},"_hasShrinkwrap":false},"4.3.3":{"name":"ut-port-swagger","version":"4.3.3","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.4","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.2","ut-swagger2-validator":"^0.3.4","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"01801950413dc92d229686f3113a3bb716f197c2","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.3.3","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-ZYllBkJls0peZ4YPUuwfYWzWZao2Dwc16nVAQrMrNceZ0aNtxv73L8L71ufdHdTs95iaewG8YAvwu5vG1PhvXw==","shasum":"e576d398d412f90a6abf9ae549966e39f9e33523","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.3.3.tgz","fileCount":52,"unpackedSize":207895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJee1XYCRA9TVsSAnZWagAAK70P/RUYIzqmPR1IVAq4VHiE\n0Rc09NjQ3TQsKE0OoC1h/5P5pz+zWQirj0qAEGcDbrd+lO22lJANAUU5HD+h\nrM/XAH2QfPwVeIh/1vtU2zbFF9xiOedm4FY9ygLeZ1QjT4UKisE2mvu5ypwq\n//AaiIwDd8l2wMLG+BR//hipS4IVQRcmdwzft2xZ65/rLPbqLM7svb0a8L1o\nPxohBqtG+8OvAxTPvUwzLvYIGBxzaerQUG2yPyWQIoXiEWq7fQBNVRnR+yDg\nRtclXI5KZZNTpJeK/RY3Wf+cZ9GkMe8Mj8SglZTOv4ycAI6efUm46pE8OmqM\nMyqLmadcryHH6/awz1Z357ofJTWROEfAFEG/ByBT64DAF+eNI9NEN6YayBRq\nQYiX6Af8HkTekJGZbgEzt1HITL8W8V31ZbsusOGAr/pYvhG5hDEeDl4uryX/\nXifrVra4bSiPbjko/fFaaOibDkTH+tXa47E/JzQ96KKfGz7bDnDgj8GAnzC2\nEPAK2F5hJdwN1tf195l9K0fYGqvvZi6Nc2CXO6OeRQcrTLv2thXzxo1pFmgn\n0ine64dx/7IqYfUgPBrI4OixcUF5Mh0H9W81ecKepuQe6GdFfcN2AZyA2Ewy\ntB23xBLO7KjjZBbxFTxBa9hFfiMXFlm/8TTkxGvi1AOcDonY0RVUk1wIqtOn\nwbWw\r\n=WIM0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDIFUHg977/6cYcTkb6sRGX5IPNfcLkqhUmdM/NPuoqwAIhANRSSmdgRnTJlnPo0T9BWHh97+kvacm0jwIJD1p09l25"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.3.3_1585141207726_0.8982356077483686"},"_hasShrinkwrap":false},"4.4.0":{"name":"ut-port-swagger","version":"4.4.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.4","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.2","ut-swagger2-validator":"^0.3.4","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"ea4bed7fb174022be267e7083b5edb3049413657","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.4.0","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-AuYzieT64jDmztzdIP4NblN52Z96N1CipaSJEX55TXYz8i9HbBs9p/Z7Lb3Jaue7o3a7Gq2e9pAPqGUoCeEOAA==","shasum":"b2b850750b48113f49bef0f6ecf34719690de200","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.4.0.tgz","fileCount":52,"unpackedSize":155082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehesqCRA9TVsSAnZWagAAzfgQAIFoUR35dWMvVGMVLD9d\n20D3GFVTCXrpKdEC7fhXZ+LQ/iz+yHiOatV2fgvVEld2eOH9MaPfgSjXT24c\n7mkSq2sWzZS8vGZ8A8naKD+r7Og55t+SjMuLb0A0/D/r4Tv7ut2Pe5ogOgmW\n+1PMdtwh4uecc0G6kJPQuTp5OGjtyD3fZI0DtQtyFdo7SY6lN9dNML2uikNF\nuKrz6RnvDFnMUYI6lw7Mc5HHv2g8WDTbNGNFfkiUywBj0kMrN1jO8ykBpf5h\nK7QybSRZ/LEkjwQ1ZJJVNWR0vRm+tAVC/2XEqETbwX615qZNCOdTZzFM0I9J\nBDIVKPUoQYfVo5D3+qZKW0Qrv6+zkdzZ8ofST/OFTBiA7GXZRjr56fventz2\nZUTUx9xme6uKUvvYBIp1moFZtPI7byQRPUBLUVs+08asBTsKrM3xVLFwjuVt\n+zhVbINh01ZTXHNQHc0btcExMaSlATcPhQRWNad+1HzpDWM+94DCAOf0uklB\nn31e/yQlHtVveoyz4PMiYpfCbU+y8MgeehgWMx3l9ZwTQo73eJip4Lm4Fmen\n6aEVkQbk+JhvE7omGrIjc4zJSIs4gUvTg5puUSJQM/BNmndNgWYXtdI6Cgnl\nDYP0nXSR8rv6xSMpMBahq+C62sBVUkznPdQxoTTGOGfYW51xxW+TZW9wsFAo\nlF7c\r\n=USZs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDndkDIdjp9eFIz19Ta29SsSE7ookBdnQnelr8rQXLZbwIhAOMroyJQ4SWCOSB4pxvm1vPbI5HZop6GN/XXr24IM7un"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.4.0_1585834794373_0.6629574245371261"},"_hasShrinkwrap":false},"4.4.1":{"name":"ut-port-swagger","version":"4.4.1","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.4","swagger-ui-dist":"^3.24.0"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"4.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.2","ut-swagger2-validator":"^0.3.4","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"f79a77171b22af9f2a4e9fb34d86fe821e07f3ab","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.4.1","_nodeVersion":"10.16.3","_npmVersion":"6.9.0","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-YQfRFbnHfJaWIAqay1GvCRm8MU7IE7Xe1yrPW44kvbEumuaGUizh5aWHjWtW/YziiD+2JiZ25PkWKcP3f7sEiQ==","shasum":"b7120fe979da51667588486444ce3f23f5286805","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.4.1.tgz","fileCount":52,"unpackedSize":203596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJens2SCRA9TVsSAnZWagAAnHoP/jVpFDE3UGBGCXoOmmy/\n7yZe7Z8Of6m5HHMzOIhSw5PagOF4Mfabfo2bFyamoBj2b5c5QooJtbjZiusv\nWr3xgtbsuvChpNzP4Luycw0cpAvT9iNYwCCBEyL785qV0Vj1wUur4X3sxxvJ\nIOcVtcN0XBo3D+gR4eAq4yqAeW6eD2IJSAg+sVB3MxrI0gHx8pcqnEdb96aH\n4oeaLscTvlNKSV96ch2OdAjE+pQ6o1M7CH/hu3SkuVxfychYuzJNYZjjoeTL\nlZpK6LR6YMFBLe0Lc7KiEsEqSfIyr6vZn5fY49ZMsoB9ORUjBsNuVK/HOtVA\nkJmi3sFuYUaf/JKtoNRAHlULKSRacYggpKPR70w5Iv1QWlJqllmJsfNyBZzX\nvy2f8EczYR1nUDGWQiumgA+NSVSEhghvEnzc1ZJ/sE6IgxQmoLZNdT6sr+j7\n+2N+IZ7aRdH6J61WOtL/B1h7gSvgrO4YNtxxCiuupBrKdlI/fTz+nlEpwdwT\n+1fwFQ8ENTD+xF/g6tWJbZgWTCUnNJBvoC6l2PHSaPRuiMDWImyhgBxJaUEa\nXf8Oh60dgeuDQjEH6kTmv7JYq3ZLF9hH0U6HNFVhNE7d22ewvjKmP+4ccmzk\nFBHQ8LgxmkKFdelmN4leuEBtGUK6d9y+tY69Z9p21HDvd+C4lxmX1/Aw6aRM\nMgHa\r\n=4rut\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBsINr+RCALXTR7Fd3kILNaUW6zKyrz2vqwoNrPWrkv6AiEA8s/6S39nih1ycQi3suPQhNMbnn5y3ueXjbh3S8/8mzk="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.4.1_1587465618070_0.27187594707040197"},"_hasShrinkwrap":false},"4.4.2-bluecode.0":{"name":"ut-port-swagger","version":"4.4.2-bluecode.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.4","swagger-ui-dist":"^3.25.4"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"5.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.2","ut-swagger2-validator":"^0.3.4","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // static context\r\n  /*\r\n    static content that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n  */\r\n  context: {},\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n\r\n    The context properties are tokenized and can be used\r\n    within the schemas via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  schemas: {},\r\n    // swagger document, path to swagger document or a function\r\n    /*\r\n    The context properties and the schemas are tokenized and can be used\r\n    within the swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${context.status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n    or\r\n    {\r\n      \"definitions\": {\r\n        \"someSchema\": \"${schemas.someSchema}\"\r\n      }\r\n    }\r\n    */\r\n  document: null,\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'auth',\r\n      'basicAuth',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      basicAuth: false,\r\n      jwt: false,\r\n      router: {},\r\n      auth: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n* configuration options\r\n  * `formatError` [ function ]: fn (error, ctx): give ability to\r\n  developer to do what it wants\r\n\r\nkeep in mind that if error have meta property with property status (meta.status)\r\nit will remove meta property from the error and set status to return status\r\ncode of http server\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ)\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) [ string ] - mandatory field to be included in the payload\r\n  * `methods` (optional) [ object | array ] - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported\r\n    `objectId`, `eventType`, `objectType` and `data`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\",\r\n              \"data\": {\r\n                \"idCustom\": \"request.msg.id\"\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: `objectId` and `data` object values can be in `dot-prop` format.\r\n  Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n  If not set in `dot-prop` format or it represents a path that\r\n  doesn't exist then the value itself will be set as a fallback.\r\n\r\n  If provided, the `data` object will be merged with the request message.\r\n  `data` properties are treated as defaults so if any keys match\r\n  they will be overridden by the message.\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### basicAuth\r\n\r\nFor configuration options please check\r\n[basic-auth](https://github.com/koajs/basic-auth)\r\n\r\n* configuration options\r\n  * `identities` (required) [ array | function ] -\r\n    * if array: array of objects `{name: 'username', pass: 'password'}`\r\n    * if function: function receives 1 argument,\r\n    object: `{name: 'username', pass: 'password'}`\r\n    so it can validate against this object\r\n  * `realm` (optional) [ string ] - Response header text on wrong auth\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\nIf the token gets successfully validated\r\nthen the `$meta.auth` property will be populated\r\nwith fields extracted from token's payload.\r\n\r\n`$meta.auth` is represented by a normalized\r\ndata structure no matter what identity provider\r\nhad generated the token.\r\nThis is achieved by the concept of `formatters`.\r\nCurrently only `keycloak` format is supported\r\nbut more formats can be added in the long term\r\nin case any need for that arises. The formatter\r\nis set via the `format` property\r\n(see the examples below). It should be either\r\na string or a function. If a string then a\r\npredefined formatter will be used (an error will\r\nbe thrown if no matching formatter is found). If\r\na custom function is provided then it will be\r\ncalled with jwt's body for each incoming HTTP request.\r\nThe standard `$meta.auth` content format is:\r\n\r\n```js\r\n{\r\n    // user's session id (null if no info)\r\n    sessionId: 'sessionId',\r\n    // user's business unit id (null if no info)\r\n    businessUnitId: 'businessUnitId',\r\n    // user's business unit name(null if no info)\r\n    businessUnitName: 'businessUnitName',\r\n    // user's tenant id (null if no info)\r\n    tenantId: 'tenantId',\r\n    // user's tenant name (null if no info)\r\n    tenantName: 'tenantName',\r\n    // user's id (null if no info)\r\n    userId: 'userId',\r\n    // user's username (null if no info)\r\n    username: 'username',\r\n    // user's full name (null if no info)\r\n    name: 'name',\r\n    // user's roles (empty array if no info)\r\n    roles: ['role1', 'role2']\r\n}\r\n\r\n```\r\n\r\n#### configuration examples\r\n\r\nUsing a symmetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token is normally provided in a HTTP header (Authorization)\r\nbut it can also be provided in a cookie.\r\nSpecify that by setting the 'cookie' option.\r\nIn the example below the middleware will expect the token\r\nto be found at `Cookie: \"ut5-cookie=encryptedJwtToken\"`\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n            \"cookie\": \"ut5-cookie\",\r\n            \"secret\": \"ut5-secret\",\r\n            \"format\": \"ut5\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"],\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey,\r\n          format: 'keycloak'\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\",\r\n        \"format\": \"keycloak\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### auth\r\n\r\nThis middleware can be used to switch on / off\r\nthe authorization of the incoming http requests.\r\nif `auth` is explicitly set to `false` the authorization\r\nmechanisms will be disabled even if `jwt` or `basicAuth`\r\nmiddlewares are enabled.\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nThis middleware is responsible for dispatching the requests\r\nto the backend.\r\n\r\n* configuration options\r\n  * `authorize` (optional) [ string | function ] - Authorization handler.\r\n  The authorization would fail if the handler returns\r\n  a falsy value or throws an error.\r\n  * `transformRequest` (optional) [ function ] - Global request\r\n  transformation handler.\r\n  * `transformResponse` (optional) [ function ] - Global response\r\n   transformation handler.\r\n  * `transformErrorResponse` (optional) [ function ] - Global error response\r\n   transformation handler.\r\n\r\n  Examples:\r\n\r\n  * Custom handler on port level (recommended):\r\n\r\n  ```js\r\n    module.exports = (...params) => {\r\n      return class swagger extends require('ut-port-swagger')(...params) {\r\n        get defaults() {\r\n          return {\r\n            middleware: {\r\n              requestHandler: {\r\n                authorize: function({message, $meta}) {\r\n                  // apply authorization logic\r\n                  // based on message and $meta\r\n\r\n                  // successful authorization\r\n                  return true;\r\n\r\n                  // reject unauthorized\r\n                  // return false;\r\n\r\n                  // reject unauthorized with specific error\r\n                  // throw new Error('xxx')\r\n                },\r\n                transformRequest: function(message, $meta) {\r\n                  return message;\r\n                },\r\n                transformResponse: function(message, $meta) {\r\n                  return message;\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    };\r\n  ```\r\n\r\n  * Custom handler in js config:\r\n\r\n  ```js\r\n    {\r\n      swagger: {\r\n        middleware: {\r\n          requestHandler: {\r\n            authorize: function({message, $meta}) {\r\n              // apply authorization logic\r\n              // based on message and $meta\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n  * Authorization via bus method:\r\n\r\n  ```json\r\n    {\r\n      \"swagger\": {\r\n        \"middleware\": {\r\n          \"requestHandler\": {\r\n            \"authorize\": \"custom.authorization.handler\"\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## Cookies\r\n\r\nIn order to set response cookies\r\njust attach a cookies array in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.cookies = [\r\n      ['cookie1Name', 'cookie1Value', {/*cookie 1 options*/}],\r\n      ['cookie2Name', 'cookie2Value', {/*cookie 2 options*/}]\r\n    ];\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\nFor more information about how to describe\r\ncookies check [koa documentation](https://github.com/koajs/koa/blob/master/docs/api/context.md#ctxcookiessetname-value-options)\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneType Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneNumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isPrimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isMWallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n\r\n## Known issues\r\n\r\nSetting `ut-port-swagger` as a\r\ndependency will not work out of the box!!!\r\n\r\nTemporary solution:\r\n\r\nExplicitly set a dependency to\r\n[swagger-ui-dist](https://www.npmjs.com/package/swagger-ui-dist)\r\nin your package.json\r\n","readmeFilename":"README.md","gitHead":"42998779c3c0a4b7d953b582c035d03070debd0e","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.4.2-bluecode.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-zRc9Ke85jDW310Q3t/YiE6lMc4TlXMmM9oPwuJockIMtfNiZtvv5Y9ESq72F1owdNxuDBmqJ92BG+yeBXa9xmQ==","shasum":"e258cabe01257a000a49d89e9231404e1590b5fd","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.4.2-bluecode.0.tgz","fileCount":50,"unpackedSize":377353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKRYaCRA9TVsSAnZWagAAYA8P/AoSHeE+DazfOMNPWJL+\nyNxfBN9fjyDrwYhK32VXCZ1zjOQ2Z0jqKWBLea5ZOaEYqc7OYaBZCHZkBnys\nCxDJV999JXC48RNyjUunUh2NB/ieI1+cfQ+H+KNhN2FgW18ZTbRtIzsUZT3L\nI25d1QezBtTtUHEBN6YnyHGwPC/5hw83YOCr2lFgndi/5RBEB0B/RQBxIBmn\nnB0DYZMgKutxOx7PpPSxNKwWU8CTr+di9EQfdNTCBKhd43mPnuNzOqRifo3J\nujAXmDRAfAI8938SUlTSpj6FBlpJNBGI1NtdSzE3JAfLsyrhB+qvSEzu4Odr\nxabs27hGJoK0kagVDwOtYMZic3XRgW3RKD5Ix6aLFyLGZvhHMGIuOSGOeHmq\nNSW6xaTA5i2Qb2YPuTedvl3jZUUpnZoH4Gk7vH4pBsHJtth23gqnSxqFBf3Y\noHv6FGAIkL7WJHzIa8RBloMWaRUqGQtog9Elaub9hmN9JvuCCiIpgeZbY3cl\nj5ijQUt4X6CV4n6gvIK7GuZIhIKP7XhathAPIhVprtPJixokGPfJTTSUCgA7\nSqszm4JW74+T4q2/nYm9L9w0OSkxwTsRiwQjn7l7vz7IgA5K6Uc8NWE8SJ/X\nAPwZCkELvcIL33rNfq14tKXOvf0RrUgvNKRV9FQkBpA8A2dAMcL417rJy1Qd\nyxm7\r\n=Sc7z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE7cNekIP2x31T04Kvy7xafyNioxyPE1Jirarfxba2LKAiEAjQuXWcfRM56e0O/vfk1iV6sXybuBTwI/yC6W344KCWE="}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.4.2-bluecode.0_1596528153714_0.8454917708377985"},"_hasShrinkwrap":false},"4.5.0":{"name":"ut-port-swagger","version":"4.5.0","description":"UT Port Swagger","main":"index.js","scripts":{"lint":"ut-lint .","release":"ut-release","changelog":"ut-changelog","check":"ut-check","cover":"ut-cover","precover":"ut-precover","lint-js":"ut-lint-js .","postpublish":"ut-postpublish","postversion":"ut-postversion","precommit":"ut-precommit","prepublish":"ut-prepublish","prepush":"ut-prepush","pretest":"ut-pretest","preversion":"ut-preversion","test":"ut-test","version":"ut-version","jenkins":"ut-jenkins","gitlab":"ut-gitlab"},"keywords":["swagger"],"devDependencies":{"tap":"^12.6.2","ut-tools":"^6.33.4","swagger-ui-dist":"^3.25.4"},"dependencies":{"@koa/cors":"3.0.0","dot-prop":"5.2.0","generate-schema":"2.6.0","jwks-rsa":"1.6.2","koa":"2.7.0","koa-bodyparser":"4.2.1","koa-compose":"4.1.0","koa-conditional-get":"2.0.0","koa-etag":"3.0.0","koa-jwt":"3.5.1","koa-router":"7.4.0","koa-send":"5.0.0","koa2-formidable":"1.0.2","swagger-parser":"6.0.5","swagger2":"1.0.4","ut-function.interpolate":"^1.1.2","ut-swagger2-validator":"^0.3.4","uuid":"3.3.2","basic-auth":"^2.0.1","tsscmp":"^1.0.6"},"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"license":"Apache-2.0","gitHead":"e37a42a49900e004c1054823f187beab369a1b64","bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","_id":"ut-port-swagger@4.5.0","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","_npmUser":{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"},"dist":{"integrity":"sha512-xE8nYgmTIuW6bdnSz7Ip7UJJz4wtuS2P+aV4oO1dM9jokhoK3K75MudAcizg+HHtI/EfVL9WUvGTa/LcziIyPg==","shasum":"a35babb04dad4ccd74fcd278b8b42a771e732189","tarball":"https://registry.npmjs.org/ut-port-swagger/-/ut-port-swagger-4.5.0.tgz","fileCount":50,"unpackedSize":165767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYfNmCRA9TVsSAnZWagAAloQQAJ9JNal27iRW4tH5O8ge\nVokoxNK6bqT0LwBBURPYSsGyRiKwFuUPsQWr1wdiSMPCF1lFelSRuOp0wNnp\nEKnlFD3v1l4NZOIDXEL8+5/2BiL6S5G/f1Bp1SHL984o22f0yPiVZoXFVc/u\nN18lfgWbHHln8PvKPauPM9+DF7mvsDkbNlLvkGUa/iuCblDnG9eLE3l1hEPM\nuzo5anBkel625ugV5AEJOyjGnSraTFcgxCbU7QQiVussKXGncqaP+/LvBNOj\n6ZLMeWpgMW+DzYMaSuit6EwqwnOT8/LfZJDGGcnAyJM1FcFsR+SAyYhPjNw9\nLnb3/uebtoPVjLvoxLV6So7BqqVAp7Q14OwOQeFvhUy8Bbs9xfZurxXkGhT9\nREHEmLRbiMyn+djVAwy4auy7oxYEVUXg0zuqcvETkzN17OwvhPX08B/0DW0/\nbSWgiwiMH7JKtBeR9bA2JStk8vEyel0KPYMbj6y3Povui9pO1TRnAxAC9POA\nldkdty1Wpmzqqc7xpZFCJ3BdUsF7r5IAAm8q7lWezrM3Ucvs3v8mxZZau/xI\n8n65uWgg7BOMHK+HTWSBhkx7zQw07jORboNz5NDghhBKTBwvhSpEEqoBX59N\nC1xYVOk4ZzmgTevzIwuGWyc3r4m8dAgqmDidluEj9u7JZmKN08r8Yxm/Utf0\nMwQy\r\n=2eZj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDf6X/sM/Zu65EjgFMKfD3aJrHRnH/HaCyANlkwvYDyoQIhANVF8lpZ5R9GZVv0KjNgAC98gESiRnfMCoJbG6IizFDY"}]},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ut-port-swagger_4.5.0_1600254822329_0.9583671738660922"},"_hasShrinkwrap":false}},"time":{"created":"2018-05-30T13:35:17.783Z","0.2.0":"2018-05-30T13:35:18.006Z","modified":"2022-06-28T07:05:36.059Z","0.2.1":"2018-05-31T08:05:27.277Z","0.3.0":"2018-06-01T13:29:13.285Z","0.4.0":"2018-06-04T11:54:01.162Z","0.5.0":"2018-06-05T08:37:29.952Z","0.5.1":"2018-06-05T13:44:02.573Z","0.5.2":"2018-06-05T14:05:58.391Z","1.0.0":"2018-06-06T12:55:47.586Z","1.1.0":"2018-06-08T07:35:44.417Z","1.1.1":"2018-06-08T13:58:09.524Z","1.1.2":"2018-06-09T07:24:14.305Z","1.1.3":"2018-06-27T10:19:27.609Z","1.2.0":"2018-06-28T15:03:40.530Z","1.2.1":"2018-07-03T13:14:15.235Z","1.2.2":"2018-07-09T14:54:15.594Z","1.3.0":"2018-07-18T14:23:45.984Z","1.3.1":"2018-07-20T11:35:20.398Z","1.3.2":"2018-07-25T10:54:18.493Z","1.3.3":"2018-08-06T14:14:16.594Z","1.4.0":"2018-08-15T11:47:39.022Z","1.4.1":"2018-09-10T13:29:11.456Z","1.4.2":"2018-12-19T13:57:04.010Z","1.5.0":"2019-01-31T08:38:14.140Z","2.0.0-next.0":"2019-05-08T07:40:43.924Z","2.0.0":"2019-05-08T09:13:43.300Z","2.0.1":"2019-05-14T14:12:32.278Z","2.0.2":"2019-05-15T15:39:14.203Z","2.1.0":"2019-05-16T14:10:38.243Z","2.1.1":"2019-05-17T09:16:36.216Z","2.2.0":"2019-05-30T11:59:40.440Z","2.2.1":"2019-06-03T08:40:28.368Z","2.2.2":"2019-06-04T14:00:54.766Z","2.2.3":"2019-06-05T12:30:03.923Z","2.2.4":"2019-06-13T08:13:17.605Z","3.0.0-audit.0":"2019-06-21T11:06:22.752Z","3.0.0-audit.1":"2019-06-21T11:50:14.834Z","3.0.0-audit.2":"2019-06-21T13:57:33.078Z","3.0.0-audit.3":"2019-06-21T14:57:13.859Z","3.0.0-audit.4":"2019-06-21T15:00:45.678Z","3.0.0-audit.5":"2019-06-24T10:17:35.777Z","3.0.0":"2019-06-24T10:43:06.707Z","3.1.0-audit.0":"2019-07-03T09:07:59.382Z","3.1.0-audit.1":"2019-07-03T10:28:19.300Z","3.1.0-report.0":"2019-07-03T12:12:44.709Z","3.1.0-report.1":"2019-07-03T12:26:26.218Z","3.1.0-report.2":"2019-07-03T12:48:31.486Z","3.1.0-auditAndReport.0":"2019-07-04T09:01:47.805Z","3.1.0-auditAndReport.1":"2019-07-08T11:08:14.501Z","3.1.0-auditAndReport.2":"2019-07-08T11:16:28.751Z","3.1.0-auditAndReport.3":"2019-07-08T12:32:55.647Z","3.1.0-auditAndReport.4":"2019-07-09T11:02:18.437Z","3.1.0-auditAndReport.5":"2019-07-10T12:36:17.804Z","3.1.0-auditAndReport.6":"2019-07-11T13:41:18.222Z","3.1.0":"2019-07-11T14:22:34.485Z","3.1.1":"2019-07-12T07:38:42.549Z","3.1.2":"2019-07-12T10:32:05.607Z","3.1.3":"2019-07-12T10:41:28.252Z","3.2.0":"2019-07-15T13:14:42.277Z","3.2.1":"2019-07-15T13:41:33.423Z","3.3.0":"2019-07-24T10:08:57.175Z","3.3.1":"2019-07-24T13:42:12.953Z","3.4.0":"2019-08-01T13:33:07.881Z","3.5.0":"2019-08-05T14:43:18.609Z","3.5.1":"2019-08-06T15:33:36.717Z","3.6.0":"2019-08-07T15:18:20.651Z","3.6.1":"2019-08-08T11:03:29.660Z","3.7.0":"2019-08-12T14:12:57.842Z","3.8.0":"2019-08-16T12:08:06.966Z","3.8.1":"2019-09-12T13:23:21.959Z","3.9.0-authorize.0":"2019-11-25T16:07:33.355Z","3.9.0-authorize.1":"2019-11-27T09:49:40.237Z","3.9.0-authorize.2":"2019-12-02T12:37:50.178Z","3.9.0":"2019-12-02T12:41:29.777Z","3.10.0":"2019-12-19T14:33:16.724Z","3.11.0":"2019-12-20T08:33:19.968Z","3.12.0":"2020-01-21T09:03:16.809Z","4.0.0":"2020-02-10T13:13:20.559Z","4.1.0":"2020-02-11T09:53:37.402Z","4.1.1":"2020-02-12T10:15:35.182Z","4.1.2":"2020-02-12T11:43:09.351Z","4.1.3":"2020-02-13T04:48:01.556Z","4.2.0":"2020-02-18T13:03:18.054Z","4.3.0":"2020-02-20T14:16:06.310Z","4.3.1":"2020-02-20T15:23:49.877Z","4.3.2":"2020-03-23T10:30:32.733Z","4.3.3":"2020-03-25T13:00:07.875Z","4.4.0":"2020-04-02T13:39:54.545Z","4.4.1":"2020-04-21T10:40:18.208Z","4.4.2-bluecode.0":"2020-08-04T08:02:33.850Z","4.5.0":"2020-09-16T11:13:42.479Z"},"maintainers":[{"name":"kalin.krustev","email":"kalin.krustev@gmail.com"}],"description":"UT Port Swagger","homepage":"https://github.com/softwaregroup-bg/ut-port-swagger#readme","keywords":["swagger"],"repository":{"type":"git","url":"git+ssh://git@github.com/softwaregroup-bg/ut-port-swagger.git"},"bugs":{"url":"https://github.com/softwaregroup-bg/ut-port-swagger/issues"},"license":"Apache-2.0","readme":"# UT Port Swagger\r\n\r\n## Configuration\r\n\r\n```js\r\n{\r\n  // UT specific configuration\r\n  namespace: 'swagger',\r\n  // static context\r\n  /*\r\n    static content that will be automatically served by the server.\r\n    e.g. {\r\n      status: ['pending', 'approved']\r\n    }\r\n    then the following route will be exposed:\r\n    GET /context/status\r\n    which will return the payload: ['pending', 'approved']\r\n  */\r\n  context: {},\r\n  // json schema schemas.\r\n  /*\r\n    Should be a key-value object\r\n    where the key is the name of the entity\r\n    and the value is the schema itself.\r\n\r\n    The context properties are tokenized and can be used\r\n    within the schemas via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n  */\r\n  schemas: {},\r\n    // swagger document, path to swagger document or a function\r\n    /*\r\n    The context properties and the schemas are tokenized and can be used\r\n    within the swagger document via interpolation.\r\n    I.e.\r\n    {\r\n      ...\r\n      \"status\": {\r\n        \"type\": \"string\",\r\n        \"enum\": \"${context.status}\",\r\n        \"title\": \"The status Schema \"\r\n      }\r\n    }\r\n    or\r\n    {\r\n      \"definitions\": {\r\n        \"someSchema\": \"${schemas.someSchema}\"\r\n      }\r\n    }\r\n    */\r\n  document: null,\r\n  // prefix for auto generated static routes. e.g: '/meta'\r\n  // if set then static routes like /context/status for example will become /meta/context/status\r\n  staticRoutesPrefix: '',\r\n  // middleware options\r\n  /*\r\n    These below are the default options.\r\n    In order to configure a certain middleware\r\n    just provide the options for the respective key.\r\n    In order to disable a certain middleware\r\n    just provide false as its value.\r\n\r\n    The middleware chain order is as follows:\r\n    [\r\n      'wrapper',\r\n      'audit',\r\n      'report',\r\n      'swaggerUI',\r\n      'cors',\r\n      'conditionalGet',\r\n      'etag',\r\n      'formParser',\r\n      'bodyParser',\r\n      'auth',\r\n      'basicAuth',\r\n      'jwt',\r\n      'router',\r\n      'validator',\r\n      'contextProvider',\r\n      'requestHandler'\r\n    ]\r\n\r\n    Note: contextProvider is an explicit middleware\r\n    and cannot be configured.\r\n  */\r\n\r\n  middleware: {\r\n      wrapper: {},\r\n      audit: false,\r\n      report: false,\r\n      swaggerUI: {\r\n          pathRoot: '/docs',\r\n          skipPaths: []\r\n      },\r\n      cors: {},\r\n      conditionalGet: {},\r\n      etag: {},\r\n      formParser: false,\r\n      bodyParser: {},\r\n      basicAuth: false,\r\n      jwt: false,\r\n      router: {},\r\n      auth: {},\r\n      validator: {\r\n          request: true,\r\n          response: true\r\n      },\r\n      requestHandler: {}\r\n  },\r\n  // http server connection options\r\n  // https://nodejs.org/api/net.html#net_server_listen_options_callback\r\n  // {port, host, path, backlog, exclusive, readableAll, writableAll}\r\n  server: {}\r\n}\r\n```\r\n\r\n## Middleware\r\n\r\n### wrapper\r\n\r\nTO DO: `wrapper` middleware description\r\n\r\n* configuration options\r\n  * `formatError` [ function ]: fn (error, ctx): give ability to\r\n  developer to do what it wants\r\n\r\nkeep in mind that if error have meta property with property status (meta.status)\r\nit will remove meta property from the error and set status to return status\r\ncode of http server\r\n\r\n### audit\r\n\r\nThis middleware is responsible for sending audit data events\r\nto a message queue (Rabbit MQ)\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n\r\n  Example:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"audit\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"asdfasdf\",\r\n          \"routingKey\": \"gfgfd\",\r\n          \"options\": {\r\n            \"headers\": {\r\n              \"__TypeId__\": \"com.softwaregroup.audit.dto.AuditDto\"\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n### report\r\n\r\nThis middleware is responsible for sending reporting data events\r\nto a message queue (Rabbit MQ).\r\n\r\n* configuration options\r\n  * `namespace` (required) [ string ] - Rabbit MQ producer port namespace\r\n  * `exchange` (required) [ string ] - Rabbit MQ exchange\r\n  * `routingKey` (required) [ string ] - Rabbit MQ routing key\r\n  * `format` (optional) [ string | function ] - Payload formatter.\r\n  By default it is the `dw` formatter.\r\n  * `options` (optional) [ object ] - Rabbit MQ options.\r\n  May include `headers`, `type`, `appId`, etc...\r\n  [see amqplib channel publish options](http://www.squaremobius.net/amqp.node/channel_api.html#channel_publish)\r\n\r\n  For more info about `options`, `exchange` and `routingKey`\r\n  check `ut-port-amqp` [docs](https://github.com/softwaregroup-bg/ut-port-amqp#producer-port)\r\n  * `service` (required) [ string ] - mandatory field to be included in the payload\r\n  * `methods` (optional) [ object | array ] - Which bus methods to be reported\r\n    * if omitted then all methods will be reported\r\n    * if an array of strings (each record representing a method name).\r\n    Then the respective methods will be reported\r\n    * if an object (each key representing a method name)\r\n    Then the respective methods will be reported.\r\n    The value can be used to override the reported\r\n    `objectId`, `eventType`, `objectType` and `data`\r\n\r\n  Examples:\r\n\r\n  * Report all methods:\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods only\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": [\r\n            \"a.b.c\",\r\n            \"d.e.f\"\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  * Report certain methods with overrides\r\n\r\n  ```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"report\": {\r\n          \"namespace\": \"audit\",\r\n          \"exchange\": \"exchange\",\r\n          \"routingKey\": \"reporting\",\r\n          \"service\": \"serviceName\",\r\n          \"methods\": {\r\n            \"a.b.c\": {},\r\n            \"d.e.f\": {\r\n              \"objectType\": \"test\"\r\n            },\r\n            \"g.h.i\": {\r\n              \"objectType\": \"test\",\r\n              \"eventType\": \"edit\"\r\n            },\r\n            \"j.k.l\": {\r\n              \"objectId\": \"request.msg.id\",\r\n              \"data\": {\r\n                \"idCustom\": \"request.msg.id\"\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n  ```\r\n\r\n  **NOTE**: `objectId` and `data` object values can be in `dot-prop` format.\r\n  Check [docs](https://github.com/sindresorhus/dot-prop#getobject-path-defaultvalue).\r\n  If set then the respective objectId will be automatically extracted.\r\n  the `dot-prop` object is formed as follows: ```{request: {msg, $meta}, response}```.\r\n  So the possible paths would be:\r\n  * request.msg.*\r\n  * request.$meta.*\r\n  * response.*\r\n\r\n  If not set in `dot-prop` format or it represents a path that\r\n  doesn't exist then the value itself will be set as a fallback.\r\n\r\n  If provided, the `data` object will be merged with the request message.\r\n  `data` properties are treated as defaults so if any keys match\r\n  they will be overridden by the message.\r\n\r\n### swaggerUI\r\n\r\nTO DO: `swaggerUI` middleware description\r\n\r\n### cors\r\n\r\nTO DO: `cors` middleware description\r\n\r\n### conditionalGet\r\n\r\nTO DO: `conditionalGet` middleware description\r\n\r\n### etag\r\n\r\nTO DO: `etag` middleware description\r\n\r\n### formParser\r\n\r\nTO DO: `formParser` middleware description\r\n\r\n### bodyParser\r\n\r\nTO DO: `bodyParser` middleware description\r\n\r\n### basicAuth\r\n\r\nFor configuration options please check\r\n[basic-auth](https://github.com/koajs/basic-auth)\r\n\r\n* configuration options\r\n  * `identities` (required) [ array | function ] -\r\n    * if array: array of objects `{name: 'username', pass: 'password'}`\r\n    * if function: function receives 1 argument,\r\n    object: `{name: 'username', pass: 'password'}`\r\n    so it can validate against this object\r\n  * `realm` (optional) [ string ] - Response header text on wrong auth\r\n\r\n### jwt\r\n\r\nThis middleware lets you authenticate HTTP requests\r\nusing JSON Web Tokens in your application.\r\n\r\nIf the token is not valid then an error will be thrown.\r\n\r\nIf the token gets successfully validated\r\nthen the `$meta.auth` property will be populated\r\nwith fields extracted from token's payload.\r\n\r\n`$meta.auth` is represented by a normalized\r\ndata structure no matter what identity provider\r\nhad generated the token.\r\nThis is achieved by the concept of `formatters`.\r\nCurrently only `keycloak` format is supported\r\nbut more formats can be added in the long term\r\nin case any need for that arises. The formatter\r\nis set via the `format` property\r\n(see the examples below). It should be either\r\na string or a function. If a string then a\r\npredefined formatter will be used (an error will\r\nbe thrown if no matching formatter is found). If\r\na custom function is provided then it will be\r\ncalled with jwt's body for each incoming HTTP request.\r\nThe standard `$meta.auth` content format is:\r\n\r\n```js\r\n{\r\n    // user's session id (null if no info)\r\n    sessionId: 'sessionId',\r\n    // user's business unit id (null if no info)\r\n    businessUnitId: 'businessUnitId',\r\n    // user's business unit name(null if no info)\r\n    businessUnitName: 'businessUnitName',\r\n    // user's tenant id (null if no info)\r\n    tenantId: 'tenantId',\r\n    // user's tenant name (null if no info)\r\n    tenantName: 'tenantName',\r\n    // user's id (null if no info)\r\n    userId: 'userId',\r\n    // user's username (null if no info)\r\n    username: 'username',\r\n    // user's full name (null if no info)\r\n    name: 'name',\r\n    // user's roles (empty array if no info)\r\n    roles: ['role1', 'role2']\r\n}\r\n\r\n```\r\n\r\n#### configuration examples\r\n\r\nUsing a symmetric key:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token is normally provided in a HTTP header (Authorization)\r\nbut it can also be provided in a cookie.\r\nSpecify that by setting the 'cookie' option.\r\nIn the example below the middleware will expect the token\r\nto be found at `Cookie: \"ut5-cookie=encryptedJwtToken\"`\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n            \"cookie\": \"ut5-cookie\",\r\n            \"secret\": \"ut5-secret\",\r\n            \"format\": \"ut5\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can specify audience and/or issuer as well:\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": \"secret\",\r\n          \"audience\": \"http://myapi/protected\",\r\n          \"issuer\": \"http://issuer\",\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nYou can also specify an array of secrets.\r\n\r\n```json\r\n  {\r\n    \"swagger\": {\r\n      \"middleware\": {\r\n        \"jwt\": {\r\n          \"secret\": [\"oldSecret\", \"newSecret\"],\r\n          \"format\": \"keycloak\"\r\n        }\r\n      }\r\n    }\r\n  }\r\n```\r\n\r\nThe token will be considered valid if it validates\r\nsuccessfully against any of the supplied secrets.\r\nThis allows for rolling shared secrets.\r\n\r\nThis middleware also supports verification via public keys\r\n\r\n```js\r\n  const publicKey = fs.readFileSync('/path/to/public.pub');\r\n  return {\r\n    swagger: {\r\n      middleware: {\r\n        jwt: {\r\n          secret: publicKey,\r\n          format: 'keycloak'\r\n        }\r\n      }\r\n    }\r\n  };\r\n```\r\n\r\nThe secret option can also be a function.\r\nIf the secret option is a function,\r\nthis function is called for each JWT received\r\nin order to determine which secret is used to verify the JWT.\r\nThe signature of this function should be\r\n`(header, payload) => [Promise(secret)]`,\r\nwhere header is the token header\r\nand payload is the token payload.\r\n\r\nJWKS (JSON Web Key Set) support is also provided.\r\nFor example:\r\n\r\n```json\r\n{\r\n  \"swagger\": {\r\n    \"middleware\": {\r\n      \"jwt\": {\r\n        \"jwks\": {\r\n          \"jwksUri\": \"http://host:port/auth/realms/Test/protocol/openid-connect/certs\",\r\n          \"cache\": true,\r\n          \"cacheMaxEntries\": 5,\r\n          \"cacheMaxAge\": 86400000\r\n        },\r\n        \"audience\": \"some-audience\",\r\n        \"issuer\": \"http://host:port/auth/realms/Test\",\r\n        \"format\": \"keycloak\"\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### auth\r\n\r\nThis middleware can be used to switch on / off\r\nthe authorization of the incoming http requests.\r\nif `auth` is explicitly set to `false` the authorization\r\nmechanisms will be disabled even if `jwt` or `basicAuth`\r\nmiddlewares are enabled.\r\n\r\n### router\r\n\r\nTO DO: `router` middleware description\r\n\r\n### validator\r\n\r\nTO DO: `validator` middleware description\r\n\r\n### contextProvider\r\n\r\nTO DO: `contextProvider` middleware description\r\n\r\n### requestHandler\r\n\r\nThis middleware is responsible for dispatching the requests\r\nto the backend.\r\n\r\n* configuration options\r\n  * `authorize` (optional) [ string | function ] - Authorization handler.\r\n  The authorization would fail if the handler returns\r\n  a falsy value or throws an error.\r\n  * `transformRequest` (optional) [ function ] - Global request\r\n  transformation handler.\r\n  * `transformResponse` (optional) [ function ] - Global response\r\n   transformation handler.\r\n  * `transformErrorResponse` (optional) [ function ] - Global error response\r\n   transformation handler.\r\n\r\n  Examples:\r\n\r\n  * Custom handler on port level (recommended):\r\n\r\n  ```js\r\n    module.exports = (...params) => {\r\n      return class swagger extends require('ut-port-swagger')(...params) {\r\n        get defaults() {\r\n          return {\r\n            middleware: {\r\n              requestHandler: {\r\n                authorize: function({message, $meta}) {\r\n                  // apply authorization logic\r\n                  // based on message and $meta\r\n\r\n                  // successful authorization\r\n                  return true;\r\n\r\n                  // reject unauthorized\r\n                  // return false;\r\n\r\n                  // reject unauthorized with specific error\r\n                  // throw new Error('xxx')\r\n                },\r\n                transformRequest: function(message, $meta) {\r\n                  return message;\r\n                },\r\n                transformResponse: function(message, $meta) {\r\n                  return message;\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n      }\r\n    };\r\n  ```\r\n\r\n  * Custom handler in js config:\r\n\r\n  ```js\r\n    {\r\n      swagger: {\r\n        middleware: {\r\n          requestHandler: {\r\n            authorize: function({message, $meta}) {\r\n              // apply authorization logic\r\n              // based on message and $meta\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n  * Authorization via bus method:\r\n\r\n  ```json\r\n    {\r\n      \"swagger\": {\r\n        \"middleware\": {\r\n          \"requestHandler\": {\r\n            \"authorize\": \"custom.authorization.handler\"\r\n          }\r\n        }\r\n      }\r\n    }\r\n  ```\r\n\r\n## Headers\r\n\r\n### Request headers\r\n\r\nAccess the request headers from `$meta.requestHeaders`\r\n\r\n### Response headers\r\n\r\nIn order to set response headers\r\njust attach a responseHeaders object in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.responseHeaders = {\r\n      'x-test': 'x-test response header value'\r\n    };\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\n## Cookies\r\n\r\nIn order to set response cookies\r\njust attach a cookies array in $meta\r\nfrom the bus method that has been called. E.g\r\n\r\n```js\r\n  function(incomingMessage, $meta) {\r\n    $meta.cookies = [\r\n      ['cookie1Name', 'cookie1Value', {/*cookie 1 options*/}],\r\n      ['cookie2Name', 'cookie2Value', {/*cookie 2 options*/}]\r\n    ];\r\n    const outgoingMessage = {\r\n      test: 1\r\n    };\r\n    return outgoingMessage;\r\n  }\r\n```\r\n\r\nFor more information about how to describe\r\ncookies check [koa documentation](https://github.com/koajs/koa/blob/master/docs/api/context.md#ctxcookiessetname-value-options)\r\n\r\n## OpenAPI Schema specifics\r\n\r\n* `operationId` - specifies the controller\r\n(the bus method which will be executed when the respective http route gets called)\r\n\r\n## JSON Schema custom keywords\r\n\r\n* `x-occurrences` - specifies that certain field\r\nshould appear in a way compliant with the provided specification.\r\nExample:\r\n\r\n```json\r\n {\r\n    \"type\": \"object\",\r\n    \"additionalProperties\": false,\r\n    \"properties\": {\r\n      \"personalData\": {\r\n        \"type\": \"object\",\r\n        \"properties\": {\r\n          \"phones\": {\r\n            \"type\": \"array\",\r\n            \"x-occurrences\": [\r\n              {\r\n                \"key\": \"isPrimary\",\r\n                \"value\": true,\r\n                \"min\": 1,\r\n                \"max\": 1\r\n              },\r\n              {\r\n                \"key\": \"isMWallet\",\r\n                \"value\": true,\r\n                \"min\": 0,\r\n                \"max\": 1\r\n              }\r\n            ],\r\n            \"items\": {\r\n              \"type\": \"object\",\r\n              \"properties\": {\r\n                \"mno\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The Mno Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"A1\"\r\n                },\r\n                \"phoneType\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneType Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"home\"\r\n                },\r\n                \"phoneNumber\": {\r\n                  \"type\": \"string\",\r\n                  \"title\": \"The phoneNumber Schema \",\r\n                  \"default\": \"\",\r\n                  \"example\": \"359787666555\"\r\n                },\r\n                \"isPrimary\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isPrimary Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                },\r\n                \"isMWallet\": {\r\n                  \"type\": \"boolean\",\r\n                  \"title\": \"The isMWallet Schema \",\r\n                  \"default\": false,\r\n                  \"example\": true\r\n                }\r\n              }\r\n            }\r\n      }\r\n    }\r\n  }\r\n\r\n```\r\n\r\n## Known issues\r\n\r\nSetting `ut-port-swagger` as a\r\ndependency will not work out of the box!!!\r\n\r\nTemporary solution:\r\n\r\nExplicitly set a dependency to\r\n[swagger-ui-dist](https://www.npmjs.com/package/swagger-ui-dist)\r\nin your package.json\r\n","readmeFilename":"README.md"}