{"_id":"@chungpham0412/nestjs-telegram-logger","_rev":"10-4e6b9c90bb333bd168566f9848f22474","name":"@chungpham0412/nestjs-telegram-logger","dist-tags":{"latest":"1.1.8"},"versions":{"1.0.0":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.0.0","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.0.0","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"819e65d30d112a1c4f8b364e99d7b5263c04fe0e","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.0.0.tgz","fileCount":18,"integrity":"sha512-o1utENb1AZVP3xHYkkWbP4zKrCRfgYsJhv/Thc/PkIJEb+CJiHmhs2zdrnOQQ4/0ZcBpHHBONiCAmiN7wE8yHw==","signatures":[{"sig":"MEUCIF5lvO64vCyaHIbQXB2eJzObyNdOuCHJQbBPGWx9JvFDAiEA93kclZ5bMhXXhqSqnt+Biy4USGUxJSGcUw45KCMaP9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29677},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"34aafacd551475ca2fe83933bc5bb559e5e7e869","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.0.0_1774883584637_0.20878671149215577","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.0","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.0","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"9b8304f265095ee16d674855204b41dccae1b716","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.0.tgz","fileCount":20,"integrity":"sha512-DCHgbcoWgHmwLb1a+LczBJ5vbFbQxZqsLrOWsIQFJ2STno0D2FF5gTIggSF+gwhnF7gmN70dw1y6kJX58Nx2sg==","signatures":[{"sig":"MEQCIBkjPjyX4eYuKNTNTOzmXCCzTla0qrPkDtepRoVGnw0MAiBReKC4lQiiKaRY2yFe+WXhcJpNiT5xvrLjpClrsdcK4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32371},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4ea11d5d9e4b56fc6eafff8dbcf37255a57fa905","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.0_1774887239770_0.46511610873422704","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.1","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.1","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"c66641868e7cc50ebee3aa94206f28021f1b6b06","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.1.tgz","fileCount":20,"integrity":"sha512-hu6SUzmTJm2bpfLMqEWQQeD7hQJzRudoweHs50GkLTFCYVw60mo9SA30rWcg8vDhVNhSVmBrpKxFI1i3OXs6tQ==","signatures":[{"sig":"MEUCIHUGgDV1+4SkwSaeXjQxJdgDj2hoYORajDDgGGSN00niAiEAjkEaSZOke0czl4uCuy55BESu451JBMOZFxIWhzkdJEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"93cb6d00bdc0f267b315701dfc50de80dc1acd05","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.1_1774887477906_0.17808409606211328","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.2","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.2","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"c4a640209691353ba7b6cadc409950537c9a01aa","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.2.tgz","fileCount":20,"integrity":"sha512-6fE13mlcojKhLovyOWOsdnQyO9Dkgseso7qI1w5X5vPKo9zGnY8ISSgJK+5sRwY8EyuU7uBWALCdVodSi53QKg==","signatures":[{"sig":"MEYCIQDhXvnC0pmYHrCOCYU9HmlcwUudYIz3Ag55Ooi0dIcfSgIhANFKaNxBZmAX1b9BY4vLEF2GlOUHQGvyk3HiQf7FJsrM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33769},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6076ef9fe0feae11177f4d30a4c72d2356557fcd","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.2_1774887773004_0.07289923666667963","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.3","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.3","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"a0bb180de4cbca677fdecbf96638ced2195184eb","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.3.tgz","fileCount":20,"integrity":"sha512-zYG8UrDe+0toDyudkoRkr1o6B6GwMegiKOUhO/kqipyvrW2fXO6lIxpTvXTmnAkPLSyR6QDQlqkFbgHfWvELyQ==","signatures":[{"sig":"MEYCIQDL9kRv0YlxS2/nz3+mYzJij4jPrhyhQpINQ04yyg4RngIhAOwjf6rkKv8N+6DIILab7C/lwKluw186A2AwruroCYgv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33935},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6076ef9fe0feae11177f4d30a4c72d2356557fcd","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.3_1774888195397_0.9054976911387782","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.4","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.4","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"9c882ba3218e906b309768142515e50391ba70fa","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.4.tgz","fileCount":20,"integrity":"sha512-0fUddQ7C2QBtrYE9OaWdE9DFSrYxx1Q04VnhJVqpICiMfP03C99BlbzBr916NIEhexCB1yYfNncn1LsHJgz7ig==","signatures":[{"sig":"MEUCIQCkxMdBv7bNbkOAo9bLSzc0kCfueO7n9r4CzO+G2Oc32AIgL1+uWtU1edXTniM0S3mK6+HnrHdKsshFb9g/klSnpkI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38780},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6076ef9fe0feae11177f4d30a4c72d2356557fcd","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.4_1774888510658_0.02304581952274587","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.5","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.5","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"c0fc8441af049b8d327582dc47b56f9baf97ea8b","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.5.tgz","fileCount":20,"integrity":"sha512-r+WrgxTZ6dCt22kAWFIa33Dnm+XSUw8IJttmc1Gqw4zw7zJVe+TbzWc+vpsrFaE2Pjq6nUfAS7qJwUQWn5q2TA==","signatures":[{"sig":"MEYCIQClAkq9KFm5eRuGi5qJNrxLp7LzsNLLYTX+grlGbB2YnwIhAJYq09Vbnn5dHk7y1vgcjBL4x6MRFyIOmPh1e47dlD7V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39507},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"6076ef9fe0feae11177f4d30a4c72d2356557fcd","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.5_1774888706940_0.3234653638962217","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.6","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.6","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"3ab8292705b2b0bdf5d09a7e6aea98ee6a68dd3b","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.6.tgz","fileCount":20,"integrity":"sha512-u7k3B0wqjf7UTxLo9vdFI1ja/MYJc69zkS4vDB6x7ff47vyC455yQDGUIv/eClN7bXT+o6Co/NRZ00QYoyqvTw==","signatures":[{"sig":"MEUCIQDrsOj2rXzUBDUsjB0OMMdbBjIQnImYB6sMST3X6XIN5wIgecsPNye5sIivJ8YuvtPVlVi2GGSIyo5si5orSO2CJA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39891},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a94df59299bb86e0c11791eeeb7fa99e33e4e061","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.6_1774889410555_0.5484648255259488","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.7","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","_id":"@chungpham0412/nestjs-telegram-logger@1.1.7","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"dist":{"shasum":"be65ca0568bd9c8b25336a35fcb2058694c956b6","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.7.tgz","fileCount":20,"integrity":"sha512-iqWUHAsCJRJ1OfnM2+ImtH7SrIHthBWa5nI64v/3JxpkdQVEcrDUUn+vTHiGuT1Lc3ey2QrpyZy3xWFhjiOVGg==","signatures":[{"sig":"MEUCIQClD+hsb7WsHomG0s9qU+xiSW8R5xinyswPCxUntudh1wIgBEn/mch9jeaR2NYWtt5xb30Qv7fip2IAtBYuY6I+GHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40692},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cef08f3ca3e8723b60ff35a7fd34c1cb670ac5f6","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"repository":{"url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git","type":"git"},"_npmVersion":"10.7.0","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"express":"^4.18.2","typescript":"^5.3.0","@types/node":"^20.0.0","@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0","@types/express":"^4.17.21","reflect-metadata":"^0.2.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/nestjs-telegram-logger_1.1.7_1774889924499_0.03939579708441987","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"@chungpham0412/nestjs-telegram-logger","version":"1.1.8","description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","author":{"name":"chungpham0412@gmail.com"},"license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc -p tsconfig.build.json","build:watch":"tsc -p tsconfig.build.json --watch","prepublishOnly":"npm run build"},"peerDependencies":{"@nestjs/common":"^9.0.0 || ^10.0.0 || ^11.0.0","@nestjs/core":"^9.0.0 || ^10.0.0 || ^11.0.0","express":"^4.0.0 || ^5.0.0","reflect-metadata":"^0.1.13 || ^0.2.0"},"devDependencies":{"@nestjs/common":"^10.0.0","@nestjs/core":"^10.0.0","@types/express":"^4.17.21","@types/node":"^20.0.0","express":"^4.18.2","reflect-metadata":"^0.2.0","typescript":"^5.3.0"},"keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"repository":{"type":"git","url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git"},"_id":"@chungpham0412/nestjs-telegram-logger@1.1.8","gitHead":"1e384b7be8157fc8bf63d5544144a1ba9cf8b821","bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-4dMbmg33StnvcwBvq/sPw6wuFiyp85Nko+Qwoq0w4HNuDFwPILBaiAfsrW1byK8BGvW+mqMCce5SmopXXi2HAg==","shasum":"b97249c74d585a29fadfb4281adac47045b36978","tarball":"https://registry.npmjs.org/@chungpham0412/nestjs-telegram-logger/-/nestjs-telegram-logger-1.1.8.tgz","fileCount":20,"unpackedSize":41660,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFvF2X9qY28vInQtvltXAwTCPluUmTdvb+HE94p5s+8lAiAfnhozC9jGRvdOH7DOprTJamhtpWfsxeooGjYxo8LtNQ=="}]},"_npmUser":{"name":"chungpham0412","email":"chungpham0412@gmail.com"},"directories":{},"maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nestjs-telegram-logger_1.1.8_1774932234464_0.03912718521705183"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-30T15:13:04.481Z","modified":"2026-03-31T04:43:54.713Z","1.0.0":"2026-03-30T15:13:04.781Z","1.1.0":"2026-03-30T16:13:59.902Z","1.1.1":"2026-03-30T16:17:58.065Z","1.1.2":"2026-03-30T16:22:53.155Z","1.1.3":"2026-03-30T16:29:55.546Z","1.1.4":"2026-03-30T16:35:10.812Z","1.1.5":"2026-03-30T16:38:27.171Z","1.1.6":"2026-03-30T16:50:10.689Z","1.1.7":"2026-03-30T16:58:44.691Z","1.1.8":"2026-03-31T04:43:54.609Z"},"bugs":{"url":"https://github.com/chungpham0412/nestjs-telegram-logger/issues"},"author":{"name":"chungpham0412@gmail.com"},"license":"MIT","homepage":"https://github.com/chungpham0412/nestjs-telegram-logger#readme","keywords":["nestjs","telegram","logger","notification","monitoring","error-tracking"],"repository":{"type":"git","url":"git+https://github.com/chungpham0412/nestjs-telegram-logger.git"},"description":"NestJS module that forwards warn/error logs and HTTP 5xx errors to a Telegram group","maintainers":[{"name":"chungpham0412","email":"chungpham0412@gmail.com"}],"readme":"# @chungpham0412/nestjs-telegram-logger\n\n[![npm version](https://img.shields.io/npm/v/@chungpham0412/nestjs-telegram-logger.svg)](https://www.npmjs.com/package/@chungpham0412/nestjs-telegram-logger)\n[![license](https://img.shields.io/npm/l/@chungpham0412/nestjs-telegram-logger.svg)](LICENSE)\n[![NestJS](https://img.shields.io/badge/NestJS-9%20%7C%2010%20%7C%2011-red.svg)](https://nestjs.com)\n\nA lightweight NestJS module that automatically forwards `warn` and `error` logs to a Telegram group/channel with rich context — including environment, timestamp, server IP, client IP, request method/URL, source file location, and stack trace.\n\nAlso supports **bootstrap crash detection** via a standalone `sendAlert()` function that works outside NestJS's DI system.\n\nNo extra dependencies beyond NestJS and Node.js built-ins.\n\n---\n\n## Features\n\n- **Zero extra dependencies** — uses Node's built-in `https` module to call the Telegram Bot API\n- **Drop-in logger** — `TelegramLogger` extends NestJS's `ConsoleLogger`, so you keep all existing console output\n- **Configurable minimum level** — forward `warn + error` or `error` only\n- **Request context** — middleware automatically captures `method`, `url`, and **client IP** for every request\n- **Server IP** — automatically included in every message via `os.networkInterfaces()`\n- **Client IP** — reads `X-Forwarded-For` header (proxy-aware), falls back to socket address\n- **Source file location** — resolves the originating `src/` file and line number from the stack trace\n- **Bootstrap crash detection** — standalone `sendAlert()` works before NestJS DI is ready\n- **Async configuration** — supports `forRootAsync` with `useFactory`, `useClass`, or `useExisting`\n- **HTML-formatted messages** — readable, structured notifications in Telegram\n\n---\n\n## Installation\n\n```bash\nnpm install @chungpham0412/nestjs-telegram-logger\n# or\nyarn add @chungpham0412/nestjs-telegram-logger\n```\n\n**Peer dependencies** (already present in any NestJS project):\n\n```bash\nnpm install @nestjs/common @nestjs/core reflect-metadata express\n```\n\n---\n\n## Quick Start\n\n### 1. Create a Telegram Bot\n\n1. Open Telegram and start a chat with [@BotFather](https://t.me/BotFather)\n2. Send `/newbot` and follow the prompts → copy the **Bot Token**\n3. Add the bot to your group/channel and get the **Chat ID**\n   - For groups: send a message, then visit `https://api.telegram.org/bot<TOKEN>/getUpdates`\n\n### 2. Register the Module\n\n```typescript\n// app.module.ts\nimport { Module, MiddlewareConsumer, NestModule } from '@nestjs/common';\nimport { TelegramModule, RequestContextMiddleware } from '@chungpham0412/nestjs-telegram-logger';\n\n@Module({\n  imports: [\n    TelegramModule.forRoot(), // reads TELEGRAM_BOT_TOKEN & TELEGRAM_CHAT_ID from process.env\n  ],\n})\nexport class AppModule implements NestModule {\n  configure(consumer: MiddlewareConsumer) {\n    // Captures method, URL, and client IP for every request\n    consumer.apply(RequestContextMiddleware).forRoutes('*');\n  }\n}\n```\n\n### 3. Use the Logger\n\n```typescript\n// main.ts\nimport { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\nimport { TelegramLogger, sendAlert } from '@chungpham0412/nestjs-telegram-logger';\n\nconst botToken = process.env.TELEGRAM_BOT_TOKEN ?? '';\nconst chatId = process.env.TELEGRAM_CHAT_ID ?? '';\n\n// Catch crashes that happen before or outside NestJS (e.g. DB unreachable on startup)\nprocess.on('uncaughtException', (err: Error) => {\n  sendAlert({ botToken, chatId, message: err.message, stack: err.stack });\n});\nprocess.on('unhandledRejection', (reason: any) => {\n  const err = reason instanceof Error ? reason : new Error(String(reason));\n  sendAlert({ botToken, chatId, message: err.message, stack: err.stack });\n});\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule, { bufferLogs: true });\n  app.useLogger(app.get(TelegramLogger));\n  await app.listen(process.env.PORT ?? 3000);\n}\nbootstrap();\n```\n\nThat's it. Every `logger.warn(...)` and `logger.error(...)` call in your application will now appear in your Telegram chat, and any unhandled bootstrap crash will trigger a `💀 CRITICAL` notification.\n\n---\n\n## Configuration\n\n### Static — `forRoot(options?)`\n\n`botToken` and `chatId` are optional — they fall back to `process.env.TELEGRAM_BOT_TOKEN` and `process.env.TELEGRAM_CHAT_ID` if not provided. If neither source has a value, all notifications are silently skipped.\n\n```typescript\n// Minimal — reads everything from .env\nTelegramModule.forRoot()\n\n// Or pass options explicitly\nTelegramModule.forRoot({\n  botToken: 'YOUR_BOT_TOKEN',\n  chatId: 'YOUR_CHAT_ID',\n  topicId: 'YOUR_TOPIC_ID', // optional — Telegram topic/thread ID for supergroups\n  minLevel: 'warn', // 'warn' (default) | 'error'\n})\n```\n\n### Async — `forRootAsync(options)`\n\n#### Using `useFactory` + `ConfigService`\n\n```typescript\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport { TelegramModule } from '@chungpham0412/nestjs-telegram-logger';\n\nTelegramModule.forRootAsync({\n  imports: [ConfigModule],\n  useFactory: (config: ConfigService) => ({\n    botToken: config.get<string>('TELEGRAM_BOT_TOKEN'),\n    chatId: config.get<string>('TELEGRAM_CHAT_ID'),\n    minLevel: config.get<'warn' | 'error'>('TELEGRAM_MIN_LEVEL') ?? 'warn',\n  }),\n  inject: [ConfigService],\n})\n```\n\n#### Using `useClass`\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { TelegramOptionsFactory, TelegramModuleOptions } from '@chungpham0412/nestjs-telegram-logger';\n\n@Injectable()\nexport class TelegramConfigService implements TelegramOptionsFactory {\n  createTelegramOptions(): TelegramModuleOptions {\n    return {\n      botToken: process.env.TELEGRAM_BOT_TOKEN,\n      chatId: process.env.TELEGRAM_CHAT_ID,\n    };\n  }\n}\n\n// In your module:\nTelegramModule.forRootAsync({\n  useClass: TelegramConfigService,\n})\n```\n\n#### Using `useExisting`\n\n```typescript\nTelegramModule.forRootAsync({\n  imports: [SharedConfigModule],\n  useExisting: TelegramConfigService,\n})\n```\n\n---\n\n## Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `botToken` | `string` | `process.env.TELEGRAM_BOT_TOKEN` | Telegram bot token from @BotFather |\n| `chatId` | `string` | `process.env.TELEGRAM_CHAT_ID` | Target chat/group/channel ID |\n| `topicId` | `string \\| number` | `process.env.TELEGRAM_TOPIC_ID` | Topic (thread) ID for supergroups with topics enabled (`message_thread_id`) |\n| `minLevel` | `'warn' \\| 'error'` | `'warn'` | Minimum log level to forward. `'warn'` sends both warnings and errors; `'error'` sends errors only |\n\n---\n\n## Bootstrap Crash Detection — `sendAlert()`\n\n`sendAlert()` is a standalone function that sends a Telegram notification **without NestJS DI**. Use it in `process.on()` handlers and bootstrap try/catch blocks to capture crashes that occur before or outside the NestJS lifecycle.\n\n> **Required env vars** — if `botToken`/`chatId` are not passed, the function reads `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` from `process.env`. If neither source has a value, the alert is silently skipped.\n\n```typescript\nimport { sendAlert } from '@chungpham0412/nestjs-telegram-logger';\n\n// Minimal — reads credentials from process.env automatically\nprocess.on('uncaughtException', (err) => {\n  sendAlert({ message: err.message, stack: err.stack });\n});\n\n// Or pass credentials explicitly if needed\nsendAlert({\n  botToken: 'YOUR_BOT_TOKEN',\n  chatId: 'YOUR_CHAT_ID',\n  message: 'Something went wrong',\n  stack: error.stack,\n  // Optional:\n  level: '💀 <b>CRITICAL — APP CRASHED</b>', // default\n  context: 'Bootstrap',                        // default\n  statusCode: 500,\n  method: 'POST',\n  url: '/api/orders',\n});\n```\n\n### `SendAlertOptions`\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `botToken` | `string` | `process.env.TELEGRAM_BOT_TOKEN` | Telegram bot token. If omitted, reads from env. |\n| `chatId` | `string` | `process.env.TELEGRAM_CHAT_ID` | Target chat ID. If omitted, reads from env. |\n| `topicId` | `string \\| number` | `process.env.TELEGRAM_TOPIC_ID` | Topic (thread) ID for supergroups with topics enabled (`message_thread_id`) |\n| `message` | `string` | **required** | Error message text |\n| `stack` | `string` | — | Error stack trace |\n| `level` | `string` | `'💀 CRITICAL — APP CRASHED'` | Notification title/level |\n| `context` | `string` | `'Bootstrap'` | Source context label |\n| `statusCode` | `number` | — | HTTP status code |\n| `method` | `string` | — | HTTP method |\n| `url` | `string` | — | Request URL |\n\n---\n\n## Request Context Middleware\n\n`RequestContextMiddleware` captures `method`, `url`, and **client IP** from every incoming request and makes them available to `TelegramLogger` via `AsyncLocalStorage`. This enriches error notifications with full request information.\n\nClient IP is read from `X-Forwarded-For` first (proxy-aware), then falls back to the socket's remote address.\n\n```typescript\nimport { Module, MiddlewareConsumer, NestModule } from '@nestjs/common';\nimport { TelegramModule, RequestContextMiddleware } from '@chungpham0412/nestjs-telegram-logger';\n\n@Module({\n  imports: [TelegramModule.forRoot({ ... })],\n})\nexport class AppModule implements NestModule {\n  configure(consumer: MiddlewareConsumer) {\n    consumer.apply(RequestContextMiddleware).forRoutes('*');\n  }\n}\n```\n\n---\n\n## Exported API\n\n| Export | Description |\n|--------|-------------|\n| `TelegramModule` | The global NestJS module. Register once in `AppModule`. |\n| `TelegramLogger` | Drop-in replacement for NestJS `ConsoleLogger`. Forwards `warn`/`error` to Telegram. |\n| `TelegramService` | Lower-level service. Inject to call `sendMessage()` or `buildMessage()` directly. |\n| `RequestContextMiddleware` | Express middleware that captures request context via `AsyncLocalStorage`. |\n| `RequestContextService` | Service that reads the current `RequestContext` (method, url, clientIp). |\n| `sendAlert` | Standalone alert function — works outside NestJS DI. Use in `process.on()` handlers. |\n| `TelegramModuleOptions` | Interface for static options. |\n| `TelegramModuleAsyncOptions` | Interface for async options. |\n| `TelegramOptionsFactory` | Interface for `useClass`/`useExisting` factory pattern. |\n| `SendAlertOptions` | Interface for `sendAlert()` options. |\n| `TELEGRAM_MODULE_OPTIONS` | Injection token for module options. |\n\n---\n\n## Sending Custom Messages\n\nInject `TelegramService` directly for custom notifications:\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { TelegramService } from '@chungpham0412/nestjs-telegram-logger';\n\n@Injectable()\nexport class PaymentService {\n  constructor(private readonly telegram: TelegramService) {}\n\n  async processPayment(orderId: string) {\n    try {\n      // ... payment logic\n    } catch (error) {\n      const message = this.telegram.buildMessage({\n        level: '🔴 <b>PAYMENT ERROR</b>',\n        message: `Order ${orderId} failed: ${error.message}`,\n        context: 'PaymentService',\n        stack: error.stack, // 📂 File: is auto-resolved from this\n      });\n      await this.telegram.sendMessage(message);\n      throw error;\n    }\n  }\n}\n```\n\n### `buildMessage()` params\n\n| Param | Type | Description |\n|-------|------|--------------|\n| `level` | `string` | **required** — notification title (e.g. `'🔴 <b>ERROR</b>'`) |\n| `message` | `string` | **required** — error message text |\n| `context` | `string` | NestJS context/service name |\n| `stack` | `string` | Error stack trace (truncated to 800 chars). `📂 File:` is **auto-extracted** from this — no need to pass `fileLoc` separately |\n| `method` | `string` | HTTP method |\n| `url` | `string` | Request URL |\n| `statusCode` | `number` | HTTP status code |\n| `fileLoc` | `string` | Override the auto-resolved file location (optional) |\n| `clientIp` | `string` | Client IP address |\n\n---\n\n## Example Telegram Messages\n\n### Runtime error (from `TelegramLogger`)\n\n```\n🔴 ERROR\n🕐 2026-03-30T10:45:12.345Z\n🌍 Env: production\n🖥️ Server IP: 192.168.1.10\n👤 Client IP: 203.0.113.42\n📊 Status: 500\n🌐 Request: POST /api/orders\n📍 Context: OrdersService\n📂 File: src/orders/orders.service.ts:58\n📝 Message: Cannot read properties of undefined (reading 'id')\n\n🔍 Stack:\nTypeError: Cannot read properties of undefined (reading 'id')\n    at OrdersService.create (orders.service.ts:58:20)\n    ...\n```\n\n### Bootstrap crash (from `sendAlert`)\n\n```\n💀 CRITICAL — APP CRASHED\n🕐 2026-03-30T08:00:01.123Z\n🌍 Env: production\n🖥️ IP: 192.168.1.10\n📍 Context: Bootstrap\n📂 File: src/config/_database/prisma.service.ts:7\n📝 Message: Can't reach database server at `db.host:5432`\n\n🔍 Stack:\nPrismaClientInitializationError: Can't reach database server...\n    at async PrismaService.onModuleInit (prisma.service.ts:7:5)\n    ...\n```\n\n---\n\n## Full Example\n\n```typescript\n// app.module.ts\nimport { Module, MiddlewareConsumer, NestModule } from '@nestjs/common';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\nimport { TelegramModule, RequestContextMiddleware } from '@chungpham0412/nestjs-telegram-logger';\n\n@Module({\n  imports: [\n    ConfigModule.forRoot({ isGlobal: true }),\n    TelegramModule.forRootAsync({\n      imports: [ConfigModule],\n      useFactory: (config: ConfigService) => ({\n        botToken: config.getOrThrow('TELEGRAM_BOT_TOKEN'),\n        chatId: config.getOrThrow('TELEGRAM_CHAT_ID'),\n        minLevel: 'warn',\n      }),\n      inject: [ConfigService],\n    }),\n  ],\n})\nexport class AppModule implements NestModule {\n  configure(consumer: MiddlewareConsumer) {\n    consumer.apply(RequestContextMiddleware).forRoutes('*');\n  }\n}\n```\n\n```typescript\n// main.ts\nimport { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\nimport { TelegramLogger, sendAlert } from '@chungpham0412/nestjs-telegram-logger';\n\nprocess.on('uncaughtException', (err: Error) => {\n  sendAlert({ message: err.message, stack: err.stack });\n});\nprocess.on('unhandledRejection', (reason: any) => {\n  const err = reason instanceof Error ? reason : new Error(String(reason));\n  sendAlert({ message: err.message, stack: err.stack });\n});\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule, { bufferLogs: true });\n  app.useLogger(app.get(TelegramLogger));\n  await app.listen(process.env.PORT ?? 3000);\n}\nbootstrap();\n```\n\n```env\n# .env\nTELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ\nTELEGRAM_CHAT_ID=-1001234567890\nTELEGRAM_TOPIC_ID=456  # optional — only needed for supergroup topics\n```\n\n---\n\n## License\n\nMIT © [chungpham0412@gmail.com](mailto:chungpham0412@gmail.com)\n","readmeFilename":"README.md"}