{"_id":"@banzaicloud/service-tools","_rev":"52-7f30f30d8232094c9eeed7c59bc2e707","name":"@banzaicloud/service-tools","dist-tags":{"beta":"4.0.0-beta.0","latest":"4.0.6"},"versions":{"1.0.0-beta.0":{"name":"@banzaicloud/service-tools","version":"1.0.0-beta.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.0.0-beta.0","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"f075fdf333f4d01831a93acb99bd7b0e95ccc011","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.0.0-beta.0.tgz","fileCount":111,"integrity":"sha512-XaEBuHGGEGv3lMeIB/0nBVbKz2EXB2NRwTeHCO12Xiz8qLlGqa9rnSdq9UsawuYc49/4BiKHgU9DUK4oaK/8Ew==","signatures":[{"sig":"MEYCIQDL7t5VnRT33E9cxnDLe4XCoGnMc2vjAoa0w/DJIJ89uAIhAKNkRsW1FE+ER0pBiJ6zwxvibuO7VoWw5J/B7i7WO4Sv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":509706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZCP5CRA9TVsSAnZWagAAUoEP/2F0qhROnZdZwZ5pt4bi\n6x3UH6dSfpFb5Z51pydT7E/nO8VarJjtCcWZEbFvsFwwzrBuAkm/N79P+rdG\n9j+fzQys/IzFta+OqD8400r4kp15Dc7EYKXy3WRYBVQtF700Q3do8zaf8iRL\naswTdInbtZWS3I8IAcxS9AbS7oUWMmkp/GSaHFWxf+1oCNsaRlRGCBjmdbYI\n+STPtVXQY4OaItSb0TXHtkDyPcJ72+eIr/MXpNY62ATAcqefi7TCg771W8N8\n39QdJOGWTsh8z5p6oPY4I6TEsNFpzfFLpKLcKS8YONgH9ibYGfZSat5EuEkZ\ncxnvJRQC+ectBA0rI16jc5wB9KdlLpzNsdO03drrzOsR1PXD76a00oNfH+YC\nzLkav72HAmRAJdrbPFQmsr0IOSbEeM0mXhtvaFNGddN577w5Vn3MGSq5QI7F\n4/ahwyGhtSKAo2GXpathO30zz2pjlCiDHt+esOC8D5K/PMSbHxWKuDyDw7Wr\nf5FpAyeyp4/YZixr64cUgIeV+hgzJF+OMreeF9Ow1m1iqmzV9vDNpJWackBV\nfV0n3aFhVIO3ztqgltFVroA8yoj3FdxU1ao1aGclVN+44Rqk3ooIJn2ubMN+\nCOj/gMB6rHsQ27jEIaSdXAQm27w6dmGKyU5iWQ4Wt/T/iKsMykZgPNBCuxBE\nUVYo\r\n=pl94\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfigFile":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7ea27d0b0ca0afe0df03b53437266cd1f9215314","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.2.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.7.0","dependencies":{"joi":"13.5.2","pino":"4.17.6","dotenv":"6.0.0","lodash":"4.17.10","http-errors":"1.7.0","prom-client":"11.1.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.2","jest":"23.4.2","husky":"0.14.3","tslint":"5.11.0","ts-jest":"23.1.0","ts-node":"7.0.0","prettier":"1.14.0","@types/joi":"13.4.0","@types/koa":"2.0.46","typescript":"3.0.1","@babel/core":"7.0.0-beta.55","@types/jest":"23.3.1","@types/node":"10.5.5","@types/pino":"4.16.1","pretty-quick":"1.6.0","@types/lodash":"4.14.116","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.14.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":"2.5.1"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.0.0-beta.0_1533289465178_0.5000338754265412","host":"s3://npm-registry-packages"}},"1.0.0-beta.1":{"name":"@banzaicloud/service-tools","version":"1.0.0-beta.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.0.0-beta.1","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"e396079be67d77770e2d2a7f3be31eb70fc2c06c","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.0.0-beta.1.tgz","fileCount":111,"integrity":"sha512-TLWhRKDfg335LPAcWOb401yqu1Y1gs2tYQEoAQgrYCerNCa5BfOB4Q93ZLYNDk8ZID16RnLSdBna1bVWHFEQpA==","signatures":[{"sig":"MEUCIEtVDTqlZQgru+6mpmTTnuEwqOt4jnRi793nRSk5BuiYAiEA1PH4i7rMzTxBb7mtQaSNPA3VUtBJFM1BJg3y+xUqy1k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":516692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZEapCRA9TVsSAnZWagAA9iUP/09JTiLbboHw89f6Svy9\nshP6+ZD+5VXypKQGMZjg4YUXM6npL/+MEHyRPnZA/DlBgOSxhUIskZNqUF1p\nmFMk/cw20YIYbDkPmFWJQ5xc/Eh3xAAWg9Ofj/UN//UFK0KSo32xQeFHmpVY\n3i90SA568nECWKqbbNIzDF0GHkp5eprdxxjDZzvLx+zHB8/PBmtzrIZhJ8Uf\nlrxaYwL0KxLkNauqbAzWjuV9rthuL7uR9//7ahwztddcfzUAVEVldS4emk8G\nXBRURbbcnqZa1dWv8zjio5kFRZgM7R1ameabj91bbK9sbhkKTKLdHB9qbGQg\n+IMGnAgbaZY9UoQxUxY6txpTQwtkDI0zF6xLLpJNGmR620818+TF44UMRHwH\n56097dy+HKrJhgmU0kOfblmqRQH3tBG4xXYSX7luXbTwcTEd2FxSqJWTwdcr\nI4BsIDVr9XF6lNdJu/6kqr1JSivdXnu8HrMePEtey6kL74DDpkTqywYqoqyB\n0VwMocZJhkVEc6U8b9GY22rOig9aSF/a0mM5Qvei7KGqKCqd6lVWxyBQ99be\nI04L4Kc3nCrxjfAEYnML7Lkt7X2GWCGMaa8npxTJikN3Nd8+yPou7dkWPM1H\n+o+nefU95jr1k3bwVm8vPGtjqgmagKf12KAsWe6Wj/6i6y9vsa32JBfeGE4b\ng+Hz\r\n=MiTz\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfigFile":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"510b212692f27597dd3e4d3120827164165af9ed","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.2.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.7.0","dependencies":{"joi":"13.5.2","pino":"4.17.6","dotenv":"6.0.0","lodash":"4.17.10","http-errors":"1.7.0","prom-client":"11.1.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.2","jest":"23.4.2","husky":"0.14.3","tslint":"5.11.0","ts-jest":"23.1.0","ts-node":"7.0.0","prettier":"1.14.0","@types/joi":"13.4.0","@types/koa":"2.0.46","typescript":"3.0.1","@babel/core":"7.0.0-beta.55","@types/jest":"23.3.1","@types/node":"10.5.5","@types/pino":"4.16.1","pretty-quick":"1.6.0","@types/lodash":"4.14.116","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.14.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":"2.5.1"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.0.0-beta.1_1533298344983_0.9824844208092227","host":"s3://npm-registry-packages"}},"1.0.0-beta.2":{"name":"@banzaicloud/service-tools","version":"1.0.0-beta.2","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.0.0-beta.2","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"2644f8f03002f945721986415d3fa24ecb6e9008","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.0.0-beta.2.tgz","fileCount":104,"integrity":"sha512-MAibx7cHEq4hhS5B0jgJf0hd7X+cGBQ4x8vfdEJmHSMTaYoIEybiOibl72e6YukNhPDXYH6hwo69RrRHrXWOmA==","signatures":[{"sig":"MEUCIFe4qxZ5OOuFyyndvlbETkvD3gqXqDK2crzY8P5FXvWKAiEAnG85UJUHptG64aKXJ1V0aWQKz0Z5CuC/tYH0YE/101Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":511633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZw5hCRA9TVsSAnZWagAAsbQQAI80ct7YRgv5c+V3AdG9\nXP5ygQ3a6HconMrbWx81DcM2lC7rlA187oZazk1rlhHWyLppL17f5Al9snlD\npfmPqJCmDAgA6hAPxHMqLH16sIuCzTjK0ZMGkEyJ83kUwn7EP/A2MTtax73y\nKx4JC6X9yyRzyoLV3aU1rpUF5mFpIiNwM9P7qeE4SEY55Ye33wCzUOYTRXM8\nAZIqrpGikdlAUGOJMeCiDRTEUwv+506y8k6Ynqxrz5hqnp7mu1ar311Nn2kj\nRzE/379dzCXNmNQBJ1R/Gm4OzdKVKsMaRZKTnDzDqRRlc77D2PCF+9Ve6cdA\nQBv3jV1+Qytu59Kuvx8ijCmqf8vIzL8Ji+gAdB+4zrSp9SkeiZ+Dp6t7bCgp\nfqChjGmGEBcYQxJXJ6JZNq8qO8cGM8cgwo/ym6EOLwmZWmUBIbzNAcMn8IPA\nqZ3deXnubikJTK3jucnqQCQ7LtDck7rkGLghzp3s3c83VdfvH7qDI09VYUuZ\n+DhWfY5OExQnylpZsq2k5X0IWGQqQWqlBhcoSTGGielAplgV3r+OnPGN+kZ3\nW6pFWPKhFSvH5xQHNM5rGjfH8SDrY+Nt0CVZnbesUeJTL0j0Va0Dc/RUsRgl\nxGbl0LPDR9/YasQuJ+L5gXh4ZFHuGlaWOzBJklggNppBT5E1bFWrrWFtoQXp\npC20\r\n=PW5k\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfigFile":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8884028219fc5eda8a67e343e303723ef0746f8b","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.1.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.5.0","dependencies":{"joi":"13.5.2","pino":"4.17.6","dotenv":"6.0.0","lodash":"4.17.10","http-errors":"1.7.0","prom-client":"11.1.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.2","jest":"23.4.2","husky":"0.14.3","tslint":"5.11.0","ts-jest":"23.1.0","ts-node":"7.0.0","prettier":"1.14.0","@types/joi":"13.4.0","@types/koa":"2.0.46","typescript":"3.0.1","@babel/core":"7.0.0-beta.55","@types/jest":"23.3.1","@types/node":"10.5.5","@types/pino":"4.16.1","pretty-quick":"1.6.0","@types/lodash":"4.14.116","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.14.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":"2.5.1"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.0.0-beta.2_1533480544430_0.287351271575226","host":"s3://npm-registry-packages"}},"1.0.0-beta.3":{"name":"@banzaicloud/service-tools","version":"1.0.0-beta.3","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.0.0-beta.3","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"5fb7fa9aaf9f1ca4638ee65f2a58fc75916589fc","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.0.0-beta.3.tgz","fileCount":104,"integrity":"sha512-bwMgvIKFq5rjfAlHiLUhvH+Z39OOkwdKJDmFKuLF8kBpo+I74OtX95RYhT+e45sbEccCQvvTBfPbjkeuwOwesA==","signatures":[{"sig":"MEUCICYcgtpq54DJios64or3G/3EZsaCpH8WyXUnpNzU80zkAiEAuFIJeZulVmwKQvSOAwiSh/b0knxBdzquryCHFoAkarA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":466597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbcG5GCRA9TVsSAnZWagAAfIEQAKT2NgxwQ4jMBMLgLVrh\nvawtoDM87yA4/Lh9qTFRyy+pJ78kDeuaK9fnIUm7HJijweUZCeRe3IYhJQlO\nDffhpJZESN4SHG+5c0PlV615K32FOZ+TEQxHnz4YezMPZNLToqcOw8yxhLEj\n8QvBvJd4IeczMRAltYLM+UMV7u0Ua4GjVybpanOl9PAo0Birej793/WRcLQZ\nnuZ3ou+fKgLFIQEKQ1mBCtExL5A+QUputKCwc+jdWZCZi+n5bn01JQ4o9yxE\nVC70tDKxvzJj6pTEujCRRCExCLAWMgY4FU/iLG6CWkxhf8bx0EVP3EY9WIwq\n/pj4F8LNkIQo0C9FLzPCwvWKdVQHnz7FM6Jc/90J8tdeaDrTFVs+HmxF2nR2\n1OoXf75RLl0fUPelQOx/ZbL4GzGyBBsBzZ2j1DG/c10/pgcsAhN8vDhanPIp\n0QhcHYB2JMIlMJMONx+UowSOVTnPfbERkHwk0scyhgv5yzZE4bKUIkFaqB0p\n7G2T0OGIupt6uYnmYYbaevReSXBl+PnAaAzP/VYxNxxHhkkxsssBqaYep0ZG\nNZGlAF9h76CmUX7ORGlSx0lcBLr8J0zPbr0mhgQyONtddDxoaYLWcK9/egKu\nYlbpzDzWImxAp97NOSx1Z+uVuE3Z1mz2wgx+bkfOy2lwuz5UoFbOkoIeHV3e\nrI1R\r\n=Edp+\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfigFile":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"add5617ef42ed4861a0609339a355f70714ca4c1","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.1.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.5.0","dependencies":{"joi":"13.6.0","pino":"5.0.1","dotenv":"6.0.0","lodash":"4.17.10","http-errors":"1.7.0","prom-client":"11.1.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.2","jest":"23.5.0","husky":"0.14.3","tslint":"5.11.0","ts-jest":"23.1.3","ts-node":"7.0.1","prettier":"1.14.2","@types/joi":"13.4.2","@types/koa":"2.0.46","typescript":"3.0.1","@babel/core":"7.0.0-beta.55","@types/jest":"23.3.1","@types/node":"10.5.8","@types/pino":"4.16.1","pretty-quick":"1.6.0","@types/lodash":"4.14.116","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.14.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.0.0-beta.3_1534094917567_0.6292025568277446","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@banzaicloud/service-tools","version":"1.0.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.0.0","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"eba9741f712b2ba26279541fc425a96c90b5745a","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.0.0.tgz","fileCount":135,"integrity":"sha512-uy/yqArWRPZonbbZPfaBFR9PajiwkMrG1JBBKPG8Xa4WjulIXbezEb+64uc938CTpSqIPkhiFHkbqqbCsMAhbw==","signatures":[{"sig":"MEYCIQDER8cLYSzGgrgt9EbmjXm/v2QtBqhymIrIoTg3WiBr3QIhANwi/7xaDLBTWDKv2uFDt83kYcT9kDsZ4hZaTX4DdNwF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":549914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbddMTCRA9TVsSAnZWagAAi1AQAIaCuReOcFQ3In3wukte\noCYyxNf8yF+D3/C+pTglF6fS9zmh0Vg9IODvPf7Z3t0wdaCOKsVCJapQyDI3\nLGt6hQ56gWe/6j3mH+jdSLi4eWEV4SQACBHohIl1HDvMQrC5spOaRRoxRhx/\n6jWGrOLDwvpQKV6WiYwI5DNRCjIZBvuokRPmFAkYalN/e26pYz5wFFqxafNS\nEO7YnGrqYh4LjnPQsb6KNjWLkuNZ4dTS4VTAQPmJ8SpnKsSMva9vhG521PH3\ngpKIxuHaYMdseUQfxAkqd5M2LPYj7BuG1XpnGU8UuKY6vbJwPzTKIyK+fo4V\ny5mE+Ij/mNpLqfBuZUgs8NiFSDECtA85CcWkIv111tXjtw5PjnSVrVSmdbw5\nq9+sQgs1pDNIgNtIs8JJFjMJNp2waNFvI6tKvTupb685a7RUInvx/E2GFwcX\nxfKpLfDbH8DaN0ATX1A4VS5lEW7cAzhnsASdMVO0PbHxN78JXIGmFttYCuP0\n4LJgliXBikIm0k0T/GL73nYGyyn+SstlW4KAM1gjc4nfgW38V0crnFnLSeZY\nGbGXMGX+kYZeWh33XTAmUUboDcbHPHGQH1sy73atnFeAw7wzqyvh3+NLk6yS\n7TavGdL9oShWHnU31oDouYg7xfZS4Q5m9ICIqzCLHyaeeAXz2yRWZ8b5SNya\nwmJu\r\n=or4t\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfigFile":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"36d5af17af1caae19e0c97f915dcca22483b7ffa","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.3.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.8.0","dependencies":{"joi":"13.6.0","pino":"5.1.0","dotenv":"6.0.0","lodash":"4.17.10","http-errors":"1.7.0","prom-client":"11.1.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.2","jest":"23.5.0","husky":"0.14.3","tslint":"5.11.0","express":"4.16.3","ts-jest":"23.1.3","ts-node":"7.0.1","prettier":"1.14.2","@types/joi":"13.4.2","@types/koa":"2.0.46","typescript":"3.0.1","@babel/core":"7.0.0-beta.55","@types/jest":"23.3.1","@types/node":"10.7.0","@types/pino":"4.16.1","pretty-quick":"1.6.0","@types/lodash":"4.14.116","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.14.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.0.0_1534448402377_0.15418252666643295","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@banzaicloud/service-tools","version":"1.1.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.1.0","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"f3ce1ab3326b7ad5df9f601d9f7fc91efb8da7ba","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.1.0.tgz","fileCount":135,"integrity":"sha512-G+8I0B7HD+CiJKHh+sMXz618m/4x05M0By+TmAItKGuKlw6uIOOJ1qHiqtTUZm1bvKffYBwRkPiQmVDJo4D5rQ==","signatures":[{"sig":"MEUCIQDvgRHz5t2CGdIvo0AeuX9BDnGMKIGEPr2XlbmLJiorpAIgdJCNfDZixDzdzXEzqH3O+q55qdRTGgHCYPLuJmWNyTY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":551919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbs2YtCRA9TVsSAnZWagAAbzUP/3mckBsMWWFe9+vwECJq\nUu8BytcmpTCm9bX0uOvPwOoZlzu9WWa1V17/1GcGL96J2YjLx+LMQv1h7N1L\nU/F4bkI6vUzaBo9oWz5Sh9UtGGG496tkeK3I1bu72YROzUaFSY+2rhh89o2l\nvOsCkr/uybDIhImghGi/7ebL+NJSTKpyiVEj6HWUeEImvqtVWN35UFZQ4D2U\nDWB0j2NJVPjL8QIvqoQ6H0z9+vVjeJBTb9P/uEjYL5soUunF2OqIIjGfK0dq\nRrF2Rpp2L2jW7jbgHoqRxDkixRYTFJD96lM2bFrsmtS0oIzKv3WIkh/FJHOa\nISx7hlQWAJcCngA9N8Kjx+HmB+3+ju/Osiv406/13tRmZTojj1s/OONqc9xE\nh7B3WtdFFvha4FG5yDIB0L02gU4yXGvm7AsZNVv5kNQT27RIWzeifcGXrPNr\niyEhBvpavBSE5sqkFC3WWKLEkifbIGhn2e5LW5MgYhYCdiUjdrmaJkn1yOZw\nuLWbq0Dx3dIsu73RhXPtgRCvWIuQ+htdu3R1QyQ7Itq/avJ0le3TTp8iHFjW\nR0ZXuS6eCR7z/yDAl2MXxlvBH/TLghFBCtHTp3dZLRVxwEUuZ3y4TVUA+pHy\nouJssheYrwUVd62fxm2u0sbkC5Zfyt4bzJ/EUtUCG0aPDUL4wsVCtt3dBkB5\np1BX\r\n=48+F\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfigFile":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b215b145b53d9ad80ee8b3da0a4f8f88012e2c81","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.9.0","dependencies":{"joi":"13.7.0","pino":"5.6.2","dotenv":"6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.1.3","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.3","jest":"23.6.0","husky":"1.1.0","tslint":"5.11.0","express":"4.16.3","ts-jest":"23.10.3","ts-node":"7.0.1","prettier":"1.14.3","@types/joi":"13.6.0","@types/koa":"2.0.46","typescript":"3.1.1","@babel/core":"7.1.2","@types/jest":"23.3.2","@types/node":"10.11.3","@types/pino":"5.20.0","pretty-quick":"1.7.0","@types/lodash":"4.14.116","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.15.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.1.0_1538483756478_0.41197384628419","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@banzaicloud/service-tools","version":"1.1.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.1.1","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"de2cdc0e11d34e564659ffa0d621a17f19058cd0","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.1.1.tgz","fileCount":135,"integrity":"sha512-C6exM8ZVKYRNI5VFqC20iTAMvTbSwVgapIoC2wEdM3fUjGqRhGWapW4xx6WPVuLD7DvjaTZx0bMYNTtPSNntOQ==","signatures":[{"sig":"MEUCICEqWnc/HBSuC6J0ztPIfczsWN9evyJFxYdBvju4y9JAAiEApqqZbjvfhd9/UIh1zSmW2WgIF0v2LoJuKnAtkv63h0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":551915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvGlJCRA9TVsSAnZWagAAMr4P/1qINaG4e7cQJ4aUSSkO\nF5gA7MeUVnYAon6F1VY1pbclAv1hxfMgAtvtQ5ld1fbClsTBR+qDHCVmAqLp\nQPpOf+2+6CJ6Ww2tYLUyBjlKP9kUcafnz8TWRkWpY7jtbmTX7dbx/USXNiia\nVAfQ0/3tnRG7C+ysVrXdEKykmkCDzhMXQxe3NLYt8NPj4l9v+EMaGjKCNrdj\nc3rY+qQkUkha8Tj1DEpM6xVacVEKANBS7bqRwdehXwlr7LLLHq7c4y0/fEMb\n+r7sIdKWm/m0b0A1TaEXOQDsMu9lCEnyPOWQCEVbivHkBK1POLJAU7R1ca76\nTzbqRUqB6EPutcIghtibe7g2y87K4zs8Xye6MD6bIt3LvF9ocvpePTIq9E0k\nBxnI+Fq3BLUqangM/OidDRL4aLj69Y8lqB7Ccmb/m6ZrX2ZO127MvRi0mjKr\nkYiCS/9B+jQqGq2AW5069m0iqB9nliJM9Y4S5pcvYalbxAHz/lGD5SoJHWPS\nFCVebep4kQPup4YAFFzkfjZjyDiNbKlYOnKcINTpd7PcWEUxyv1j9N2PiPzd\nNrttiqhutX8I4qXZiSxnqWtKWp+8/NxuxlFFqoIp48rrOxvp2CfK+iX5Gsu9\nWIbBdzo/Qgs547fQ2x6/S13bZcYtvC/Wi1Uq0OqR9fR+lnQJqJSmiWDwCK6k\neWjN\r\n=PDIs\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"740870c89eb5e3ef1f3707e15451608fcb949790","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test && generate-attribution && git add oss-attribution","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.9.0","dependencies":{"joi":"13.7.0","pino":"5.7.0","dotenv":"6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.1.3","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.3","jest":"23.6.0","husky":"1.1.1","tslint":"5.11.0","express":"4.16.3","ts-jest":"23.10.4","ts-node":"7.0.1","prettier":"1.14.3","@types/joi":"13.6.0","@types/koa":"2.0.46","typescript":"3.1.1","@babel/core":"7.1.2","@types/jest":"23.3.4","@types/node":"10.11.5","@types/pino":"5.20.0","pretty-quick":"1.7.0","@types/lodash":"4.14.116","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.15.0","oss-attribution-generator":"1.7.1","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.1.1_1539074376208_0.2089551969086374","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@banzaicloud/service-tools","version":"1.1.2","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.1.2","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"14dc249210b0734c486a4e3a182d86b2207a33ee","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.1.2.tgz","fileCount":133,"integrity":"sha512-PD0mf1SpbfG8iepL+tYjh9jZSoq7OyRC8ucwWw98wmRdaeGyZUb7RPJTtCQJ1xNhaxk9+XGD0yX8o7GG39Ifxg==","signatures":[{"sig":"MEYCIQCm9ezLSbnXPZYQENCxUUf1Gq2xCqS47qCFEnxd8E939wIhAMOrEijWOXc8x78rctBUkY8e6U9u/O+JrV+2DcVjYue8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120163,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbxaN4CRA9TVsSAnZWagAAy80P/jaieptN61+2bYJwkdAH\nO+urf8D5/3926UbbyYMs7x8dZJfCYDNxKYyvlQ198fQbTyLJ1iQZIWOQnLP6\nX/0nwKfaLWi352W+cHMWRkbaXwxCeStSn2naAkb3NFLZb6hTHgVWvXe/8amw\nRgM5UC3KNFAos1kKvHDevw4n/zGBOeq/McOOaX/+TNFhxIkF+JmbdbXxSZtr\na/ARjVLUy0wzTnnSeg9x3BhK/Mb9EISOSPAsGDNqDBgOBzlyt0cGmMHUTqeb\nAdUgNo1MlOm+vkFNcMIt7Ri81V8n2GWD6tKttT8zC5nOa0/GgeGBpe4yfoYQ\nFxpx+Z3d/GYgkKrUYBLIrrlN+1sZhMN5EtrIr2VcZegGNL0mtbChdlxPe5nx\nfjqOnirgdJ2icK6qEPktNLuoGwPVJ7JKW0pXLnzAJAywYzae+YBzPrKHEHp7\nKobsbC1Lnronm/+DDFUsVzhWlINQosu5Pm7F/k1tSd/PeYER0jQrAVf775I9\nwYF7ZOQe6cNCjNhDXn6XDPFSx8VQ+522tIrMcm2CTO4gxGFnnqd+SC2Cqrbx\nPKCJM1Rzu8T/TVaKOFp5KYKfygoGUMVlPre2RmuySCma8BqQjGGPiDPtTaz1\nIcvfdS2zWKnTIQTsH/EOCvaLHWSKMcqsIN3tu/hQplzfJ0k0cDBMKMNmb6aw\nVSoh\r\n=FMNr\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5ccee050038684bb6c94e4a48d1cb42f37e4249d","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.9.0","dependencies":{"joi":"14.0.0","pino":"5.8.0","dotenv":"6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.1.3","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.3","jest":"23.6.0","husky":"1.1.2","tslint":"5.11.0","express":"4.16.4","ts-jest":"23.10.4","ts-node":"7.0.1","prettier":"1.14.3","@types/joi":"13.6.1","@types/koa":"2.0.46","typescript":"3.1.3","@babel/core":"7.1.2","@types/jest":"23.3.5","@types/node":"10.12.0","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.117","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.15.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.1.2_1539679096111_0.5115240675004422","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@banzaicloud/service-tools","version":"1.2.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.1","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"fd0a4850fe55dfd7d203d964b734a46800f0be6b","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.1.tgz","fileCount":133,"integrity":"sha512-B8XicKH5WhxQDoLG33hUgs2wLzph4pNOCfBa5D/MkOgd/fB6ZR+3Vj6TXVtwLRlQoh+L0PLvEJlvxhN+eFJ4Hg==","signatures":[{"sig":"MEUCIGOFm7LQnlS0QYgRscKMZXy49KXaQCU/2BL1GA4BBNOFAiEApR3uLjM5ym3evjFwqM/lLzZWeNw8UhwAjGyQvNIQPf0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyJvXCRA9TVsSAnZWagAAxNIQAJbLQ16IsyvjP+l/x8eB\nwRIcHjEBPgvIHurSVKo9SIy4vXlUO8aRpkrgVqUl1EC/nxC9D2VuT9Rxxsyg\nLR6hh6erpDo9DNHaGT5NRo/QlfrmKIX0WcqrRLARDCsmizURTeQb31AG9RQW\nrlcv8MmgEYKtc3yXWgOFBYqEE/zNZ7XXpqDmIbLMsXBJKWFyUzmlEynhZgi0\nD1spZLMKx5VR3cCM39zgL7fvch1uE0mY9rLA0uGY5q6LYTuQZ4y2R4FnKH5d\nKNgDTOlkDuKhbmLypVvwySum5tYoBnimxGRz7omtj+eviHKXNtJyas+IE2MN\ngf+cNBLVpVk2ugtT5BNi9+T+P28Nr8WNq5/8QlkAa/b5RFHIxBmIzoxbp8Kw\n4CFT1DRwnVLOAHewMNcms4Gs7IzeITtL2UHAI/XO624cSqM6R8Smeiv6THqM\ni50CcaMcK2coWe/zOJVWBFDEvi5taXSJyRnzBmOambpu6vg4Abio0hKsSIXv\nFRLBsXPJ5SNnFQWpd/sX4dMMEJVd1AU3qBdtSB3eu8B4h/x5X2gqnoaWD0tc\nahOpDc1nBbRwQ+Tjc1aFqx7gDPm+BffwOJHE7O9E2KJWVZMTQCyXr1NF6JLv\nYO3fKPTCr17iSjR4JXzt4ufc9jne/Zl4+9MCgaV5U3QXdfHHKqgmHF+3fqPu\nXpME\r\n=UwTn\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{"^.+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3f49c15e01e20cbc14165c82ef926811d734714a","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.9.0","dependencies":{"joi":"14.0.0","pino":"5.8.0","dotenv":"6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.1.3","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.5.3","jest":"23.6.0","husky":"1.1.2","tslint":"5.11.0","express":"4.16.4","ts-jest":"23.10.4","ts-node":"7.0.1","prettier":"1.14.3","@types/joi":"13.6.1","@types/koa":"2.0.46","typescript":"3.1.3","@babel/core":"7.1.2","@types/jest":"23.3.5","@types/node":"10.12.0","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.117","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.15.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.1_1539873750278_0.43537434620328797","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@banzaicloud/service-tools","version":"1.2.2","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.2","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"b7664cf417163ed80bd44a3c2b229fa45fd90166","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.2.tgz","fileCount":133,"integrity":"sha512-rkkp/KSIxj0QPowfrp24y1Bq+4EryiJ4LKtjnPoKoGVqNG7je8UhYhvnj7FjSep/Lo+UuneA8Bu9XTjltxu4GA==","signatures":[{"sig":"MEQCIEyJ7YetLjbPGrJgFBCpxNReiJB/0d2iDGXHbUcXdAAiAiBsuNhWAj2LHzEmYMv/9F6WlM02BG7L4HAaB9aVi8YiXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9COTCRA9TVsSAnZWagAA4wcP/AjAyXKQeogowUI73YiF\nOkTRLvbCqDJ6garJf5fbhvBd494fLcobKlwjlne/IWTtV5pMgt/3KaCT+kOq\nVgLpIj0hA1dC03elOBUbBPm/cfrYikfi/Un6XNpyEpsT2Ir2HEkKtIhBrQbE\npQ9EQFfhSxVW3rXLgE+wtoEqFbhVW62tQHaq/Sw1sakRmlAFpca+yCmQm4hp\n3y5BB0cMBjCm5D6yUeucIKXMORcfVtziOO4vM/DdRqxRWugRO0QUOeYPNyyr\nODHGKOfCMLyCnUTTqjwnqochBA/Goh9APKY/NZs6LDWT0P5Jdos/ce1biAGa\nv5y5Vyix+nUPSWTuPCYeSYc3kGEEq1WwWoMabc7vGYam6szcYo1jm8VH1P4U\nZSCJj+JzFFDnuocLn5JgdDT6c80Q377r0M2zBucNfHkohQr5cgXzRLWC1Ekz\n5MQ510tViTppuqsdRQutySA6uQn2A8CpveR2s405A1THg6KAc/fk7AQF2CxB\niWvszwIP0/C8nrtbalJ2ylD4Jk2IlMg1jA97GY/AeXFDyw+tjGOD4XC91GzL\nzPLQ06ZDQPr04x2Mk7g1TgULqG4UYMfzTuw70T+oUzn986WYhtyWxGdNw0/8\nP//sl6bjMyHn3s6T8nVY5WRqp1uKqog87FPH+4CyPDnqIG0hfsBtHfg1oGh1\ntZG9\r\n=K5/4\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"edeffa1acdf6f05a66011f627c9d6c352f29b398","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.13.0","dependencies":{"joi":"14.1.0","pino":"5.8.1","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.0","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.1.4","tslint":"5.11.0","express":"4.16.4","ts-jest":"23.10.4","ts-node":"7.0.1","prettier":"1.15.2","@types/joi":"14.0.0","@types/koa":"2.0.46","typescript":"3.1.6","@babel/core":"7.1.6","@types/jest":"23.3.9","@types/node":"10.12.9","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.118","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.16.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.2_1542726545000_0.7532325229807004","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"@banzaicloud/service-tools","version":"1.2.3","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.3","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"afdba752b0db285c894372d9a75f3afef35d516b","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.3.tgz","fileCount":133,"integrity":"sha512-5pE/GL8i0V/ZJj/RbYtKzqVZh7GDKXExlS2puDuJthf9ELt0+Vl/12PlRb0je1gcW9xEgTw7vIsh8qNvS01wJA==","signatures":[{"sig":"MEYCIQD26TZJpzc4fT5WIdGpTlXHz/QFnSyZOZWJpoxAEeWfGQIhAMQZtBLIVAYW44fRGwy+ds5aP9koKC42v4WBuGua7zIR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+AEHCRA9TVsSAnZWagAAj6YQAKI5jkaBRhF1cH2hqTik\nwCNe9h+9He0dRr9RFAvoMPz66ORHICKeYcx0ImkhkfVw6eTTL9oe97V7yAoq\nrzfXKznkODBMYbH9ar/iCQ2wbN9xkuSiX8uOdI7lppY3Sgx0YFoc/yI8khgP\nFsnm+6Wp1tpUrkOhJOg0nngjfTAIeWXmOTAkYGUL7boeWEaxr8MgSX6sM0Se\nHxcggD+SXHvGDEsgssAwbBIlPxOCcrqQWH+ZCcjbcOWltgqSHYtR49QBLwPR\nxUVlxSF+NhtUVqBVE0ms4y5v4cJVuZAS4/6szp1tbkvXbGYPPiuBkkfWB7V2\n6zI1RZNQXt+j9++0szFyLOWrGKpHImtrdM8TVMiJ1l6MpiSNCfEHgQKrRW10\nfQQYmCMQKZAe4AoJU90qnQbo8l9r4yE5Sz1wSnzLOf1Y+tWoW8H7fDnuU1zI\nDR5EVasSyp9bS28INw68n32ptkmLutJW4um/GVc/GGK12Uvam4KN4uCdodBN\nKBEKdn2fJHSY3mixZAmX0RrJrjBynTW4pb9I/XHmTZ0JcdE0JAH5JyIK/FgY\nzlQEQYPxNw1OdYEadt6SNo8NEPoSbSB71zdgN4kTiEOZryk85pZ0MRYjgSGt\nESPsWy/yKUHdzSPBSceUB0Gt1GVnmAyuXE9LWAvrwI4/JyJoCCbcm63PPxYd\n3l+m\r\n=x32y\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d38f5d7620d685c1046f4dcafce523663a2b36bc","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.13.0","dependencies":{"joi":"14.1.0","pino":"^5.9.0","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.0","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"^1.2.0","tslint":"5.11.0","express":"4.16.4","ts-jest":"^23.10.5","ts-node":"7.0.1","prettier":"1.15.2","@types/joi":"14.0.0","@types/koa":"^2.0.47","typescript":"3.1.6","@babel/core":"7.1.6","@types/jest":"23.3.9","@types/node":"^10.12.10","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.118","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.16.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.3_1542979846831_0.828576326840502","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"@banzaicloud/service-tools","version":"1.2.4","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.4","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"99f094c1234c6bafd7a52bd76517e0c62ae22c8d","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.4.tgz","fileCount":133,"integrity":"sha512-TUws08TTNZ9EJckd9O/ITFBtldnDPkkZJoJfQna2FNINGNKi39AGyQvEPe43OYJJ0PHK/jb7TFQdl8Ek1wdZyA==","signatures":[{"sig":"MEUCIGRULQSnhAUx0mU4BLQ6YZ7vQmUv0svaMiDd/Ie0B1raAiEAnvDHE1VaPfcrSKMTDR8w6df+yM26UZ+fQKOxFbNG2D0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/QtbCRA9TVsSAnZWagAAr90P/RTucOSQx/DFXs5z9PJ6\n/nfu0/atLn8wckPvIOaLuGjrGJThHZgQERf38WBGhcgp4xWV1hTZR5d0Isn2\nC2nwFyX2kqGXLHr48jcRKxr3jFUiRRuL13RneqzgXw7Tsjn6rYHN4hU8TJDM\nXlzYIKao/BHLhcUvhyPVxvT9fCDdquEajMgFZpXe476YIX6P76gmkRhvn0iT\ndeWg19kHhWgmPoQzZ8DLBjWdY8MiPwAqHoWDtAoa40KNEkEPe4opez5rN6h5\nMI665reRQESq5OMxCQdT2RpdKJyAdLZAZJBSkoA8A9ZrA7z1S4mGxHV5ccaA\nBjpMyEWtVWewMQBKnyN7cyCwUkkRaxHrYloEqZEFXjdsYqIUe1LZmshoQh9R\nqPsL3boSr5jtWkxP6ZVI5Y8q7oib0oasQTvmW+DKA2UQwBkzRWSq1cbn70/h\nK2wV9+ZRf08j35BXI7xYn/61vmn9Jrxrdvfp0cQSsNPJTVXiRIDJ1Rva+abU\nZ5yMk+2Ua8/PQEfzpTeysJ5EKP56U3LG5llUFFykQ6KwXacr0w4OoMDmlKh0\nIjouLIqSSW0rGAjl2vO8JygMPn/OW6oPPM/aJzXYAnUh5vnzNy1igvEzV6JV\n3+5W3qcxIOl4CXbnZ5rl2vwdmawP1ILkpl4sC+KP+2vD5gG1cOrJRGWjG8rX\nVtQe\r\n=svsC\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"492672d8507ad31ca193a0f74f242713671c92f5","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.13.0","dependencies":{"joi":"14.3.0","pino":"5.9.0","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.0","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.2.0","tslint":"5.11.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.2","@types/joi":"14.0.0","@types/koa":"2.0.47","typescript":"3.1.6","@babel/core":"7.1.6","@types/jest":"23.3.9","@types/node":"10.12.10","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.118","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.16.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.4_1543310170810_0.044761473792237494","host":"s3://npm-registry-packages"}},"1.2.5":{"name":"@banzaicloud/service-tools","version":"1.2.5","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.5","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"72766f54a573678885bce3402ae40c6bc3b00ab0","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.5.tgz","fileCount":133,"integrity":"sha512-pzHoj3FkKG/WlTXfkwbjsaSzZ8I7K/q/WBghVhFJ8ff0vJ3vhmihjGtJModV2BADvCLwWjF7Pbez2rDthUDNkQ==","signatures":[{"sig":"MEUCIAu89zdySs/Kd6b9XEj5PAguP9DKxwytgNZQ0W1FsMrgAiEAiqwwLHVbeMxsZRnYMmsbk0F8LYErnf+J0cw96JFXRE8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/7bdCRA9TVsSAnZWagAAnwIQAKRPQMaFrLkETga9aFxc\ndDPcxmIELsHeOxP8fGIHQqE2UEEc0zxVYdyDLlAFTMJue/xJl7t1gsFVbiPH\n0DK7n+8vCaq5FtRiSiAqA8dfVF6rwVMJOaqA1WzYQehFkyhlOACzvoase5Da\naR0OWtGoewl5k28EtfjWxuHamYJfbBoAIzuc5//UgaRFfqY2HnxkFZqnCDc8\nVh3BCWLxCKXtzXLYHF+smAYQwU6aoDcT7PiGUhBd5h7hJSoVgbOn09tmCnc/\nXqnZ9nvi3/L4osVr/4mTsV71d0ymBNZodP6TdSCmlmCgjjtTKAzsG04JrY4P\n7U7WgOq+RywxIzm/mS3luXbWbntcRuzZWB8nF7TbGAoJ8b7mrSZa857d0UC0\n6yOErN7g1Ox/IlFSGDQydvZw9euSjHxXaui5k0TjDZgEdvMuopOTy3sj5Iyk\nuKD7DwwtDLPSs2HduDNDhCBwppEK2B7smUqSf57c4dYQTJCJmBxFaToYIR7O\nkZM68n+bk2KEWG6P2QwLXiwR0EsjBK4WzqgnBhHRSpBR6FINTwg9/Q1x+Qlc\n+AJVLLr9aztufA2TY5uBNnccEhQxLJJMGJmU6QkijWuxVEZOKGgFXEJ/2k2e\nvF+YZhfn13ZZ7wXnR41qQDh2J/8l0SMJyBkQ/u3biq2XDccpVEQEe5bm7qUV\npCu7\r\n=Yf7R\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2935c774d6eae9de3386cf781e6b2f2d2ff2660f","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.14.0","dependencies":{"joi":"14.3.0","pino":"5.9.0","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.0","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.2.0","tslint":"5.11.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.2","@types/joi":"14.0.0","@types/koa":"2.0.47","typescript":"3.1.6","@babel/core":"7.1.6","@types/jest":"23.3.10","@types/node":"10.12.10","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.118","@types/express":"4.16.0","prettier-tslint":"0.4.0","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.17.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.5_1543485148392_0.09959743069823124","host":"s3://npm-registry-packages"}},"1.2.6":{"name":"@banzaicloud/service-tools","version":"1.2.6","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.6","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"47076d2ea83f629db6f78fad0a870dfc2eec18f6","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.6.tgz","fileCount":133,"integrity":"sha512-D1lkLgGXlO+/5oBxz0OLw5RAJ4iiFmU4/f0UNrHO0OFBgCybpzQqnec5qafA6XZeWV/kPGbgu6tGyiSD0c2CQw==","signatures":[{"sig":"MEUCIQDwpRX/Lct7JsNamJk47E0E9nk0QgWD9rgBXHrua/LJXAIgAfS0kcqOZxRpF9kZ0IegOX0s+4U9tXb+96QPyjQmvfY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF4ngCRA9TVsSAnZWagAA/M0P/R8OR1pLEPqZkggu/owp\nRLiyxbss+qBKWdGMJWR/y1b4lTD/V+n+34qCuyWCZKZG0Y3dn3vgO7OWxFNv\nk4dZtXLRbeCJmfes2XqYfwOf1rcAANCASpLuQtzoI/v+4ipL/EPyI9BhLZcs\nX3TneWqgwSz4hDzo1C9YwXt8v6WnBUXq813Dfz57IZ49hiuuukhd94242SRI\nWXJ1YH4+Mw4LjwUUZ0hx2WxYc64erXt7mbpoRD54fWWmyUb2W6ZYod8aR2p9\nHbJxsy+Bpu1O9dWEZNqZuhWTKACkKJm4WmAgvxLm9x/5bPjbDhaf7oUWV5g/\niIYnSd5PC8hm4Bh+jC9k1szFwP55tgO2z/TtQFJNzY7vS7J79fY9QyRehQXE\nM06QCjuw5eGlLbtwGYJ0Ve6n9aSTNOzBoXTr95S6aBh4Z/7PmRrM/nICwEbR\nhCIWN35/Ix3IbqpS/SUkAjG06Q098sKvkHZ8kR2uXUCBeXThhnzyQrNdoMXl\nYrNl2LUV8OEqjYSkkG+JFe+KGWbYsxzIeY5h42d0sSKAcL4z/LQv815wsrkA\nLJC/owR6R7s664YY4nVos45H82cq0XO8YXsBz3erJYmptKQfBvIFNdN6qwMY\nFPzYt+ybgzDXnKB3FCYWcu3uKlhqD2dQqQajB1Dqbzn5GBZzmtTlXzaz3/5w\n9mh/\r\n=fY7R\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4b9ddf26f94be72a91405f5ed7f88059ff11cd99","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.14.1","dependencies":{"joi":"14.3.0","pino":"5.10.1","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.0","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.2.1","tslint":"5.11.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.3","@types/joi":"14.0.1","@types/koa":"2.0.47","typescript":"3.2.2","@babel/core":"7.2.2","@types/jest":"23.3.10","@types/node":"10.12.15","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.119","@types/express":"4.16.0","prettier-tslint":"0.4.1","jest-mock-console":"0.4.0","@types/http-errors":"1.6.1","tslint-config-prettier":"1.17.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.6_1545046495616_0.6614770323000936","host":"s3://npm-registry-packages"}},"1.2.7":{"name":"@banzaicloud/service-tools","version":"1.2.7","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.7","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"59e492acb1372d6b58a8402565722efd1fdda7fc","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.7.tgz","fileCount":133,"integrity":"sha512-1Z3jiq/SWJeKvSnERCPMTb6PFW/MmwWCucUPlJOUdlVJ9nSCj13hWI320ZJA8z77MT+27FXEqP3VDULttLLT2A==","signatures":[{"sig":"MEQCIG7d8D8H4FMFaRfopIoCLQOr8g3l7//OCKhc0gmvPqaHAiAKBP1dxWNvZ9d1tB0Y94ywQFJR2Novsxkw7+xS8CZk7Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcJMzQCRA9TVsSAnZWagAAz9IP/Rpwq49hE8UDzZ5B0Kvc\nrt63j0LukWzGFqh3LuJGCv7OWC1mkPZV7tR9Ax1xP3Aos6asOPSbkS8YuxRr\nBB8rmSJ+1ZRJNmjObQYCbKbFvFqq/gX7wuETwU+fMp++eqSa4TsmHJUz1Gkv\nF51vycvNRveS0PkzqmIobMwc0+Wfd2cLlqeWYIhh5Oz+qI6P7yUuqW7jvsUp\n9xsHuWiI5cvSyX5OWQgbA94u20KryGCzyb7JTjt5rvRrUZJ2GvixZcm8N/ue\nFOMhNerx70oikv+tuQ554gT2NJQjoXDOfWIhDJjJWYztM4u6CBCW66J1XBOC\nTXDkCNr2/511AN/k9cYs0IhbaqOXFLkFvb1UvzztJvn9Id5DDdtP1yK++plx\nRegBy7JSwAb+CEDp7HqP0AWSpJofSzk7xpwMNopq+7s20sZ7ztYpsqNzjwVI\neMeudL7w5d7ukPWvFOX2nirRiVzD5IWYhQIZ9IVLYH0V7rPzl8Gd6bKQe0pN\nCN5K0mFxf2GArvAindisPI4HMzHEyhuP2uqhyF5pSoV93n1QGGexdUmUyXMX\nzrZS/LdVpxVI2kV4m8pC9gBXv3ly4D/IuSoSu7SQRCx9c61Q9Ed2PedV+MQL\nd5VmFOuS2KktKDPI4axzy2NBrRNLgMb4aIS5RjYbbhtIIwvG3dNYCrQhpP6G\nJdfz\r\n=fsQW\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"d25e4a2b95372edf9a37f7a9a4289ecd25c55054","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.14.2","dependencies":{"joi":"14.3.0","pino":"5.10.5","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.2.1","tslint":"5.12.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.3","@types/joi":"14.0.1","@types/koa":"2.0.47","typescript":"3.2.2","@babel/core":"7.2.2","@types/jest":"23.3.10","@types/node":"10.12.18","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.119","@types/express":"4.16.0","prettier-tslint":"0.4.1","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","tslint-config-prettier":"1.17.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.7_1545915599941_0.8435314803693694","host":"s3://npm-registry-packages"}},"1.2.8":{"name":"@banzaicloud/service-tools","version":"1.2.8","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@1.2.8","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"a7c579cf976ae18251e22710a3288a7ba2e121af","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-1.2.8.tgz","fileCount":133,"integrity":"sha512-lJjIRTqDVJH2xGIzMnSjTiTh/uXz59fGeuNxQLptc4sE0G0F06y+fEcZKLWgpuo8Xmw4b9EtTcEyEkutbdlAaQ==","signatures":[{"sig":"MEYCIQCmqMnNZml2HRiXe3DOuFbxPPQeLMV6660Y3CND/f2ZVgIhAOWZex5+osADV45q0KFHmI3qHnI7IBBj6iHfDok3hVaq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcLkwOCRA9TVsSAnZWagAAiMUQAKCqxjaCXV+YIMLE8rYd\n17Np+XvGrEJ82k2UH15yGSLv0fAUJ2BKAHM5to1qEqcM0ol37c254PPB2Hh4\noVzJUnRbxmZnTiIK8v3YozenMoQZ94zkbeDLH6CCd3WYGJH8QKsu4tX5rs7y\nbxcW0uPl0JusUVBS/E8G6bcFf/BTnCHeIaY5BNRoKvRI34fqIZdZeOfeiwrC\nhuMQClRv2fBGJWM+OWcA0HE8tqfF2afmXm1gxlvdL7OkEaD+3+bHEPG7GqXf\n5r+C+x/eMjp64CozJxKerSePZU7w9yRYqR0Uj7VfOS3pnCenelOsPCM6CR7w\nyz+xCRzzg0VbxdhbGvhwwS+Im4N5B/vMt5t46ANgock4kF2wtSvVoskLKj1J\nT3GJF+Xjnp2828EI0lH1Uxua7DXNcgtGI6CCBsha8sXoRhtWvrXEJGD9r+n4\nnaBwBo4b4idEMu7jrbJytajBdOwXcFSWhCjTwJBNP4J/u8HEyCOHZMILuWF6\nI6TNwmt22oDB4NFZ2VqVlPBDoZMn23kdR6mV75dnvOHvL8Lz+485IcTZIJfU\nBTcMEOYmlVLhX3hb/wlGzKndZCYjDaxIr5+MrZWvwnONlsjzTOOfmBkwY7kP\nxR5wXcf6Rp7b5URkqXBdDgW5GK/4HOqdvgtY1CgV5er7GJ+G48QdkOr5U0rt\ns7Eu\r\n=oWZW\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"bc3f31aa2975f2dbb04353261c51e22adda1d7a4","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.0","dependencies":{"joi":"14.3.1","pino":"5.10.6","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.1","request-promise-native":"1.0.5"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.3.1","tslint":"5.12.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.3","@types/joi":"14.0.1","@types/koa":"2.0.48","typescript":"3.2.2","@babel/core":"7.2.2","@types/jest":"23.3.11","@types/node":"10.12.18","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.119","@types/express":"4.16.0","prettier-tslint":"0.4.1","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","tslint-config-prettier":"1.17.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_1.2.8_1546537997821_0.6569816104161117","host":"s3://npm-registry-packages"}},"2.0.0-beta.1":{"name":"@banzaicloud/service-tools","version":"2.0.0-beta.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.0-beta.1","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"2644514c1e87b6dea781c3f925d8b4267239e8d6","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.0-beta.1.tgz","fileCount":133,"integrity":"sha512-DzfH5mMpvxbBbMi/xeDd55mwhtYhhezh6JL9PiRc6znSzsJghgeCRP3Ny5dKLsS0DltKbRkU981Z++cDdwqqUg==","signatures":[{"sig":"MEQCIHYOiv7fHY9nT+HElcpN8T3VP9XfB0S7ZPz7ASBUTr1FAiBV8E/T8dp4hEFo9+UmCAQxZjLKZ2F2/2uL2DGGwNlzDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNe/uCRA9TVsSAnZWagAAMYcP/i/DcXjQCZ8H0SvBKvW/\nLQWnYivLO3mIt7h23WtRNXWZZo7adD2nVQz1IMROqt7lZPQDiTYbAuUYMLOJ\n9pyd0uhC2qB+4PvYCnCsVYnAXow0j/GSHm1FIrhqgrA6P3qpBfUMAwU3qQaH\njwXVuEsT5E0JrAbQ/Kq624kGe5Hge61LCIPsX7lmRoU7owCNKrbkAPzurlxx\n2OOkOzgcUUIc0TXca0rTABmvQjH/ixNNOAnghgpG9HNhgPg0nU/sooF4XakA\nd/VP0t1HbKVsLNfD4j+2QbnwyvFMVEjbXimQY8THy+zr+lQhbx44TXYYKqIT\ntkd0RIisZgMG6E28/YSVwXzQQdqRM/jmtx4I3umVMQRP8sSbERnJr4kQso28\ngSywNdm2jk9zLuYOv4MRQlucN+dhPBZQ3242i1+51tnDLhzaF9iGxDyOo91Z\nrjW0iS8Ye4zqzqpI/i3bLeBAENO2udfmFVopboXLi4cEsRzLithW59CF0LeG\nk8f6DptSfbZWIoyr9Z0uvtgvHFceUxqzq+KnQ3qaqazbNWlFU4L4npRLSzXi\nJHn+blc47i3/lc5mfWUiCSqEJNnTWvJG8zTsXde8sSq8tzIsmjeCM6SofRFS\n52S04hHsQBfxE8S69GYL3I0Cp0qO2kt8DoQ6I+jgCF2ElL5/uVBt9ICr6wK9\nWnme\r\n=c8P0\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","readme":"# Node.js Service Tools <br> [![CircleCI](https://circleci.com/gh/banzaicloud/node-service-tools.svg?style=svg&circle-token=002bb942365281c0834e18a1cb83e1930c3ce0fa)](https://circleci.com/gh/banzaicloud/node-service-tools) [![npm version](https://badge.fury.io/js/%40banzaicloud%2Fservice-tools.svg)](https://badge.fury.io/js/%40banzaicloud%2Fservice-tools)\n\nPrepare your Node.js application for production!\n\nThis library provides common functionalities, like graceful error handling & shutdown, structured JSON logging and several HTTP middleware to make your application truly ready for modern containerised environments, like [Kubernetes](http://kubernetes.io/).\n\n<!-- TOC -->\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Main exports](#main-exports)\n    - [`catchErrors(options)`](#catcherrorsoptions)\n    - [`gracefulShutdown(handlers, options)`](#gracefulshutdownhandlers-options)\n    - [`logger`](#logger)\n      - [Use provided logger instead of `console`](#use-provided-logger-instead-of-console)\n  - [Config](#config)\n    - [`config.environment`](#configenvironment)\n    - [`config.pino`](#configpino)\n  - [Middleware (Koa)](#middleware-koa)\n    - [`errorHandler(options)`](#errorhandleroptions)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions)\n    - [`requestValidator(options)`](#requestvalidatoroptions)\n    - [`requestLogger(options)`](#requestloggeroptions)\n  - [Middleware (Express)](#middleware-express)\n    - [`errorHandler(options)`](#errorhandleroptions-1)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options-1)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions-1)\n    - [`requestValidator(options)`](#requestvalidatoroptions-1)\n\n<!-- /TOC -->\n\n## Installation\n\n```sh\nnpm i @banzaicloud/service-tools\n# or\nyarn add @banzaicloud/service-tools\n```\n\n## Usage\n\nThis library is written in TypeScript, refer to the published types or the source code for argument and return types.\n\n**Examples are available for [Express](https://expressjs.com/) and [Koa](https://koajs.com/) frameworks. Check out the [examples](/examples) folder!**\n\n### Main exports\n\n#### `catchErrors(options)`\n\nCatch uncaught exceptions and unhandled Promise rejections. It is not safe to resume normal operation after ['uncaughtException'](https://nodejs.org/api/process.html#process_event_uncaughtexception).\n\n```js\nconst { catchErrors } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ncatchErrors([closeServer, closeDB])\n\n// the error will be catched and the handlers will be called before exiting\nthrow new Error()\n```\n\n#### `gracefulShutdown(handlers, options)`\n\nGraceful shutdown: release resources (databases, HTTP connections, ...) before exiting. When the application receives `SIGTERM` or `SIGINT` signals, the close handlers will be called. The handlers should return a `Promise`.\n\n```js\nconst { gracefulShutdown } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ngracefulShutdown([closeServer, closeDB])\n```\n\n#### `logger`\n\nA [pino](https://github.com/pinojs/pino) structured JSON logger instance configured with [`config.pino`](#config).\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nlogger.info({ metadata: true }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"v\":1}\n```\n\n##### Use provided logger instead of `console`\n\nGlobally overwrite the `console` and use the logger provided by the library to print out messages.\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nconsole.log('log message')\n// > log message\n\nlogger.interceptConsole()\n\nconsole.log('log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"v\":1}\n```\n\n### Config\n\nLoad configurations dynamically.\n\n#### `config.environment`\n\nDynamically load the environment config. It will become available on the `.environment` field. It exports the runtime environment and as a side-effect, it loads `.env` in development. Uses the `NODE_ENV` environment variable, with accepted values of: production, development, test.\n\n```js\nconst { config } = require('@banzaicloud/service-tools')\n// validates NODE_ENV environment variables when referenced first and load .env when it's \"development\"\nconsole.log(config.environment)\n// > { nodeEnv: 'production' }\n```\n\n#### `config.pino`\n\nUsed by the provided [logger](#logger). Uses the `LOGGER_LEVEL` and `LOGGER_REDACT_FIELDS` environment variables. The `LOGGER_LEVEL` can be one of the following: fatal, error, warn, info, debug, trace. `LOGGER_REDACT_FIELDS` is a comma separated list of field names to mask out in the output (defaults to: `'password, pass, authorization, auth, cookie, _object'`).\n\n```js\nconst pino = require('pino')\nconst { config } = require('@banzaicloud/service-tools')\n\nconst logger = pino(config.pino)\n\nlogger.info({ metadata: true, password: 'secret' }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"password\":\"[REDACTED]\",\"v\":1}\n```\n\n### Middleware (Koa)\n\nSeveral middleware for the [Koa](https://koajs.com/) web framework.\n\n#### `errorHandler(options)`\n\nKoa error handler middleware.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = new Koa()\n\n// this should be the first middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nKoa health check endpoint handler.\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\n// the checks return a Promise\nrouter.get('/health', middleware.healthCheck([checkDB]))\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `prometheusMetrics(options)`\n\nKoa [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nrouter.get('/metrics', middleware.prometheusMetrics())\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestValidator(options)`\n\nKoa request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query` (query parser required). Returns with `400` if the request is not valid. Assigns validated values to `ctx.state.validated`.\n\n```js\nconst joi = require('joi')\nconst qs = require('qs')\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst bodyParser = require('koa-bodyparser')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\nrouter.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  async function routeHandler(ctx) {\n    const { params, body, query } = ctx.state.validated\n    // ...\n  }\n)\n\napp.use(bodyParser())\n// query parser\napp.use(async function parseQuery(ctx, next) {\n  ctx.query = qs.parse(ctx.querystring, options)\n  ctx.request.query = ctx.query\n  await next()\n})\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestLogger(options)`\n\nKoa request logger middleware. Useful for local development and debugging.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\n\n// this should be the second middleware after the error handler\n// ...\napp.use(middleware.requestLogger())\n```\n\n### Middleware (Express)\n\nSeveral middleware for the [Express](https://expressjs.com/) web framework.\n\n#### `errorHandler(options)`\n\nExpress error handler middleware.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = express()\n\n// this should be the last middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nExpress health check endpoint handler.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\n// the checks return a Promise\napp.get('/health', middleware.healthCheck([checkDB]))\n```\n\n#### `prometheusMetrics(options)`\n\nExpress [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\napp.get('/metrics', middleware.prometheusMetrics())\n```\n\n#### `requestValidator(options)`\n\nExpress request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query`. Returns with `400` if the request is not valid. Assigns validated values to `req`.\n\n```js\nconst joi = require('joi')\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\napp.use(express.json())\napp.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  function routeHandler(req, res) {\n    const { params, body, query } = req\n    // ...\n  }\n)\n```\n","gitHead":"a3fa3ba5ecda4e9e7c5246d955d5682a39cbd0b3","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.5.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"11.6.0","dependencies":{"joi":"14.3.1","pino":"5.10.6","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.3.1","tslint":"5.12.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.3","@types/joi":"14.0.1","@types/koa":"2.0.48","typescript":"3.2.2","@babel/core":"7.2.2","@types/jest":"23.3.12","@types/node":"10.12.18","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.119","@types/express":"4.16.0","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.5","tslint-config-prettier":"1.17.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.0-beta.1_1547038701810_0.6467968914150626","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@banzaicloud/service-tools","version":"2.0.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.0","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"bca4fd57d378e37505016fa73b71f6adf55bb41d","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.0.tgz","fileCount":133,"integrity":"sha512-fESW/lT6vqtrKEruNORjFfbrR9RleeWXS0lwRm67q0kVNcs7yYxEHNZ2ci05VEr04EECjhareDtCtXeoOLDcKw==","signatures":[{"sig":"MEYCIQC0cUHfntvUtD54F5v1ERI1tjW8U4vshJCV6LN5Gyb0agIhAJrer3syajBqvRfYoE4hr5cNAewQQ+kykikga+X2XDcN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121277,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcNfGcCRA9TVsSAnZWagAAoJAP/3VkQjTAUUFGJJtvK+/h\nHcEF/X6mUhFJv2fN1+WV83icJ+05VKpe+errnP7q6FCEbTPNr0NrRB+Ja7OF\n1xlOPwcHVXxmJzM7jduroB+XB2fkJsxXdNSnAz4FshBJZkHB1jrwXYtKVfon\nQgJsksM0BOylWHGVPGnKWHNhDldZK+6vWE02EaSlEnOKdhNWLQzzyx5/OQs2\nC7/Bh90MfokF3KBvaSW5iRr71DW3Jcb48ZigtKf53RcRk5FuapIzr2xsOtCA\nPHFdIdZkScW74CWOgQyIjCY1JIWzOKK0mpRRJh4wsghM6WxeleHNWWTxt5v5\num692gOds/rF5Dh0WlUTcbLEarXXejD5AXiexIEIsjPOW63kNsjY9sxreDsV\nmrJ51HuOdyvo4qY+VaIy/UOFUscmcXo94Upgp+nogSGEPRLoZ7zbmiX4FF0k\ncmmz6fPDn+Jh0ZKC7VlwItbzCRJlO8E7F6heVhgUejj0Cg1TSZLmjYtVJe2E\nuI+7FJXxDtP2NmtIwSpo+x45mpTj1AdmbucSAjeve866d/rZATq1QKduomfw\n6a/uzE3CWg/5CZXgrjm+QpfsyrASMjKRbNC0PxDDq1xeNPYOc2oVy/MGjxvg\n5G7wQKGS8LvcvFZcNNPA0nSHb77kS2alOSY0vcT76kvA4ykzbAhwN7tEFhji\n0mFo\r\n=YvSN\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"7f5f36be9299285b2e8082f3ac27eb2581e2306c","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.0","dependencies":{"joi":"14.3.1","pino":"5.10.6","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.1"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.6.2","jest":"23.6.0","husky":"1.3.1","tslint":"5.12.0","express":"4.16.4","ts-jest":"23.10.5","ts-node":"7.0.1","prettier":"1.15.3","@types/joi":"14.0.1","@types/koa":"2.0.48","typescript":"3.2.2","@babel/core":"7.2.2","@types/jest":"23.3.12","@types/node":"10.12.18","@types/pino":"5.20.0","pretty-quick":"1.8.0","@types/lodash":"4.14.119","@types/express":"4.16.0","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.5","tslint-config-prettier":"1.17.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.0_1547039132087_0.4687248025394626","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@banzaicloud/service-tools","version":"2.0.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.1","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"848fcf65ea62fcb97266b13911be458c5c9f02bc","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.1.tgz","fileCount":133,"integrity":"sha512-kvUqwtN/pkAF3iNgR5Aup2Pr8FfSXUmKiw6lQI8AK+je7sDPoVJPmCX3psaipdvxq3RcQcOM7H7cf27H+3Lh+A==","signatures":[{"sig":"MEUCIQCM7M7taxFDcS+aSzcLHZGuIqa8qZX+ZlALrJPNJKQYHwIgW9ZtZUuN820VWxOeep5pXhvtg+wt9gn7TkqnfgHitww=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWVImCRA9TVsSAnZWagAAYEQP/1fYBVtyC62AhCvWT9sm\n8frHlxpHxiUDcXR6ynbN8NFlerdEiXnX0Bq8RDcwGkxuCcqL7NPQ//jjC3Ku\n6vzi3pwRNXwFUKzf6X23d1dOkvFI9ufnxvubEoIdfQktmGVa/ZuC4cZmNfPq\n2V76MC0vGaCdVA1jMLaeThaxIDHZELPvsFOaB+W99K1nSAswartQ89pHnxOW\nBIe6m46qv4FwfsXHjzRvg08UGZH4ub3/9ByDvD8swS3Kpolrq1UPcLF6Zi0e\n07LReIwoq9ASpmpvdSLvugQY9kovNrRyu+ek4hiKwR2uG5RzTgribaEGn0NZ\nRTv+nf6bjzRi4d3j2GmTFbqdvEjTXrI2W19syZFSaP+1J6vYUKaRjPt2hXc8\nVUYDmgTe7dt3gWElPJlZ2k+/fg/nqoBS5aKVPI7XakU9NHIZE0oWNuM1sdA3\nKRauf+POmonfpLrA2bQ738FrHA0w2H562Mb8ykvV1Ix04XL5f1NBCYvz9/Yq\nen60/yv7DbQspEF/4SKOrNN5xF0T1EKDyYWAvbA01Kr33ogFlotnq8oX5VxW\nwfN3XAUylcIGLJjBiyl9Ve4a4+Rskw71XLqyZR4YsQtpvGJXMS37TNw7Ri4Z\nXPWHv+yC8ad/vW9hvf0MrbEcjowlpquaABR2jsgHYWnmoTRp7ZXvyFu+y0MD\nZScV\r\n=WE2R\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json"}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"8954c4dbe4025d8701498272dbe7b7c3e32c4c23","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.1","dependencies":{"joi":"14.3.1","pino":"5.11.1","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.1","prom-client":"11.2.1"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"23.6.0","husky":"1.3.1","tslint":"5.12.1","express":"4.16.4","ts-jest":"23.10.5","ts-node":"8.0.2","prettier":"1.16.4","@types/joi":"14.3.1","@types/koa":"2.0.48","typescript":"3.3.1","@babel/core":"7.2.2","@types/jest":"23.3.13","@types/node":"10.12.21","@types/pino":"5.20.0","pretty-quick":"1.10.0","@types/lodash":"4.14.120","@types/express":"4.16.1","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.5","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.1_1549357605287_0.7193705600401494","host":"s3://npm-registry-packages"}},"2.0.2":{"name":"@banzaicloud/service-tools","version":"2.0.2","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.2","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"5e522f3269179ff0de1f316528577938bc395339","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.2.tgz","fileCount":133,"integrity":"sha512-54BTzxzoHo9ImsgSOrE+BYt2U05lkpfzwTN3Qn2i8y2e0u8vl2N63eNbYacZe5XRZ4BtjQqIaSVlD+FA46LWFg==","signatures":[{"sig":"MEUCIDpYrqXNTDiLEH7zLj3Y6/cSpt6pkwJjkPu+2QpB9diHAiEA0tGu6fZAAKx7Sf48WGpdaR5qdA/bMZ1eqEOpzJYVYNY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJca/nhCRA9TVsSAnZWagAAU4cP/jnSkokmfVrCD0FD6IQn\nYc2F8R9LMMFmarnFcrNKmvaayUR08Wk0T6JR28Zyjkaa9HFs8t17zUTTsFxz\n0NOTBKZSSMwVuEKHCfqXSyVlzAcqKFchKq0PMPiQoN9NXCxX38/LUkdi5bwq\n3XNSDhes2pOcokK3alzwvu87E9WEx+tRbdlgKt3uH6tx4Wjpzxm/M0yqZ6JM\nik1DnuNGuBTVuufjpAV0SV3cu6HJObUMGMdJyPohc8AzN1W/cE0XZW+xOawe\nyl+m1keqB9RNoHtDHH9drLOWxSmNDti2btyfeJKfgI0HWjcBv3q049mCpYvl\nCZgjkB1CJuvKxRG18TgsVMS7kXo2RTpvXvH/gVZlOYTwq9BlC1ovHd4iHtdU\nUtzfA9j/lFkI743bt0jOew7Pb6NiKDGCd5Gx78uAFSyHlPuQIdVQ92A2yW7E\n0hey+WhNEmO6aajwX3SlPEOteohhTT8AKuXxSSxZQ47PkTQfr4/3GU/MUIOZ\nx5TAeRh3N0KjHFTgic2PJSIXLxvd9jhGpcbrcjS5mrieR6FXA164W6T6uidH\nIwqy74RLoTVW3HqyC+2xpCNbTp/NJhaqiuFWgs3cjo3eCH5r18AngLIzQip+\nqbe+fSSkoJ11OBOh9rIpuHwMxTp3DrAHLZSA2PWSrh5GtZmxFKjJOROINdmc\nDXST\r\n=cxgQ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"c7ca60f353471784607d820c4a7075dda3d270fe","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.1","dependencies":{"joi":"14.3.1","pino":"5.11.1","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.2","prom-client":"11.2.1"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.1.0","husky":"1.3.1","tslint":"5.12.1","express":"4.16.4","ts-jest":"24.0.0","ts-node":"8.0.2","prettier":"1.16.4","@types/joi":"14.3.1","@types/koa":"2.0.48","typescript":"3.3.3","@types/jest":"24.0.6","@types/node":"11.9.4","@types/pino":"5.8.5","pretty-quick":"1.10.0","@types/lodash":"4.14.121","@types/express":"4.16.1","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.2_1550580192645_0.4177077075512621","host":"s3://npm-registry-packages"}},"2.0.3":{"name":"@banzaicloud/service-tools","version":"2.0.3","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.3","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"63be5516e28ec099b393880dbd8d86c137594fbf","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.3.tgz","fileCount":133,"integrity":"sha512-MytZXFCscQfCr2R5QeqcLAbYAVCu7e4zsKc41UG7tw2iUmyYCn/v6+D78NovqfNn5YbCIcS+0JBRRYDF70a5lA==","signatures":[{"sig":"MEYCIQD3kDxFSILqHE3V0j8PpZ8+zfQCbXuIr5B38xs9r2SRbgIhAL09VvVMC6YkLceemEW6MH81+8ezKu8+tK3ikF1Q5V3R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcd68kCRA9TVsSAnZWagAAGBUP/jIO2oYlXqEyOUj7Cd1l\npNV1NwPrb6ejIV8vyB2+mPmcgTzRU+pRvv5sB119AG/XpnPqrDMVQpLjpF5+\neJiTUue9N13ZY6yyh3C5NnJ3eplwOiYyuUoXoUS2HM7rGxwrRWEyScsw9En4\nSTCf8DEnT5bCJpmjKLW/5y4JVhT1g338phyAWtbSWz3RV4q/A+/lCxE14mlw\nUnDMiZvnqsGOU9NDDjhGJzfRj/LKiXnt8PHZL7h+rOIygxrqpqHAUmSiarO/\nAbFt5oUEXAPGUBsGD9ra01pi7kxp9BmIj8iKh6zeTB0LQ3SSUugYzP25AIc8\nUHGsMcQv5rIw//f8eT8SnI3fWXUxR60bzyK0Nxgkqu9cnWZTeSUafqBKyisr\nRFa3kRYWccUt9Sr1MiqpAZ/qC2VOWxcU4srVRGtLrrrTFFy4GXEJdViiO3cf\nBsQ1X/+5/skliIgRTsJCJ6Jdqd9JgwsmfDW315eNvuaTcnw4qu9pcRk7sMo/\nLXbxcb9c7rL6hHzu6svsIsTCwrPRqZbsQlFxgZmZ+vMc46hfRLnoM4EXMaHu\nTi9LDZ21L8439iSmYmmvMZczj9jLfjrb3t0LdvKDx8rkfUCIM+JkJSJtemU1\nwez+cd9K7nMylTP6/AlUep4RWKIrrPFWcl2TWY0qsSPgkzxwOsjywr2D58+F\nK/DU\r\n=TTWP\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"265197e021a530cef9c5ab22e7363fdbc296ea80","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.1","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.11.1","dotenv":"^6.0.0","lodash":"4.17.11","express":">=4.16.3 < 5","http-errors":"1.7.2","prom-client":"11.2.1"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.1.0","husky":"1.3.1","tslint":"5.13.0","express":"4.16.4","ts-jest":"24.0.0","ts-node":"8.0.2","prettier":"1.16.4","@types/joi":"14.3.2","@types/koa":"2.0.48","typescript":"3.3.3333","@types/jest":"24.0.9","@types/node":"11.9.5","@types/pino":"5.8.5","pretty-quick":"1.10.0","@types/lodash":"4.14.121","@types/express":"4.16.1","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.3_1551347491815_0.8261427720651413","host":"s3://npm-registry-packages"}},"2.0.4":{"name":"@banzaicloud/service-tools","version":"2.0.4","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.4","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"c701d768d7a6b43caf085ed14402b7c90f404218","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.4.tgz","fileCount":133,"integrity":"sha512-h6N3A/3Q76q48hBeUTt9FS0scsdA/OlQk2n6NjaB0+Dn0W4rHQj/OnYMZsizxydhNcb8nKSOxWOChX76kdgN5g==","signatures":[{"sig":"MEUCIQDVFTAOfasJe2wCW3F1tT17OyCwY+VQOWIRo1lOAp8MYQIgGQMGAPGEcEeId070O4OSgLtRXS3F3R0srHyMzCOfkIY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfPCuCRA9TVsSAnZWagAA9jYQAIzNAv+dpIp2KGNcYTdU\nz7qzER2US0E9a0Rnt0xAc4HgJnoU5VdkqNEjVn0GZRxVQF5ZEX1QhGmg+jYu\niupwbZQOQUU2wp00I8RUVfkwg47fUGz9MVPM/SZoVOmSMlHfQskAAgXs7bid\ntkXvG09pzVz2DwVtnm3Wy8LvE6vbOv/MrRUBpRAcWIKWH079C0EWMt1vgdUN\nHE3TpjxlGAcR29xj2XkA1Z/dvbU2+MDAqi/ZPzXJus2OnrBiJGvmHFxg7qSB\nEUPBAcoGeu/n9mVOo/eaKB3DlASt9wAZz70BpUwd1lD1+PtLg2DX3W4JxjpK\nKt7o+RSZDUiK8MNsBc46S8R+hUP8fZneHS8+3NMKFsnmWxqWyi7ac/c9tXXq\nE+Tzaqli973KwuZfsR6Ow2Rmf9E8v1xnG3jN94zOCUN7znsAtfjsGK2v29tI\ngiFuiLBIwjAVZpmwnjBZpYHSXL0gUjEc1nbE1UK2xFBcBWP/IIXClAqUBQbl\nRXYyUdU710BgqjHXBo/pMzPQoTXzFq11ZtDBRZaVLDEWXs7qZ2C9bgh1lAfD\noX5opt0YqIjIOcpwJBirCYlHHtxe5Nsck0CB2YEvCuTXPM9h0o+uFOeUP1tK\ngrFaTn1x6NZGfcmSIMp2QeTSFqG3GnOhUVKbMMMwP/KZBCDiA22XoZtk3G6k\nuFpF\r\n=oVdj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"380d507911ae27bf6c297b5b4ac9cfe7156cdee1","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.2","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.11.1","dotenv":"^6.0.0","lodash":"4.17.11","express":">=4.16.3 < 5","http-errors":"1.7.2","prom-client":"11.2.1"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.1.0","husky":"1.3.1","tslint":"5.13.1","express":"4.16.4","ts-jest":"24.0.0","ts-node":"8.0.2","prettier":"1.16.4","@types/joi":"14.3.2","@types/koa":"2.0.48","typescript":"3.3.3333","@types/jest":"24.0.9","@types/node":"11.10.4","@types/pino":"5.8.5","pretty-quick":"1.10.0","@types/lodash":"4.14.121","@types/express":"4.16.1","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.4_1551691950095_0.5661921143764805","host":"s3://npm-registry-packages"}},"2.0.5":{"name":"@banzaicloud/service-tools","version":"2.0.5","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.5","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"29c2a6c1ed705fe95da9eef0e598183381c21a7a","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.5.tgz","fileCount":133,"integrity":"sha512-Z7AvkKGf8PYO1xiB4Mz/IzVIw/2gT1IBeIFWG6/sQLcFQj2pQ3BweZkmIsvH1PyGZn9FToKf90B+Oo1EoYU/dQ==","signatures":[{"sig":"MEYCIQDqEvtjUvFk2nsfGtyAexqHb0N8WRTQi5IpZV37dt8kzwIhAMA+4EpOX/OQPZCfDC2+ES253f4ZRE3s0FYno3vOd7WR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcpO/KCRA9TVsSAnZWagAAk9cP+gLjPFdgOtDmK+M3kVC2\nPTiuuX8hg2pFu3ic2tyWK45wFGFbv5UspmYM/srXmjLXM9Dc9WjR2ovT/RJt\nXkcbQWJDMAwnm83zSRhbxYsKyu7Ey8SLTK+goWAvK6/Utqthc7u6M4kYCtIf\nyBUZEATu6X4IsJnZUdv22dgMSIEWu3hYRqXh7OYD7oBDEN8MFPrTJiu1PEVi\n7Bctc81/C2OLZHMVz7NKCQGITGsWZmdi2VL2eXDEy6iye7x3aaieQ3uLStJE\nsi767DmQ0S1qrJ/o4fAWvxTbJYolaILVqX02yvHaq2mSdBSMI44Gz2/qAR8F\nRhDUdSKsxcLaxlHpa8j4BpIru/RC+pBpchbBldxS9TlcIufTegocNEh841dx\nyuuaWwGcuoRD45FyR51lr45b0LwXipXSr6b0LG2RNcQpG7X53AndVX5pFRvZ\nAzwVmKBWh1R2cYgFBbawVUmgj5lcozldVcFto9UEhr13L4ByfAjZvRmdQp0Q\n/ZxEOwFcGlh9bqlE7RyjgryyNUHfBzGkbLb4o3HZLi5RcOxYmrZ+YFycwjjW\nl4DiBQTeIXP4Ljx0cU5r2kFeFQQaNjPiEGCNuPMQPgnhTT8Jc91swVdMAkLL\ntD+qIQD2pWJJthM7NWtLayp/3VSSCKDPYQaTueZZDqm2vIk5H+qig541o8sm\n88sp\r\n=20Zj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0efe43a00a5ce6f45f18851af5e57318359e4d6d","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.3","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.12.0","dotenv":"^6.0.0","lodash":"4.17.11","express":">=4.16.3 < 5","http-errors":"1.7.2","prom-client":"11.3.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.7.0","husky":"1.3.1","tslint":"5.15.0","express":"4.16.4","ts-jest":"24.0.1","ts-node":"8.0.3","prettier":"1.16.4","@types/joi":"14.3.2","@types/koa":"2.0.48","typescript":"3.4.1","@types/jest":"24.0.11","@types/node":"11.13.0","@types/pino":"5.8.6","pretty-quick":"1.10.0","@types/lodash":"4.14.123","@types/express":"4.16.1","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.15"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.5_1554313162148_0.7636067318143163","host":"s3://npm-registry-packages"}},"2.0.6":{"name":"@banzaicloud/service-tools","version":"2.0.6","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.6","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"802547d1e1e058947b3968b47f828b7d852adfbc","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.6.tgz","fileCount":133,"integrity":"sha512-+Xb1ss9KfhXs+MKmkJYno7IsEQxWhUtGLPCxQn4bVnDVMkzDqDGpeWVqsf7WNfQojtQ6PU6tdgVgQ66Xaq7sMA==","signatures":[{"sig":"MEUCICt3Vc1b3VOBiMkv4iVS3YXxbh0VsSucq6+XxpysLwvMAiEA+C4PQlU8vCLMpP072XqKCHxUW434WkxHUe1FFF+aNec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc1AGtCRA9TVsSAnZWagAA49QP/iWqAaslY0fWZMATdoD8\nCz6u+ymTvNBnXdTxfCjnALaZfFrpP24afby8MQdlwtBX0abJBeNJHZP1YJW4\nj2kNyMprmdViSsf3mi1+WJH7XjHsWkOw6LlkeBfmXB+G+5yr7P7WQRcmNZOn\np6xrzU/k9PHI/RGHn90Qnd2DBd09P8zez8pCSBGPScQtdNKo28p1bTNG33WR\nX+C9bfJT0iMvMx9o30pdXcmm8dlmoKh/vsW/7EUiHv6d7Wkh7sbqUEavI/As\nlWkHPIrZG4eBV3/wf1YEgSpojWVsfAx8KtKyg2IgJZdvI1AM2Pvpci0d2IB/\n6D376zQzvL61cL18c0HAhOvFqlBrUgR9D1vtIJYv1u0aMUzPgUV258qdLXwG\nvKyHnrsQWWB+PJkgQLZKfiDA3Djq5K3J3y2EG43qQjNcDDJfp3FJc7j/GMI8\nGcMfV1PK6s8EmuHiyE9g3SDo21MZBhbcWvGzNrXfFECJXyMeobtDVMD9P1Tw\n+N05maUmx3rtg5vU/vH4BLhJSQFMChiO7/ERZLr6q+8rA3lOHuIvpPSO/+sW\nu0iXueutpfshqewDmDq+tnPHvWf6cYAeLpMDkzPsZ0G9/2xJtUf9G8GNU1dG\nKeuSMRuGmASzQLcQNZyFgkBId3nJcF1dJRATiRuQKpHg50hsshIgpuc3Xtse\nGTSv\r\n=2/Hb\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"0e4fdf65a86d71ca3386f36b27ec994564705b65","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.4.1","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.15.3","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.12.3","dotenv":"^6.0.0","lodash":"4.17.11","express":">=4.16.3 < 5","http-errors":"1.7.2","prom-client":"11.3.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.8.0","husky":"2.2.0","tslint":"5.16.0","express":"4.16.4","ts-jest":"24.0.2","ts-node":"8.1.0","prettier":"1.17.0","@types/joi":"14.3.3","@types/koa":"2.0.48","typescript":"3.4.5","@types/jest":"24.0.12","@types/node":"12.0.0","@types/pino":"5.8.7","pretty-quick":"1.10.0","@types/lodash":"4.14.124","@types/express":"4.16.1","prettier-tslint":"0.4.2","jest-mock-console":"0.4.2","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.6_1557397932524_0.4767786010039139","host":"s3://npm-registry-packages"}},"2.0.7":{"name":"@banzaicloud/service-tools","version":"2.0.7","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.7","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"ee5ee9e737a2155b19ed4991f13465d61c9e0295","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.7.tgz","fileCount":133,"integrity":"sha512-4UWhBZI7F9fp0yZ0WQN0pGGsHOH7RouhkWhULv3MAz0di4JBc+zC8Q9a26BqV/4hn5HZk58pD5h2Ib/ZG6S2lg==","signatures":[{"sig":"MEYCIQCnmMo0Flwe+WZp/uPloW6y10klJYlLlzra2+wyNlJXRAIhAOXgLj/ma358H5IXz2ZE11LAM+ZTSQGUI1DEqOTcY38j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc/1Y3CRA9TVsSAnZWagAAYB0P/3y3sUMurZ2bf6NRlw/t\nde8yNyAzgPZeJZDGBR0y88C/N67YhOR87I9Q/j4vldhyg+zTOsHBqruvwBLD\nXGl0JRfOcLGXjqWsioam9GGUjcjHL9QqnNTfKILty+D0IxgzUHlSRJlMWRsf\nEFLRrMN+ZMXC81IhjqtspSwhyBQne0is7ncHj7ZL8FQmbGWyoIapBWkHbKYD\n0D4+NPkcbIHfhsNO4v4wgMkbaKDbAhupjELpXdiOqT/wgjklXYKv37qbvYJZ\na3Pd6XdMjXvD3XPguKp+Qj4J9pJ0ApL2D8aYoMOZMa2HOlFlJI2p8F08wr28\nGGd91nJ0PnNNPocUYnxNtjyjKb3eKMctEhZqcJ3mOsFcv9KRH4QFk10Zdi62\nHP8pctDCCUK0Sx/EXqbxNarYoxoMqv3dqroPZLtyXLQRvecPO6aUSKPq3XJA\n7531dsdrd8OmG7d0nvecNt5VKZsDOuf+v5+WezjSu10RoeCtgKhl/WxXNZ8W\nXeMh16xlcfI4ENnhuIMLiRBFIIbpqFk6oGkg6CjJYWP8BGZ3a/UzhuhlPHMz\n0stW4HYNHUo0hP23PnCu7+dI4ai3PZZiV22Rhd2YS1usc/0aDDbLN7CPWS+i\nMf8wdOgVSQqmKamyDn1ywoXFAhPzUbYiZFGaAdt7X8SrGbCo8dm98JzWKnSr\nvv6e\r\n=bdv1\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"37cf783406bd5f76a52b6545b1014e0772a785cc","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.0","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.12.6","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.2","prom-client":"11.5.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.8.0","husky":"2.4.0","tslint":"5.17.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.2.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.48","typescript":"3.5.1","@types/jest":"24.0.13","@types/node":"12.0.7","@types/pino":"5.8.8","pretty-quick":"1.11.0","@types/lodash":"4.14.134","@types/express":"4.17.0","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.7_1560237622545_0.44644974953342476","host":"s3://npm-registry-packages"}},"2.0.8":{"name":"@banzaicloud/service-tools","version":"2.0.8","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.8","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"1c482a3dbdc6293ef757711be030ed3381bb6656","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.8.tgz","fileCount":133,"integrity":"sha512-YP6v7XY3sk8+WpcW2oPnJgTb8Yl+W42jGAJKCI92U71sUUHBdbtAct8C5zc5uRbrWrNS6MBQ1dYrd90LRkNTzA==","signatures":[{"sig":"MEQCIAsh2as+D56DZ9YocdgZ3uBefOp4idLKptq7Upbi2lPJAiA1/mgzTwv8f68lZfCZBuJCqPC/AGI21aXr5wNi5pHwDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdJdRUCRA9TVsSAnZWagAAvsAQAIOoLaNsqeB3yh+M6Doo\n2MdpTv01Xb/I9qRcJK41rKHteJS6v+HW3zVhdLPMiPricQXRWn+w/z9W4W2w\ndCdx4D8g113JG9lGKNdzV7ULVMXauu5d0NEErGc8aja+4HfPrAgORAeRdcv+\nGEbJNFnWwpzRRYgoqzTpuVTXNbKUPJYjbpeAjW0fo0GXhnWh7gA5/FenYqQF\n20hRNx5dyA1t9r1x0KN1vogoMFVTRTejXeO4w2OW923YqG7GDk/6cd2N2MS9\nUps58bIhLQLrsSty3Adj3vkYJbBIJAbvlsYmQ5BX0kMMtl8L368xrIjVEzg2\ncs8TcS16KMkwy1tcdN95Qb49BQohuKz7zn0K54yAG7u7Ajqn45jeLOpeC+Aw\nfMTDfUx3UC6TdA6NBH61ju67ycQAPvacDoD+fmpyFTxi6c42BxlC3PdEt1Wx\nyvq7CTk779iJeP6qXNYQqAihz0SH+83tbGNjZxvZf93Cunlvb3bh6Rfl/SQQ\nR9MlWag3OF++BxPln4AJybWjoriE4sbxQ8fllM4cgx35UPVbCPxXyr3Jw2+F\nclBZSVRV5UfQ3HtYtrLPz8tbjYd7B21jLWwwjDNT7n60832JngHjJWo/qFxp\nBUSTe57CV2iR1W0tmrBf2K1LWzEqVk7meBPYVAoc7VbEi9/iV/8vO0DbiFBX\nqbqR\r\n=cSQw\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"613951c0b7db2a124aadf80438eb84dd326d5336","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.0","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.12.6","dotenv":"^6.0.0","lodash":"4.17.11","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.8.0","husky":"3.0.0","tslint":"5.18.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.5.3","@types/jest":"24.0.15","@types/node":"12.6.1","@types/pino":"5.8.8","pretty-quick":"1.11.1","@types/lodash":"4.14.136","@types/express":"4.17.0","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.8_1562760275589_0.08561062125259422","host":"s3://npm-registry-packages"}},"2.0.9":{"name":"@banzaicloud/service-tools","version":"2.0.9","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.9","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"40b6f40090be0aaf255129bc5353376232878406","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.9.tgz","fileCount":133,"integrity":"sha512-fsPoXcmA6ZTMTEd+cT6Br2WMLwggw9om2BQB0tmwcSTGYpalvsxsIJekuBWAvTyz2OeAG81hclXziReKosavVQ==","signatures":[{"sig":"MEUCIQCNnymeQXwUzPzuST2jedvacYhx2wzPl0ckSMJ/0/RQEQIgIX4i8bNzQPgf5iVdoevO7K3lZZ78+8n9rTB8ipZeVxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdMXxjCRA9TVsSAnZWagAA4XkP/0LP+Xs63GfEhyk4CF55\n+6nSjxlWzzC2xt0nmIOPIB+L4X1IXZfq6uhm5cCgT8Jo8kWoGrnO1CDNhLF8\n0yeMf4D1FmAZxSpeHM00+SfyLXtAfL2R6eVw9i0GtS+b48FpyF2hx2jBoiAD\nsvNwTxO6PvwsO1q+v1WapUSHbaAKONpIfcNZXnMobeRbrMGNr0/zOCfdQu15\n3bzrWrXhYrfodFpVyyekNZwTThMvSG9caabL2Fm99d5R8WvG8hxfS1UR0HhW\nZE/CirNPtYcCC4NnycZcjonZ95x/i26NjS0oSPPTycjC36zd/yh9cOjbzjQn\neNd0voc0KPjCHj3hyKTdhc5NR2JVJi5HHev2qvGrTcuTl5FdU0GWIOCY1+Ap\nyVk0V3z1wbbrRRVM9vjnjAXMvPV43/c2+aWGr/u4RqqxzOhImB0Eg4lYA9Dc\n16L9xtLdM9IGoGuOrdNqKelEkG2kv5m3BFoyUEWlOSXlQL/PyM/kCrc7qSf8\nfx4Un/Bn8j3G8Rs1l4KBJjXvaZzcy4jLX6v+QgwvCmNTg4MHO9GVqFsH9cty\nnyQU/bck0PPZxZmHKUIGsTCxyFgpiEubS7+hu1SAcWvm1op8OwfXCD18KW46\nvOqnfyyGfX8tHe+mOG5QFIp5TGxHGMJwaeSPX0LBaLDEZ5EQJqiM0TGoaP25\nWzPg\r\n=ZevQ\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9e37eaad9df07c1e56478656ece758ea62864c5a","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.0","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.13.0","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.8.0","husky":"3.0.1","tslint":"5.18.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.5.3","@types/jest":"24.0.15","@types/node":"12.6.8","@types/pino":"5.8.8","pretty-quick":"1.11.1","@types/lodash":"4.14.136","@types/express":"4.17.0","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.9_1563524194628_0.7199699756183371","host":"s3://npm-registry-packages"}},"2.0.10":{"name":"@banzaicloud/service-tools","version":"2.0.10","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.10","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"d1af445e6cc8ebefcfa97595a66659639a4628ee","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.10.tgz","fileCount":133,"integrity":"sha512-QohTwhzDijlNu7RtlgH94TZwYmMj+sycPGnSK6/84pXoKqktkGukIfgeFRU+4iS9Wx/kLuRdmK86GqA5cILNpA==","signatures":[{"sig":"MEUCIFNAa7rGjrspxVr1ty3jSCEabxDGThfFlBSdu0MJshlQAiEA0gRtQbtdXt50yU0LOMr0MsuqNJLOWLDrismj/HkwQaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdPqePCRA9TVsSAnZWagAAadMP/RQ+xIBAbLxL+Hk3NnrO\nw3FGctXO7tQtdVCndu2KQVRMZA9JX2TFJilUREN5nx7UF5MUq1gSwn3/tQUM\n3NCKpcHSbywEbA1AaMwCOEMwRm1+/8YhB/01pwh9clusZdCdtqaYf3v66ixb\nVAdn+A4xvEnGTpeuN9rWDUvGLZkzjvdGKlt03WLbZTELtq2cpyYKx+xtvADV\npBVjsxBKWyUsor8+lrnHA2qh6yyX3FbEJuDBrDekcng3z80NhvBUhZ7eCJOM\nfQtNR9Z1iqxtWSocSSaImnDkQNIIixyMN5uyX/zQE/kHCKkMgQgrYNYVo5w1\nD9P0QApO7hLRo7cbO4es65vqEKWv+YLfn2vh8rb+wM9D1i0v58mTPTWdfeIJ\nqqCa3Z9Cfi6gsXoPLoed7A82wRGplxc8f3MOx+Lnpsqr8UsAKwO5sry6fs8m\nhjAwhjiEAfJ4kMKHDP3WnKSFxjkzeaB+AgeQum4FKOk9oei3MUisJ5yAIIa/\neu0s2VM0HhwJaBkXgQ8xqtaipnsa8yv6/Gdnmjivn8H1FCF+rTV2ZrNCTmNb\np2NCLD5igGseGMUjIZ7d52Qvc1bZcKgNx2rBC8wLubeLJB0hNOHkQ6lpVcw0\n7sGuKQVn0Oi9O1g2rebiW5RHWhCloWtpnNBgCkoA6cMY8xv7NMBunRmTjU0o\nIdzt\r\n=RiY2\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f5f3af159df58104b6c46fc0e2526243566f665e","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.0","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.13.1","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.8.0","husky":"3.0.1","tslint":"5.18.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.5.3","@types/jest":"24.0.15","@types/node":"12.6.8","@types/pino":"5.8.8","pretty-quick":"1.11.1","@types/lodash":"4.14.136","@types/express":"4.17.0","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.10_1564387215074_0.7303215792172937","host":"s3://npm-registry-packages"}},"2.0.11":{"name":"@banzaicloud/service-tools","version":"2.0.11","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.11","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"6291d8fb5d4adca2b707145045853377b272cca8","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.11.tgz","fileCount":133,"integrity":"sha512-WUX0SAxloLfSVX9ZUzGcVD9EtLqlF11GC/ssUMlLZcOIF5tXm99hz9TNov1eG8/IyPoQZzT2uIlfGer6ixZEjA==","signatures":[{"sig":"MEYCIQCKeEtPbVW5BvR0AVw9sYicN1l3jAUNFamEb/cuiAVIcgIhALKBtVUpTpZ8hw+bF6GH2lXHg3gZ5Y4mbJDzLrRuSMBF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdR/8SCRA9TVsSAnZWagAAOFUP/1F1AtcS6xbFXZH2sD3P\nMoampAC/jOAi0nehu0ZImM5Cqyw35w9PWvlOathNpmAO85bCf2qFzdnGVmlF\nMlQ/E3gh0uojF/7ukz9phx4+2qJ5vxt+f52VceKlu+4U79b4OVHi4oEKOgAH\nxQz7on6H1rbXR18POeayl/fIfiBAsvH9BPpMpTRdkGflMdyTphC6LsAesD+P\nF9Dp7p/ijH6QDGt3WcMEM59lljXgJxZ0zBayGsuLJOVP7hAbxXMuhgag3HRL\nz66tw75/ze16GFmE0rsvWGatyL0gDqrl5L1lRTUAHRauokyJXk9Z5pCmh2Mv\nWq/uu9+TpvtxOM41clWdzAzkOSJcl4M2uQ+h34a+RzQ5WELwY49VE0T5zfDL\nSiD+tnO9/SHcYS4itMdBRv9eoS6wNiZ+sEE0xzY5Z79h3jGOtUL9xWBzZRGR\nfYAdEiEy6BB9iq3FgbuNthDyFv224oaYacoKeTbhtqIlwgFZ975GW4famBPY\nqRkUqfdESIG+/iayt27GIh29/8VIkcStMr4BsSAi+ZGswXvgfwl0CDxS/vkK\ndY2dfew2afSe8gzmr5F3ZeHArYO7qsDcMUU+GQDCwZXBXFSiSm8EK7ZEQhju\nlQcLMbBO2fDNj7+YwGqFL+mHyKfRZWJIB6ERuOAeXcBAvmSPHMfp/uf8FzY4\n4aNv\r\n=Citd\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e683cc49c68f35fa565c924cc2d26f14df747a10","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.1","dependencies":{"joi":"14.3.1","koa":">=2.5.2 < 3","pino":"5.13.1","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.7.0","jest":"24.8.0","husky":"3.0.2","tslint":"5.18.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.5.3","@types/jest":"24.0.16","@types/node":"12.6.9","@types/pino":"5.8.8","pretty-quick":"1.11.1","@types/lodash":"4.14.136","@types/express":"4.17.0","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.1","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"koa":">=2.5.2 < 3","dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.11_1564999442253_0.9809222711446617","host":"s3://npm-registry-packages"}},"2.0.12":{"name":"@banzaicloud/service-tools","version":"2.0.12","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.12","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"392f1d3285b09527c136588faba8d7444b244ea0","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.12.tgz","fileCount":133,"integrity":"sha512-6RrIs+Qklv5AJ7HyM+nUARzDlbGENc8QOR+nUuR3rHrZO9qpdfY/u5f5ZweiDiOF7i5IqBLD5GaK/FuMwY5/0A==","signatures":[{"sig":"MEUCIQD//SxSgSUrU+pdrlBGroCVU9G9afGGYAk+YyCF7qxvQAIgFUF+p/DvipkFHNrnnIzsMddbE5/53tymcABFi9pAjPw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdWnWzCRA9TVsSAnZWagAArxUQAJtpNWE699nbVz6qCOYH\nOgPDnJpKb6wtyl8vU2aAOGRKroQ9B6NBsSDFrXWINGu3ZQfBediK+xLtSTbZ\nopFV+9EBASC6m28nfNwvql+7C8WnBb3vZLlNAuw67OWM7/DzKmWw8Wyn5WZZ\nrAt5N+I3g1nf9n0JA+dRKUjEPBeEoT4PKbSAMjKSTbh5Mw5+/gbAoOVxsamF\nw/VPTUKLoP4o5fuUMb/YpT1EH7wJvmkYks9NC44k4HBPxsR04natRyJTPEXl\niZyUBGW4Jz0KC2AV1LOJz6Wr278TBrX4uWNz4dc2tXxnFMDvzyoV1sM3clg6\nGrobJp46FohWpoW98+Sq/H4EfbiYX+kXB+Y+6Ti/4DzsT8eJXHD/pLVHMtd3\n1vjWjZWg2xVWU1v7m284DkdBLiu6P/UNnOc4etVNbgm6zDYTsxyex6XnHdTg\nuuqqdP9X0e77zMU73s27kqgkq+Y5Y27atmXrOxIqGJi6PkR31v/2eFRRheIE\n3TDTzHrsjMSE0SxmFMFJlkm0QZH7nhX7mn/uNDfocxL+HtJRNezY5YNBqIeQ\n/AvUwDU1wVYVdI47yYPN0357U6DiDkVzqXnL8xGVqMw6Kg7s/rxNfLPdf2zh\noTIF4ciHnzA1AGVlbq9nrJ4cxxIB1lajr3EQHwKWkfaPiUwtTFAy+HdES8Ko\nv2tx\r\n=Opl4\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"b41d465a2347892d3b22e28f2e312a29f7eda51d","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.2","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.4","tslint":"5.18.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.5.3","@types/jest":"24.0.17","@types/node":"12.7.2","@types/pino":"5.8.9","pretty-quick":"1.11.1","@types/lodash":"4.14.137","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.12_1566209458538_0.5111766826574444","host":"s3://npm-registry-packages"}},"2.0.13":{"name":"@banzaicloud/service-tools","version":"2.0.13","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.13","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"262141a7400cdddd6ae61f4449bf0625acc6aefc","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.13.tgz","fileCount":133,"integrity":"sha512-iBXQzPtT1hv5xs9z9Xn7QgrWLMXOvRJcIJt3+Cp0ONvUkxEgJ8bGM5OZ2PbwJFUz89HWYd5WjDKJe+5Sg/c7gA==","signatures":[{"sig":"MEUCIHJaD7kbaMhq52WJpdTEfkTP9IROVcs71UNrlQfgEfbKAiEA1dodlxCMvaF2mvhczRQSLlPwB+lsTDsOn351hC41nq0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdd1gZCRA9TVsSAnZWagAAOiwP/0tq1rKGTvi3/Xi6hw5Q\ncKYaPlClc2m2rNY3ASO+E5cHqwgAMOqkSYpLAKAOTlcafL1HTL2oI5HoxwJo\n/Iuov3N8C9gSCzx1xvXgdw3trjMj5kqVEngaHr/DpQXETin0H34b2TL0Jvcv\nllCzKyuhKZA09bGaqJwiUBuDSdJy/+b2GFMIAL3MuIvgurvz0F+uWcABq5A0\nb5XOyIk2zLz+KoYruiLfzJCI0xnHh+5QtaJ6TIwaxGCXCJdpQjPHEbWOCUfY\nMDgV+6lpSTWNIoo6/jTmRqR1US+WF17UcWXXG1yZnQe62+pHpMduOhvYhvn+\nPY1/3No10scryRyeAETwthc/CIr2r12bBGMIEbEtLPG3l64iyqVb5uQwKu87\nlOop1/D1DjL+FoLijVV3LKLDekcnBxUa8eZlyG7RPlEwTVp18HBFmIgNU7uS\nZNYX9vN/Sdk4KVSlKBSAXmk2we16EIDtDlCM4EEwwcp/EKuQ9umqiYxeP/Im\nZAPkScxmRB76ZjCD8IWTN+UbhWlxGPWcn34UI9qcUagkUomGG6ofWk8iXwMk\nNsdfVB8gD2VORocqd0Sj1DbCzfa/3scBH6jA9P8lK8GPSfrrUcsDioiwfd17\nkbJCPiVTHpmUdFp+qhxu70XVx/z0DiXmXea/AIodf06zKsyW2QgieFGcVJ4+\nnEJR\r\n=o351\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e31ea000da146a847865621c597653093bf064d7","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.2","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.0.2","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.2","@types/jest":"24.0.18","@types/node":"12.7.4","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.137","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.13_1568102424731_0.9299870217681354","host":"s3://npm-registry-packages"}},"2.0.14":{"name":"@banzaicloud/service-tools","version":"2.0.14","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.14","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"998350949472db87098133970b151231280a0426","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.14.tgz","fileCount":133,"integrity":"sha512-Y0JtL8CXCvTl4eqzuQRks9zWOOB7hU3lfNNofMooV9YM3gw0ykRkeS8zEydU1TnfDLs3JCi4SLO+vsnrF7XVhw==","signatures":[{"sig":"MEUCIDS0pNxpIm/f8UdmJWTWDpfWIzm9/8nzEl9WSb5JTIdSAiEAinGbMViim6hCiGH3f3ILTGuIBUDlFbeAHoamKHOtmn0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfMoeCRA9TVsSAnZWagAAWLkP/RY6jYz6xP6MzAKMPQ37\ngWB72RN90noVWpUFCoUY8lEUeK4nrmIVjUwI+D2O3WZ5aql0/4XBEiSdbYf0\nc0zxRGfLqDfBo8/Nidmxkb5hzdvpH9Ux4TYH1UIp/wepywgcouT9V1hPzFd3\nO7JWzlw4joWDKTTOv8FN12VQycqz8j7hZfusWRdhvq3q+6q61+ccehZwIs26\nRxeYqmr56B49td3i8DjIsenvoIoY2cNMIng+V2uMryx/DXhSwsLbUBjEIhet\nrJWgMFXrLvOGC7OPCDrzPQWjWtPbESbUsLFHsrUWkBxPJGfC0lThUTyTSPVr\ngAyIOwQaVNS53Y1/V967tBZ2CKj5sbhvNBPiWolGNJfWhZrCQTWg0Ozh22HX\nNu+1No1FNOX4aVpM/m7RSX0Ww6Lt6ZZhQBu8Iz98tzeFes0+mo9b9CJ8v7U8\nurr8tDI/qopNYBbVxvb/kgeyNBDg/qK1F09wm8iOa32qdbIv+9qDmQc8bchV\nSVruXn9rvijxFfYaqX3DEVgzoHmdl62qNFbSYgLKCjtrS3Yepi9ovtXXN1tA\npemWRSfpuj8U+16i2jmkQgbEUUPz+7fNQ0zV2Jk5Fe9ycQqJQ73BBiMDJWJI\n7rRaPTBLekr7kcsIglWx9TsiWE/ohnICDBh4FZSGxa20vIkwYUUQHtn4hSSn\nrLf5\r\n=kV2M\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"984488415e21a3bb4add341631d6093b5fd17e97","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.3","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.3","@types/jest":"24.0.18","@types/node":"12.7.5","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.138","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.14_1568459294064_0.25013311745272926","host":"s3://npm-registry-packages"}},"2.0.15":{"name":"@banzaicloud/service-tools","version":"2.0.15","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.15","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"989198057a9ce4f5ad182d92d3afc283327f565d","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.15.tgz","fileCount":133,"integrity":"sha512-VOAFY4fN6Qyg7w4Y7liVB9oE8Xehxw2UXix+F+9vYPycR6acujALlBt/2eicol1ZsYmEO4ym1U3/plpT8rlFOg==","signatures":[{"sig":"MEUCIQDWrgXSyBg3mfP+cKaZOoL+77Pw1U3i182a4KfCikHnpQIgRrE7WJ0P80zRaFrVFcFsgsncCrtjRvxOKwA8qbNCc8w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfNafCRA9TVsSAnZWagAA7bQQAJAZc5h4hzV1pYSaINaW\nXVq5HkApAF1hYDt4SZmINj/eu8MTZK+1FCiCerx4yHT48r4YnyMLTsmJOAJG\nk0s8vVjCo42fTX/wJwmJu1Kzqa1azIJOPFzudgHMFLb+HiDzxVw+8xNYixBf\ndxcH41U92gQt6Nzb6oJUKwmh2wwzIulQP5fsk4BRcQXG73nAARrwSNxalID2\nCeFpXgQDWw3vX712GBsp1/0re/IX35qECMK43nMnnwU1VW4KTj8j3NUQ+JuJ\njkDCcXEMvi1htTRk0LZNTGHUVKJX/FmEtl748DwnpyhQpvlZ49GwrXHTZZ54\nL523wasTrsyhDCL3dh+FEv9JV5+fHVfSclTBdb54bM3iL8Yu7Lf3Abag9vZI\ni/sToLOQ28Z7AS6VgvjNS+cNAaFNzdJI49q2PQhyxJsqBl8DlH0/NRZrjn9W\na6OzW+MdFGEDOKlQoJhr1kK2XlWGRZO22l9EU3knSETuSnpOtd9aDkul5s83\nC+fjuaPKU2T8jTiXKMG8EQMv/cu9TAsYT3b7aCzd7+8pEUIZY4LsZfkXbf54\nrhwnUhVHAEL7iwNILZkfkavL46eW+Fup2TG075K3yeGjU8psRoSiqpnXdiIS\n8AZxLL4pXlVvU2nogMRvz7Bs2Fe8Mq0BNFGPgPcowtAYFKkU1GFpLK1LzKdN\nPVNO\r\n=KIeR\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4fd3f0d5052cdcc633031a67205e3de0483d46cf","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.3","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.3","@types/jest":"24.0.18","@types/node":"12.7.5","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.138","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.15_1568462495054_0.6183779468869064","host":"s3://npm-registry-packages"}},"2.0.16":{"name":"@banzaicloud/service-tools","version":"2.0.16","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.16","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"6f56b96be20e4e251683fb14c6419b01e9be4cd4","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.16.tgz","fileCount":133,"integrity":"sha512-KgUuK2ReSZp6/UNQ+xZGbaDtzkSLvc4LZ4UzwlAMZKILNxQ3yuRSFJobpOj3btkFgweHFFq7rA74uX50Nx7bGw==","signatures":[{"sig":"MEQCIHaG6l4IAiQdOGslWD8KDUM8jeKrWkbHU1vOTbIZzbl0AiARXfb9AsNG4DqlS2x1hwk22eqIGU88mjWuJ+8vbuR81g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfNf8CRA9TVsSAnZWagAAQ48P/1+sq7oAT+1O+EPPueUg\n738rKQQyzz39XVl/N8NYzrsav0VxHOAeqwehO+XDLf7YnrnK5w4bmDQtuk9L\nFS+fSDYxJO7Jqmf2eX5GKurvrBi8qKHXkrNiW/cIaTWZ0AeqLSqvtssgzf7k\n1BniyiEip9Zg4wgv1uSMeQuBPrGnOraeaSYA9ILaWTm97a+6dZy6K6XkLHZd\nFGsjl3GwB2nTLvr7238RQehiuGaB+vct2GB32o8xrLcwW0GMSf6Dh/m5cDDl\nFUNB4Sd+a7i/CWAJ5lg4piUYFzTLLT8GqXBZpfTOrdJQmckijHM5NtZbVfDx\nGuJJpxd+0L6Q3j0Rd/wguZsR+rFcKvgOu4cP+RPcPPuupmHNMg3TLVrWHQhd\nNXeLQNS4WiUwxU0EYX0GYIQATKmRFAYaOPKL+utJvHwiQ3I1SvdHZ11IHhjs\nNXxV1mmZSZ6iuLzSEml8woxE2ZvHciqBTalNW5huNIHG6EgazGCc5ZblcQzK\nXwYEGpYHZY9sr2zr9VnXhvX5WJAPCnjYRiTQFDCWxPY8z1ERnYF95sJq9U6B\nQOjJuigFy4D/9tkpIdqle1XjVGgIZSf0S4buzjxPPa5ffBeQALXIJ0dwiMWQ\nEDckg8xVGj9zfXF5aPRtKN+CiX1ZMQkfLi/DBQmziEV5VTHuWjwlOHML5B7R\nWLjG\r\n=XBHD\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"66ecd0774ac5825fbce35fb3e5e37887dceaa591","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.3","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.3","@types/jest":"24.0.18","@types/node":"12.7.5","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.138","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.16_1568462844096_0.7838900158896902","host":"s3://npm-registry-packages"}},"2.0.17":{"name":"@banzaicloud/service-tools","version":"2.0.17","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.17","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/node-service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/node-service-tools/issues"},"dist":{"shasum":"a57e1d1498bdac87556b1ea3cd3ef2d12a483539","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.17.tgz","fileCount":133,"integrity":"sha512-BLR3+hlBst9kRUoa2c6cKtxYT4jDGzq5ZoCPWruZPhwCC/whR5G0PR+jgx/VpPZ0ioJfiNtcrVHOPy76wSLrOA==","signatures":[{"sig":"MEQCICM3+QyKLRKnYzZXbDp77oyJGSFqrIgBeXEqOw+4nN73AiA67pDPukFDZl1o9awxbAPIGlFusBAfzbChkbKpQKLd5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfNk3CRA9TVsSAnZWagAApoYP/jpT/F4pdyTxV4mTtFAs\nAfu5lg2QtjABjoMzph5QVNFJsa0tBVFdDnfXmHyXLl6JnZeNeopK7SM52tUE\nSKNpJ+11hRgBZ3d6sBKQ0bJ1dIh4qvbH81FY1LkqwpD5GGaXWtQ3DBNChiQM\n/h6h3h7Dq08/Xicsy9GNOoblNwfviEzHH/qC+h0Y8JMg0dAXD0i/9iayIIS5\nNpEJNrZHb7CwTh5peeHx3kG3IiVCfeTl2R8XeMpC2t46nlOG/qyqOFMY46Jz\nVQxvxFf08tgx3ObhTxZ4eyT5sUtE/nel2+yJOLI4ULyGMlK06o2NA5GYtuei\nxchWrqscs+hnK5OZ0qKysdzCxXuAaY7d/Zy0njPgQKgHmlnDn/ZNFvuzmLKU\nxjdsR65SfTFh9+yFGRkBAGSgyYletCkC4CFCJ8LGFujx0MxqsnFXwV2Wkq+r\nAR51XhKNsrO4l23RBqhJLSB/9XzBsZH10JE/Z/qp+K2jcNPvPu+1iB7V2pHK\nZD8BeFJ5jyVyF0BBaX4aM4pTQjuFSucb94aNhvoQGTShL9RQfNWmtIeBgJ+E\nVfIysHrtDhI84+LWV9oqXhBjldP4nozurH9D2QCi3hBRPDYRBNxtIu8KIym6\n+K8ITDr+/jLAiXUyb0SeRYTs9gnIjQb95jIDchV04H7KMFZQ3tpkoR1U7K2r\nTQQ0\r\n=UUZf\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"dba4321c0ce9192934ce91248b5306743941a4ca","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/node-service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.3","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.3","@types/jest":"24.0.18","@types/node":"12.7.5","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.138","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.17_1568463158694_0.012567878563873203","host":"s3://npm-registry-packages"}},"2.0.18":{"name":"@banzaicloud/service-tools","version":"2.0.18","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.18","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"48cbd88abdb6d5ebb636d7393be7a2ee1773394f","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.18.tgz","fileCount":133,"integrity":"sha512-m8y2fm1nEv30FpLlSvqjjqurhOKDMa5rDXYZLHIHli5MuGlYvkdD/xJLRSabsp4Nudas1nAV09y5sOH+7ARbKw==","signatures":[{"sig":"MEYCIQCQXyoG4DcRFKl9xmkF/jAwdoh1IIzV6sSPGgV+nzcLywIhAIouHXob/4p5k1QXqiao5Zules0+TZYzM2AYTKYHTqh1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfNnWCRA9TVsSAnZWagAAYHMQAIUXU22qSShjMftFzl4w\nUDEJ+Ko8J7vo/JevzXeIwFC4hGYD8sFb7U49/AwBSCMlJ4aFhgNfJE9HX2vw\nXf+0ThnWwy/o0eAkTGOK2AsTBwfha8U8YpFXnPdAXVlO8mq9pPY0L3h+SckX\nNVfgLe5OCr3h2f7JVIbBIrFiZBAGkCNr6IhITtxA8NRsAeoIVUX4LiG2mbkO\nEFOyvmwrrdnYCjL097ISaMEZ2FeeziN7ZU46E59XIQoUxrUTPRVY7/ZrA2jz\nO/L5lNiDQCGs4GcURz0JkIuGlV7IXn/rdv/wtmselfZlXtdd9JfFK0eG+wLu\nqxLqHsaMD6NSHuaK98lJvihOPEpXJLPlyR0oKonePaKZm+drPYnBKLSXDFph\nQr8Glld9/PoveqsDERMrn+iUlvYaO4teLMhGgJukUXPo9Y4/7W0sGpPRLANs\nBn7Gkmf/NLTKJ95E8Oq0CojabmouaK96TJaRpAN4z7ZdxvEfB6G43m0pS9Qb\n+/0E6LawUr5QcPmxtkIokKMx62qCdocfrPnEU4jEqXAgAerMhak1OprzKEQ9\nOYbPGCRVIGutmQVgcA835Ey7U9nEJ22/M8Enot0lbb9wQ9v35Y6fpke6V0Z4\nKJxbqEPq4Rr1il1EMMGJItVh/piYXRtWUyB5wHpoFNIROMJQ9O/LbzRqH75K\nzj1x\r\n=DJm8\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6945fa132086615b52d95aaccd3b786ba8c54712","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.9.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"10.16.3","dependencies":{"joi":"14.3.1","pino":"5.13.3","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.3","@types/jest":"24.0.18","@types/node":"12.7.5","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.138","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.18_1568463318135_0.4048459630841357","host":"s3://npm-registry-packages"}},"2.0.20":{"name":"@banzaicloud/service-tools","version":"2.0.20","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.20","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"09fc0b084b85a5d7591dd96e3eb2053ac173162b","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.20.tgz","fileCount":133,"integrity":"sha512-e11FTK9vy3LI8NolXr4UE2SfrhidCLHUYjmk21LCJ3lwqSb63EqxIBQlmxaeJscMBmayF9IEozUE1T3X/haqmw==","signatures":[{"sig":"MEUCICN5rDUQd4jnGeX28CAl0UOjiEGYrn5LFGcleTUO44XNAiEAxPBuA8tREnpJ2Yfc+iUys/tm8E18ExNqsJfU8t5Ayu4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdfN5MCRA9TVsSAnZWagAAIj4P/AwEjOF0ktNXVKHGG/Cf\naJ8xPoI/eJiyGivXSpFGnwOYZ5NsZvUFp41afjktXc/kzxMlNBwXq/qEsIIr\nTO8Qekul0vl4+HlDPfoFvnLRCqC2t2AZq7CI2cCrxADSWee7mHk7nQCrSk5g\n2cb4gI3q5RgaHbe7QYzAZdcJcUNVpIWVQXNciry+t/6Ldl5RfT3C3P5yk2cP\nTlwQPOozibyhCpIJhgO4ymk5uYLo2lve5WrgGBc1gH9/ZkHACyizob44auu/\nDQr+ivglPqqtBmPnPduZm0KUAqCop6y+QQq2iuKxgeTTNkcWkxpbQQDxPP1H\nayU8t29krPF9KlzrsIBg8jxBO0S91wnNv5wFqru0kC/GCR7VXUg850KOBUu1\nsvJ4UrUptpV/BNjnSruQQDsmn3Fo8rZQi9cnBSxIe7NAbQfM+z6zFQ6npI2h\nKL0h3XyVHkduxhqvsOoHxD42fDJ6YI8xd76n2RAw8EZ4ftrBgmEgEdXbKwxF\nKVa+aqR1/hdHUVMl+QStJyZJzAYbcs5zSFodi2J1hSMx0mNFVIxWOmzc9pq4\nIwY4E5ewciNjBna38eDo3qVzcQWli2mNJGPaO/7UepKXuF7E8vzRxRXD6uH5\nx+617jzuudJL/Rqakx9yAlGyww9fjE9f7qmKsL9im1Qm6KCpEPqFgxTTdtxF\noTVZ\r\n=P1ys\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5888116db1d4d634e7a2312b596fcf32e6ef502f","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.10.3","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.10.0","dependencies":{"joi":"14.3.1","pino":"5.13.3","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.8.1","jest":"24.9.0","husky":"3.0.5","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.3.0","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.49","typescript":"3.6.3","@types/jest":"24.0.18","@types/node":"12.7.5","@types/pino":"5.8.10","pretty-quick":"1.11.1","@types/lodash":"4.14.138","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.16"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.20_1568464459568_0.24881123436414088","host":"s3://npm-registry-packages"}},"2.0.21":{"name":"@banzaicloud/service-tools","version":"2.0.21","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@2.0.21","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"afa14c1a606a6e2fe294bbb637b5b0d17e322afa","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-2.0.21.tgz","fileCount":133,"integrity":"sha512-WVGJsyPLy6mKTqKk1PMtLwzhTARYBOeXyWORZz0LCyi/bLkMuZnSI0riGlLfRAQx7gWZb/uArbmjQQjmIfS/7Q==","signatures":[{"sig":"MEYCIQDo7cB0DblVD0nf+Ar8e2428VLkfvOBm3z1XsSNs+7AGQIhAP8fwXff/yheB1IVZXWmPWu8osExsj18tNqKMCKU9/yK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdpDU9CRA9TVsSAnZWagAAyQEQAKJAfnOx4fkjElebJc66\nbxPlASef+LNICW5FiutAAhoT4/As7oz7xiCMZgt2DqNKju5jlnSbzCOvP2+L\n26ASH9fjjh6I59huZrCiiHTUhrcdoOb8XvgAF9Tv6k6Eb3NoYnq2Mj7FOjKL\nuPp6NLCynOe4XRh+sbauM5/iW4FqV3Q0gN/4JAanmzMCTJ6ig5+wsYJcu9Lj\ntqlTGMv1B6BRNtJcY7O1LgnQ/S5eBpswm+KSI/8PLWlnaZXt2Xq+K8rJuvS2\nBysKhoaeO3yJo1m4albqBQUO8F+Xixpa89UesghjEmDJZixRNDL51gMhBrG2\nBhNx4Xdi6eovXuRe8azpoBFhZOA+9IeSaIwKnqOCA9PADugrfOQmJgECfY1b\nZ3SeILHKg7lVxrA1RvkZj/UEaUwbcs3PQfE8ZvAwcThmGZhxtZMGHnirFcKD\n0ZZTY0n390Wgexzvde/9yz6LT6zZqc1RZImkRSVk9YKQogipqKPPY/8KlqSU\nAKDaZDnkd4WcVFIYiIH/ws43XMJz9VP7jZYyrD0cWQg64WEb8qNS8x3gWa0o\nJqIOjcDILwQBINCZsCRT7k7IbCsCtuwqdj52GOlnRW6yn7XEvFQM1pskC/PB\nYrZTplaUtNCKUJnacsH0Y0LvegzQHpV04KA8YmH44v5WaWVTZTluQiJrMpg4\nJ3Lt\r\n=nLuU\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"9f4848ad6e36cdcb331bd1fb8db00f70d5101f22","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.11.3","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.11.1","dependencies":{"joi":"14.3.1","pino":"5.13.4","dotenv":"^6.0.0","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.10.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.4.1","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.50","typescript":"3.6.4","@types/jest":"24.0.18","@types/node":"12.7.12","@types/pino":"5.8.12","pretty-quick":"2.0.0","@types/lodash":"4.14.144","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"optionalDependencies":{"dotenv":"^6.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_2.0.21_1571042620047_0.7482948256984525","host":"s3://npm-registry-packages"}},"3.0.0-beta.1":{"name":"@banzaicloud/service-tools","version":"3.0.0-beta.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@3.0.0-beta.1","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"bdf2b6d2b06f55d6116f8f12efe32ee2dcaa55a3","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-3.0.0-beta.1.tgz","fileCount":141,"integrity":"sha512-03ph+EDPaormiG3rRWdMX3FgMmP4MjLCyOremS/4Q+bPYBX5XUqCJGVuiv2iGD12jf+xA3bdGHPjPlsUGDQECw==","signatures":[{"sig":"MEQCIBNTA3QgJCVTJp77RnBIfqx0aH1nNtwnXkfZTtId3JmIAiAbZ9EArYDlvOrGXHi8ejUpyqV0aPYLKqKiO5OZcM480Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":124154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqHs4CRA9TVsSAnZWagAAHn4P/ApwOp0MQhIQfGKSzHJY\neRlZ2Cwgypxp9yKUrNg6DfbwAV3OV2IDir2apoXJnIsy1diZg754uqY++lMx\nNkjDcLAl5e6D8klnBSRl6q8ahcutRld3FO7ovWiERquM5iqAPsXkS2PjACp2\nEwCXxRH8600HhF97pbS0nwzayXNM1v05TZMSBqoGchkoeLCBMwjuNhP/fEdx\nCOyZbPJHoD8XE5cSc/cM7elJFJTM/PjBKdGDFiT1PdGfagx9p4AB1VvcR2uu\nuh8HI1//I6KZ7BGTp+gD7DsO0M2OX0pZUxgnbqsPCKH+WLzzO33IabVHRrKv\nZT09N/gLmzvVO7BnF+T6D73JO/RvGJLxEXpTUZo7TQJIaEHOtpCGhsbx8e3o\np5/4KW9ELcEBusIvQNWCqcJbpBikKAriWIWAvY5dpNrAORNMdjVPjw/Q5GPF\nEEeQ0UVOVq7BfiU2tuXiuvx5HkfM25e+a+WDajvmPDtAHo5XFO6Ofouac/Sg\nf8ise+t9H2qFYrJh25zmT5mTiROo/nMULZNQtajAkwiP6PrtYYtEMtigRlUn\nDDZjp3ovPNcb7Xx/J3uTeNZTCnkZH1y32yVCCkkMTh0cmPBcallZI5RzlDlT\n5FPLpAr052cLXsHFQwIu2K1FuIWLdzeE0Z+Tt7ZTQBmusT0u3aHDexeDLDtl\nIoKP\r\n=fDiY\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","readme":"<h1 align=\"center\">\n  Node.js Service Tools\n</h1>\n\n<p align=\"center\">\n  <strong>Prepare your Node.js application for production!</strong>\n</p>\n\n<div align=\"center\">\n  <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://circleci.com/gh/banzaicloud/service-tools\">\n    <img alt=\"CircleCI\" title=\"CircleCI\" src=\"https://circleci.com/gh/banzaicloud/service-tools.svg?style=svg&circle-token=002bb942365281c0834e18a1cb83e1930c3ce0fa\" height=\"20\">\n  </a>\n  <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://npmjs.com/package/@banzaicloud/service-tools\">\n    <img alt=\"npm version\" title=\"npm version\" src=\"https://badge.fury.io/js/%40banzaicloud%2Fservice-tools.svg\" height=\"20\">\n  </a>\n</div>\n\nThis library provides common functionalities, like graceful error handling & shutdown, structured JSON logging and several HTTP middleware to make your application truly ready for modern containerised environments, like [Kubernetes](http://kubernetes.io/).\n\n<!-- TOC -->\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Main exports](#main-exports)\n    - [`catchErrors(options)`](#catcherrorsoptions)\n    - [`gracefulShutdown(handlers, options)`](#gracefulshutdownhandlers-options)\n    - [`logger`](#logger)\n      - [Use provided logger instead of `console`](#use-provided-logger-instead-of-console)\n  - [Config](#config)\n    - [`config.environment`](#configenvironment)\n    - [`config.pino`](#configpino)\n  - [Middleware (Koa)](#middleware-koa)\n    - [`errorHandler(options)`](#errorhandleroptions)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions)\n    - [`requestValidator(options)`](#requestvalidatoroptions)\n    - [`requestLogger(options)`](#requestloggeroptions)\n  - [Middleware (Express)](#middleware-express)\n    - [`errorHandler(options)`](#errorhandleroptions-1)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options-1)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions-1)\n    - [`requestValidator(options)`](#requestvalidatoroptions-1)\n\n<!-- /TOC -->\n\n## Installation\n\n```sh\nnpm i @banzaicloud/service-tools\n# or\nyarn add @banzaicloud/service-tools\n```\n\n## Usage & Examples\n\nThis library is written in TypeScript, refer to the published types or the source code for argument and return types.\n\nExamples are available for [Express](https://expressjs.com/) and [Koa](https://koajs.com/) frameworks. Check out the _[examples](/examples)_ folder!\n\n### Main exports\n\n#### `catchErrors(options)`\n\nCatch uncaught exceptions and unhandled Promise rejections. It is not safe to resume normal operation after ['uncaughtException'](https://nodejs.org/api/process.html#process_event_uncaughtexception).\n\n```js\nconst { catchErrors } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ncatchErrors([closeServer, closeDB])\n\n// the error will be caught and the handlers will be called before exiting\nthrow new Error()\n```\n\n#### `gracefulShutdown(handlers, options)`\n\nGraceful shutdown: release resources (databases, HTTP connections, ...) before exiting. When the application receives `SIGTERM` or `SIGINT` signals, the close handlers will be called. The handlers should return a `Promise`.\n\n```js\nconst { gracefulShutdown } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ngracefulShutdown([closeServer, closeDB])\n```\n\n#### `logger`\n\nA [pino](https://github.com/pinojs/pino) structured JSON logger instance configured with [`config.pino`](#config).\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nlogger.info({ metadata: true }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"v\":1}\n```\n\n##### Use provided logger instead of `console`\n\nGlobally overwrite the `console` and use the logger provided by the library to print out messages.\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nconsole.log('log message')\n// > log message\n\nlogger.interceptConsole()\n\nconsole.log('log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"v\":1}\n```\n\n### Config\n\nLoad configurations dynamically.\n\n#### `config.environment`\n\nUses the `NODE_ENV` environment variable, with accepted values of: production, development, test.\n\n```js\nconst { config } = require('@banzaicloud/service-tools')\n// validates NODE_ENV environment variables when referenced first and load .env when it's \"development\"\nconsole.log(config.environment)\n// > { nodeEnv: 'production' }\n```\n\n#### `config.pino`\n\nUsed by the provided [logger](#logger). Uses the `LOGGER_LEVEL` and `LOGGER_REDACT_FIELDS` environment variables. The `LOGGER_LEVEL` can be one of the following: fatal, error, warn, info, debug, trace. `LOGGER_REDACT_FIELDS` is a comma separated list of field names to mask out in the output (defaults to: `'password, pass, authorization, auth, cookie, _object'`).\n\n```js\nconst pino = require('pino')\nconst { config } = require('@banzaicloud/service-tools')\n\nconst logger = pino(config.pino)\n\nlogger.info({ metadata: true, password: 'secret' }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"password\":\"[REDACTED]\",\"v\":1}\n```\n\n### Middleware (Koa)\n\nSeveral middleware for the [Koa](https://koajs.com/) web framework.\n\n#### `errorHandler(options)`\n\nKoa error handler middleware.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = new Koa()\n\n// this should be the first middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nKoa health check endpoint handler.\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\n// the checks return a Promise\nrouter.get('/health', middleware.healthCheck([checkDB]))\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `prometheusMetrics(options)`\n\nKoa [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nrouter.get('/metrics', middleware.prometheusMetrics())\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestValidator(options)`\n\nKoa request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query` (query parser required). Returns with `400` if the request is not valid. Assigns validated values to `ctx.state.validated`.\n\n```js\nconst joi = require('joi')\nconst qs = require('qs')\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst bodyParser = require('koa-bodyparser')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\nrouter.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  async function routeHandler(ctx) {\n    const { params, body, query } = ctx.state.validated\n    // ...\n  }\n)\n\napp.use(bodyParser())\n// query parser\napp.use(async function parseQuery(ctx, next) {\n  ctx.query = qs.parse(ctx.querystring, options)\n  ctx.request.query = ctx.query\n  await next()\n})\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestLogger(options)`\n\nKoa request logger middleware. Useful for local development and debugging.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\n\n// this should be the second middleware after the error handler\n// ...\napp.use(middleware.requestLogger())\n```\n\n### Middleware (Express)\n\nSeveral middleware for the [Express](https://expressjs.com/) web framework.\n\n#### `errorHandler(options)`\n\nExpress error handler middleware.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = express()\n\n// this should be the last middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nExpress health check endpoint handler.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\n// the checks return a Promise\napp.get('/health', middleware.healthCheck([checkDB]))\n```\n\n#### `prometheusMetrics(options)`\n\nExpress [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\napp.get('/metrics', middleware.prometheusMetrics())\n```\n\n#### `requestValidator(options)`\n\nExpress request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query`. Returns with `400` if the request is not valid. Assigns validated values to `req`.\n\n```js\nconst joi = require('joi')\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\napp.use(express.json())\napp.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  function routeHandler(req, res) {\n    const { params, body, query } = req\n    // ...\n  }\n)\n```\n","gitHead":"5d1bde56f440a1419cadf4465c7be50873117074","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.11.3","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.6.0","dependencies":{"joi":"14.3.1","pino":"5.13.5","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"koa":"2.10.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.4.1","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.51","typescript":"3.6.4","@types/jest":"24.0.19","@types/node":"12.11.1","@types/pino":"5.8.12","pretty-quick":"2.0.0","@types/lodash":"4.14.144","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_3.0.0-beta.1_1571322679875_0.516866738473694","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"@banzaicloud/service-tools","version":"3.0.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@3.0.0","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"ff1603b716703ecd1fe5e7821fa38b49ce313157","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-3.0.0.tgz","fileCount":133,"integrity":"sha512-6rDaNhYc/DbgZsZ87qpw+9LPGcY3BLjKlbxA+eMB1mmz1F/BycKg/NqwikWJCyKIa0bTfGjiNs7jjfy960RdkA==","signatures":[{"sig":"MEUCIQDl4yIxNw8cVkIqxM/FpH9OREuK2xRB2H0KbWWb3M4jogIgKP3PSXZrtU0inJfEFSS0kisIle3sVDDyGaY5wCpaphA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdqVcnCRA9TVsSAnZWagAArAIP/2KSGXIhmcN4M+2x+C76\nCYiN0B2CdijwAYwe39Dkl4DiWdnB1QxZpETMlSzyY01Bt2cco66va5qIE3ue\nLrHCp7tBqko7vdMWVhA1YtPwQ0I7AanVjAGfa33a96bcNEctxmtZw2a/60et\nhb2/9Hvbj5AadPt9GQyLKV0ZptWzS5RR8TSAYmbvEZpzMy5aci94PKGuUK1D\nzii2KT6y9uFl5QCFtUbFuqfD7uZmWmwhYc0GMa3zpvULz+8geU8GBaM40UpF\n6vB+ffDSH5GsyC0dHGy6ZtW4htmP5NQ2xvKOq2CBkbhhIqaYijNDz47oCj1F\n3YKMKMuLFgSMfYYNwNXgsiDwm27erVFTGf2l04LMJd17JZpdfi3Ero/FRevP\nuRE2ADnp+hmVe0gb83tUa7kHg5OFx9kjfnqbv5nRwY5bp6iPMHk6j9F7j8uk\n3NHSR7W56LNiYhNOFv32bWLTElOofFJ8E49J/QKCZEaIiQPDRZKju1DN/BRV\nE+YfKUMiMZPSWUSS/15g8g8VhIRLOfCN4YtMRZGcndGYyvrBuiz3kTuWRLZz\nIINLT/48/HdiBEenlrXcSrCBetz+d9WK01ZOoBZnwZNBfIXrlk1cNGcigHZq\nW1yulHK3tuP/8vBqt5FM3mSowSTN9/tgwdXk3ZAK0VMItz4sQt3WvcqBmByP\nMzvE\r\n=r1W+\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5d1bde56f440a1419cadf4465c7be50873117074","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.11.3","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.12.0","dependencies":{"joi":"14.3.1","pino":"5.13.5","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.10.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.4.1","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.51","typescript":"3.6.4","@types/jest":"24.0.19","@types/node":"12.11.1","@types/pino":"5.8.12","pretty-quick":"2.0.0","@types/lodash":"4.14.144","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_3.0.0_1571378982494_0.55275887259818","host":"s3://npm-registry-packages"}},"3.0.1":{"name":"@banzaicloud/service-tools","version":"3.0.1","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@3.0.1","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"0b4800815df4a7b9060238b19bcd9187c57ac90d","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-3.0.1.tgz","fileCount":133,"integrity":"sha512-hkBa92nRuw7plTMJdnnxeWQBVfsx/asO1IjGqvpzK0r3EI5g6FHFdbsp3bIp5t8QyQbDyDbJcAc5L1clljtP1w==","signatures":[{"sig":"MEQCIHU86YB8db/5Dg/M/6XwksyQRATqbYkSdfU28E6RBtMbAiAGNqxaXW7aVZ8tPa+PfIfslcjK3KqgNVhA1j5VJAb/5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdrZaVCRA9TVsSAnZWagAAqfYP/2Dt9QZpksCKJw5yqrlN\nKf5jY/v44cVIyHIOVQ4WBKxnb1mz2W8+I4BEaincJgBvHGu9JZ8r1p3wtI8m\nQREnoSPGK1yxcHXXVz6dvFsHSny+t+A7w1O4IAtfnALSEXT7E6bQjvOcCLR6\nDly/7lJ7ptiKlT4W1I7ORKDgaxjYZpJGe3XFkRLrfLnT1IbnejxM7eNAKby7\ncAJT5VSx0JqNgAlImJbgTNDRBO0tHyuctKLPaEYgBBMhTdt7Sa9efp3rIA4t\nmpTnZAIMlPsHQIR+9OUKTrzyTsOUYNlYLNxd2Srb9E82TO0msv+EaZ9c9UWc\noQg+vtOv3pEoCpNwfHM2aeEniG3tSFH3Sp2yCbe4KIxPCnQIfo+LM2BtQe7o\nW29egBTyrPGD6VBEphAWOUN7+dLswW2ua44KMlnuEBVqtDjml2er1fBkJQ4d\ngmD260dNllOyXC8CCsbirC89BfVSikb0/r8g6J94zH9byXcGalo1NLcVr2Y3\nASuChUktD333Nif0W5NhU+ZxqhzlTrn9Axub538JVYawrIDAK8Nsh4Bwi3ad\nBSu8VNkwhAEbh9RPdwN1XurEd8/fb7j9Lhp1logvT5PofE4GT8oT6HOI9R0i\nRfHM2GokdW3aOzMCPAlf9sYxo9DcFfMkrfMSROZ5nDs6nPXD7gc+L4+Fp3NP\neCXh\r\n=o4S2\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"37d6c96fae6ce2b49d577580b490944231f5e1ba","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.11.3","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.12.0","dependencies":{"joi":"14.3.1","pino":"5.13.5","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.10.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.0","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.4.1","prettier":"1.18.2","@types/joi":"14.3.3","@types/koa":"2.0.51","typescript":"3.6.4","@types/jest":"24.0.19","@types/node":"12.11.1","@types/pino":"5.8.12","pretty-quick":"2.0.0","@types/lodash":"4.14.144","@types/express":"4.17.1","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.7","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_3.0.1_1571657364474_0.22879875215043466","host":"s3://npm-registry-packages"}},"3.0.2":{"name":"@banzaicloud/service-tools","version":"3.0.2","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@3.0.2","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"bb24f2be385c7f5d3be89a9a8709898a89de4a39","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-3.0.2.tgz","fileCount":133,"integrity":"sha512-fyVkgMOrM0R9ER5uKj20Aeexfw47nXoei3RWKKKdITQihceE85ruETAnzstB81GJwk5262TWAtFY7gyI1VGrYA==","signatures":[{"sig":"MEQCIBSenxM9LgrKsAcx999/E17s+IsY+VvimeYsuSRXVPYrAiBZLnvlnE5pkiI1ftFITQ6PEusCu1soax3Z1GRV3q5nLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdw+CgCRA9TVsSAnZWagAAPYwQAIY/6qpiKuPh+KDTqQS+\ngIr6LpR2Jkaa5qsVwN+7LcTdIzgRixmrpzm3SZJUJY2dgkewa8RbdRbV2JP3\nEORpLHfSU1Qb0CnSDv4oZs1zLA3853C5AV1LiQcRNWqLTJKivONkRsHvqZfJ\nT76Q4F55cuOxSVd0T7obOWV16ND0EQoMDkbjjwE9UZPZvZ6veJ9kzj7xGiUT\nnVRKd9qZJt8jea2HgVkWCVwp8iBOtLYk1+kR7hL6PEO2jBXHUj3a/UUuBuij\nHXAdAGZyMMMkenwHytNha04H2t6K7jGF17CcbyoTQ4oySmDNwa/aJ6Zwilu+\nvqsyPrQCiFHnaneMr77WG36+Qhm65KjPWAJRuvwvkFRHiOnedbA0slDg8Jt9\nMz43YozCB7kpdhqGkGXRzia115n6o2Lwbs2d3USKIwiAKuoyBCfpMVPhwPW0\nchn8oH7NpVY7zYIlIzJWVQuamm0oVZL9QwHOSYdTIctchUXac86PBIYC3SIL\nIGIkmnA7hRbVAClmyWmQPOMfZvH38gELtY0Z5VMJIosUK82K6sbXhqisfWdd\nCyAFp7Q2QfhEC6vOY09nMfXAlJOLOcWFSpSgHQIrxB1dO2ILP5IcUGv8XPbu\nAF4OBnZ3xjuD43q/lNRp7DllCkrN0aTrRr3bkaSHNycuHotLCv5PnUMpBo3e\ndjnX\r\n=1xWx\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"3a30eac6b53b7debfee5d88b756b82ce622f145f","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.12.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.13.0","dependencies":{"joi":"14.3.1","pino":"5.13.5","lodash":"4.17.15","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.11.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.1","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.4.1","prettier":"1.18.2","@types/joi":"14.3.4","@types/koa":"2.0.51","typescript":"3.7.2","@types/jest":"24.0.22","@types/node":"12.12.6","@types/pino":"5.8.13","pretty-quick":"2.0.1","@types/lodash":"4.14.145","@types/express":"4.17.2","prettier-tslint":"0.4.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.8","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3","express":">=4.16.3 < 5"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_3.0.2_1573118111932_0.6163329206196695","host":"s3://npm-registry-packages"}},"4.0.0-beta.0":{"name":"@banzaicloud/service-tools","version":"4.0.0-beta.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.0-beta.0","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"c68cd7005aa0f40d5aaae4fe07d536911607d20f","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.0-beta.0.tgz","fileCount":156,"integrity":"sha512-weyPC8lwdNQgU3Lga8pKLatPfnWL9IEPz5XbtP923CWj9thmZzTU7lQWRaPk7MRxjtT9gikCRXtBeKzBSE7cmQ==","signatures":[{"sig":"MEYCIQDLRIqqb6vSlqVXRsAxP2Dm45leGYYFGJe41xkpxDIkPwIhAL5EfgwXV46sagnF6eKmE813QcIhmMcEQNA5n9rAWPO7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyWzoCRA9TVsSAnZWagAAWIMP+weA2SyivebMwgEWRq1b\nkbGFRseXnQVj/cbgHU183JmcEtGMIv81pHzGy1I0dgUAx6wI/v77yYwMEr0a\no+Ho83qlA50s1QFjL36zK68aGbLuQdVhHzgWjsqYjjF7AMNuN/UxVPxBmHT5\neO0JSKgzPtmPqFzvrDVwLN9MZNpeXkfSKkKo2n2fkFMthUgHXGT6gKmEI0BL\noQYm+Ctxm3F4FFr2stCigReMZXDJwOP9qtHM2L7Y81NZYiCNyDVc7qe/DtIs\nRoSDJU7LATq29O4Sl9hEqDKENqAlbDa2Cfqqenif7zzV7IAojPTR7EkDGB8A\nXifg3esEPWNx4XAN3YVjoVQqgvd9uiyfzXxhXGBJWAOptUnokSJ+YvXSUNae\nqCLNzHGF/t22scMyvCBESH1TrHt0+AGhIR7wxDL4T5hXcFt9r0IxKSFSvXA7\nDo4PJ4miU9vpIp8qlfdkhPraW/regunk3xB9ca7MNMfbu8zevxqxc2Y5NtGs\nWfteAZY1cYQ8NTXu1hQdJ4N1DwfpVfAo4A2TXBt8k0walCgf1MHrlYLKcEZG\n0dyD8GxPa1J4lzN5RUXIWRpihiM7dUHvO7/016LxeDkfiHRDNtADv202rOPl\nM8VJa94eKQEqdMINOFgm+kcazhSlWCArJzDFwIfyv7AE66RTVFhaH6eQSN9U\n9zJG\r\n=OiO/\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","readme":"<h1 align=\"center\">\n  Node.js Service Tools\n</h1>\n\n<p align=\"center\">\n  <strong>Prepare your Node.js application for production!</strong>\n</p>\n\n<div align=\"center\">\n  <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://circleci.com/gh/banzaicloud/service-tools\">\n    <img alt=\"CircleCI\" title=\"CircleCI\" src=\"https://circleci.com/gh/banzaicloud/service-tools.svg?style=svg&circle-token=002bb942365281c0834e18a1cb83e1930c3ce0fa\" height=\"20\">\n  </a>\n  <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://npmjs.com/package/@banzaicloud/service-tools\">\n    <img alt=\"npm version\" title=\"npm version\" src=\"https://badge.fury.io/js/%40banzaicloud%2Fservice-tools.svg\" height=\"20\">\n  </a>\n</div>\n\nThis library provides common functionalities, like graceful error handling & shutdown, structured JSON logging and several HTTP middleware to make your application truly ready for modern containerised environments, like [Kubernetes](http://kubernetes.io/).\n\n<!-- TOC -->\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Main exports](#main-exports)\n    - [`catchErrors(options)`](#catcherrorsoptions)\n    - [`gracefulShutdown(handlers, options)`](#gracefulshutdownhandlers-options)\n    - [`logger`](#logger)\n      - [Use provided logger instead of `console`](#use-provided-logger-instead-of-console)\n  - [Config](#config)\n    - [`config.environment`](#configenvironment)\n    - [`config.pino`](#configpino)\n  - [Middleware (Koa)](#middleware-koa)\n    - [`errorHandler(options)`](#errorhandleroptions)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions)\n    - [`requestValidator(options)`](#requestvalidatoroptions)\n    - [`requestLogger(options)`](#requestloggeroptions)\n  - [Middleware (Express)](#middleware-express)\n    - [`errorHandler(options)`](#errorhandleroptions-1)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options-1)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions-1)\n    - [`requestValidator(options)`](#requestvalidatoroptions-1)\n\n<!-- /TOC -->\n\n## Installation\n\n```sh\nnpm i @banzaicloud/service-tools\n# or\nyarn add @banzaicloud/service-tools\n```\n\n## Usage & Examples\n\nThis library is written in TypeScript, refer to the published types or the source code for argument and return types.\n\nExamples are available for [Express](https://expressjs.com/) and [Koa](https://koajs.com/) frameworks. Check out the _[examples](/examples)_ folder!\n\n### Main exports\n\n#### `catchErrors(options)`\n\nCatch uncaught exceptions and unhandled Promise rejections. It is not safe to resume normal operation after ['uncaughtException'](https://nodejs.org/api/process.html#process_event_uncaughtexception).\n\n```js\nconst { catchErrors } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ncatchErrors([closeServer, closeDB])\n\n// the error will be caught and the handlers will be called before exiting\nthrow new Error()\n```\n\n#### `gracefulShutdown(handlers, options)`\n\nGraceful shutdown: release resources (databases, HTTP connections, ...) before exiting. When the application receives `SIGTERM` or `SIGINT` signals, the close handlers will be called. The handlers should return a `Promise`.\n\n```js\nconst { gracefulShutdown } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ngracefulShutdown([closeServer, closeDB])\n```\n\n#### `logger`\n\nA [pino](https://github.com/pinojs/pino) structured JSON logger instance configured with [`config.pino`](#config).\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nlogger.info({ metadata: true }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"v\":1}\n```\n\n##### Use provided logger instead of `console`\n\nGlobally overwrite the `console` and use the logger provided by the library to print out messages.\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nconsole.log('log message')\n// > log message\n\nlogger.interceptConsole()\n\nconsole.log('log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"v\":1}\n```\n\n### Config\n\nLoad configurations dynamically.\n\n#### `config.environment`\n\nUses the `NODE_ENV` environment variable, with accepted values of: production, development, test.\n\n```js\nconst { config } = require('@banzaicloud/service-tools')\n// validates the NODE_ENV environment variable\nconsole.log(config.environment)\n// > { nodeEnv: 'production' }\n```\n\n#### `config.pino`\n\nUsed by the provided [logger](#logger). Uses the `LOGGER_LEVEL` and `LOGGER_REDACT_FIELDS` environment variables. The `LOGGER_LEVEL` can be one of the following: fatal, error, warn, info, debug, trace. `LOGGER_REDACT_FIELDS` is a comma separated list of field names to mask out in the output (defaults to: `'password, pass, authorization, auth, cookie, _object'`).\n\n```js\nconst pino = require('pino')\nconst { config } = require('@banzaicloud/service-tools')\n\nconst logger = pino(config.pino)\n\nlogger.info({ metadata: true, password: 'secret' }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"password\":\"[REDACTED]\",\"v\":1}\n```\n\n### Middleware (Koa)\n\nSeveral middleware for the [Koa](https://koajs.com/) web framework.\n\n#### `errorHandler(options)`\n\nKoa error handler middleware.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = new Koa()\n\n// this should be the first middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nKoa health check endpoint handler.\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\n// the checks return a Promise\nrouter.get('/health', middleware.healthCheck([checkDB]))\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `prometheusMetrics(options)`\n\nKoa [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nrouter.get('/metrics', middleware.prometheusMetrics())\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestValidator(options)`\n\nKoa request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query` (query parser required). Returns with `400` if the request is not valid. Assigns validated values to `ctx.state.validated`.\n\n```js\nconst joi = require('@hapi/joi')\nconst qs = require('qs')\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst bodyParser = require('koa-bodyparser')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\nrouter.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  async function routeHandler(ctx) {\n    const { params, body, query } = ctx.state.validated\n    // ...\n  }\n)\n\napp.use(bodyParser())\n// query parser\napp.use(async function parseQuery(ctx, next) {\n  ctx.query = qs.parse(ctx.querystring, options)\n  ctx.request.query = ctx.query\n  await next()\n})\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestLogger(options)`\n\nKoa request logger middleware. Useful for local development and debugging.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\n\n// this should be the second middleware after the error handler\n// ...\napp.use(middleware.requestLogger())\n```\n\n### Middleware (Express)\n\nSeveral middleware for the [Express](https://expressjs.com/) web framework.\n\n#### `errorHandler(options)`\n\nExpress error handler middleware.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = express()\n\n// this should be the last middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nExpress health check endpoint handler.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\n// the checks return a Promise\napp.get('/health', middleware.healthCheck([checkDB]))\n```\n\n#### `prometheusMetrics(options)`\n\nExpress [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\napp.get('/metrics', middleware.prometheusMetrics())\n```\n\n#### `requestValidator(options)`\n\nExpress request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query`. Returns with `400` if the request is not valid. Assigns validated values to `req`.\n\n```js\nconst joi = require('@hapi/joi')\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\napp.use(express.json())\napp.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  function routeHandler(req, res) {\n    const { params, body, query } = req\n    // ...\n  }\n)\n```\n","gitHead":"44153941dd7c77683f12f8a1ff4e2e7b3646dede","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.12.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.13.0","dependencies":{"pino":"5.13.6","lodash":"4.17.15","@hapi/joi":"16.1.7","@hapi/boom":"7.4.11","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"koa":"2.11.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.1","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.5.0","prettier":"1.19.1","@hapi/hapi":"18.4.0","@types/koa":"2.0.52","typescript":"3.7.2","@types/jest":"24.0.22","@types/node":"12.12.7","@types/pino":"5.8.13","pretty-quick":"2.0.1","@types/lodash":"4.14.146","@types/express":"4.17.2","prettier-tslint":"0.4.2","@types/hapi__joi":"16.0.3","@types/hapi__hapi":"18.2.6","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.8","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=18.4.0 < 19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.0-beta.0_1573481703515_0.6030812181497973","host":"s3://npm-registry-packages"}},"4.0.0":{"name":"@banzaicloud/service-tools","version":"4.0.0","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.0","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"70162ecfe2a6176cb9a6ea6ff1fb1da06cb9397e","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.0.tgz","fileCount":156,"integrity":"sha512-oP3JtMKkmToRCPusikGEH0TSU4j+qxaTKrmeQudwn9CeonRUjqu4pMmxOvqZFscZ3DdwtC0rcjyHpXzvKlfaXw==","signatures":[{"sig":"MEYCIQDn9VmZyOT542yUpS70aV1f/G1YpVhKoWc5DdjuGMHtEwIhAL7If8sCVITq1QYOhY43m3/UbeXemTzuHMnjuH0EZeeY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyYyyCRA9TVsSAnZWagAAV0QQAJIKCyvTznFq4ZE2qA/o\nXcqn6MAFPqoBg9P5kxl31cNuZRiL7YNcLaSRogWHYtSXmcLpyB3PNspbbgWe\nwu18S5FXbl97iswmV7bzY0TVjvAu4pzZmD4xad7O2+9H8/aDiXF42T9rVslz\nMh1nb+33IGZDYG2R3LMigoPHdjCRvu8yeTkghKkByly6fhLrQX9YY4QkTZqh\nI10aFH9ZIM+BlnAQzTV+UFLfxbi0pal1dGquSKve6hWDN98bQPyRr+h04hEu\n1HRCuqM5xiLFMCATLQsJ3u5UpuyIHpFem9Vz6Hwb+pAKcA1aoP2E1fif2svu\n8SuytqRmW21+ZLofcd926zslVDO1EH/wjGe3LSF+vBO8cdoMCmBeZ7DIg7Oq\nIk7r5ElvVzFyGCnD0nuV+QSOH9SYRAGnNOoGIUR0/XQPoMFcDkp1nk0oN+KS\napnCjK4/pbCQ/iPNEpSZxoA13/MbWBrePMp3FQgMg0MAGb45m77q22TtWq2y\n1W7FvBDQ7GaqYBDSN+NlFgA0nlESs+iwgzhg/u3IuZRM/OGc3QdCRps2/UOe\nYLuyx8hhjYEDp+OD0EpkXjBfw8FgtWHKjopnT/Zr42LhMx2/VVpMWr3YM2h2\nP7qLvERtmoINc6QWZ4+nl50L1rMGFUBUiavVa1fqs/qD6RH/p+4MeXolDkO0\nSFVZ\r\n=e5dw\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"1b2ceb3e5951ca8e7db94ae7549722d43712c39b","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.12.0","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.13.0","dependencies":{"pino":"5.13.6","lodash":"4.17.15","@hapi/joi":"16.1.7","@hapi/boom":"7.4.11","http-errors":"1.7.3","prom-client":"11.5.3"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.11.0","jest":"24.9.0","husky":"3.0.9","tslint":"5.20.1","express":"4.17.1","ts-jest":"24.1.0","ts-node":"8.5.0","prettier":"1.19.1","@hapi/hapi":"18.4.0","@types/koa":"2.0.52","typescript":"3.7.2","@types/jest":"24.0.22","@types/node":"12.12.7","@types/pino":"5.8.13","pretty-quick":"2.0.1","@types/lodash":"4.14.146","@types/express":"4.17.2","prettier-tslint":"0.4.2","@types/hapi__joi":"16.0.3","@types/hapi__hapi":"18.2.6","jest-mock-console":"1.0.0","@types/http-errors":"1.6.2","request-promise-native":"1.0.8","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=18.4.0 < 19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.0_1573489841724_0.6147368990124873","host":"s3://npm-registry-packages"}},"4.0.2":{"name":"@banzaicloud/service-tools","version":"4.0.2","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.2","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"f79bf100eb33fdb0bcdd757c4a81581b5e7f2905","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.2.tgz","fileCount":155,"integrity":"sha512-SGQd5pyyyi67QrO28MfbtGwuVdFRZF/SimL5tbSs8BhRlY87rFJ/PmQ5ZxPKu152tf0fDELzqQPgYvwCcB3ClQ==","signatures":[{"sig":"MEYCIQDXuXkyf4cFJOpZaexIORj51HSQGVyN/lQNHimf2g3eUQIhAOSuRIUz3qV7if7TpoaX7dDFbVEx2ybbuBP3vMPudldF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJecKLtCRA9TVsSAnZWagAA7HMQAIjtrfRoZwBDu707iray\nolj6lgWWgOXiKj5Td1o6v6lPTJbWOE0/FNoct8jK/R/ovKe0kqwAT8ak9Qt2\nuaq/SgKGiW4hryd0lT4hioOkijCo/VtpQLLPaajx6ZPAQofSAj/dCkafx7dJ\nespvHk9APTSN4HAjQMeA5CYA8c+aEwBf9FZsfwXOA3QfNYH0TvW/r8Ui+3Wi\nW7tIU7F/s5eWDJom8ZUE/9ql26UG1a0+jpTHV/xnTDzEKOvgBYW3O5KJBxTu\n/lTENUwOD91tOPgiAsimFV5GWZ10tqUJHuBFya6ip+fQYnQ+CgcpYp1larnl\nU+3XGHdsGzpTLNEtzhqqobSpEn8XMv7iT1H8qCYzaX+qgiPNkpcAidyGaC6c\nxkcf+5iPXm9wVSltUhjOCdjcwX5kkawTDhiasTUhRqxouMD+n4CY6CJfy5KV\nSoYJw1yKHQxdRuI144Odj/SDMm4SMu2Iq0FfF8Lx1qKVa6LJLpIzdvrSjEGj\no4zjDMffKIK1BYt7PJCNNoms4r2g7pF8J8QliQnoGyX2UQBFe0nrMy1G2lNA\nJFXqcH26wTRQgYs+MJPY27JMUCoZ0AnEtQ5PSliRKvQA3LcOH20ns2qLWR0+\niqk6FvrxgFcYw/0hvJNUHd+MplJwzH0buHKFrgUaaJBU4rj3wkvkRZquxXJ8\nc/9m\r\n=pUCq\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"377ad7e8b47ed4f5b61cf9a3b92232185fdb64f8","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.13.4","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.16.1","dependencies":{"pino":"5.17.0","lodash":"4.17.15","@hapi/joi":"17.1.1","@hapi/boom":"9.1.0","http-errors":"1.7.3","prom-client":"12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.11.0","jest":"25.1.0","husky":"4.2.3","tslint":"6.1.0","express":"4.17.1","ts-jest":"25.2.1","ts-node":"8.6.2","prettier":"1.19.1","@hapi/hapi":"19.1.1","@types/koa":"2.11.2","typescript":"3.8.3","@types/jest":"25.1.4","@types/node":"13.9.1","@types/pino":"5.17.0","pretty-quick":"2.0.1","@types/lodash":"4.14.149","@types/express":"4.17.3","prettier-tslint":"0.4.2","@types/hapi__joi":"16.0.12","@types/hapi__hapi":"19.0.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.3","request-promise-native":"1.0.8","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=19.0.0 < 20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.2_1584440044876_0.6622302672803508","host":"s3://npm-registry-packages"}},"4.0.3":{"name":"@banzaicloud/service-tools","version":"4.0.3","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.3","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"7e0595a3c96ee49a723e832921104874e4aeb4fd","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.3.tgz","fileCount":155,"integrity":"sha512-zlZ1Nxsgw/+KXzVvhvZCMSozS6PW5AjotBeI89n0x0TIX7OhOMdd2QHFX9JX9/hMVKtX6CD/vEiJDl14MveLqQ==","signatures":[{"sig":"MEUCIFt+XIipadayXsfgEaHLzu6qoq9gPEPyNBjHcdfacJ+CAiEAtqQmf4r4cZ7JAN2yF6Di5K+xc2c9/+4mlOQVtTYu5gQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelLntCRA9TVsSAnZWagAAtgoQAJkFZDsbIiCCRWv7udST\n6a4KYQpQew9zeaLqUM+rSpoqGVJS4DmLBgnSr8qbCQl4KTs/5ClNzDpj/nsR\nFNYf3CUvsJOe9eUXtyMHRy/+uIFl1oVtIeOxKFkJed0JEiwJ7NZEeN4LfVMM\nnnrt6BmPP09+cnoZgISzF1NWgo+d/GcWn6Vgyt+vw9KQ4dHkI3XukxP6nelF\nHEZClIotoDVCOo3M4KQV+4gA3amvrNuBskEA8I6NXkpHvmwvLmp27nnk/D2G\nOLL/AxB+u3796AYpMtoZ1R3p3VQf0yuNUSnN2jN0FNj99A6UJLGQC5IUrzbN\nIolXcHht+QQVueGOVbOLfXjfUdBCLbbMbRtyBIcSDkTUQP5SAIZzspkpQZnZ\nSPfHiv0HEV+riPFK31JRPegq6l8AaBMrfv2g1uMtbxEOeOjnBnPU4lUIl/D3\ndMGQPPI5klxq7JTS/w1itmGlQ1ljBqIld2qRs4OUc2gFmeeRidEHTcxNaZKK\n2f951518smHcyz7+QE+zqmwhI6/KVaxLI8kDNrdYSSRgd+7ka/lbwCSsC9Qm\niDrrLifsy8x3swfZwoOBSv3OciRKzaaJ2jIvhed7RDLpD4+nf56/v10lHtsx\nVpklACIeFJx32P4zHWdupKyIdSJjnqxXw0i9PQDsVOGB9ySx1QVN+JIWPYAm\nzHwY\r\n=MU74\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"4c09fb76e6d985df707648a2460394dd85206efa","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.14.4","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.16.2","dependencies":{"pino":"6.2.0","lodash":"4.17.15","@hapi/joi":"17.1.1","@hapi/boom":"9.1.0","http-errors":"1.7.3","prom-client":"12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.11.0","jest":"25.3.0","husky":"4.2.5","tslint":"6.1.1","express":"4.17.1","ts-jest":"25.3.1","ts-node":"8.8.2","prettier":"2.0.4","@hapi/hapi":"19.1.1","@types/koa":"2.11.3","typescript":"3.8.3","@types/jest":"25.2.1","@types/node":"13.11.1","@types/pino":"5.17.0","pretty-quick":"2.0.1","@types/lodash":"4.14.149","@types/express":"4.17.6","prettier-tslint":"0.4.2","@types/hapi__joi":"16.0.12","@types/hapi__hapi":"19.0.2","jest-mock-console":"1.0.0","@types/http-errors":"1.6.3","request-promise-native":"1.0.8","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=19.0.0 < 20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.3_1586805228766_0.9790913338653762","host":"s3://npm-registry-packages"}},"4.0.4":{"name":"@banzaicloud/service-tools","version":"4.0.4","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.4","maintainers":[{"name":"lalikum","email":"vlasicslajos@gmail.com"},{"name":"tothandras","email":"andras.toth93@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"e29335e0ba3cd10297e491b4f1f97ef2c70fb591","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.4.tgz","fileCount":155,"integrity":"sha512-bQb8wB7BXqcsZMW8rL//IEhryMT8TFn+6OF0g0e+82SLAAzdB2bsk3tF+Ke5bYgVNdKhwzieT6tAyVAr6TmIfA==","signatures":[{"sig":"MEUCIBrOtH7nmK42Mtf73465kvGwRmLZXZYM8eDO4zRXK7d3AiEAzy4thFknTuqTRqME1CEZvJxNG2X5qg2cnPGyZPl7G08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEEQsCRA9TVsSAnZWagAAP+gP/30t5DATNxZIWK3vUfD/\nX+0OqKpbFHCfm0ga79JtdhmKKYS9gYznL3HyTo64rajp/EXiWbMYxlbx75ys\n1Xq2RvQ4F5MqWrEpPBz9Jyb+yLM3ruWiINp60afe85hp5wYt9bFHzZ94kuVJ\nVo9XzX/7zoUq4/xs+Dg63HFBigQknBsvy8Jqsoc4QdncVuMHfVjzSeh5dAyt\na6bGuFqhse2l1CU29c/Cl0/h01u9QAXzuGyZqAFZDg+zgZjT46zQQ2oHtQ//\niAjuh4Qbh7SU7aoxlBgf3iCOpjbvCCBQm4qmvHLpxK6pm8QQgl/w4Wphzq1x\nXtGEMcV4IOh+RpsVXH06vlDC7sB1nb0dkhGQn7YPz2eqZ1xWqLV7bT/qRmYt\noBdLhKakOgwRWixgYz6whGal3xFKzSWp3WWX52Febd17ZsJiXNXmgS+ljAb2\n5YFyL1GscTFJVUvZ1xqcP6zt2ml7azQJVhcmF7IXkreFY1WSIyeJEVcoDqpi\nC1rUf9uNn54swYN9ZxgAw9HVq0Ne/X1RnZg2zUiZ+mW1G4ml5aqGOu1QWoem\n2WSQEhfEUKC/oKxKZ8/JAGMsVVL3XHHvTteNXRXZ25pAxGZN1lJxz3+xBYPR\nvz0HPskzFo70kWWUltxE687j3iyDcOPMtBAjo/l4dwbzIRCVShOXtsFDpHDh\n8WNu\r\n=DDDD\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"55c81b1cdd6589253f222a851f450948c6616068","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.14.5","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.18.2","dependencies":{"pino":"6.4.0","lodash":"4.17.19","@hapi/joi":"17.1.1","@hapi/boom":"9.1.0","http-errors":"1.8.0","prom-client":"12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.13.0","jest":"26.1.0","husky":"4.2.5","tslint":"6.1.2","express":"4.17.1","ts-jest":"26.1.2","ts-node":"8.10.2","prettier":"2.0.5","@hapi/hapi":"19.1.1","@types/koa":"2.11.3","typescript":"3.9.6","@types/jest":"26.0.4","@types/node":"14.0.23","@types/pino":"6.3.0","pretty-quick":"2.0.1","@types/lodash":"4.14.157","@types/express":"4.17.7","prettier-tslint":"0.4.2","@types/hapi__joi":"17.1.4","@types/hapi__hapi":"19.0.3","jest-mock-console":"1.0.1","@types/http-errors":"1.8.0","request-promise-native":"1.0.8","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=19.0.0 < 20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.4_1594901548053_0.9791883943361761","host":"s3://npm-registry-packages"}},"4.0.5":{"name":"@banzaicloud/service-tools","version":"4.0.5","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.5","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"},{"name":"lalikum","email":"vlasicslajos@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"948bdf3e2db9aba400d3271ce0efbfcba1ed5bb7","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.5.tgz","fileCount":155,"integrity":"sha512-5ZoYqliXObFwFY5XK1A5XsKtk4OXALond+TPlZoXj16pPpg+zvbJC9hiP497HHFLkga3WYUexdda9c0JcZjblA==","signatures":[{"sig":"MEYCIQDGmOg9be0hn0CbleUoy9aTNwEFApdwpMls5+h7bfwIsAIhAIJ7wO+axAoXoxRXACb0xYcPQjxTHVvT8Hj5Zg9Rhz4q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5MZ6CRA9TVsSAnZWagAATc8P/1HZAqfZKqsm58xYT4MH\nMp/SZ6w10f/gN5KY2gc+dkEDwQSqeQpWwddvTwwDNdPtVyTO2p3JIPuHbQoK\nxbh4VsW77ya/ZYkvY5FbUfS0OrhnA1sKqNRKoqEyjway3HLt2FRfJdzUfroU\ntBj2ZNdP4jKG/XxUF3D31cXoRJswGTqJMZV5J7yzmI8SZiHMdtSdbW+FVWT5\n1tOsSPdvyH3efEWJFKyzIMrXswWFU8pGbKUgVwCa5uq5c8vPTFd82HJwLzVV\nTEdoUky43sQCWQdqwk7CIPwSn8norcx62dixzh83mbyXfxqBCfDIZAQzKonk\nfZ7TrJmBtfevuSxAruITmgCmFlybWWf7jBF7owpE9+z+6WJkF4UxPdK2y42+\nv9IBvjCtym9c/Opt2J0ByCDvagb2vyyA4h4j3Me8HJxKzJO+L6C7u6CrCoos\nHE6d4LrCrYvd6GYgayhtOD24TTxtYp3t1OhrX92fn+HHve01r+mwLWrKsuLT\nTTWRSiAgW/H1OmO3DWCTIzL88A3t6gm99NdU0GlOeuabkaTs8qTbFUCX3vld\nqTe9uarU5nwlcv0Lh6yqfoqiGEqBAUPnhLgvfqDSPpD3Yt2UYdM830cA56U4\n7o1yvVtmycGApnk+RT0HNuQACRKvprAVJZqT1Uxmkb2tbLG4ybT83npaV4RU\nzOid\r\n=xLXj\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"3582398a1e424e3a0b5fe2ed7809d6e56cc76613","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.14.12","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.22.1","dependencies":{"got":"11.8.2","pino":"6.11.3","lodash":"4.17.21","@hapi/joi":"17.1.1","@hapi/boom":"9.1.3","http-errors":"1.8.0","prom-client":"12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"joi":"17.4.0","koa":"2.13.1","jest":"26.1.0","husky":"4.2.5","tslint":"6.1.3","express":"4.17.1","ts-jest":"26.1.2","ts-node":"8.10.2","prettier":"2.3.2","@hapi/hapi":"19.1.1","@types/koa":"2.13.3","typescript":"3.9.6","@types/jest":"26.0.23","@types/node":"14.0.23","@types/pino":"6.3.8","pretty-quick":"2.0.1","@types/lodash":"4.14.170","@types/express":"4.17.12","prettier-tslint":"0.4.2","@types/hapi__joi":"17.1.6","@types/hapi__hapi":"19.0.3","jest-mock-console":"1.1.0","@types/http-errors":"1.8.0","request-promise-native":"1.0.9","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=19.0.0 < 20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.5_1625605753918_0.4740813216644184","host":"s3://npm-registry-packages"}},"4.0.6":{"name":"@banzaicloud/service-tools","version":"4.0.6","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"author":{"name":"Andras Toth"},"license":"Apache-2.0","_id":"@banzaicloud/service-tools@4.0.6","maintainers":[{"name":"tothandras","email":"andras.toth93@gmail.com"},{"name":"lalikum","email":"vlasicslajos@gmail.com"}],"homepage":"https://github.com/banzaicloud/service-tools#readme","bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"dist":{"shasum":"dfb74eb1158dffaa14f8deb5313fd0e6862ce26d","tarball":"https://registry.npmjs.org/@banzaicloud/service-tools/-/service-tools-4.0.6.tgz","fileCount":155,"integrity":"sha512-ucvc2+KhBTj29sXJYWpgKYiePIYe9e1lP+saZ/FeT6DWAr41hHj7iAfZD8bQ4UI+RMQQYO5Q4ORK6RcYqdlBjQ==","signatures":[{"sig":"MEQCIE5393coluy4PkL/WPxaLElJ/g/A7S4JN+mgZE9RHJNSAiA4I12A2SVHAcw094ISEILyekVROcdjysdrq1sPm/4LwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5WYBCRA9TVsSAnZWagAA+n8QAJJtpkU+5pkTi/zMMZ1V\nTnYmNrE6C7jx7sxVwka0uUoPUVLdyVzH3RLb3LXA/asKF0va/F79iTSnbLNP\n1KXpbzw6ehTbEh8eD5CUgdQr/fEGW8gFpkXRo8cltoUM2AD6GhIohtQ4abvr\nx6O3t09X2xzWmCLBQ9bSCkfmC9gizpzdJuyyiY2MRifC9JUzihb7k6xy6ckM\n6+tjnGPTUA1RDw+WYbjIS92yL+NelP60Gy1IYdNaxRtQJlaWGVUUaZaW8IsW\nOf3VkdMBr9VlblK4jA2AiS6cL6GnGUeEXrvG7rJK8Zx6fM83DrVFybPcfUIz\nwrAQT8g3z61nqmTEK/nTO/JuHarvH6P8WxuI4l/u1n2+bewn7j5FGqDXvVds\n3h3yCpsyXWhVPkUWPQlc+QqkL0O12WMlM3rMRIx+i+H2LfOeCUkCSmG8GX42\ndUXBb04YGXO45TAD1jSlbmL3R/ehJrTwAG3pbFIJjXVeeH4A0J0TvskgheiR\nE97APBSHB7/zkjMOhS0IKjbQffzShpmU5YlvLo+p0U5k93ShPwnidIVAw0Gw\nj0Hdv1bv7i9jE5tbYgKg0z6c0S2hWLCcAJB1FVvP3d6tJFNRGFd6czxzIGh8\nafkmgG3nK8+X8yMDRcmEBJ7DKS/TaVA/mzggUf3F/No/HVUz61lcjGM6HBFI\nP+8y\r\n=HZf2\r\n-----END PGP SIGNATURE-----\r\n"},"jest":{"globals":{"ts-jest":{"tsConfig":"tsconfig.json","diagnostics":false}},"testMatch":["**/?(*.)+(spec|test).(ts|js)","**/__tests__/*.+(ts|js)"],"transform":{".+\\.(ts)$":"ts-jest"},"resetMocks":true,"testEnvironment":"node","moduleFileExtensions":["ts","js"]},"main":"dist/src/index.js","types":"dist/src/index.d.ts","gitHead":"2566a6e66fea62f382ce23ff50b074abe9af0664","scripts":{"fmt":"prettier --find-config-path --write '{src,examples}/**/*.{js,ts,json}' && npm run lint -- --fix","lint":"tslint --project tsconfig.json","test":"npm run lint && npm run unit-test","build":"tsc --build --clean && tsc --build tsconfig.json","prepush":"npm run build && npm test","precommit":"pretty-quick --staged && npm test","unit-test":"jest","prepublishOnly":"npm run build && npm run test"},"_npmUser":{"name":"tothandras","email":"andras.toth93@gmail.com"},"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"_npmVersion":"6.14.12","description":"Node.js service tools for common use cases","directories":{},"_nodeVersion":"12.22.1","dependencies":{"got":"11.8.2","joi":"17.4.0","pino":"6.11.3","lodash":"4.17.21","@hapi/boom":"9.1.3","http-errors":"1.8.0","prom-client":"12.0.0"},"_hasShrinkwrap":false,"devDependencies":{"koa":"2.13.1","jest":"26.1.0","husky":"4.2.5","tslint":"6.1.3","express":"4.17.1","ts-jest":"26.1.2","ts-node":"8.10.2","prettier":"2.3.2","@hapi/hapi":"19.1.1","@types/koa":"2.13.3","typescript":"3.9.6","@types/jest":"26.0.23","@types/node":"14.0.23","@types/pino":"6.3.8","pretty-quick":"2.0.1","@types/lodash":"4.14.170","@types/express":"4.17.12","prettier-tslint":"0.4.2","@types/hapi__hapi":"19.0.3","jest-mock-console":"1.1.0","@types/http-errors":"1.8.0","request-promise-native":"1.0.9","tslint-config-prettier":"1.18.0","@types/request-promise-native":"1.0.17"},"peerDependencies":{"koa":">=2.5.2 < 3.0.0","express":">=4.16.3 < 5.0.0","@hapi/hapi":">=19.0.0 < 20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/service-tools_4.0.6_1625646593035_0.12009596924911725","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-08-03T09:44:20.606Z","modified":"2026-03-31T10:42:51.569Z","1.0.0-beta.0":"2018-08-03T09:44:25.451Z","1.0.0-beta.1":"2018-08-03T12:12:25.100Z","1.0.0-beta.2":"2018-08-05T14:49:04.599Z","1.0.0-beta.3":"2018-08-12T17:28:37.696Z","1.0.0":"2018-08-16T19:40:02.475Z","1.1.0":"2018-10-02T12:35:56.654Z","1.1.1":"2018-10-09T08:39:36.364Z","1.1.2":"2018-10-16T08:38:16.249Z","1.2.1":"2018-10-18T14:42:30.444Z","1.2.2":"2018-11-20T15:09:06.113Z","1.2.3":"2018-11-23T13:30:47.044Z","1.2.4":"2018-11-27T09:16:10.970Z","1.2.5":"2018-11-29T09:52:28.514Z","1.2.6":"2018-12-17T11:34:55.751Z","1.2.7":"2018-12-27T13:00:00.116Z","1.2.8":"2019-01-03T17:53:17.987Z","2.0.0-beta.1":"2019-01-09T12:58:21.949Z","2.0.0":"2019-01-09T13:05:32.379Z","2.0.1":"2019-02-05T09:06:45.444Z","2.0.2":"2019-02-19T12:43:12.835Z","2.0.3":"2019-02-28T09:51:32.066Z","2.0.4":"2019-03-04T09:32:30.266Z","2.0.5":"2019-04-03T17:39:22.268Z","2.0.6":"2019-05-09T10:32:12.662Z","2.0.7":"2019-06-11T07:20:22.859Z","2.0.8":"2019-07-10T12:04:35.784Z","2.0.9":"2019-07-19T08:16:34.790Z","2.0.10":"2019-07-29T08:00:15.251Z","2.0.11":"2019-08-05T10:04:02.434Z","2.0.12":"2019-08-19T10:10:58.692Z","2.0.13":"2019-09-10T08:00:24.949Z","2.0.14":"2019-09-14T11:08:14.217Z","2.0.15":"2019-09-14T12:01:35.212Z","2.0.16":"2019-09-14T12:07:24.277Z","2.0.17":"2019-09-14T12:12:38.827Z","2.0.18":"2019-09-14T12:15:18.255Z","2.0.20":"2019-09-14T12:34:19.683Z","2.0.21":"2019-10-14T08:43:40.249Z","3.0.0-beta.1":"2019-10-17T14:31:19.988Z","3.0.0":"2019-10-18T06:09:42.698Z","3.0.1":"2019-10-21T11:29:24.642Z","3.0.2":"2019-11-07T09:15:12.119Z","4.0.0-beta.0":"2019-11-11T14:15:03.699Z","4.0.0":"2019-11-11T16:30:41.883Z","4.0.2":"2020-03-17T10:14:04.988Z","4.0.3":"2020-04-13T19:13:48.960Z","4.0.4":"2020-07-16T12:12:28.264Z","4.0.5":"2021-07-06T21:09:14.100Z","4.0.6":"2021-07-07T08:29:53.212Z"},"bugs":{"url":"https://github.com/banzaicloud/service-tools/issues"},"author":{"name":"Andras Toth"},"license":"Apache-2.0","homepage":"https://github.com/banzaicloud/service-tools#readme","keywords":["kubernetes","microservice","koa","middleware","health","check","graceful","logger","prometheus","metrics"],"repository":{"url":"git+https://github.com/banzaicloud/service-tools.git","type":"git"},"description":"Node.js service tools for common use cases","maintainers":[{"email":"andras.toth93@gmail.com","name":"tothandras"}],"readme":"<h1 align=\"center\">\n  Node.js Service Tools\n</h1>\n\n<p align=\"center\">\n  <strong>Prepare your Node.js application for production!</strong>\n</p>\n\n<div align=\"center\">\n  <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://circleci.com/gh/banzaicloud/service-tools\">\n    <img alt=\"CircleCI\" title=\"CircleCI\" src=\"https://circleci.com/gh/banzaicloud/service-tools.svg?style=svg&circle-token=002bb942365281c0834e18a1cb83e1930c3ce0fa\" height=\"20\">\n  </a>\n  <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://npmjs.com/package/@banzaicloud/service-tools\">\n    <img alt=\"npm version\" title=\"npm version\" src=\"https://badge.fury.io/js/%40banzaicloud%2Fservice-tools.svg\" height=\"20\">\n  </a>\n</div>\n\nThis library provides common functionalities, like graceful error handling & shutdown, structured JSON logging and several HTTP middleware to make your application truly ready for modern containerised environments, like [Kubernetes](http://kubernetes.io/).\n\n<!-- TOC -->\n\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Main exports](#main-exports)\n    - [`catchErrors(options)`](#catcherrorsoptions)\n    - [`gracefulShutdown(handlers, options)`](#gracefulshutdownhandlers-options)\n    - [`logger`](#logger)\n      - [Use provided logger instead of `console`](#use-provided-logger-instead-of-console)\n  - [Config](#config)\n    - [`config.environment`](#configenvironment)\n    - [`config.pino`](#configpino)\n  - [Middleware (Koa)](#middleware-koa)\n    - [`errorHandler(options)`](#errorhandleroptions)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions)\n    - [`requestValidator(options)`](#requestvalidatoroptions)\n    - [`requestLogger(options)`](#requestloggeroptions)\n  - [Middleware (Express)](#middleware-express)\n    - [`errorHandler(options)`](#errorhandleroptions-1)\n    - [`healthCheck(checks, options)`](#healthcheckchecks-options-1)\n    - [`prometheusMetrics(options)`](#prometheusmetricsoptions-1)\n    - [`requestValidator(options)`](#requestvalidatoroptions-1)\n\n<!-- /TOC -->\n\n## Installation\n\n```sh\nnpm i @banzaicloud/service-tools\n# or\nyarn add @banzaicloud/service-tools\n```\n\n## Usage & Examples\n\nThis library is written in TypeScript, refer to the published types or the source code for argument and return types.\n\nExamples are available for [Express](https://expressjs.com/) and [Koa](https://koajs.com/) frameworks. Check out the _[examples](/examples)_ folder!\n\n### Main exports\n\n#### `catchErrors(options)`\n\nCatch uncaught exceptions and unhandled Promise rejections. It is not safe to resume normal operation after ['uncaughtException'](https://nodejs.org/api/process.html#process_event_uncaughtexception).\n\n```js\nconst { catchErrors } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ncatchErrors([closeServer, closeDB])\n\n// the error will be caught and the handlers will be called before exiting\nthrow new Error()\n```\n\n#### `gracefulShutdown(handlers, options)`\n\nGraceful shutdown: release resources (databases, HTTP connections, ...) before exiting. When the application receives `SIGTERM` or `SIGINT` signals, the close handlers will be called. The handlers should return a `Promise`.\n\n```js\nconst { gracefulShutdown } = require('@banzaicloud/service-tools')\n\n// ...\n\n// the handlers return a Promise\n// the handlers are called in order\ngracefulShutdown([closeServer, closeDB])\n```\n\n#### `logger`\n\nA [pino](https://github.com/pinojs/pino) structured JSON logger instance configured with [`config.pino`](#config).\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nlogger.info({ metadata: true }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"v\":1}\n```\n\n##### Use provided logger instead of `console`\n\nGlobally overwrite the `console` and use the logger provided by the library to print out messages.\n\n```js\nconst { logger } = require('@banzaicloud/service-tools')\n\nconsole.log('log message')\n// > log message\n\nlogger.interceptConsole()\n\nconsole.log('log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"v\":1}\n```\n\n### Config\n\nLoad configurations dynamically.\n\n#### `config.environment`\n\nUses the `NODE_ENV` environment variable, with accepted values of: production, development, test.\n\n```js\nconst { config } = require('@banzaicloud/service-tools')\n// validates the NODE_ENV environment variable\nconsole.log(config.environment)\n// > { nodeEnv: 'production' }\n```\n\n#### `config.pino`\n\nUsed by the provided [logger](#logger). Uses the `LOGGER_LEVEL` and `LOGGER_REDACT_FIELDS` environment variables. The `LOGGER_LEVEL` can be one of the following: fatal, error, warn, info, debug, trace. `LOGGER_REDACT_FIELDS` is a comma separated list of field names to mask out in the output (defaults to: `'password, pass, authorization, auth, cookie, _object'`).\n\n```js\nconst pino = require('pino')\nconst { config } = require('@banzaicloud/service-tools')\n\nconst logger = pino(config.pino)\n\nlogger.info({ metadata: true, password: 'secret' }, 'log message')\n// > {\"level\":30,\"time\":<ts>,\"msg\":\"log message\",\"pid\":0,\"hostname\":\"local\",\"metadata\":true,\"password\":\"[REDACTED]\",\"v\":1}\n```\n\n### Middleware (Koa)\n\nSeveral middleware for the [Koa](https://koajs.com/) web framework.\n\n#### `errorHandler(options)`\n\nKoa error handler middleware.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = new Koa()\n\n// this should be the first middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nKoa health check endpoint handler.\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\n// the checks return a Promise\nrouter.get('/health', middleware.healthCheck([checkDB]))\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `prometheusMetrics(options)`\n\nKoa [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nrouter.get('/metrics', middleware.prometheusMetrics())\n\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestValidator(options)`\n\nKoa request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query` (query parser required). Returns with `400` if the request is not valid. Assigns validated values to `ctx.state.validated`.\n\n```js\nconst joi = require('joi')\nconst qs = require('qs')\nconst Koa = require('koa')\nconst Router = require('koa-router')\nconst bodyParser = require('koa-bodyparser')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\nconst router = new Router()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\nrouter.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  async function routeHandler(ctx) {\n    const { params, body, query } = ctx.state.validated\n    // ...\n  }\n)\n\napp.use(bodyParser())\n// query parser\napp.use(async function parseQuery(ctx, next) {\n  ctx.query = qs.parse(ctx.querystring, options)\n  ctx.request.query = ctx.query\n  await next()\n})\napp.use(router.routes())\napp.use(router.allowedMethods())\n```\n\n#### `requestLogger(options)`\n\nKoa request logger middleware. Useful for local development and debugging.\n\n```js\nconst Koa = require('koa')\nconst { koa: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = new Koa()\n\n// this should be the second middleware after the error handler\n// ...\napp.use(middleware.requestLogger())\n```\n\n### Middleware (Express)\n\nSeveral middleware for the [Express](https://expressjs.com/) web framework.\n\n#### `errorHandler(options)`\n\nExpress error handler middleware.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\nconst app = express()\n\n// this should be the last middleware\napp.use(middleware.errorHandler())\n```\n\n#### `healthCheck(checks, options)`\n\nExpress health check endpoint handler.\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\n// the checks return a Promise\napp.get('/health', middleware.healthCheck([checkDB]))\n```\n\n#### `prometheusMetrics(options)`\n\nExpress [Prometheus](https://prometheus.io/) metrics endpoint handler. By default it collects some [default metrics](https://github.com/siimon/prom-client#default-metrics).\n\n```js\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\napp.get('/metrics', middleware.prometheusMetrics())\n```\n\n#### `requestValidator(options)`\n\nExpress request validator middleware. Accepts [Joi](https://github.com/hapijs/joi) schemas for `body` (body parser required), `params` and `query`. Returns with `400` if the request is not valid. Assigns validated values to `req`.\n\n```js\nconst joi = require('joi')\nconst express = require('express')\nconst { express: middleware } = require('@banzaicloud/service-tools').middleware\n\n// ...\n\nconst app = express()\n\nconst paramsSchema = joi\n  .object({\n    id: joi\n      .string()\n      .hex()\n      .length(64)\n      .required(),\n  })\n  .required()\n\nconst bodySchema = joi.object({ name: joi.string().required() }).required()\n\nconst querySchema = joi.object({ include: joi.array().default([]) }).required()\n\napp.use(express.json())\napp.get(\n  '/',\n  middleware.requestValidator({ params: paramsSchema, body: bodySchema, query: querySchema }),\n  function routeHandler(req, res) {\n    const { params, body, query } = req\n    // ...\n  }\n)\n```\n","readmeFilename":"README.md"}