{"_id":"@trxn/nestjs-sentry","_rev":"74-ebfaa26e7db9aac159b1dbc0652f5f83","name":"@trxn/nestjs-sentry","dist-tags":{"latest":"2.2.5","beta":"1.65.11-beta.3","next":"2.2.0-next.3"},"versions":{"1.65.2":{"name":"@trxn/nestjs-sentry","version":"1.65.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","typings":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.0.11","@nestjs/core":"9.0.11","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.2","@trxn/nestjs-core":"1.65.2","@prisma/client":"^4.2.1","@trxn/common":"1.65.2","query-string":"^7.1.1","class-validator":"0.13.2","rxjs":"^7.5.6","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.1.2","@angular/platform-browser-dynamic":"14.1.2","jest-mock-extended":"^2.0.7","@nestjs/graphql":"^10.0.21","ts-essentials":"^9.2.0","supertest":"^6.2.4","express":"^4.18.1"},"peerDependencies":{},"gitHead":"c38310f1bb55f702fff9e1195e3b542c8fc06d33","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.2","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-6vCBlm6RKn0mMaS7dy7PWjMoFK0Cb/UjLa6BeLG1xasS+iA5JhzvhDlbhwi5TtkzcgUzSMrZUwd6Aj0GbZNR/A==","shasum":"476d1926643bc0d22b64345e120d3c05d5b14a70","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.2.tgz","fileCount":45,"unpackedSize":62895,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBMJbGJe19/+dsQJN0MZLGBQG7eXieioP0jqEL78cXLEAiEAsut7XAHwVj2CgNDQ/Bihlb9ZlPeghFsE6QXFXTiIux8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjh4YgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjkA//bY6Qwn2+ClyaN/RA41pb+otYNio0Z0ZROp6sGPl2KcuRisrL\r\n/6oqEugv+DH6PoDwNwDhIH8B7KPJyOgfhesTuajKd9eRbweq8H/w2UUHTwyb\r\nqofPp0cS1z2omcdBG/aOGvBplKKCzId4oIeGy1fdGDE2yLNhJ/2RFtDYY9u5\r\nem7ph1ic1tUdaJmfuLSM3qSrBxvXA6iVDUpMyTVcm862fkz5OHeygAk/e/xf\r\nDpc7bdx2NOS6RS10/elSphAsb7lFRc/MrwYTspykjZeTiLP5xlTI+3nnlXlE\r\ntfjQSKQksNLC3TZ8rtumsVRFxsAEaDnSzj+s//Y3PbHmWB8aUlOC8E1m3W52\r\nrOBXmnHtggtMGPnVsXhEr/Y7AiasIrK4pN/GP31EzwfP4UNYtl4Ka4FokRRx\r\nkayKBcno5vMNOUuSjoZ5LTDPBb5lNZuh0v0TDxDXkeh60C/PmgVyolMtol7S\r\nRepMmUc19LU2Xc9SdMegmcWILwnja4Smj5S20x/qvvyEBJwyx8zkzbxbYd9J\r\njem6LpQBLtbzC8bEYsTThqlJ3nbL/717e/aAJrAeGRQJoi66CjMdZB/PKiyY\r\nNU9chS1UmlR4tMCF1Tbb2UH1bdixMQhNmTw8yyX/0jLpT89cjox4tq3Ap31c\r\nD6s+71oAST2lFy18yDEKmd+A71lSPo5zEWg=\r\n=8+uF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.2_1669826079854_0.8241506399012997"},"_hasShrinkwrap":false},"1.65.3":{"name":"@trxn/nestjs-sentry","version":"1.65.3","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.3","@trxn/nestjs-core":"1.65.3","@prisma/client":"^4.7.1","@trxn/common":"1.65.3","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"30931da5f3c90ffab92cac4fb10e81c9d2836ed0","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.3","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-fD+SSfH8yAjMTiJgLzHqH0Rvms4mxr1Y351UsiIVFyIEOKxRwbMNZah/1WoMGmys/ZZ35PZBNkBcIwUiUzWnJw==","shasum":"1cfc02c6a8b28efa75426ba64cf0535f0ab809c9","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.3.tgz","fileCount":45,"unpackedSize":62971,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIODSePmmzAe3e8Prj6VRVL1XMp1rVg58tabanQsaUsAIgC/5rDvXLAp47CkiDr4TN+F9139uQb8HsvLmKZAwS2WQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjkLbHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqZOQ/9FR4+7hMeMxMxLZG7deEj3ozBj94V8PNX6GJfu3B0ACg8r7Yr\r\nHXa1NbnS95HCcppwvCyGrYEKb7GDIJ/ki7os0ZL7+huX17uZ84M9TPwl99tD\r\nwgyZa3ZFn1A6eK/YgeA/BKHDx27r8oXyCEuKMARaMVZfvdBgaotdZ2wkVmBB\r\nrXN5JrexF7LNPq/Cv0JWJ80fFBzyo/Po162p+RAAWPXVOalOUOiinvJLYpwN\r\nzXK8xlHtCg36FW8EHQEfTqFwYjjCZKqBdN1A9Wut93ktZCGqgXMAZEVBguTK\r\n6Zr6TO/H3r0l9Q6x/f0aLL2+R4AnMkcvPJe0irQZs4qhT+/3Qz4bXFKwxl/v\r\nNRBxLPj0g1hFuJk4pbMIlItVeGU06VzoUpiBE3WOQj5CNB93SujlwVQ1kxho\r\nAkdi4+0C/PAdD8glNUIf1nrnk4Rfw6WF9u31yrT+wJyrh4rVxgEYf2J1w2+w\r\nX4hWygX7tlgnVOpJwCsYWcj3o3wEyrnXZpPVwML3URN+gFoc9dBvqDd0RNZM\r\n58Vz+RHcYI9CESqJiZVbc92C0rfrM9YymJjkng26ASI+kKO+oXWAQoNFpJxq\r\npwfvp9TqtOulhZgjKX6QUT1jTwis3XLIQATiioJyrNeUlQUB6KpayWxmYZ7s\r\nBtARzHvRMh6hNYagNOKxRXuRwfJM3MGhLO0=\r\n=E2a1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.3_1670428359728_0.5537532997861392"},"_hasShrinkwrap":false},"1.65.4":{"name":"@trxn/nestjs-sentry","version":"1.65.4","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.4","@trxn/nestjs-core":"1.65.4","@prisma/client":"^4.7.1","@trxn/common":"1.65.4","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"40895766e9c67f19a0ded74fa0e2d63d2d872eff","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.4","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-lywQ2zBNRF3NYmGQKvF6CnRw7pWQ0rZ/zEUBGuLug5FkDZQJ8ISQmtAlfAKERU4qiDQ+gNSenvQLJy7dDp8JSA==","shasum":"444131fa103dcead1f39ea7f6f0d41e4d5672a38","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.4.tgz","fileCount":45,"unpackedSize":63060,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB0X+cE3lUP/fCNwvdkvI6l/ejAinJg2RaX+5sWv95vqAiEAgQPWgtvj8cYEpmGQfC92ZnN9EG3OAAGKWyNqzbbM5rs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjklF8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrkrRAAhzbOvXdkBzuFOHlc8M4791RuKgy4V4vheSDhyUK/Y/JKoWQv\r\nNN0XcIUMbWXztIppPeoAwo7ini0Tq5GMluSgZJLi+9aQ8TdWMZ6QvLZoin6s\r\nUv8as3wXXrXrI7e9/E4SAEzSXZi/gLXsuwGdlTBeWGwPixwOshWUJ+D09DBR\r\nAkvBYS1BvgeMSZPEgCmPI6vAE6KB0w4l+eCQkhs/o3nejMXXFV5bh04kmAmC\r\nWl5ZuB+fRMneENspt8KWOeSbgfMsTZnJ395Xo1F86+4RbsQcP9fUCqZd8CEl\r\nb4l1yIbEfCS3xAu2SzB+It/VC2YvctXHMAKXgH+uQavraMenZ/+bVhaRlKi/\r\n8YY2DDsSVJoQc3RMX2TWugMCrAluNEMvbyJAyIDkkOgx0pqvzgRGmWtTrD+H\r\n3LFZzgsih5JSyeIs4QhQBhApMOvQXE7daHhDxxQQJCvP08O9eOV6G8vdGMRJ\r\nQPwgc7P/DSrzpjegQOvx3xZ9zcnLQYXZe+b26O1UIPWhQH44lSk4DG/ua8ys\r\nxWk77z2Wr1hYZvZqWmHef0TgH2KtnrGmtvt/H6LKeVEQhshgr/PHnHcNb0AU\r\nKvKzLljwxekKd1VHa8L5muEjjzXlPIDeKglWcgLPzHCeuJ/qVTCr4i98wwKG\r\nQgmk8S0W3AA603AaM4cjza5GHEpr0RCYkdU=\r\n=meb4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.4_1670533500338_0.7900669758228835"},"_hasShrinkwrap":false},"1.65.5":{"name":"@trxn/nestjs-sentry","version":"1.65.5","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.5","@trxn/nestjs-core":"1.65.5","@prisma/client":"^4.7.1","@trxn/common":"1.65.5","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"022d8fc9b70f2dcaa1ef684ae3b956b78bac78b6","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.5","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-aRrCXRO95eosQSlwnt/XjbWdu5HPvz0/udtG64u6mon1zEOOVLknHYBEqXUYwOEZ1Q4m23g8bnn/arBjSR0nBw==","shasum":"cb113a79b735282fc4290e992e0c0359eb812061","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.5.tgz","fileCount":45,"unpackedSize":63149,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGL0hsdsiRipCgcMj+byaC7mGj5+ud8dzUN8elhnnveFAiEAxl8FF4Hm5MJq5OwwAy6S2JnTB+aPtwKeHBcbQAGiiGc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjoObRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYoA/+Idih5/MnU/3ZGWwPftUV3xGkWcv7yBOjDJBOcenEf8lhGG9t\r\nWEdFrYuN6qeINHGojU7JOv4rC4akopWc9SczTpjN07r4xTtdpETDe9DRnHnF\r\nrRnj6b66j7NnRqzCaIFwdjkGdCagikOA3YANZMR/4EL736YdS2/W4PueV+xf\r\nMiNaihO7FGDIOQi9jjT6aW0y5rynsGKiHczJK9mufL1RSMqzk80sr/n6p5LW\r\nTcAg6fJ9DccKoNKD4FhX4OFyaGysL9I8yt5Ex/s2LURIHRADHedDUGRIJJ6h\r\nNl5LUaXg8tHK3v3t2IfRcvmMPeYz7TyO6EshKPfbmJfqizxPVj4XUu39i1XT\r\npMAYFNl1Hf2kXavhlSdVjIOq3sjId4q7KFOgUVj5IbNW9VYEvJPYHxK4gaEN\r\nMxGEeqZVDz7PBgHjUU3SSguf5TkPmHd83UQbaRL7yO/iItzKqdL2sGChRHwI\r\nCa1KI/mUMTFB/4+MHYj2BdFLa+HAWAy+CSh5Z42x0HIxbhniS/0rsX8gIq4J\r\niLzLa0029Ax4XwI2mtPpAJ+TV7bfvLMOl3AJhN1+3IIVbPDXOzY78sLpYvU/\r\n5f8Zk+x1PgkDPz+j+lf84s1bFgNnbQpCBAXRWvqm1O2V/ozwQtOyrsBXBsIV\r\n64PAzSEs0Tuin8GR/5RnjemHJ8K/2TluHwg=\r\n=N/RL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.5_1671489233326_0.6063414434961827"},"_hasShrinkwrap":false},"1.65.6":{"name":"@trxn/nestjs-sentry","version":"1.65.6","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.6","@trxn/nestjs-core":"1.65.6","@prisma/client":"^4.7.1","@trxn/common":"1.65.6","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"ec74514bfd55bf34458e932bc6853ea3a18ca23c","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.6","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-I+NcAGvUmLSD9bL1LAcCm+tG4FfwV34fzhvGVmaUgQOQPKSi8hsabiYU9VIHoXwK5wpOJOtw6xP/njrMT3mWbQ==","shasum":"ae8e63ad7ba4821ea86350856462f5660c849070","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.6.tgz","fileCount":45,"unpackedSize":63238,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCdZCsizEc6kEy/4epBNjPmQ9DKVC+DH951GwlfMreS2QIhAOYhmY8q7RQaE/Vazyr3gE4p8gYTY3D0LHFAzMAqJo9c"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjohRFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozUQ//RdV4ROM6MaIcBoJpjJkCM9xFRb2q2rupYG3ERD6ar6j9P+Vg\r\nl5qDJeo86rGDZeZ6/qcVkMoah5bUTNKmWTBh0ry5N5q831Gz+mSx982sYhJ3\r\nf7XQWQwuKzL0YOMX5xIO/QkbMsAPQOunHUQJzXHcnujEdz54Zj+50QkfcyM9\r\nFsMHHVJvsej2rv9m4M3DIASCa7JkJ85bkhhpUko1/wdqPEFQljGPwRvciyir\r\nCcGni++rqMnkFAzq4nYPrl+g6Co7R29/niAF9WZZLZoX+wXeQVqjvp65s3V6\r\ntrpoUt6J+kSlrb9ujYi3kRYLAOaFEwouBv8U5WfSH+iyXYCrNXCc14YP9/Ep\r\ng4ZjPM/dQmBea9FKTHPpBZC8xW+x0inpQFNfLK7bae9FVjNjj22iCPkSw7VJ\r\nm7W1nKrBGlDp5DYpXS3bjq22x6kK7uNoJf7M0A4pe9XswVprBJoEOLOiX+6f\r\nS3ZPrFeqi7Wt1RzvtRZDdjI4AkgBLSdA3D+hn7q/cOUucO1ezc6JZy561P6Q\r\nmzP0V+5T5/MeK2thUudq6vSrxWMwCp9hTHoiw1fGphZLFYXemnBnWI8zSrao\r\n0Yvsg0q/HBU/bWk+0LDbN/pakmxhvNLoafEE0IfUJMnJVorHNe82ehv8UVf3\r\nf3TUDpKAViSgQ4b9kevWgy1la490CamA90A=\r\n=/xK/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.6_1671566405586_0.6709648060767297"},"_hasShrinkwrap":false},"1.65.7":{"name":"@trxn/nestjs-sentry","version":"1.65.7","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.7","@trxn/nestjs-core":"1.65.7","@prisma/client":"^4.7.1","@trxn/common":"1.65.7","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"3cc446c6999adf238bb5238298afbdf4d1be868f","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.7","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-lZYerBwmS97O+fsmcqrsXxrSDktgtoIbL81bxyN/lT97eh8gQ4PMZbK7yp3tN4lEBnqQNoCxbKViRT7ua1Ugmg==","shasum":"78549be3cd53f06461fc1019f0ee46ac58f42d83","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.7.tgz","fileCount":45,"unpackedSize":63327,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUuFuaJ0rwV6NcIkN8idIPDXoXBe5qEYutaBw4QxiURgIga1SU1GDplR+7JhhtNgnhxBz4Wc3+dyGRZ3GUiuDedhY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjo12SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIvA/9HXQXmHRpu/tS2x4sMcXwDfOn6EZ5hc/ChRBpA4d4QX4I/SK/\r\nqOT0sLvjy43yqpfRtFvsUtmP7HJ2XEhNY21zzfJpCMfsHxFvHPtmXKmlALS4\r\nMiqlT4Zk4d7ce4/oou9VPB9PEPvuK5RCDvxX+KZOH90VIp3n/NfGTCvX4zU/\r\nwMJMMzAOCnU1ANGVrZmYLGAExxyX2Mgl1VFbmdkjsfOln95g6HkR/3VFItIr\r\nIRvTYdvWsnvF0W1Z6HsE1ZDomVlA8JBvYi3dRiKVl1TGKkHxFF3FdO6Qkj7s\r\nAvV9nk4cAZz4F5meJassTjuwr/Bq0La0mca7pZYNEvSJDh353ioURls8F2m6\r\nrvHnTSoFVvVTcndDmzVS4sF8vLvA27c1JRSFeox3QtBVhrmLJCFwPnrI3JLi\r\nb5OrepzPVL1MCVpO9xsB2malohWHFKGVrK2SrayNdkIJE3y7n6B3anvsA+rn\r\n6wey2Q280RBZ2SCg31i8A2NqwLgSp+BZlfcNey8KOPxgLpJCMCHxbbuCJRWX\r\nw2aPqbbGifhI4q1x25TJ+rFz72Xw73eo371tm8DUuxtgENP/Itbrb038BeVP\r\n5hVgE957+jyNRMdEddwUO6tMrOnlaulxrtz5wCiZMdNclxLQbvr0EQ5uydQU\r\n+2JoZuz0ttBPg3PH8MOBAfwjJwYhw6s6Qm4=\r\n=BrfM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.7_1671650706545_0.5470467342494472"},"_hasShrinkwrap":false},"1.65.8":{"name":"@trxn/nestjs-sentry","version":"1.65.8","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.8","@trxn/nestjs-core":"1.65.8","@prisma/client":"^4.7.1","@trxn/common":"1.65.8","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"c6f63af19ea26c26dd2ef155dd2a35ba73f518c1","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.8","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-KKR4dPIpZ4eJ2VWv1wlwssGiTX9ffJ7gJI3WDecwwBHedGPWahLvLs7uZVylyi8WaA84dfi7ZxYvBFNwYjZUGA==","shasum":"c6dd08801f20936b99e62c197e23ebfd85e0bf40","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.8.tgz","fileCount":45,"unpackedSize":63416,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDJYhv0g8mtR8Jvgev1s153fpTUZHOdmpKJBXYngOpQpAiEAo67AXKTOlyNfvyCX5/MvxbbwD5IJcRi9AGfNtJCW/uY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvcucACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq7VA//XB2LaCvwfpVWVnYM1DtFgVQkNAbpfWI9S1FUc9k5lbivh0Bm\r\nxMqAzzhKXf0QP+7SeyjwYpxroSKHoKzbNqizOw4hJzIwpeCFJZBEMkXONPA7\r\ng1wFof1XXFR1AOY6DncdYl54MzGstU8rNX9LreqmvJnuaLvb6IU54dmH173a\r\ne6sCznXbVpYAKAOHwQMGu9VuK1zKUTgCa7eU/2E463KMpdFnwlpdt+jo22dc\r\npcI9qwb2k48u914wRgtbx7+Gsv5F0lv0A6i/JhdEQTGnSD0hTSmKyqTsXqh7\r\nHxChUaKTNPAQkffUyb1deY8tCkzC3VaaKdNWoX3YWr00svK0tNZzOS2hPaiJ\r\n1x3tl/u+weP9Oz+uCpasVq8wz5XJQIKhCdhljYogOqSRbWzUMwJjhNTTk9cq\r\n7y5nyLuDmjY/KAt4m242Z+u17Bd2yT3FF6Xp4EWZxWkSj4e7zsStVbaSDuCX\r\nU0vSKY/O7Rqd8WZC/Y2Xyr2fwifhz/ShON++2PnCR/GZ5fWTpMRcUdi03psi\r\n8WDqy3EK4u14uv+g1hQPIJ5qNbo7J/E4QA3GDt3LdEwjom22tn7BLVdTSwd1\r\nmCR7iIlLeEsygKbNOGJJqOmotnfLe7YcSBxwnUIoMb1Z08/F916dFV+jExmH\r\nU1JAxAH4KyIJUIofAjWcgNwwlA2W7265v20=\r\n=o1lj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.8_1673382811929_0.9012049493862648"},"_hasShrinkwrap":false},"1.65.9":{"name":"@trxn/nestjs-sentry","version":"1.65.9","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.9","@trxn/nestjs-core":"1.65.9","@prisma/client":"^4.7.1","@trxn/common":"1.65.9","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"32cdc0b19ba9bf743af86da12f358785cc21a4d3","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.9","_nodeVersion":"16.18.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-MdfM84N0obqv7P5bF87i6QOmBu+KJaKSxBvvKc8V5dT5079U4dxmLXBAeoUTUHdtsCnCYZ6sNBWy1zV97Nx+Iw==","shasum":"9cbdbb282a1af0658ccead351ee63a67e2abe4d8","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.9.tgz","fileCount":45,"unpackedSize":63505,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmNeNQTCBnaRfXB8JeXrUlQZEdYQ+br1Uirr7VoCVJVAIhAIv/S9lQbaSkwyOmg+nwJiLV4WPPsmNTdmg1tink+a2F"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjvdu1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo+WxAAnACewmIeCBjKwIdC28loFZ2vczo+RE0ss6SUuRt5i0gyB8+0\r\nhBQZaUXKX/BSt3Mxl5B0B/OVdV1iBzfu1bX6qUQU5YbMuJ2J2yBNmY3R5RIf\r\nwsfd7YUjuKsZXdWD+tkGpGyLTTyftD7o7ElhCK+GMlD7Ql6uE/LomGBm1idp\r\niTh3H4yfE9DZBQGShnHGU1hD4fhXY7scpZoRiSD+A9+5Yqa5f8LHbwBmX/Ir\r\nXfxJd8m2PLFwNWvrOkQoOxZmtzeidC2hJNgeae3L4mCwCkfvsFOoEyCmYi6p\r\nGjMNu7vShGo/QoYmJpC7TKmEkudwhpN0eL3lSe5oo7rQIiYz+Joubs7NIHGu\r\njAzTv705SVJlA9PUmft/UgjM9yR+30mQx3tejJXKjzombost5mCfTSAFjQhq\r\nCSc7sbndMjZ8KIfcXUBJPQetvDca2JYROLFg42Ch80p6EhT8HpCnDS/z5HS1\r\nYE4OZtivwHaPxey3u1kp+TY6s+w3ytxA+F5A/QThT4Aw95t6VabIwQlzWn06\r\n/7SjG4PRM+3b+qQtDSz4qvWN0QmoWcVWDXS8D7ZX9hZDB9yY1IxUmOpTBLmp\r\nP97UBtbOszH8GPZ8hIAbRa+eY+nYxMJntRO57mcrUMyn0XPxDRpvIBPdoqHO\r\nLISO1syV44Q+WSGVPappgNUbLyxNHGct8Zo=\r\n=GTeI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.9_1673386933138_0.23081974112806702"},"_hasShrinkwrap":false},"1.65.10":{"name":"@trxn/nestjs-sentry","version":"1.65.10","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.10","@trxn/nestjs-core":"1.65.10","@prisma/client":"^4.7.1","@trxn/common":"1.65.10","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"~7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"1f04da8e2ac860a8b114c7476b7e7cff87c9c4ac","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.10","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-c+9jBRZcw9b1MkSvMBGbb1Hk+OTbpXXabNkgFcjdXglTNwqqckvnQ9qNFSYtJRVAvsxUTEYw/FZiaDA4LqhjvQ==","shasum":"9c30605dc5a603d439f7472dbb6263b2187a8703","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.10.tgz","fileCount":45,"unpackedSize":63600,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHHcyVzjGkpvLXaA0rQG4D3sHaXEuHytFYej1slpzUO2AiEAoP3xDpleXyX/a4jDZ/m51291yVrEAsBjBivYldYSJWg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxl5/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpnOQ//e2uFGsDL4C0OLqkJW5tjsb9PzzLfTfkidHgW4rViSOuHpzLK\r\nVJ5UtEgM8du3din+QquWTFrTIZ9i8x5Xl7+1WgLrhojH95gc5L6WoDufkdqc\r\nkRhUIhCUXjrEWN4tBNqRQom4DJYeaUDHK+WVcdDdo5Zj+0i/3YLoiv11RMJY\r\ntP/2AjbydU9fByDpSaSDERujRKDe+/JXa1YQUZqWrpzaEOMQDch22SI1UE/t\r\n8vU+sEhxe35Z1Jj1zrsKvaVIxNm3FBeqTLrqpy5B132sHerbMHRSrD3ZQJ7z\r\n4dkM4/fgHcTAbzGK4VhtEd9gdUgSvRD/2Qh8BEAviaEk3R/YAFDIeYQxbzSf\r\nTKvFzIs+flWLH/eWMfhV1hZLHDRwp943fr32q+ARffj6Hvj7E/w5j84faoqh\r\nqqo8zgUifMqX0JXWbeh9hIEFP3MJhyANYb4E1xHQKQZ/tN1utQWB1OheaMDF\r\nkwiqNJLwzyziLposAOFcj+410/BStA08BZSZCJN/+nw66ma85etB9lueS11+\r\nvgKHrPx5uHUkD+BVpezpHvsaPscNBo3l/PTCUmcp91cbWTXTkZVzN8SRqgYJ\r\nLGo5SjGeFXLedr6lV8Vh9apAH3aGW7P+67ZohHRKBj8zxpOXbKJDOPEv6Kh9\r\nr2/h5VovnxUmq6ng9UH7FJd5hpy5IqfymE0=\r\n=BN+A\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.10_1673944702933_0.16174424613782845"},"_hasShrinkwrap":false},"1.65.11-beta.0":{"name":"@trxn/nestjs-sentry","version":"1.65.11-beta.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.11-beta.0","@trxn/nestjs-core":"1.65.11-beta.0","@prisma/client":"^4.7.1","@trxn/common":"1.65.11-beta.0","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"cd6227a21e8ce3cf7ca60a6e135f2d92af47d29d","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.11-beta.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-lrE8rXQOV4PuJL7ImWPoZw0zqYuttJtCYgFxvztB+Xb1QqviDF9Kg0ZLM3MVHLeRR59HAcFjPVkGSObuZdi/ow==","shasum":"835d24c2ed413046d6c2dbe00288144d821e5fc6","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.11-beta.0.tgz","fileCount":45,"unpackedSize":63734,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTJcQDxzlGS9ijyz1j5GF5jkOu3wy3Zzfw+VD6hFkBpwIgbiJHT1E4PRwylocLFr5Orx+Niym+1Nu8p7Es8FVkmNs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxuUdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpSBg/9Hb5QOTUzIZKYcHCgGBCWX2ZMbtre6sIwZlEPxGLaIjPPcCMl\r\nXUhCHs1TxJiXQqV98ynQoftI5fQreiTdKOFxcjaxA7s/f9zqq3cGD2tzXM5J\r\no5Ec1nCKVFL5S9fni/CYE9xBikkfjgL1jhh1c3plgrwTxcbbP81y8/cHZFzB\r\nEcWrvF3gB7cppbQwE3ZEL1OBBtRpDwMX17+HpuS7YmqdE/Wk29M5gkb19Jjf\r\nV12xGJRFHiBU2GrAJbtiOubuOvs58s1zyfO3p+PFH5fM/taJeYBadZ0wz5Ez\r\nkOzrt9u/Ur0gg/FGegxPCmcT/XW+VvkhT5WkD++Wqf04KU0zd7H+xXrihgjf\r\n0PP9Zsq8QzqrZz+1YV74N0BKcaT0fcFEYK8Z/+1hVpWaYcneunz1/1LAqGBq\r\n+/2jql0a5Th6QR6n7J++xgvBzMTyVLqOm/eN2zxNrMUaYJAAvxMNS30XcayD\r\n82EJKGQF48A0acrlKIhnDhN4slpcY76XJsWxOgMy+XCoO/i1CPLsXKwbGqsf\r\ni/ZAqDlWONMum0CSRy7qr9LRBpmQkGPgsDwvesFBifYkbL3n0Ew2h2bvoMKc\r\nKWTQp5/AdDABQy42/v3uqNPP4/NKvhnUrqxzRmIseptx1nHy6OaYUodLnTP4\r\nDlh9pXO+PdcWG0SVE0FB4qQUythX4lzxGJw=\r\n=0XWR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.11-beta.0_1673979164828_0.2819374425490637"},"_hasShrinkwrap":false},"1.65.11-beta.1":{"name":"@trxn/nestjs-sentry","version":"1.65.11-beta.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.11-beta.1","@trxn/nestjs-core":"1.65.11-beta.1","@prisma/client":"^4.7.1","@trxn/common":"1.65.11-beta.1","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"be17637835b2d397b8327383e809ac0b3f1cf337","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.11-beta.1","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-JsHmbB2fkACP9lFPTDyLMWA75MdpJ4GBphBUIBV9vO64MGypEGgoDvUydTWCeQqiFTNttZ72JsNbrVD8bXB+sw==","shasum":"a7fbd5eac67ec587840616b4ae423cc34c06d319","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.11-beta.1.tgz","fileCount":45,"unpackedSize":63847,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAaXcyb28KfSbkUZyJkdVfi59M2txCOUlzsKm47flHe7AiA3qlZR+upZWVGRW/VILv0nTxNb28tU5TRdHQeEcNYlnQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx6mcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoULQ//Vi0T66IgDcDuBBUDQn66Q9nu4kHj9IVGnN96kB+au/eni+Rf\r\nC+tExAt9aNZkEEgifguL4IaAG3MBQ6E/zX0kErdoNulmD4an267shn/au1x2\r\ncSrrCsvnLnxKvH/fiORolJ9nQZpnAs1Fa0XgdtbwlwW6jfXYgjfHeHXmlu2h\r\n2basgw6ho1n0dgv3SP/xzGKhhXOzEN1qRESjvFhEDmNc8G1Ip0zUpCek9KPf\r\n3vsW+e8DaVQEmwXSJllUSzLNBNf9+gS9JKkYnn5+TFqg7Wh2ZfOdG9MOw2cH\r\nhhht7nrYrc4T248A6o4pCaUFIdYZyjT2bfRbMsdh5/LjK+UigNRvLJvK8WyJ\r\n71ikKTDTo9/X7qBdj7Qx3CPwA0FqCwz0fOKYpm2Q3h0u+5L6vgyqir4BCdhz\r\nKQORdbZ0Gmpd2Tx/dQMMoD8tykVzL9pjFIM5RPz8CwJJ7HLk2+50k/fRs0+g\r\nI0msUicvvFpa4zC3W4YsbyCpKlQKtBG8umlhRxYINtHqIU54C0tbM+kTTEpu\r\nosqmeS9bKVqRNYoMwzleX/0rDeR88Nt6rE4M4Rp5PXuYHs6ZradSt3TjgYM4\r\njNOGP7Tuw0inFXSWTyyYPPjJZVR3qIq3CJZ+mzAw2NjXWMJDcUEXgFMP6aBL\r\nQua4h+Ea6tO8k+J1C+XqT3vRXPHu9Zm1XvI=\r\n=/KSE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.11-beta.1_1674029468678_0.595081389837433"},"_hasShrinkwrap":false},"1.65.11-beta.2":{"name":"@trxn/nestjs-sentry","version":"1.65.11-beta.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.11-beta.2","@trxn/nestjs-core":"1.65.11-beta.2","@prisma/client":"^4.7.1","@trxn/common":"1.65.11-beta.2","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"f920c5917a925b2e146307c3b704f9873d4de89b","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.11-beta.2","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-fp1GgGaIjB6b6GaIJOEcPqVbCpeXJVfJI8bldwJpuTkG6j0B3tTmClqB3fuXumbDvZh5cGhN+tQoxHwoOgYw9Q==","shasum":"2f19f9148b5fcef9a14eec57f3210af10f904167","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.11-beta.2.tgz","fileCount":45,"unpackedSize":63960,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDPiNi+dtfkuF9cfkW6ixjoKKJYrccKFup6zRGLMVEuUQIgDr7lI3HE1cwbfC93cvbd0+20bZKulSJ1nY9tp6PodJw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx7YgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmohQw//dtyIRToDYmsIh+JZigzCGyKDn9UUr2nS8OklPVz/DVrQouO8\r\nwptOebQqyLOUcCzUVQj4g+/ajsv/kbg3RCdjZmbSKDak2spM/GUbt/sKcjhe\r\nzR+FCZEUFaI41nceyE259U3IGEMhNx4pv+sCyPpIZOxp4wlAZAiq5uv9rIlU\r\nEhp7WS2CViyx8l6+vVKMgMbjGuq+M4XmvCUmUfVP/UrWVKPL/dQdgVBx2dJK\r\nV/3KMrIlsDnJQtgMlky3KBtxa5iXmlFoJ7QCEAW0DtIzjhpyeEgSxQERMYsH\r\nUg2gw+v/Eg8F33OorcKf+dxSWXT957nAnH/xx53iB2Uohg5TYDaiETbzkn0l\r\nq0Q5mUTMySE6vfjwHHdXLVb5CzCkaZe2wzqaduKN1UNX7u6BY96wQ41IGZAI\r\nzLIJOHTpehAEDa736i7cMaGKAxIyjhfzSRv9Rv+pwYoq+l1A6mwRUi++jX3m\r\nvmhtelv038CCgkcfJbDgE4MJW8QeKSNkzULNoeAjU9u5YJ8x1rhRTRUPp+yH\r\n1MYBRuL30m4s5OoQ2GepqMYcbtFY75fUuvFQ6y632xS6YnJ7PYtLZgQuk0QX\r\nyr8eX4H2zf8XhdP2wdRRYdE4eDFIg4hFI8PVpLzylC6IixGIkP/qy4r+rZ3+\r\nxOdnngQBHmdYyRsH5Q8WYSBzjkF/t8JoQmY=\r\n=G7OU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.11-beta.2_1674032671900_0.6000783359688793"},"_hasShrinkwrap":false},"1.65.11-beta.3":{"name":"@trxn/nestjs-sentry","version":"1.65.11-beta.3","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.11-beta.3","@trxn/nestjs-core":"1.65.11-beta.3","@prisma/client":"^4.7.1","@trxn/common":"1.65.11-beta.3","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.6.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"05f12427d716b981b0912eec6c4bf3dd7ac07360","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.11-beta.3","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-xxP4ygJ38dcI4A0TfImzYeQsPqSmMbdkv8rDCLn1/uPudSJLuokK2A28grGqkRQtb3WP0lrm+2pENJYjPAhb5Q==","shasum":"eecd2931781cce402df8ba56fdd1b1d8c5ab3af7","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.11-beta.3.tgz","fileCount":45,"unpackedSize":64073,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG4EW9G7qWhmj3h1erOrc25qCOM4It7WGPwZ3wz8n/O9AiATXynjiWF6kGuyf5UHGoyYsJp7KSPX/uwmmibY4ZKJyA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx8RTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplqQ//S9Six49u8WPVmhMrMwuhvm+7hnzft5WVLBkzeCRL81LJ0AOd\r\n9pvBJVuUp0ZvbgbJHvDO75EXHqFIkhAqAHKGZNh9654VeW9rZUYnviXu1f1D\r\nqe7goD5OeM0ytmfC5imzez34bliyQTewlwtHyDvMHghGglyYdg9ZFCcxkv5r\r\nRbE58otlAH/7OHn6SFpgjV1JHwnSK8K1aT0NanKp557p38KdR5CFLPtm2YES\r\nuuV6FjFrOpuVauLa0B5oISt5/HelhT73qOX05IqWDSDv0T3clloZqgIFl5y3\r\nGrcCi7Ttumkydrjue26yL5hzmNMaTzQY8AIQMqQPgVyN0xM4k94DWsKa4DpP\r\nr5pdacZrX2BNnboKyy8GMPuYUVWeM3f19rA4P4NotUSeTB1FIFafmkGGagNs\r\n+kpvw+2Bf3wUzmfbu+FKVI07BmUDNjiVKpGuy0KtqMSKN1ac1B/RQ+mujo2W\r\n6I3KqSZ1XyD8lzsuVLGBKa84GPg9t4d8oRJNvAe9vANbHmXIvS9lYNT+sMPu\r\nz6QAgbUEscumGFkIoFzxmwsyAHGaZ+Bb6RaLiOWIlD1+OZ5UWVzZhztpTm4g\r\nGTcrqvKaOyMXcTPYW0dZNai9JPO/2V/9Gnc4+fIy74VndugHfYtHd4cWijkp\r\ndk3ama+CDSNTKPcT6F2jGh3Dvxq/LJVW6ko=\r\n=jfiT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.11-beta.3_1674036306978_0.3617166556411966"},"_hasShrinkwrap":false},"1.65.11-next.0":{"name":"@trxn/nestjs-sentry","version":"1.65.11-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.11-next.0","@trxn/nestjs-core":"1.65.11-next.0","@prisma/client":"^4.7.1","@trxn/common":"1.65.11-next.0","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.4.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"30de13838e6cbb7a793cf8636711df097773055b","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.11-next.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-aqC+UTtViJyiYrgbwJsuqKFaxrdU005OA20SeVf0ywVaz9wDdRnVbgDLIZw5nRy8bT/0sqmTysItdbDeC7qjow==","shasum":"2ded20d21e6f92b482564db3b83219718145f34d","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.11-next.0.tgz","fileCount":45,"unpackedSize":64186,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDCDT/uCoKWFHNKgborniTDr1x29Goab2lg8J02WCdPGQIhAIkl1nwQUN49xkHHax5kpnzWz6a+PJyXMqI+TRsSuUES"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjx8jmACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnnQ/+O23BSv0WbA5Kz+D3K4nYcjpO8juBNNyGZ+qDLXO0I9FNNdL/\r\nRZquvHhuHonNSLj9oB/KTplmojiu8nNghkqpgq+4ZkWMPmGTJzTxvh3EZ0Ls\r\nHic21MNOOpQzgi1qCCCG1FtpJ1s6JcrEDBYWKBh6PvX10XNUsKZhuGtjtKVy\r\nrPlNptjl9WMpSfq1m7YzSYrTY3MTeKB2mz8LXWahTtL+a6lOvbIEHZ+H+xA3\r\nKVSA3BSVOoRjjoIwMzn/ZKVcsDx1TnD6pT91Y6sJJNLdHNkdQptzr7uEG/sG\r\nftCf6TXFoBDs/PGPPS2BHHBsG03o1F4Rw9emHqW8Sb/a0nWdts2lj5yODQq6\r\nz5ACyrJ7ni5fHJyFKFsDyMIZ+8O69p/M7MuoAbrYgRr+hQt+prSqqwe5kHKR\r\nglqONoRB1Hu2WEMDmWsaC4YVVbRehO6NSGfSS13m8ouvkTpZbElobDM0cCgU\r\niCt8F9yYffLrduDITbJCQVuQDyqEogDp4uMhjb5bVq10RQ3cjD3hNMGE//nE\r\ndeM7GAGOP7tgC7Yks8YvbYHa7Q5iRRyFhwmLyPVr9z/Nz8de995646tN18Nx\r\naNbxvRLaE8OIhSYUdd8z4SIZjG25ukdC68ABUsmgdEyddHXjqEL59rgsuEc9\r\nxhSKJ7x++dm6ga5PeJv1uKe903OPra51RAs=\r\n=Jgb+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.11-next.0_1674037478411_0.3701182757716235"},"_hasShrinkwrap":false},"1.65.11":{"name":"@trxn/nestjs-sentry","version":"1.65.11","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.11","@trxn/nestjs-core":"1.65.11","@prisma/client":"^4.7.1","@trxn/common":"1.65.11","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.4.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"80cd8d9ebd7da2b86c1106d0bde3f07787f38aa8","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.11","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-BG9a19hkMrvmHmni6gbkqPbkXVn0F6XBUcgppxp5kVgkXpRIMW/NqOkTVutjI2AmapqOssM9+GIsnnlJHVf1YA==","shasum":"13a9238622794f3698553ed68663ed6bd2a23e3b","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.11.tgz","fileCount":45,"unpackedSize":64491,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDpW3qz9uQbbMruuH5YiSFaKHMp/oCVCXNIDs+Ez4RUNQIgInruxSf77lvMPh7HzYLBl6OH1SK0gOMsZx6RJPsAcIY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyXCnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQxw/+MzaVL8mbei8VAQ3C9iGIG260ziikRXVM9hi9q4EALLaffSw+\r\nCBJE/nvi+hM9sGXj7i0RUj3FGoOduvHvF8WR6lzfN9kBwh7y27pX63noq6wP\r\nwZQmgVe7M1ta/8VxS+WuO7Bj66/n+K+bcnKW9hVRF78AlTtgnWKDUuquqPOa\r\nWXSARd5MCDlhxYJQvGGsQaZFu/N3ckFaIxHXg3fv89++wydA9PzLJeX5GgOa\r\nGRq9rgtOA+FbKpLIZnuSnOT47V9vvv7ym3fqUIIlsK0eYl5IbTvS3GCVbDio\r\nKnW8kPsXf7kA82FCzCb1MxuZj9WZ3XfmrfvxKKwXWeUp0T4B7b0HjvdgS56l\r\nil8BAVGWEFgp+AxhY/uDtW2DlOmWEJw52EterBprhaswdwkSVmbbtMZBuapB\r\nfaCPi9ro4UCxIWo+ePscBGhvJM5Xiq6lRGy/HM9rz1KTJxEQgVRo1dvASly8\r\nwNvhpUnWVJwCUJu1XR4yX4goWF3NCrmFaz8TRoRzq8rnG5bFml7l2veT/iD/\r\nRjgJausm1+jeLWsF+g2j+Iy3frH7GpncXoAJF1sD+ai+r/+wAL3s7i6OtAxr\r\nBnpQnNlSAMi2UrKflbo2kxKwuxAx1CBiMEWlZj0MfJKq3Qa7dXRtBb2Fk0u3\r\nXM3/qisUHraw6QDeiCaH/r5RQPy0MfByhDY=\r\n=635L\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.11_1674145959228_0.9386842813726657"},"_hasShrinkwrap":false},"1.65.12":{"name":"@trxn/nestjs-sentry","version":"1.65.12","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"main":"./src/index.js","types":"./src/index.d.ts","dependencies":{"@sentry/types":"^6.19.7","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@sentry/node":"^6.19.7","@trxn/nestjs-database":"1.65.12","@trxn/nestjs-core":"1.65.12","@prisma/client":"^4.7.1","@trxn/common":"1.65.12","query-string":"^7.1.3","class-validator":"0.13.2","rxjs":"^7.4.0","reflect-metadata":"^0.1.13","class-transformer":"0.5.1","lodash":"^4.17.21","@angular/core":"14.2.12","@angular/platform-browser-dynamic":"14.2.12","jest-mock-extended":"^2.0.9","@nestjs/graphql":"^10.1.6","ts-essentials":"^9.3.0","supertest":"^6.3.2","express":"^4.18.2"},"peerDependencies":{},"gitHead":"53ec9989934ae4b510bf6dcefa29804e493567dc","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.12","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-S8q17by8KhvsJf/rS+t807lVNCCb0xxM/ipDlGvGic/kdJT0IhsVOjZRYMW3eQrviLnraVrSZzF/zR+nwSj+1A==","shasum":"1dad651c9ba55120998f31eb8e1c6b71b5c306ac","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.12.tgz","fileCount":45,"unpackedSize":64583,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVjSIggYenH23BJoirGObaDPjVrdgYgpTkBgh/cxcVJgIgTHnPt1fPMVk/pbe/pk/l3HDsRd3/qvs4pYUBy9iUKw4="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjyau5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWyw/+Mmq5A5/7gNQo3HucXr1ck4sOpk8Kx6L6kMUCfMvXUnweV6ro\r\nOeaD1pt1M5t4gGPzLy/dkrH4N56yPUpavU41E6NdKZzWtaknkDb/BlMQi7fx\r\nY2Yqo8emRZYFcIUbENb/5FkcqskPX22WO4zbdn9He8AGAIG60wR+3V7lEu1a\r\nJt9NLi5xD3rutxv3GWAUNr8AvBlPt9YO2BNayzmii/QHOGEjHQdpGHsAWcwd\r\n8TYGpIR/Iuhm245w9TrBxLC5KRAcJiHdNMeJn9QGSMfhEpaWuDQzd4f9I7Km\r\nY2vkF1KRvzVZFfhPcV0C1SKiWv0bsFHuFNmEc47kGfEC08TFS5DBaAj/NDuD\r\nr7fooQQHsn+DQ250sCLQAl5eeBR4ZXnlDCxYRA7tu2A8bBKNCRZfSpybnrhO\r\nCkBWGDeABLUh0u/TCnWxpAdTuOTK56fZn/xNlKjvQZ/wJ4y28ZbiINRtSUHq\r\nxkMGMwsmmHgKJVaPwkTtXguTvHHfQXQnFW740zfk2pV5aJTe7rFuemjCtZLK\r\nZamoAuOgk8Yy/AgtXuWBpPr6wxjbgDxUsveLXcFNoAl25nkZq69mvyXFSs0P\r\n99bFFyS3BlYeXEyJxcOi84+Ol7Jvq3mcP2fdbbWyndSyZwX31xrVJ178xz8I\r\n7WNeRcldfb/PnZOdHj0J6obB5NAX/DWzUFE=\r\n=ACgX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.12_1674161081763_0.10216506371460232"},"_hasShrinkwrap":false},"1.65.13-next.0":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.7.1","@sentry/node":"6.19.7","@sentry/types":"6.19.7","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"2.0.9","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.0","@trxn/nestjs-core":"1.65.13-next.0","@trxn/common":"1.65.13-next.0"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"15.1.1","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"a4a4a6c86202c16503dde20faeae38c0c9a46047","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-GLPyvQRqLZ1FCy18UDGX2LCTar+l6NhEyckIX5GDumONI1jL0EFCOOiTtmPmja7WTj33dQe4E+sHsDWMncxqSA==","shasum":"4b7826d82e30d278124deadbdd74bf2faf3b10d3","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.0.tgz","fileCount":45,"unpackedSize":65313,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHE3eaY4bU0tbcT01k06bzmeYuO59UMa+y0adnI2+EZxAiB8DIO1pXcsUntki6SPmOMX1VSvIMDnmxhbdVRe3xTd1Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjz6FkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrOnQ//fpIJ95IR0wtovL1loEZ3BkKy4hvnpYlFQOJQsi87PVQFJLmy\r\nQuAhjy7qaylitToSnhd6fwtrccSKbx3MRU1G3vy2uhbOyCVt+CpPzN9FHdbX\r\noJYNJDZ4uMWNdLNS8JK3e4fRtkdkpj2th01/BKtjYflOBSVWxhI8huZ45FB3\r\nBf+XLxp3gSbEfajr28YhY26Dnp+DUCnNcSPILApAU0dkcOctIZ18HruPDvX/\r\nOA1lK8SegPfX2D2hyCq086J/G006PLNds0mQ50O59CWBTWTl/pWDlHCrfVo8\r\nhGuWQIqf7u3SFg3rfM01TrRvQrfIv6sflvZXADabrDHphM93LrGLWYHTz2aq\r\nFA3gC9CgjoPUKSH4u/I773mYs6zVm71zRW9zmMTLHCOWYb0JRIya8+wyDMXX\r\n2ZXZqxtqDoQ3J33jtxLLtLXsOdFlbaA9vabPg+ULNoM/WL9q5V0BtoNqHB/f\r\nRqgeM/yPhvX/GtG846+hQG8FHWvuxVeLQ4gf09Fr2zcOe1Z7w+T24S/xjqe+\r\nljtH1szhs+mkoMBpPxeAqVkFAFIS1s7vAPBKIQKF8zk4rXmXSB02AgVDUFsW\r\nr8hUtDYwnF7idV9rw9TN8cSAmwAzOzWbgvFjZRXDjCVqjI/L7RTlyiCyanj2\r\n7qK21lO8x5mpy9+/YWbKgAKOD+QoQzAEOIE=\r\n=RGVH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.0_1674551652250_0.5719334391222055"},"_hasShrinkwrap":false},"1.65.13-next.1":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.32.1","@sentry/types":"7.32.1","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.1","@trxn/nestjs-core":"1.65.13-next.1","@trxn/common":"1.65.13-next.1"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"15.1.1","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"bff9f26032f6e987b83fbe8b5c340c1755961fb3","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.1","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-3r1az+s19xYnP8XnCBvg5ldXf5R94eSq6FAOTqbLJGK/0Ia+MqKhcysxQ3NJyV/i22xPd8LBAwEx18FQR5w7XQ==","shasum":"75c8aa7f4c90b1185c90519a1d0e9cedb6dde02d","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.1.tgz","fileCount":45,"unpackedSize":65672,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8wmXfG3pySevJngPCU6nbc6B/iQm50+jd3H7G/+c47gIhAN8r8Ez5yKn4RI/ej1mj8BxpluNWztB36tCNrAghL+0r"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0OanACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpR0BAAi/QyTPwtnnkU+ltyJA8zLVNn2qRbeybFNwvdMGuSyL03YQmj\r\n41Et3bycifXFbtK8QQOugU95Q6Pz08Hkw33AQ2oU2XuMacwjEXy4MgNa2NFl\r\n5sVFUpi+42Dqrm2SN4X/eJSwCn6p30nwQhxKB9P8ktjL071/BD3qcB/7LVr6\r\ncCMDuIhCx1F/ZR0u2m+00h7bDbyIXFzdKe1mFdWLpe8c59GaIENlLLtWtR6b\r\nvH3CGP0vUQDUfxVAz+zqSIUM0w9uF5LzSPHp5NIFpfUrPQ9kHKK5ovCmdlwl\r\nfmNi8vE2p4y7yVyNIKKkg0iTtHL9Iupk3xFJVMaSEiOPtIvsywts8+CO/mXF\r\nO/TA/akW7QFuUDGfZ/vBB9pKTozou6QPRfEBlhcKT2oZZa/h9VM5e1OV0YmP\r\nO+5FsUBnaJdSBjequmhT02+z2LMJ+9WUN3cdOewIY9ZCsc+hyZwedVSiEONZ\r\nOvaY6TzmjW4sxZ0k04xE2D6XweY35AEQBnkEi/S4vlNpadzWhzgsSTixQHEv\r\nWqMvh/9w0sKp2yiORaGgLue/eZ72ticINHQI1pX63knyCO6U3Hi7Go/LrIE9\r\n4+OCWhbCnmGnd8g/xsfF9S5EA+OhH3cSdrlwkGoND7j99bsxy+FSWKZ6UUuu\r\nzpJvzy6tkE9qrMGBuATli3xonEY+BIsWlDc=\r\n=FSuh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.1_1674634919630_0.7232867562029757"},"_hasShrinkwrap":false},"1.65.13-next.2":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.32.1","@sentry/types":"7.32.1","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.2","@trxn/nestjs-core":"1.65.13-next.2","@trxn/common":"1.65.13-next.2"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"15.1.1","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"232e52d8696296903e3b6abba4d2a51ce823b069","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.2","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-7IMVZGV2hGxMylBwirTBGmV+SalUf45R60JzaQrwX/lT0bB/0/+77/xhbrHw80/7jhVYe8erc9fIXmn8vvbWow==","shasum":"7b7ef5bf35279e4ce19b884da2d1a76997b28aec","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.2.tgz","fileCount":45,"unpackedSize":66011,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmKY2XVO9MM7AQMoOVc6dhEw4r4Q6Wjenkp2o9lUHK3QIhAO818iM8RVa5bN2RtIsiyCpcS5+sV9l32ZyslcDDq752"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0V8lACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnWg//QmmSMt3aYpIy0eXEgSLdXIYNo0WYxSa0T0Z/qsTyF+ePv4lG\r\nXwpdKYorTfsxDFGun/RGQKSm1jfCyOyA4Gr6Hz2p+oZcjAuVSfJctVo30jMG\r\nG4IuhLrtEgEGaMel5gecL5R6OZJa7vMPHvN8RpDqjT4M26KY+suqS72yQj1W\r\nNialjKK+yjfLtWB7HyxkRFy5OMTtACQ7jnDb2c0aulTs+t5JHjuEvVGLzumP\r\nGYJdEXUAifdfknxwOCA66j6wt6GBnscSX2yVkHxR+y9oSNjRPs7w95h1aEct\r\nFDtYxXyt4ETg6toF/+v8GuGPVCIZDJLULOfiXh1VlfgVulEXecGE+bYcsh01\r\na4RF3ysiDdD7397MX4AVLD6fwGRTKcu3vERfcWjDkPecN5IXhLmawZljFL2z\r\nkwshp5g2GoGeXEIRCIkgBuiSjxtcJuN0Di/4GOKY73PCISYZB/SB7xypXsFC\r\nP62TGFcA9b42Hbfu+QEiJJz9mlgb7LRJsY7vI/+bcojNZ0OxkFE4wxofv2bm\r\ntezZng8OVjQ2zGavUB++t4X0VZwtysTkIO6lyQkujp4nhz0Ce+1GiRHjU3Kr\r\nrJ9Hdfs54KcmhM//gwxfUAhopBzxnhqyQXuMf8uAJupVkKZBZyCPJSHAuLpd\r\nxxRS7S9p/THJNFCzAs3/sbEd4RN+6cNtCiY=\r\n=mppr\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.2_1674665764868_0.19567405126809811"},"_hasShrinkwrap":false},"1.65.13-next.4":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.4","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.32.1","@sentry/types":"7.32.1","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.4","@trxn/nestjs-core":"1.65.13-next.4","@trxn/common":"1.65.13-next.4"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"15.1.1","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"91b429cdf691d008d62701481e29eb9d36a28bb8","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.4","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-jo7f3p3g573KFv/isWwNjwR5wQxLbeT9cjAnNBWM/OWrCqADaT8TZntiovmyQTSNOrPF836TucAza3uyXEYavA==","shasum":"1c0cafffcade600f7459918b56ccce4b283c402f","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.4.tgz","fileCount":45,"unpackedSize":66237,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZ7qyeSLH2I3x6tXPlITGHajnkSX6k5MFjL6mlth577QIhAK6tkvCJmQBCSTgWVfc1NxO65QZWRVqCPnMf/Id9GI2m"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0WjEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo6mA/+J/QhHzW52aalVfsOTAiMHF+5RiOW0cDxPpOlMHK11ysLHxQC\r\nrugIt99cnCW0R/JJDLwvj7umbYHQA66ib1QiA5RVlp/gMzNhjkXYve9R9kl2\r\n1Om23COlAYhQSgiZFA49/Qd5eYTyoq2AmRHo6sHhWQobzTLUcmfwEpxoGU5Q\r\nbhAlI5UvDgSXOj8BNLfV2zZl9D5iksDalICn3ql0IvYCKcFuyglSTcyWMcAJ\r\n+1rmL1BJV5yD8GihPERtGUa1290YAGXVFoBl5DjcK7dQDLU4wxlpEr8SqDzO\r\n1k2uvXA7L4065avnailsElOpWIH8P34wBJWTbtPZjWYFGcXIzBwKLThFdqrG\r\nbC2h6jc7l0otM9qmR2CqV7G8mPfr1+71TaGv//trcSEhSTWRmedt9211hTg7\r\nD8m3S2u86k0WgeUkMCWpHBx9M1vh3ZswRWKZo31t3eCiuiKOlY1qT7Xart93\r\nKGtc2ObblSk87LQnst3YgxcMEYkKVIJEzT6Lo7TRbN9O/MwMdLGAkYhPgRBL\r\nR0lPSM4gLL4nY0/kadt0Kqhn3SKkqoQS0W3uA0sp+klqb6wp5vp/qmSqDyIE\r\np1su9zfTryqUZnjfTiFa9y7HWbfYLUa1T0bPoUBK6m11y7GGiB1xlWxxDpyQ\r\n+zGK8pNrDsfuDSEU+IopMSTxp0PpI+fCyU0=\r\n=4tR0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.4_1674668228128_0.522999337024606"},"_hasShrinkwrap":false},"1.65.13-next.5":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.5","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.32.1","@sentry/types":"7.32.1","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.5","@trxn/nestjs-core":"1.65.13-next.5","@trxn/common":"1.65.13-next.5"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"15.1.1","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"5fc85fb2c6e37a06970beb551e94721b8a89256c","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.5","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-35MB87pXokPhGTlyuKd8k/P//Mq9lP1vf/U02AoALf2kANRnrmKDqSntc9VrU52f2iECXTZjZQfkxny/dAzU6A==","shasum":"621cde8e69b50ed651d09e79e95891b5d35b1b5a","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.5.tgz","fileCount":45,"unpackedSize":66350,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDF7u7lgACjeCGmJ/OVq3ZlD7z+lxHt+y/jV3TdscgpwAiBNVU3p9RSAVq+8G+d4t8NTNGlGWmBEdlwDKX4EnvMtMQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0jhQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCgw/8DmmFS29GTzNTjO1tJMqVJigsqkEKQ2zL6yilIoCdr8LU0e4v\r\n6CzTVgltYLTkNyQuWAUxMYB68s++dVK4Q8d+s0ehSyLi9XJ8kgjJ1GkPwhyu\r\nzu0JBi4Z9SwopOJIoL/6oQeBDeAhOlLWTNIUFXSPDUj1XmnPe3CC9x9w6HjB\r\n4BeZ/IyVyMn11qq3oAogJWqL/wMc4agyT0uyLywEGLVFM1KNNApNPYlcwQ+7\r\nINpvmZkopXYaEfSTlZ+7X9Ccf9txMySs3aMwkzfkYhPMVZL/kY9Md3bwIeQL\r\n+G6jkhUiCfczCQGDJnywLPqCielzxeS+wmOJEuoPWBE6HrMs4BGUlJQ0cjAk\r\nq4+3crU5TKc/4HxRXaSSH6fl93uV6850ETlFhfbTYtTUyNPWrv8Ptguprzrc\r\nclofbf+8aVND8fg355tm03GZV5gfF+tU8o9g49ifv8jb4H3dSLF5fYfZYr3c\r\nHE8CNU2zekWVTqDqMlhSGAWCBu5OwvS3wrwOg3qq47gA3MvboOSfEC/GvFYI\r\nhm7/LXDnxt7lNFnxT6bWBD+fTylP7Edd6/rf7s78c4QDamRwQOXkmpk7/IO4\r\nuD7faz9XO5zGMq8xS9JMVvhapTBAvWl0H7zjlxDjzgB9mn83OGAbooV3GASp\r\n2KAWY7765OpepEBsRlkNSLE/ILGHd8RvO4k=\r\n=4VS0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.5_1674721360651_0.06957339267580331"},"_hasShrinkwrap":false},"1.65.13-next.6":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.6","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.32.1","@sentry/types":"7.32.1","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.6","@trxn/nestjs-core":"1.65.13-next.6","@trxn/common":"1.65.13-next.6"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"610ab0ad111a685cced29122af31a44fd74ad656","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.6","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-gewmICvHvIWe7BcAjp9eymSq83tXy0d6XevCwTvssmbEO+wl4kMa/ep6DnGyHOmhCLwo8OZiKxusiMzNBdlNvg==","shasum":"c5cb195abaf48a6bdd88cd878c0dcf942953b2cc","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.6.tgz","fileCount":45,"unpackedSize":66463,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQDQ2+nqjgL6CIYnud8DZlsH8NKNyCVTPaknsSTdAcGAiB4r5zqRh4YueQZS3YQgrrDghOarX1pF1uxl0PRgo6GnA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0jreACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoy1w/+KbwKoqrJvVD3rtCmZKDzbwLwUpSNu+Sj0MFznA+J4TCLFx/q\r\n7WfBVpuBfnPBvGvjqjgdHiutEA73B+fdCTLXfKN9wSjtc1LE9THYh/QmbEXZ\r\nx0r2pIc/Jg5IgotjjDui8tMqY+gvFyM76i079NkxIjScoKxKOVz7/39PYRfa\r\nicxMkBVWH/6Z+hl0XAdrdJQFyK9FxEkKk4XHRvJyKsH+/DQ05GHDrNy51kpA\r\nCdzjcZPbKNam7db7H2WxWjxggJTjyLd8P+kxLBG2AVYROnjCwmz45iQquUg1\r\nZNIatnX1T/u9B9bq5BW9WUDk3vkLQQOuWIEDUIRO3ZhlxOHAttOuJki8gTJs\r\nMbme9QXBCUWBof+d0wIpyDwFnFKtgxfLtf7hO5uYYDFlgRDTp2RuYGFArV1j\r\nydLc7ppFL8KnW2MqVZ9VqbqGOl8MCIh8B/nq2CxC0eVwj21zwsLVZJ5y83RF\r\nh6ISHAJ8vUdhtnlg5wWHkNppJaWBk9kqEi/rfqZQuE29dvoWpkMXbAJ7TNHI\r\nTbd0bCo+W8ksmVoo/uJ7JYvC/4FvEN0HWpTUxrrfUL/mIvY9ZpnC8O9q+tSm\r\n0yPhDdLexkH8PLIdcQ/sXGUg8OcxCLdYumCYnE2o+LBbrZi7qEXgK37tSzr5\r\nJ0pRLYAZuLZSzAJjyR4tNaN/nbilzFki87E=\r\n=B7c3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.6_1674722014115_0.5064560954278647"},"_hasShrinkwrap":false},"1.65.13-next.7":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.7","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.33.0","@sentry/types":"7.33.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.7","@trxn/nestjs-core":"1.65.13-next.7","@trxn/common":"1.65.13-next.7"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"4.8.2"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"6646a76072ca33473dae29fce30cc727a6cb4aa0","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.7","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-/iIKZWvfvhaRFxfABIN8EU4iNzGsnrQP0pI+/v6uApjKg+BXV1bUX6D12hzAY6B1VXcaw+XQIm/5HeBh8eoBwA==","shasum":"964bf95d9023c3886695c2f07f656f059bfd992e","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.7.tgz","fileCount":45,"unpackedSize":66576,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICoOg1o6GRPck9MMEzZ706D7oN4JkEFE6Oi0rIPhUEyRAiEAp2Ng5mEc5Tu0N8xoDSS5+tqB3gw6sdhxvu8wjtfh8eg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0mOtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpfYA//bJWF2wRqQ/sgTpYmekaJV4gx5mD+NiK93X3KGSJGP/iDArR9\r\neUj3qLGbhH0TJO+VLsygq5Xjl+lqK0efxQJMxWhwWIDlZX5ElmQFweb6H/gV\r\nS/Am83WXQ0v/u6avzCQZea5nw21YzUfoYXK155OtkqfXtKNHyrE5rjE0C9ST\r\n71ZwMvgfMWEYEs5ecBkr+8gR5ng7DlN0ffQAgggx65oQ0W2REfKm3Aq3hBp2\r\nL/LZMCicOwwQPvcc7uyg/PCIAY01f3pdl9WCIpPWb1rlkiRqiv4nF9BweZyF\r\n93Q133l7QpHx6vcK5zoZX6sL1ZY6g/c9M6JNdvq55bBES6MnxQ3sklGZX8Td\r\nNaTpJsqdi0mOTRIE7jTikE4pMk1yKe2DAzSw5zJt2ksiIghnIKZqcMB+CHdS\r\nZfJsVi+MKo/u+dqlhAlryI5V5rH28M8EW7KpZ0VwdQVqHfTURYXYWGFNLAK9\r\ngDcnl53mERJ2Ggw5XT3OzcWACKo+i4d0C43bVcfes1rDoXBMaucs5nLqFbLd\r\n4xDDAokz7kUbJrN23gtlEAtL+8aIbwky6WQWS3VQ+4JlAOIeNx7kysn5imwd\r\nS+p/fR/yNSX64WnE3Nb5fMetVUNK8beokfNKP+4FIJlZh7SajZWSos75tJSk\r\nWWFo1NJj2vGSIpy0bTbG6PDDscnh2ro1vr4=\r\n=zazI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.7_1674732460793_0.3995482355146296"},"_hasShrinkwrap":false},"1.65.13-next.8":{"name":"@trxn/nestjs-sentry","version":"1.65.13-next.8","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.2.1","@nestjs/core":"9.2.1","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.2.1","@prisma/client":"4.9.0","@sentry/node":"7.33.0","@sentry/types":"7.33.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"1.65.13-next.8","@trxn/nestjs-core":"1.65.13-next.8","@trxn/common":"1.65.13-next.8"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"213c515cac52036b76a9536a5254ab8aacc49db0","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@1.65.13-next.8","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-n7hPfKfdmEFHrPcuiNxnqSx2E/OmJvy2UAobtvd9pBMfVmqWmJxW0mhmZOGcFCAv0dNODa780sfX9+kVeJ6Txg==","shasum":"c6720e028c9efdc9c9cda18f916365c074774480","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-1.65.13-next.8.tgz","fileCount":45,"unpackedSize":66690,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID7a/ZvuzMckcfvTZGE5dqJZIpR/pZ2q7Y6JnRqmMWTIAiA+Pk7jHeWD14DLHkdCRfh3dFQnGzKZalDfN06FfTv93Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj0oFyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqfchAAhg1TQortFcJn8myAalTIMSy5dHEGDQaR0IHKTIJTwAz1Y4Uj\r\nbk9v/9ohHuwYX3q97JtoPKGSaWJmros8dUcO2wABC7x6t73IUpFducBqtWux\r\ns21rskT0HE9xrGqOmksnRcM6/OYZ30cLEPtmD2HKHt2Knt+En5spV8HTvPkM\r\nX9MK3URrwaBmO/VD2QbpcwtE1ay0YA/FUfla0Jh5QZWl7yPHOJ9f8VWGElaG\r\nRbcpLD3PBfR7ZawGwsJHFbLRY+qjCJo+Q5uoeMwcx3DTlxy86Uu+eoLHh6u2\r\n1uASFMfTRCiZXrT2tO8w2Wnh8CtJKQ3ztiOMtFK2+HncoW+w8gYgu8asQBBS\r\nD0WY+LzX5GPWa8zlFVUNgQajO/5HDiAv/llalriWamFiwiR4qZIKVuLmEMNQ\r\neCZuCFLTdJ3LjCn/ONyflV6vCbcVJZea7YzmZjhK0S8ey17yxIbri3uTE0mF\r\nQReY2E+3cWYag8xv344FbTsMEJa/76peymwLT+RwXaklyZVqYGBV3+abldq8\r\n3jjeWdBvkGOgqimjIFRORaTy+DR++tdNgGKoBU2QObPEAkvdfboJugczTTlU\r\n8d+TuKojA22AtgzcVzldBpf7jwevJ/YiS975kpFgxII6stVtzef75fm6x0HK\r\niKmKGBMGGYKfSExoAHAr1pZLue1Ic9PE7+c=\r\n=no1i\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_1.65.13-next.8_1674740082188_0.1901863875167955"},"_hasShrinkwrap":false},"2.0.0-next.0":{"name":"@trxn/nestjs-sentry","version":"2.0.0-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.0-next.0","@trxn/nestjs-core":"2.0.0-next.0","@trxn/common":"2.0.0-next.0"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"7f0db9d34f2f1c0085b13d6da6579fd165b56068","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.0-next.0","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-vj9YjjH1tAG9TpcNkMTofZu19NVnIpxGcaHsL3RmFUCpfxnRBkq7WHB10zkhU05ThNV1mMYD/Gw8dnJ2TSoq/Q==","shasum":"634f88d24f2e6445f87d02248a28efc85312a174","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.0-next.0.tgz","fileCount":45,"unpackedSize":66748,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH3b0SoDXImAcvb3aSSXT6/wDQ8+KAcrlirdsQ10tEfPAiAXPRwBWTpyqgSHB2t3/XwzoOjbwrYHwFCLpoHfOYULrQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4MHKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoLzhAAmS25gRRwoKQcKjjNSOyuaiwwYYaivDdVNerHnk9JcnTOGrwt\r\nhwhFtqFR5C7VKjSd6ERnUqUrZPA8Op/usykHM5UbG6NwxeyA75HEU9sXFX1Z\r\n9N5GOUywOJGgX8DpMlHWolOgBet35Dx99ISHtJo7snasvqa/GE3JfV8T28np\r\nspwwS73CHravuUsuJwh6vPAcY+VGvlZJiPljZ5ym2VVlKdBigpfq5JF96lUr\r\nni4V9RLcJvwmqfYlVpS46MtQMvj3jT0ObHEfVAGpF8L1b1ujv/bJXFMN4lNk\r\nGtOq3BVdiXOqYqzF24GOZNf9J4w9xl8UWAL75CwdU+XBif5gpGfv0Wovt3YK\r\nsS8jc6U7/uS5L20j3JJsLWefJyWn3NuQnZ+3GPVKtL/KzjllYkTDi95vD6+P\r\nVx0jSj9UmwGCC/pe4KfWIZ4xYzPe8hxg2xEZTs6iHSGf7xRc6LeLO0HDI00e\r\nwjZvVtHOGx6YXbRfOTM2b/Gar72f37100EYxQS8VpaQ319RvROKxx6+J54hE\r\nKWwaZvRHLDUdQqW2dnxz/r8YNn6AmUEj2Bp3cW+bc7aCQfJq7qsBLEO/ujnf\r\nQUrYWKGDtUdAbTxjIViWv4++gH16o1dNlM2zarOmFr5hWPYARZtgV25VpcG4\r\nm4GYVvgjj/QGhyhdLr3XdbkI4xsYHpX3mw4=\r\n=d7FU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.0-next.0_1675674058618_0.631173065121593"},"_hasShrinkwrap":false},"2.0.0-next.1":{"name":"@trxn/nestjs-sentry","version":"2.0.0-next.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.0-next.1","@trxn/nestjs-core":"2.0.0-next.1","@trxn/common":"2.0.0-next.1"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"e0f235f84de6ee8af5735b8eae74d914095e988e","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.0-next.1","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-X4Bi2E+nRGEPgqg2TRKe7sA+8ryklaUorQ2MCS2ar65NN95CkMc2/T1jE2s6x+GWwuv60N5VpUrhcKXGm4+Sfg==","shasum":"34659dd7efeab842960bd7e85e9f7ccbb8c03855","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.0-next.1.tgz","fileCount":45,"unpackedSize":66854,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC5kwbvL+INkYcZQmB50nHwlcIgXnuSSMls/wjeGyLNdAIhAKI46w8tVeRw+lJ4qBSueOj0WyziahIZ7wxwNaSqByhL"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4MRIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQ2g/+J3PFn+jxqeaTNtN/UGTRpCpVjf/YY/RzHG/TIPcx6KxWkqvo\r\ndDevoqXrh7SQEMB35awVJeH5PdIiD4RDiZPrGB0wmnaC+fMtcVfzbUcMgJEH\r\nLSgkoD/UeqounUjpLDnvAmBb1UN2R9rld69jaHWBt7O35Ik139eGUOneaCaE\r\n2ovAEGafiTCyC7FbQm5++p4kBh1eK6pVEgjwpVT1R42xrWm19AbNxoFysi3F\r\nyeOzUO3iUET66KUtJ+XJz8D1bXde5SBauAVS7J5cBU9wNZDS74Z4lRrQ1Rnm\r\nI9RZXa/9WS46MDbbmMIM/8Veuf0IkHCXYq61iO7+f7H/9GM2OdEB109OaIr6\r\n1rMEiDAc894M1GzIBV/Mc1OUsd/38VI6cn/U3aRSW28koAc9AqWWIwjo8oEN\r\n14GnRJ8syQRMcG7XExrslB8FIrsmBoeeE/U3Y4+bSPPN0G0LL/201sAF+jSe\r\ndvtQJhExW7LsUvMfbhC+msTr3wf5UVYti+Keh5SnFL/5KX9DBeUufb/fLX2b\r\nBEiuxC9mH8lXJZsLr3xBWiYfiExTJuy845jgveqRtwRrZ076U6WrjMeHL9XG\r\nGRMARBA26s4vaMPFRGPff3+lR4SUo/5eB/HHf11y28DbWK4KZV4erN/xzStR\r\nXZ0VcVVGDp0mEPAp7jEpIlGvyUAmp9nBNBA=\r\n=N1kI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.0-next.1_1675674695849_0.8306936769290005"},"_hasShrinkwrap":false},"2.0.0-next.2":{"name":"@trxn/nestjs-sentry","version":"2.0.0-next.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.0-next.2","@trxn/nestjs-core":"2.0.0-next.2","@trxn/common":"2.0.0-next.2"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"83687edf09c1631f58f246e24927b5bf51437ab5","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.0-next.2","_nodeVersion":"16.15.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Jzw/p0WuIL6NHXIn4jz4N+Fc3pUeyvbgTz2XqwIt0Z1LPCtB050SvqBWjWGOtRJZKo8WMyj/k6Fan4/tzgnkyQ==","shasum":"e2176d81b3bf7359347b00a92fb7d4ed66a98a4b","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.0-next.2.tgz","fileCount":45,"unpackedSize":66960,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDz3zGeQjPoUbu1IFGD8PqG5AtcG0BczDb4EbRfVyTTaQIhAK+9LOlTzHd30S/qxGz3pAz5nIBg6Srjd+ZRPVR6T3CI"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4MUyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqu0RAAmbhIOFZnzSmy/JRRqtFMXXzZ+UIvtiDi42RC7IQeOhFW4vV0\r\nubI9bHQNQ9b+9zj66NsS01X6MRMvv5ZieDLFTx+LFL3FiMi+U3JO+z79fXXN\r\nEQlk2V7diUzK2iC9BWbgSNxqO7qBQG1bAl1vyXWF8HKKoLYMCydVf2oKDnBI\r\nTmwzMq1kFpuJke/cvLD8zvoctHSDYVuICclfdvCZMGMnSK31TZQbWImNBNNm\r\nEdrCkTBd0GhKb8aCdtQNg9EGfmXv1YH08GUBvUwryDc5R10P+3R5BHyFfr3w\r\nXx+ftjY8C2bag0CbpF+lolgCWo0pafktlKY0fc48/ym/AZpVdTuf6SI/Twgx\r\nf3E++ynVtlmaBcA5/WclAo2Bp6cRltM6BSK2U2D89tSL/CoFHzaakW3zQ/40\r\nYWNC5UhoYKpRh/ewAJx3CYrJKZTk2ckdBtfgLl14xb5ozuc5Zv1VNnYJdJYL\r\nFKjamj0MBDv/3pj5OYU33dFMZNKQc3+yzPQuSlTZzu4GovOlhLQUiEHs84WO\r\ne6ClYeJlGtfAgqoGo3Fr32gSfabuZsjJ3OiA20O5w7VSZqGrrfIvH1Q7caNk\r\nLQgXHS6GzHOaYlE3yhtqzRBZeW55a8+w5P9oYHO6wDGcRClLb7Q4Kpr8wkhd\r\n1dV9xYR6aaiSnOtsEZ8hK/Du21KyMtN4q+4=\r\n=0TOT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.0-next.2_1675674929975_0.5246341101152039"},"_hasShrinkwrap":false},"2.0.0":{"name":"@trxn/nestjs-sentry","version":"2.0.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.0","@trxn/nestjs-core":"2.0.0","@trxn/common":"2.0.0"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"49720ca747ce93540a813a5cbed98f35f04e4a0f","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.0","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-20HoOgD3NO1EHQwejX2NWWrAhj7NxiDNmX8ol2xZ00wwmUC6rUGtsuOXnooV+yXnogv1GFZ/+z9/laAiL01Exw==","shasum":"2c4cbdc1c1a02f3cdfbe0232d62e2af64d5f13ff","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.0.tgz","fileCount":45,"unpackedSize":67700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDjx2MSQ55yoka9KNz+bgUROrAkObjMH9DMnbQBsA+AgAIhANKdVMLwy3E+102Src/86V2HAM4CUrf7Kd06un+pm2CD"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4NkHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpyBQ/7BwfuscOB/mN78L4uPbGHzEXsAf8zdF4/UXknV/1VfZlfkyuN\r\nhMYdLRxXjyABP5Fu2YjBxFoWnkJshQDmEqkfMw35CyiPBUddkofAWLuzZ6/l\r\n5adGi23LNxwbHBRDxjA62hLMJCL4I2TPZNZvX0kQQGahpPuLAOrE006hqVjk\r\nMBCVhCkFNN0DCM3zitFVukec5Pnz3yaOBrJ66iBEtLyCzjwMHFrMixgoFXuT\r\nbI/U4rdLh8nYFUTTPMtIaByBJ1EsXHMThsmq1t8Owv4+J/nW9i53OEXnc/sV\r\n6+YKaTP1klCslprOOT1dtzLqxPCCd/VwqDT/UglmWsh8cEfiI8EtTAsRs4vr\r\n7mYlVW/I78SPmWqiUenr+XcKSe6bu895JU7i9/rXH5sGipLCmvwqjDXNv7FT\r\nfCRqItmGs9IGGwaT8nUmRuSYH31rkryHFTJJsQ1onyCGfwMT6KzaiOFqVaXp\r\ngPm9CB1vj/mRE6wYLHFY2ExC9FqcoAx7w2tcrF7OEhT9CDjqtpnnYsV4bcDS\r\njgLjncNM+04s4aEe6H4K89Qt07mi0SFsj9MewlMUcsE90VLLKSr9fCk1qNqF\r\ncVWysL3y0xs5+8uDs14W6+i1vohdZcg3mvDJ9KQgbP2+8JGCnNHP7XENzXf+\r\nI7p4IbaG6zajhhDraF0Dz2iSVprZob3iweA=\r\n=zGGm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.0_1675680007370_0.9604910309799213"},"_hasShrinkwrap":false},"2.0.1":{"name":"@trxn/nestjs-sentry","version":"2.0.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.1","@trxn/nestjs-core":"2.0.1","@trxn/common":"2.0.1"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"6a31edb5884a5e43ec32c39c9107b416cdb20113","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.1","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-Qv1j5OFn/itKl74ORQxE2DdhX31aSXq6/hWWUKr9XU+hz1tDRJxbljkAUcYJhq4LexA3tYgnE3zpcDpy5EWpdA==","shasum":"d1195200370fddd492102326a50887c11407b8ea","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.1.tgz","fileCount":45,"unpackedSize":67786,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCULzpYi+5T5tqWkivYHgD3I2U5bqksI80RwmXFnmJIQgIhALkQEe6iqSC/WBJ1ZrRNee6AkKlafDZwF7gUmw1EXQUf"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4OaNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoYIQ//d4OPajU4srtN4v8ZFmGMY5TEOWyy1SupXJgQD0oEVxHoPVLY\r\nNE/x/A6K3rvI+O6b1iQ8102pt50PwAAsWZ4tfYw5nx5CI2j/JJMtL6hl+v04\r\n5NVR63j4WF22TP5TAu7fXLdV5pCmySFSaiP3sfB0AM2wvYbHaEXuAmCS8hQP\r\n6KFUBWDJgvy6U0f3t+2udQj0pq4bISq/IDDibtKb6TpcBx2KN/i5DSG7B/XM\r\nmLR32ZtUMJQVEilpY3LmGeeAqlNVZmOIbepWHMjv0vQyrVyWqGUzAGefHbbe\r\nGjxOoBtDs5EtEBLJmqtT3r8sY0i/qNu4fFS+yg9LWOfGOs3elDvvIEoWPYVZ\r\n0gdHUydxQEDKZJwxwuNzUUeo61PBEFnoStxcuUzEbvwKx9MzGPMLiUdZd6w3\r\nSJnZs7dunDhGd1Q6l5PT7op8IAJXdswN5vGG6R8lrE2jlRK38TplNoA18Dd4\r\ngd7Op72i/IAAKrfZFyNBLX0ItulhLxQgEtl0y5ysgzWWiY0Fz+1prD8BP44y\r\nCJ7jKEXXS+5ZA3hkcPHgYCqWSGE0aTXZW3zMJxi6+vAltLXu/PKSBlS6VcvE\r\nidCffY2LnDwGITqS3Vjpka/sUYVvMiampVSi+Do/4LYPm1F+tir4IdBJ7kX/\r\nm0OSPiXuimPpftpXiWbSvJaOQpryq6Uo9sc=\r\n=8xgD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.1_1675683469024_0.7723300293484625"},"_hasShrinkwrap":false},"2.0.2":{"name":"@trxn/nestjs-sentry","version":"2.0.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.2","@trxn/nestjs-core":"2.0.2","@trxn/common":"2.0.2"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"822237ddf67fdb18b5a322d3e6d15dfca1682095","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.2","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-j0ZQTCnO+Dp3Jp4FaiWKoQSqzGwDYV4im5Ly8Jy08W3oIgdlcaSlEoTYohP/yBjijyw00N3GMo4YOVaaQbY76w==","shasum":"1119f7feec1bc30229d0de296e4066c797c18328","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.2.tgz","fileCount":45,"unpackedSize":67872,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNb/3w8SvrQuwpCzc9X3N8rZ1j+WEKKKjsQIjjFMqx5AiAtXFU3RUoyH2VOIR42GzoZV2woEd0FPvy+Cd1ywjWAxw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4PiNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr3tg/+ONqYRMQvL5Dqz29fV2Wx+9ZOJGRqRCkJh8p0xnASMXHIF6zX\r\n9KpAGexLQRFpnYfuZg347d9iSC5E+ARulvV2o1H7LITSIw5Avtyw+0tkSnwr\r\nylqE88/ujKVjtL1SywnPC/BB3s3eJOt0fTkA5qGl025RLy72KLX8MSDIJVs4\r\nfpjYl2M/uIYHFTckRr/CTBt7RibJqx0K15ZaEe48Eea0n+v2nlahTowCzaLG\r\nqh9TQvoieVAyW0bE/iqoemCcQmceIvkrfcbVaj60DrLJC3MSy8fscN4q2d7q\r\n61Tx9qUGfTPqQLf26s9GsOFtYp4A8BQ4VvPa3bfIHoy6+RWvm0kNvePD/wjy\r\n/rN5u6s+LrE/CoVh8SftOBODj+BWa3lVy+rAK7ufXMJz6qzUkQHhe+aphY/g\r\nALf1ohmbO7WE4OGs2nG9w1/v89BX6FDER18yjwEjGvWLj2cizBFCCbL3prWo\r\nEewgc/qrTBQyQtAwaMKpL7slOjV5RXYdchbEvIi8bR/ZrRrjeqv1sy5I8VfG\r\nmpj0kd2wBl+MudjbmdOB1PhWmrp9e38hosVOGwvxBW6M1SD443Hmgo6yKn8r\r\nqG3YPp1pNrbEI1nugSEg7v8P00RV4fsNRcWwV9UzOPwaGg8dRssVYC9YRHBA\r\nCtmCkfyeqmIXPOpLnCfwWhPvraaCYD9gIX4=\r\n=eqNo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.2_1675688077307_0.6169042618106477"},"_hasShrinkwrap":false},"2.0.3":{"name":"@trxn/nestjs-sentry","version":"2.0.3","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.3","@trxn/nestjs-core":"2.0.3","@trxn/common":"2.0.3"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"d537a5826e6649bcb70571ce15e3ca3cc33948de","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.3","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-DE5vIet4M52oWhC5bjUfeV2gZ8fP5icixEFv1yKr10/mdcfU+o94ir74zX2ZCLCIQoOZM8DfTV+PW6UiIFJAxA==","shasum":"5064d6e2a0cfdf081a717c256a56b8e41ce86f75","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.3.tgz","fileCount":45,"unpackedSize":67958,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCsyhb4rPjxhb/CHJp/fKbjcJgAeJmPBcb7ExpflBev5QIhAJIkDs965qkaEPCAQKzqwohzTGCNxnZ3WEe5tE7ZgBZf"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4S5SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp++RAAlmtCUVY136p/KHLVE3N4S1AS+qtbHidKFuUC3bTzSW15/yRG\r\nhQHiMVapId8ObJ1NLKz/8/Awkh6J4D/W8RRmXzGX9yd3LjZ75hTH0Xa1AVoa\r\n8Q7Qh8e5YVWQH3po4Dl0cRj4aB0fNhzrYNvBp0tULNKU1xDR9ZqNHUiKSV/B\r\n92cT5pbuAGzDB6COgI2n6n73tAfPGhSMRPE/Md0bdnnUJ+MZbtNYHcploo5j\r\n5oiHTfozzh+ve8mG10uGtxMU0Lpo/LiYB0XKVdg2SciV4XrsFe5rMRIQyASQ\r\nKwOztKLYLrpQyLbFiAvlSMeu/H24DfmehmLPuPxCfXjeXOmlS/BtoBMYWHbr\r\nm84JB+fM15TVOw/6b16nkmt6szP9JBiZ4VTNf3kc4bJjrVHLHU5x/nRxbn71\r\njUFXOxmgVkH6X1BCR5X6ceHogKNKL9MynbQ4jL8ff0fPp921vQdimCYdkqip\r\nbmoSKI2tzHBi6Q4paXO9kXwwtB8JKAs7PsRauV2l4EYDIGyZbPrh5qMniTaf\r\nMwgxomRQ4pCGPmhvLd3/yZCSG4tP6yt+LtVBEYRAD+oTdawY1eKvCqDf/lUg\r\nu8Ctwmco4pLr9rRVbC1YyzhB+l0fZeFZkU96QjXen32RpvpoEQVvG2nKNGr1\r\n8TMkr7mPlb4qLiQi1VWDIeB1tmqOBOTEFXo=\r\n=Mzt0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.3_1675701841845_0.24844331040437684"},"_hasShrinkwrap":false},"2.0.4":{"name":"@trxn/nestjs-sentry","version":"2.0.4","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.4","@trxn/nestjs-core":"2.0.4","@trxn/common":"2.0.4"},"peerDependencies":{"@angular-devkit/build-angular":"15.1.2","@angular/compiler-cli":"^15.0.0","jest":"28.1.3","postcss":"8.4.21","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"acdd3d28f227c51693a9374b23abf170ccd27cf1","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.4","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-EZeFXw5w8AnNEE0S46UrTlt2eKGcwfi4Gl2IPTtdzUNYJnDPPO0SZpcGBp5ZlZyJDSj2BelDqXiF7qno4SawvQ==","shasum":"3d5fe25437994801eb4bd968d57e3726f383fc51","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.4.tgz","fileCount":45,"unpackedSize":68044,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPzFuTs8Vsk5rU44ROE00wX+fPzBL8sWezGBkkurQfzgIgJ1Y2GmVaOK0baILWzD5C7ix5XXUwGqdYKkgAC/7dhUA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4kamACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoa6hAAkrlfqok44gDRmkEcjss6FhmaOxympAf/ogHF5v0Uz+u4+i0U\r\npSroW6CttajkuJHl8Esfy53mdzZSR/YLNDOXeyf19fw6x0hFwR0tKE6vTSd4\r\nr7QEGpI4563THnYWAt1idPOa7WWA4lpkdK/QTtM5u2iLrPkN7cDIFSP2/U5f\r\n4bfMoJVAXwXI27s6AVi0rpi6B2mKnrvSfDTsnZjuxpcKZxX2GfJ54rWgD9Y4\r\n51MzGZXzi9nLRIHHBfaBMcA95NfSrmok4DRDRnlnb0OvRIO9M0WhY757Cl2T\r\ngjsmPGEkbcdpLTLfWpg+olO6L3SzJq4f2twXPkbqK6aQvz9TT3J+iYFX63Hi\r\n1jZbqdhPgYR4k/0ETbui+Oc1S8CPzqLORXJQrPMgLGIPEYV/yLzLqqJrPh2W\r\nSrUptE9rwvtK8VhP+r5u6oU7/QV2thmZYdhxp4XqtY/qw+N0lSbNqkE2P810\r\n1shPR5pb1g3VGrudcxFDMEo0vtzAJH0SQG2JmhnYOcoEuXZGULE0AMrZckri\r\ntwNhYBpMOhHUjzDFSteA9BLTn/vM2ea06H4Kc/hFY3h83gOV0ORcviMV2Aut\r\nKAqIslv7gyqz6qPc73AHPwdQLetH9wXbw2MZXXhRw+d7JXl19bWIoKDAoaRF\r\nIxFQdrB8LvGFd7sPrlWoB6VATs2+LOKHogs=\r\n=xkuf\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.4_1675773606610_0.08741040142806367"},"_hasShrinkwrap":false},"2.0.5":{"name":"@trxn/nestjs-sentry","version":"2.0.5","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@angular/animations":"15.1.1","@angular/common":"15.1.1","@angular/compiler":"15.1.1","@angular/core":"15.1.1","@angular/platform-browser":"15.1.1","@angular/platform-browser-dynamic":"15.1.1","@nestjs/common":"9.3.2","@nestjs/core":"9.3.2","@nestjs/graphql":"10.1.7","@nestjs/platform-express":"9.3.2","@prisma/client":"4.9.0","@sentry/node":"7.36.0","@sentry/types":"7.36.0","class-transformer":"0.5.1","class-validator":"0.13.2","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-essentials":"9.3.0","zone.js":"0.12.0","@trxn/nestjs-database":"2.0.5","@trxn/nestjs-core":"2.0.5","@trxn/common":"2.0.5"},"peerDependencies":{"@angular-devkit/build-angular":"^15.0.0","@angular/compiler-cli":"^15.0.0","jest":"^28.0.0","postcss":"^8.0.0","typescript":"^4.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"ef55d6095ab581949f5592122f6e2e168d7ae0d1","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.5","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-NkPPJ3aX54EwvGyULy6sJ32qf6Y04Y4dJd2b8FDMzyRCY2riIuQddH0JmzTE8CVZoCL6/ZmcnHLC9hEjKHEhQA==","shasum":"a8c80e3a31f6c627e93844c21cdd9bd40865316e","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.5.tgz","fileCount":45,"unpackedSize":68132,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGLoDFd5yhVqRiswsf1goRadRb1NLwWbmsb1FcLkJ2fLAiBn7sqdegHOQl3d/j0/TGbuadSDw5jHrsik+5E1BT2daw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4lpAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQrw/+L/Hlf2DRsJP2pOhy8ZQlw3TuJVAc8rr3iJU8yeHv+sl/A52x\r\n61n5dJ6W0jt+hkPsQh+HCD+AqH2+AthxTriUhIZdsoCsHfuWjwTb6XR8YWFd\r\nxw70pGAi1R5xG+RQcDEfGf4yfhaMHl48Fs0C0zYM11SuWAUCpmngbEtj7uKb\r\nXIc09RVFYjOk0wGJf3mg4mn9aBLZOKAEiJxAPnoP23WCMuOsYLUeRzXRZiTA\r\nRPAYAJzYGn9D6OxycERaBRlqLFIDkgFDaprAjED1dPS0mSSvSLfPJlosFua4\r\nbh38jr0yHpiJgDSr6Qg4d0JwHLHiEDqoWjHVghRgLjyi7cW1ISlv7d8L3FYI\r\neMXAOZFCN3eMUVWRYjYMqcRf/nU5wNh53Jvl2kQ/B1tLW8BGiJlzFJLhN6C/\r\nWYzuqxQ7c7/vXmiIHhJnqyLfb/fJwnrGJs/ho82coKzomGwDw4IpHOwMoXdO\r\nAteYkdqSHq6M5JmpiLjEJwmzLSJcr2vk5B2DY+SmEb3+sHp2AppfGlyDzIWg\r\n6s4jvCVkzZOfnW9IfLHjxyuK3oyGHsGthg3OgkcPWh+Ztb5ldEB3TiuLevTS\r\nJgXrmvTvYx0SnMyVpccAbx5Gb5xwiGEAveeZzBBlB7WyIT8LD1knCRRTsBea\r\nN0rT6D72V7PywlwNvLMUK5/4g0s4CYwmV+I=\r\n=bcUy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.5_1675778624489_0.7874031240321826"},"_hasShrinkwrap":false},"2.0.6":{"name":"@trxn/nestjs-sentry","version":"2.0.6","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"0b36cd4dcfcb9bc61d2a3ea9f3f17b03de6a3107","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.6","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-zYFSVcyhS0r2WvrSf1B+/AwQtpKdNvhWuYOGpJJnLxUowafrjwWADsqVcXuJcMGTisvWyGpzJtiWTONAbrLJcQ==","shasum":"0bf8b4a47422c8f8aa58944dbcf88cd351319562","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.6.tgz","fileCount":45,"unpackedSize":68085,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHVC3tKFnbERGJ5gJyqcbS773U/aahqOR9htc9Bg5oIAiEAmhrahYU83i0X1dqJ/F/5VtjGT4jaZrQwLQjTWoK+nMM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5NU7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpSOQ//YME7UsmANgjtmqy2J5u+Dg3um/3xq27hDIRslsJipvIDzV4i\r\nexB7PQCP/ZpUU+LQLGosIAjn4/I5cthT96bBdnCp8sFkt8MucZg3xmIYxbAE\r\nUTkji7AlV1RmpiPeQc8x/frg4zmt0OYhZQqnhutkKwDUmZVP9Ovo0FlJJSYL\r\n9ogK5zTWx+Gaqs/5ScC83OXIaD+LbFgPBhIzDufV7asl6WP0Rp3SRmyBSHc+\r\nDomA15W3uO5EnUg9QdpIAFkKx8TNgcedERlrLCYwLmi2/BQxpCt4EWXdccKw\r\n7CQHuYa+6k4949pjAUwcL9u2FVQAr/nrNrjxLku43fuTkDT98xUr1LNd2Dve\r\nx2cbWERTzOx1XfDyisXo7aIPi8pYZBBfvv6eKMVgfnT04imWJitT5beqhsUr\r\ntqRoPEdZxdDil9sgx4THRkBBY51sMqV0OsF/m7AdfhtCNvktjSc+1w7pSK7y\r\nwQfXb5fcTwbmE6OfxbZCNTwGhNbdGxS33gJO+/DrzU3tpoGKMeLeSiV71S+P\r\nHNUL7xA2LaiApz3ZE5VUEE7Zj185nBnxty3nuZIxpOeZou4fXGT8wrYgtYtt\r\nTTASA72xDyB928jocoiWSAR4DbA5beco+R8ID3nCgxEPlvBq/aoa07he3Gn0\r\newOpDuiQDScjEUdpeksq7p2OgliNRbT7tNU=\r\n=F1Na\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.6_1675941179287_0.2281703598103093"},"_hasShrinkwrap":false},"2.0.7":{"name":"@trxn/nestjs-sentry","version":"2.0.7","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"e511659a130961fd12ccc2451c3c6ebdf1cdf3c4","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.7","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-QmBUUoL57lJBFA0tq2EHr8Lcjnhhv7yNZ0Tnu9CYVo0Oj+QUu3UyYOTmvqm4A9Fex8XziA84DAcAUzV5QtMOzQ==","shasum":"811e1bf44b40dd0c179a8d00bd671c636ce9a351","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.7.tgz","fileCount":45,"unpackedSize":68171,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAcx2edJHpgwtNnWbHVr5jXU8t0jSJ4LQn4XjHxZELl2AiA2mOWKp9GSA8U5JFHWoDt62T8MZg62kwvHd5Z8J4fD6Q=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5QC+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrG7w//aE6UD14cGzNepRFvJJVwSZry0TQRjyYSIytJebrKbTeaWRMR\r\nyCHTSzw7FFS02qWUE6JoHTUXZP0A9w/00LQp07oCR1ZgPjhdRJMgXh7VD0Yl\r\njOUR6JBV+j4aT6LASY5v0dYbkp5kQztfE5mjoh3I6j3WTzO8CijtzA0/WUPK\r\n6291MfIDYWzBS5Ezd6sOvN8kPYQsN50LdWTVK5DL+cKUQN7I3DrYMLcLyZaq\r\nfLAT5s7Nv5fBFQRMmk96u3+/xhG5NC2LQJoM1DBivFC/k6XdL4BSPykXn0uq\r\nJ7571fgocWw28g+9T8GrtIY4+d6Mg4CZjDFtIfrCDIVdFRZuYS8B9L6pdKk7\r\nPbcr6GQXOPb4sZQuRWibnpn7qruNOWKg5OLSZafLB2rgFUlQtgc+85W/ZeBj\r\nxpa6GV+RNZujxkRtx/WsdRtrE1C06kiTZ6C7bViwFoKOC+GWKouWHMrksfBJ\r\n9M/po+mtABUSgOVFn8o0kO6r1YTvSQ3MCXu+sHO5EYNgGi+0GmCMNN4NdpvY\r\nU0R4QtDweTtpY97zmjJHnzshyM5bDQtSyPNqCU/fdsAZqDpP76se3kvfJ3wN\r\nB7nz2zgkOS+KhnsEmsfT3uX16fAM7PX/jmpmLs/3DsU48kHqZMmTw3Wd1o3E\r\n1OglVpYCc2GxGSPEx77juGGUb0uLhEflMBM=\r\n=dGyM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.7_1675952318727_0.8616332270575007"},"_hasShrinkwrap":false},"2.0.8":{"name":"@trxn/nestjs-sentry","version":"2.0.8","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"2f925baa040713f73bba69a3893186cce8a71909","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.8","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-6bfzXDzwt9vmC+xzxen2X7SvCFxsJ5GsFSKYFx+x0F1GZqEVx10VODoDDg8F2UyFQiF0GxBCEeNp+A8NpsIBMA==","shasum":"d5e10ae26ba5af1070b437b5cd52cf6f43f2dab6","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.8.tgz","fileCount":45,"unpackedSize":68257,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYYNUb6YvCFgWY2fNX5x+YHd3hugSQdLVVsHvPKEDNGAIgKpIdJnTv1rU3gbrvDKeVmvFnn4U/k5Uu5IST3FdCVoA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj67JRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0Cw/6ArlWlui5UdDHLq53sPpDh8n/BgfsrojoeVoKh33UQ8DQqid5\r\nwQ8yzELLwJjsmNHsF6W7W9aGK6yjlXu9+pTrC3CvljorCpAEv45hvhWJWbIE\r\nG5XSNKMfxz0OumE5ZgNbCpAn1PA1VQz83RyXmxB0bCX310BDqsqH1eW6uN5Q\r\n3Hjc14I7IXIKBHgc2NIRKrYP47ZkroDZ509L2j4yG/niyYp9QmYwf9gz3M68\r\nX53+/k1eIK+hQAIhLYZm8XIKyLUCVe/+qSbqdfxYUD2oz2WITP1LO7CJMoA/\r\nvBFVdvK41dp01EetQvmqGjnILHz8TyiCZ4I5W6/Twawf4s/CrZWpZi+kJeeo\r\nAxEsqwX9XfzkzXYg6V9WJgOBe25DU7BKUtmhu8K4eizuNSZ1dx/vFB+kfVOO\r\nXIq9y92Jjp43882hQAfvvB8TEurssCEyp9JWK360yGVQqq4w3uJ8kv7NvqP6\r\nudBUCNOXfaAgSaW5R8KLKGtPNdkNIRXrxiovz+WI91d91QjqDJ53RZocfL34\r\nvEZ4FIi2CAdxYEYydqIuz6UjRqUjpdqY8PjsaLz2KXCbbXBY9/T9alvnb6n8\r\nP4oj1PU+LGTStihxbC15AIVJuMeLNOVkI0nYg7Ad1PI0eJ/qLao/YdUzsmCt\r\nCb5d2GhaoISxBB1uXt/QtiiHTTObQ0z2i8o=\r\n=VYNx\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.8_1676390993543_0.5602223670531514"},"_hasShrinkwrap":false},"2.0.9":{"name":"@trxn/nestjs-sentry","version":"2.0.9","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"cac9ff0dd3074418f254c8929ddfddb53ac733cc","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.9","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-/OLRxUzDBSrq5uR19Zw+ZiazOPDjoQ/9+YZMnoNgI+T6Fd3FLRJylEiPYCjKABoZdnAmJaeBIpN9+Pecj4l22Q==","shasum":"6ec7ad4e0848d1f2f3780b6d9d1ae2725ebe4098","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.9.tgz","fileCount":45,"unpackedSize":68343,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtHMJERgI5x72/QHVKuWmgQodbS5geYa2hbmlLhk+UcgIhAMhY+d9jJT/WzOkgZOby7S7gu1vCpSiU/eFD+dO1kx3d"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj68nsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo/Jg/9EyZBgbveu8WkbMRQxWepCkW0+jsa1AqyPbiyJ/mrGQX0Jmgz\r\ncb0Z8V++n9F+3Jpo2CVhd9pkA6DwKDjOTHM5WJpUhVDP1Dp5GgZP+3iPNiEl\r\nQIx0ef7lFuarsX2cw/B7Wk9f+doOOeaGuMAkoptAFllADV4ZaPs7EZg6FAUc\r\nYcfdgWkZlDBgjZ6zAm2u8dAaen4CJ7HYiRaiiV9cwUSO3kTWSQ8lh0ri34j7\r\nn31FqoYQbt4l90EzSM+ff1s/gfhbDzB+Rz7l7ZNgubwNVNv0flvPZ03EhceB\r\nFzytExBdCYtEspULmbEIbu2mrPrgVNkqrk+80Pb5NwnrOPGbCTX5yRMdgX35\r\nNunojiGeg8h6sz4CfxrIITc/MaLO/2Q2+Lyt7N7CDXBx9LLJPUn31g7s7MUW\r\nkzmC1ImS87TkjCVUMzUgEJeXmaGFX96WqEusiG29hI8YpVTmA1514B0rNa9p\r\nxTqOlFlq83GFdLb/n1ykGHvCCDDttb0SmpRZHolmw3nrPSSTQyOtxIXVS0CI\r\nfCDwHlkIbCyHJNEfUiSLqfjGWxGI3yWrT58ckys2Bq0i6Aftj+M6RDUL69hy\r\n8nQ0s7lA92fisgwhWMoVaffbSZyQ2HIMWck1RWETUECxz4YI0TabErkN6pEY\r\nAWQXJkRq1seLBRfIZ8TL4GlQpoZi6HkSAKE=\r\n=nToo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.9_1676397035946_0.051903005830588045"},"_hasShrinkwrap":false},"2.0.10":{"name":"@trxn/nestjs-sentry","version":"2.0.10","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"9898281f4ed1ee187b32668fec8a9fa8411c1f11","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.10","_nodeVersion":"16.19.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-QzjNmTpArK8TUrUa+QlSMBE0loG7CzotO223xPgQIuxQMw3YwuNRPxaAYc02xrU6UWaKGCO4XhJu72QZ6UnYLQ==","shasum":"f445b652dc7021a34d8588361f50968e367adf7d","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.10.tgz","fileCount":45,"unpackedSize":68432,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXOUnEEmGEtBOidL1MbJ/tIrvBm2OIvhx4teD+cFIltgIhAKYEBHVXKaZLbkTCmlJmrJXuiL7BZtDwwVPuWbXR69Kq"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6+OeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqW1A//Ud+ZwmqYacpA4xE/jpG4SlH87VTMXpo09XrYFP//wBwSRNPy\r\nYbue/ZuMn2Fyqi0GRFR/LY7WlC12J5jVSShOSKUoe82GjVCC+nvDed3XuNYe\r\niUnNQTkP4nk1rzDhSljNb8eiQWNABCPnWTyvJin9puEbpxBuc8kKz8cezYiP\r\nWCjdWvlBJpxzuT+/xaxalZVvZtpVlkU75OmbAVthQvc4pEuMN6gv3usApRdM\r\nhHivGEmuqyl6S4yf61ohKhOiRyL5z1uonkTygkHECDRGZcdCjRh1LjwRYILF\r\nK3lomQBMAVzkxie3a+pyuta5WTtSq23Y+W0iG78dpByME4iJosf2rukJacOP\r\nsiCAFoHEi5osVaA0Yqpm19IBHeiDsDbqjwlNndt8U6mAdliY75kX0eMV/equ\r\nHC2f9q/qAMDkcJ+VPkX1Ftz67w22TQOUC4peFppV3kY6ymHujbX9OEh7LcmK\r\nRqgv8OArT031DD/qTuwXB/Qp2TflC4UttEmTe4AshfFTWixw9uxN5VyXfJad\r\nEfYpg7ubMmpTMrb+nPnarGgU8piX1b8LbdwqM3yJU1dNpTEgf8PPi35pzNhG\r\n89atSyTUgNH2TtNO9VON3qHotF0IGoxP1OcGYiEN2MNitTmRe2R9sIjstpcs\r\nYr4W1kNBQXuFCNm/ornDEo15jY+0kuumzHE=\r\n=lbmL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.10_1676403614716_0.3628014245239688"},"_hasShrinkwrap":false},"2.0.11-next.0":{"name":"@trxn/nestjs-sentry","version":"2.0.11-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"49f474e68b40ed22ec90d9ff84b3c3314a54e615","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.11-next.0","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-TKmjYpo3UbXm8R2bx5Fwr5nbVmiN5m0VpTj7Yb+XElPlGKP51jWXaLvrGeKf5PE3OqOaKQLp8PN2sMk2zH4efQ==","shasum":"57f21f0162d0f06cd7841f423f91882ac21c919c","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.11-next.0.tgz","fileCount":45,"unpackedSize":68684,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG0qH4U33dCAcK4q5/YYYM3zlsG+fJ9mc/+C+CTAvqivAiEAstUWnry9Ls8u8ON37O0BNJZkun485mHftctV+dqV0K8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9dTPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrS5w//UbHFbHRYblbL4tz4hxM0H5eGM0wldZIDEKu1v8sxAy6tLSgr\r\nPPA5/aCxbMCDFHWYsjkASNua3CDlcZHJfHlrNRj067Wc44WR8EKA/LTTfg9y\r\nRRPP3W03mRYr4jXSAlu75AVaHLhZkYfPcoabR1jD/UrgglzFvqFnWBSipJZM\r\neDkB2miR3bgvAaknFtoQgf7xQ4uu1qvHQUOo6S/2nhwF8PhB3KcUXA13/iQD\r\n016yKLzqGa0wSInoQbLSPTO8X9DHszRqm7mX+AGVEk5rFxcds7Sse8iWRrEI\r\nTf9JLHMz1vyBt0Cwef2vXEVam3L4ypF5ztTQw1i5ve4d7rhBTz7ZwHnqVLJR\r\neE9LFMT9uk1DdRuOAtf+Aq6O/rsRgDGc9ipYML27MqA9J9nqv6LL3hRi7mA+\r\nwMNvyyG9IGuw2KEvgg1RgwTm0xm+Cxu82dt95jsVUiuAx5zs3UXUlSkqXROL\r\ng/UOU/Q6kMzaDc1H3/dRbDrtUFvo4HU2PUrfTnSqW2G7+JKiFZMzhD/ehheN\r\ndCZJlIafovn8DAr58RCRm1BV1iHqKhYRfX/NA6dKlmsHWk59q98KBLQF0kFD\r\noKAkv2ZXRONPnpCUjFsEqDp+4bEVSDdz80Bcks+VdgWeENvuXcHqLuUAEc+q\r\nCvWvTihUHPHfumkq3Ol3IKtYHnrpZrcOytQ=\r\n=lkKJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.11-next.0_1677055183742_0.831295898077431"},"_hasShrinkwrap":false},"2.0.11-next.1":{"name":"@trxn/nestjs-sentry","version":"2.0.11-next.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"99315b26711d85877517b925059645dc0f1470b4","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.11-next.1","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-X8/GWFqsesPWPiFVHAnfLqpXuKTJi/DmhLyfOIawrxTYLqlXhuaF7z48i5gpNO61wQkq2FoGKhWkOEm4g3428Q==","shasum":"e2664e2ed9d6abad10ceff4a818e3267f85b723e","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.11-next.1.tgz","fileCount":45,"unpackedSize":68794,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtTGCIpGCw3E2xq91uOP/TgnF0jzPLJszXbfleP1qFKQIgb3iBUFSWLBIGCyI9YbQp9aewYGpKX/vbYlif9qvXxPo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9do6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpcIw//UJ+ilqseNmMtZLaRqNlpmg9cOhrADOjP1RzABf8DG4dswHDb\r\ncHz/yPoFpG+hnBg9fd/xSv/4A6+JRQ/7wvx76cHKf0NsRSr1IXc5QeVkYzEb\r\nuUhk43U+ib4YVgu+WWKD8lLmbJHxeqkjt3bDT3hCOcaaS07QSp0mXMjnwwgg\r\nA1OrgOOme1oXSR86nnxWAPAupxWcU1nbbPbGayvNtSMJRjTBg7kl0W+LAAIZ\r\nJSERBAqUaevStHkhHMMUZFdvjWHNsQHUYwNfuakP5ehbhYS+rLAHWtLZLudY\r\nZ+pAL9BQ92a/mVmQ6M2/xhumtA8X3KmLnOpfim8gFb+DzAF6xAh40w1xSKrP\r\nM/hErt02oMh9D9sn3h8qQ1cVs+94zdsbN4sbVTMT8gKBcQstW58mBJ/szOSa\r\n6QQmu2kf2rsgPwWjAIRGM5a6dzNVG0MSwRxW8M4QcyrTF55arPVljmwYhIN3\r\nRkJCq/D1JInh6OxUGna6IAdTNdQBLxr6sP4JeBhxlh870qK+JbxhCtaW7ELP\r\nUF40ET+2oS87HuFZmPd4Wzyg8+Ya8GcieW2Rv5WH0ja1koQTKALx+UhMhVPe\r\nioNW2IV+XqgRxRKM8qDHhFaa5OHUFvqZb9c9u3MiHnkAaenSiOTzb7zag8tj\r\njzfAYYi6x9p3a/vBHYcBnv2kSAIsJFpiK40=\r\n=z76+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.11-next.1_1677056569994_0.9204193705455848"},"_hasShrinkwrap":false},"2.0.11-next.2":{"name":"@trxn/nestjs-sentry","version":"2.0.11-next.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"64ede6647f189ae209cfcedadf966ef6d80aae90","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.11-next.2","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-IqNbnKQZYX/pRt4qjYXsdzalUYZJcWc9BMQskyu8t/o90FySHj0WI2UySdaSDaxqfAhkPkjDGIUI93qncOAing==","shasum":"6870963d27b34fa67d5616af7350a5dbe1ff033e","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.11-next.2.tgz","fileCount":45,"unpackedSize":68904,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJ4ZXK2uN0Qk3P06LSShuONi9MkyXcDdEh0urZ7QnCFQIhAJlC0DKWYE+PF+tOgF0VBswCJu73GrHRBY8F0MkiEfHX"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9fyfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrrcw//a2Ga1OyCliyccPXGpi1CdwaPmcIBGOR52N1k0bi7P8SrFfoq\r\n0qRSwqT41nwySVpXp/pR9ycCYV3FQ0wx+OPaM7z0R0HN0KYp6E43eGp3yazj\r\nUUgv/Pcym8RFdP3YbqVZTlB7HB/SiTQqKPzPpKhxbCGQkZJhMjE8IDRhyPbJ\r\nb/O4uA4lX1ye/0bIz8fdqHfPet5TFsE2+GL7f2F4eW3RbcYM3ssOzveJlaym\r\nLyXfOQJfTIc9brUHO1tM6W6dmlHtucgquX7fazaH9apLJhWt6rW3om8LjgRY\r\nWCcCAsfoCKlq/Nj07rPe4xuWRudT3tnA1a0X8JVpSl5su9myJLkcFP5UIqbU\r\nexUaOK83ia721+T0hYZcdY4u8ep7A2sx91D7ly5MNzW9laG6uTO+03Q0JkZq\r\n+IijM8KohD67mz+2UfqKrp4JVl0XCfYDGazsw4n3mwa57Ba8BeUqwGDFjgdl\r\nmUObDl2xo306kfti9Myl4xTkCtc+CnP6c04pxzRcZJNUbSqASQC82TxTZaZW\r\nymW+N/DgcR59ecHpNoFv91hPiM/HZwECCPBJlJQcPK1scfvJjdwJjr514YdX\r\noYZ2NePzymmHTgtmWwwmSIZPjOc1IqRY+n7iZ4s+tDwzIXJq9KK7MP3X9srm\r\nQMH4O3bE/9oTW82pnG5T+pDsA17CcsELWzI=\r\n=RLvB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.11-next.2_1677065375511_0.220940127040131"},"_hasShrinkwrap":false},"2.0.11-next.3":{"name":"@trxn/nestjs-sentry","version":"2.0.11-next.3","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"85fc8f39d5222e91916cdfaff239de9053850b76","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.11-next.3","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-oIykvM5ECFzJx/72xhMX8ITCvcSxCB9cRq37mxu5tzT9PK8fuCVVkF0S628kK7Zgobi21aol0KF3/cVOXTxjAQ==","shasum":"cb2e9d6432073aa9ae2543cecdaf2d775bb194c3","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.11-next.3.tgz","fileCount":45,"unpackedSize":69014,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgn8NDieIwuYpQJhi1HwHm9CdUeXpJ/wZVg06Uqmrh1wIgfMCNfe9MK1Ym6s4R9ZxxVxOXMMq6hsiuwBOTcCG+r/w="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj9g56ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0Cg//R5VpWWhVzgoCnAzXhEJ7/Mzrw+OXZbsDfXZ0H4CjHcIHCw3G\r\nGUDnAWTeNIzLa6vChH5O6lHfV5GK8+iqqEf+crBCxmEQOvbknjXPlK7q4qlw\r\n2wjORKfrgJEdArpsgtKBy1VjcA4+EpMTPt63B72c63x8K+N68Da6/o0nVEuQ\r\n7IH2FAb5kVLYCV76fLEVPKNhOH4BZxVW9/HjLj+Y+uW3M8WUF0C9CyDFquux\r\nVQ3NuP5KkJhXYkuXHuIYPngBYRYYuHhOvTdk4KXM4v7KdLPByiuqZhV451L2\r\nryy0VFK8cOxGqfJTNeRfBb6CBrnnpE4AnEum1mI5cqOBN1/WXfYTcJUZpmft\r\nxfRVncxS48UWVjIeGesBR1g32MQ+9Kw4cODwTTSEYCGBuXAQ9BYShNBpmhX/\r\nvqlmHWhNlVxWBwnrfbkAxrc6eN80/UkNHiU5k6SGeP2KFerneEab3/MKPoYX\r\nFYeYcYdOkeLxMnR4HFJdvtFlTqjIDcHBjPYu2OjNl/g5brpFbJa6Dt7Epcun\r\nsBTYg7KTaxwMFHMI5mxy+pN6c6sfTclbsB4TXeBizPVGC7dG5Lt96NZt97Vn\r\nThwthe4m66DMNWe+rmeV90iWbRk7Bro2eNQv9UTDAyMbQ5o/9pJ2g1qcnaJH\r\nWr9rgwH22ZOp+fr5B6AD6JjfDezH9/6xfRQ=\r\n=n79A\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.11-next.3_1677069946179_0.6812362537721408"},"_hasShrinkwrap":false},"2.0.11":{"name":"@trxn/nestjs-sentry","version":"2.0.11","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"cbef6bf1e2793e66444f1a8f96bae44d5de0fe92","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.11","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-Sa0Dwupn01ffnzZta4ZcJGPeoFZMP9xfF9RhWbHxt/JQNosm46IoYh3tojT2w8ctoZJdkNsCP/a8YKOQ60eAOQ==","shasum":"7cb2c8208e5372288afc195cf01975f6f1325a05","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.11.tgz","fileCount":45,"unpackedSize":68521,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIKA8ta/yuyXFkYZtLywd1GRwSW0j8hEynZiqlhYx9TAIgb9DjLCtb3MO6fhVnoUhAveBp6SsyWcxjkT3erx8mRNw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj94ejACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq4WA//T54Fi/IBCyb1gVdxKfS+vfcK1txbD9whqC2yURib3ABm8DIm\r\nlzfXywa9IfHgmm9Pzh2E1zpttNDL5dGx7wERltnG3ICeoqGeLkstb6AjQW1b\r\ny6HnsRS20PSQqMyg7doDaAciQtfbtzDEJ29LvrRqzeEtXgyTshGxZx1QlX2h\r\nACXszWem4m6fiB9Hz+xykGQmnjc4AqEECmacc3DMv08wPJHZe9BMpDtSv3Bh\r\nyGzEzYBHwsKnMuM0CV2NYlWRBbmhsU2DzTu0q85rC2lsf9c2FAvPE8D5jEJo\r\nIEiEY6Ywo5CyLVyyxWMv68EfHItqrZDGmeFPKbXzalezm/TYvcq1WgMq6XV2\r\ngjkm/IsJeUHO73DTUILdAMY3xebG5j1pjggBEJPIqq1xzSwidzWv8g7wHovC\r\nMrDyHhJHc28bxO/+6hDNr2I+0MFoAxs1aNr3Lf9f9XGbx6p/K9jHhvtH4PRH\r\nCLUWA2sAwFCNzCzw5rCD4ORchTTJXbkaboLpUUV+x39A6iJbaUlOLPuZLl1S\r\nfhBr4LUZMOr6/U3JaBprTECV2mcYgs/bHRz71GPvTZaTp6cdJ7hn/zkYmAmX\r\nBWmCWnCXd5Ts/Nv+KnfWVytq/YiiisLiwjB4xM84QD0xQZAeTPRr1JKe0mXz\r\n0e+fwcEk5KlUpnYBnGSLp57pssU8Y2CDZFQ=\r\n=HzYT\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.11_1677166498860_0.9184996098977425"},"_hasShrinkwrap":false},"2.0.12":{"name":"@trxn/nestjs-sentry","version":"2.0.12","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"ec36d2432b96af9865328c24b6fdfd2f03ddc036","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.12","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-qdsGX57SuqFzACmCIXX33iyzngPGWMF/F3HDK7Gm5Vhk5y2qBxJxCfdAbDHZvPmoqgkDNpNcGwuZ3c1mMroN8w==","shasum":"60912af13882532960c100540be03566d8848e47","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.12.tgz","fileCount":45,"unpackedSize":68610,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJpQ1St6cRcClB82okG/3TuazvZqRY/aGqpsmsIpp1lAIhANlHi48jOMM7swaMjwcO77/eVpSwr5dGXLanfF2Hpxqu"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj95ccACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpkvw//a3DyXrFr49apjyJrnRf/vTeyFKHTo4XAOH+Jx2/U2NOb0Nbz\r\n5R2pPsDKHxhAJDiy2Ih8zS9cKRqgbHb8E/zJJty827ZW+uXg2ApH8siM96li\r\nBFu9AkjCDMga/SqgIsk50GuoXzZwjyAnodjwSgCnrMFWWHFfZpUpmddV5WLJ\r\nM2fekKb6GrVCLv7+vGw6rhKlJNkJnb86CiWXTmfM40WT8veqFW0c/yNBCXCn\r\nb+dlUjEV3HBdJJ+/ijGR83GeWAGB87aeyUem2RZUIvJE9FWFbJeGypVyi7LA\r\nitM5snQ9Tj6a+ACpz2ULur7hBV1zz3Fc5w1Eg3lxR4oKnmmGAgS2hxaIQrCp\r\n0Q3+hIgBNCzCFnE7NigR6/5X+gBuq8IcXoVEbgxvJqkDeaYR6aTy63XP7QuS\r\n/Mz4gZLoR1qHAs/v36Cld4NrT8cBxCbSRhNo7xFSUQSP1rMCsDcBvzGDtell\r\nIjx/fyPa7lOc9Nu8fnYdTB+HucqwzwUyYkU+MTFAWL/VeRTTWdaje1Is+Fr7\r\n5I0p48SM/NiOAo7ZQq388VAT6742Me1VxTG3HKxyFvAiA/b/gvX3OoffS1+h\r\nF/d0UNuIIS4p+EhyjIIPjqcRFKcLUc6VuDCoiVIjEqW8n0ncm8EsRtzML35F\r\nY7Xrv61pmF6DTm5Qj3DTFKtnpV8mCo+z55Q=\r\n=N07Z\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.12_1677170460689_0.18662670152202887"},"_hasShrinkwrap":false},"2.0.13":{"name":"@trxn/nestjs-sentry","version":"2.0.13","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"6975973684307b0d7f3436212511312706210c82","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.0.13","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-4eyxLO73Z867FFtJB4QTo5NQxx5/aFu6KWie7dfnvVRP4+gaRxh+VgsjAkNZj3Z3qPEW+NqMm5TzWp+LIyz82w==","shasum":"24762187de62e1d999d326f2aec51150ff6290b8","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.0.13.tgz","fileCount":45,"unpackedSize":68699,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsg4kuEB6IeWf+y696YoE8x2rsl9/7LvRETCTOu5XuwAiArh4kGkjql0/i3LDXKUNybfwKkFfnHjuf9eTpM+hzW5g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+RWiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpzFA/+NZs3OKB50KkRVlVoxz1oBsw9qD8PsJfBAFeSgrc2gquTzdYW\r\nVGGiKvhGAGrdtL84U2IIQKZXgdNOO6EmpXphrIyzO4MjmathJQ9ogudV6wyK\r\nes2Czs9xMY7E66JtgVNRSYKG2oFS7DirEafhAN5ber6O/iD8FwyrVC4uMLMj\r\nTKcpuWmT0aJnjjBCL7S60vp2A+6fRpHY3OEGBKdpW6L0I87GGinGwjmFahD7\r\nid8wIO344+SNvRPQljjno/fdJ3a0092NVyDQVicgzeRHCCnAdgbXas7nJxf4\r\nA/j1mzd/MvAf2qDQxe6AQCstAsyonGTC+ngQot5UqcmYsoQb5FZdShkpzOou\r\nCEq92buJmXDY2gxBRaWq7ir0G9tiyaEJWZ4cV1FIeBOO/3ZtT70h2gpU8EXR\r\n8EUEYT7mcLO+1gzv/HYfzrogXn2LD3Vwut0C+zoNeGUr4lBa+5qhdRwDRMA8\r\njL8Z0+stfUqYMZZlKk1VZmVPnaMawxaXxtcthgC1RUwZ6QQ0BcEoVJXrXZtR\r\nmbhhKPUL6sgI+KpQRikqX82P660n3EzFUdjM6hR98XOwChOxh1N9wCuyZJSo\r\naNxkS7JRUtQ+h0vhA4IT8GEOsOxnydNX+4yUJv/cnLmAKuALIHfJ8CYtdOaJ\r\n8oUACePIx6k5OZ51+r05P2bbTppSsNPcEeY=\r\n=S2kD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.0.13_1677268386487_0.458021852760748"},"_hasShrinkwrap":false},"2.1.0-next.0":{"name":"@trxn/nestjs-sentry","version":"2.1.0-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"e1223dddf8bc1109e8bc3de85b255584e79102a4","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.0-next.0","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-mrPTnJvbilRpaGGhKxXtBkaC7vqVllcEoVFYUTfooOyAud5nWwhaHOPbbtxv7Qn4iwnc+R116MDJ9TuRb79VHA==","shasum":"93d5b5e2d26d01f7473ff736a0b83259d659b51b","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.0-next.0.tgz","fileCount":45,"unpackedSize":69380,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqIDWfpWBdaw1tcUb3TwvexJ/lomMzO6s7KVP7NKoxJgIhAM/qV9qEjctzD2Mdn76RF4e31EOWnice5wMY5kJFKx1I"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/JFTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq3JQ//TFg1tbUonQ8ft87nL+HhwKdA22eDEDfiesOIV5bzgIdGB1SX\r\nIk2Qoav+M/hIFn5Ry91WVMfAWRbEf/BKZ7e7qhH35wJe+YAhyn1zRpC8MH+s\r\n2iFzgIMpmTqeb/jiqLLEAmMOKfXz5clH3apfNkd7gETN7eTg1Owa3r72L8EG\r\nO+0r8Q7SOfOCG1aRP0b/fcfYsm7DzD3dZ16dcVQq4LC1q94tKw3jLwMupaoo\r\nwLpu8RAXREeJodPlf1aZlm0HjllrWmwT0B8hPh3/w6PF9eIVaHj6Q/NGlRiT\r\nYQRiNLxFbkpRTN6S0LzJggcEplRng1Em232Bm+4pbRFAztILyqqPOeZtn/DL\r\n9iSj3RNFOPkioXjpAQaLCIF/O6ZUlLmmX2EXMTsXUZe255n/Ux61i08YPIbp\r\nDmhs6hvth8lOQdIzc4y9grwaZ+c+KNrJbbKHBFZESTpklFxzU3EwLYLX7GQq\r\npb7l24FX2g3kNlBCf2S0Cyszo9dGvvxsJzrFQblwsexlBfxVzsNNwTqG9R/J\r\nswH+pT0FbyuE0abr4gct6XifDmZ2Fa327/YXEgermpxEP9vO51Eq5j+MkkN7\r\neXyIsZblB0fRpQjyXvNb62Ugh10vUDkP9t42d47rleh3QqaqF1PomoStFHeR\r\no0oz7qR6QjwHJYzX7mhK8yyBOjnUZP7n86Y=\r\n=rHXW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.0-next.0_1677496659483_0.44311718878685213"},"_hasShrinkwrap":false},"2.1.0-next.1":{"name":"@trxn/nestjs-sentry","version":"2.1.0-next.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"5780ca439847cf55af1a7d22ad4f06e9a9527499","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.0-next.1","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-SXDwk+xvLfTTmvnri+KxUjBquouv7s8K13stWcPUrVsH/zB8kWD8uLPH3Q8W6cU5xjQzjuh1BLuE5fscZRHTXg==","shasum":"ebed3d6a2e1be5c53c01c2152337b623192b3c4b","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.0-next.1.tgz","fileCount":45,"unpackedSize":69486,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5wu3tOm9IG2c2+vDnqgHXXmAyxsnQNLhFfshePEj86AIgTgTT4S6NXx/aylTlCGWmb97eZyTtNP+8/5vHawvSx/Q="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/J/QACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoTWBAAofllaBwjj54mVtezRXVBHYAfisCKhGK7fnK+XpRMpplTsbJ7\r\nseENHAHZxm9TMd63fuXoJLROcNQvXlu3hRQDjunAVzV7wWq4ne55//GfC8oA\r\nkvtdoZGXd+aV5UTL6jWTV0RW9+Vw/J6iZhiRfKqIm6L5SI7lxYUu+X0xSCBA\r\n+m/2YPuEFPKgKbEhSWeJF2dhr2EsBBK4yZBqzhowwScb34tyTuPtPoqcIXDo\r\nzwSTqFriUx8JNX1dr5CgD7ItyZn8HAZqsAtBRzaLnYRlxU6WFUPBTMVq8t3H\r\nTJ/Qf4AX7WhNeQqztauXXWUcQnCz85BgEBaZ+0ldpB7o8/bFH68WhT6D5LWP\r\nfdnfachqkEZEXD1AIZoA8pKEy35spuTGvahS/3mRmIKMOHegmDAt23LaHVDB\r\n7HPolehKYGI4Riuxe9ttO6u4hg7/Uss2a/OPK1eq+v12QvmG/g73apyHo0f2\r\nq7FRqM88nZZ4eiSNN7xU5y5nKeTlcl1eQKo/87Nbp+SfYHB83ik7VK/Iv+D1\r\nKKQ7t8zzj0DPHE9sbccsP8F9WNDpsKnr/K8zG9z5ntXiw+b4xqDQm9zo/zId\r\npmwjxld1ezCMa0Lw+F9S7x8iEgVSa8BlbNH0IS09/qEybUfP36KJeBIABE8T\r\nADRCKpdwxayPOYZRavAMBLSW9RzRHfVk0ew=\r\n=D4rz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.0-next.1_1677500367890_0.8155438016210339"},"_hasShrinkwrap":false},"2.1.0":{"name":"@trxn/nestjs-sentry","version":"2.1.0","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"52c5b75d1271b031e5cac39336ab864e562daebe","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.0","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-peH//YEDtTpYf8XKbo5a5qifDxTt1IdsFUOWgvnZ3YbYSI9A7FEOHNWzMeWZFaDnATSx+AE1i2IODPY9z0aHVg==","shasum":"fb72a7700a5807d2f7480ca8549eb9fee4ef6566","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.0.tgz","fileCount":45,"unpackedSize":69843,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDE2lyEE72MSly+u98h8MqSvWrW9GyCtCJwzmFNWRolrAiA+QSVX6/QfTDrLu5BCAKyI0tP8YDpqULke97WAPhXuDw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/Z/UACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmofqw/9H4FFwfUQTbQL7AIKPerzo+MLVfoppw1y/5r4C8EMirO8Dx0V\r\nl/Hv1bLkvf+Z0wtdRnK3Dh4WfEWeza1n+Z1Ofv8tqWMJ/triGO/Is9DWamK+\r\ny9eKkn6XfOJHoD+q0j7Ytd5Ul1WgzTYCO993CkDFsKbJQAt18+9jk5P/kxZa\r\nJHXm1uYMl3RZSmPE2bg4H+9whiJ0/I+L3yL0iVV3oO7T8wrXVsPVnQFJ1oQn\r\nYmCG6Ws3Jw/jZ4A0Q9FipNE6J0tXFGt7TuM2NPRjQICTkApGoCYrjy4OXMt6\r\nsDHPHpFVlrIE7CB66ey8Bj4lnXITBgT7/u0EVZ7zS4g7KHVTmM90lDT3cf1+\r\nUZOEXP+osLShjQbkwHhugrbKGUx+K2lqC6gqKpfSbzjQSD1eBPZqKc5lQ6YK\r\njYd6KXuV2UiXybPiAq86XSerUcinAkrldnh9jTgErsdxhHgMJfSHc7Wiatc+\r\nlss+lQKA28py+B3r39OgMGNls8vGzmZ0vqi/IcwRFe1SAaTnaVCUdt1jVP6g\r\n9Wd8EpFzpiteLW5KRM4f8h/IQP5AW7zH38jvshoCalX5p/UskvIi81tgtfQw\r\nbVgMHqH5bWJpvyODpYHIzRz1N8Mf3vsvrKz374tmPjIHFQ8MvJcdTtXoBROt\r\nUfI6S0oUJLIHjUICyVkO//K+KAC/3e4LBWs=\r\n=gk9l\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.0_1677565908708_0.10682990458032693"},"_hasShrinkwrap":false},"2.1.1":{"name":"@trxn/nestjs-sentry","version":"2.1.1","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"344a7deabba8ba7ebd9222782cdda5bb368865e6","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.1","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-ex5gLfQtCaPCQeobhYEUMNZty6YF+qVWp4r8+cn/QOANWAnHMyv4zKNJt1VBpgiSUEcwpgdw5Qs6DM0sXRnhVA==","shasum":"51497cbbda80d076513a6d877c7f8fbbc154b283","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.1.tgz","fileCount":45,"unpackedSize":69929,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCReb3v4+4ANbw3Etyp8ZFg6pEjiD2RDW9A4n0UzP9lSQIhAOdhIAIyup2/RES9UDFDF7xKXJxgSKJwoPS0RaU7EO0j"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/8V+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCOg//cNgc0NfKTRolvkipT81n4QA18gAPg4o3WEbXIQgkcPd+De8K\r\nGSZ/V6Eedi1kitAfOjid7AtZuivg07NBAEC8lh/ZfroRY1/DddI4E9MLN25S\r\nssRQCJ77Qv3oONKVfUPKJmpYaD/XKWu6B5s5m7IfoPwLjC7YdtBRJ8KEcCmp\r\n3I5/IdUvUhWSPYyF3HnlH5u3nIFEb5jjZVzgiP1uCV4gGdzsfph30IISCau4\r\nPFs3SxbiulnG9tqPyeSR1UWcc5izQvFNrBvHdwaPVOQJt95lhAhOQlo0nTw6\r\nrDhY9zFblScwOeUcT4j47jZkmyCAiBg7KAa989Y7w/+Fx6DFgWHF2vJYM7HX\r\nuBjr539MGS46EFRV9hkkMMBFfN0E2uHb7YWDA9ycQL0yvfjmEHCuXyFi4RP2\r\nTaV7Iw+l31+mJnqG+NKzajWbJhXgo49381r1S6lPVEPRYaZ+cajdbpNKFDHc\r\neNT3QZLWIeBWDoV2C4N9Mg3Pg2uEGWZODnjWO9pDFguqr3A25RZNZo6Hrb8U\r\nCvmgxaheT9BPZjuU8msNpAdJ/BD8ivF2w36V/u4M+vUvNzJwLpRBRPHXDTwf\r\ndeRCOR73jNZLyNLxS/2jb1/CB47dui4r2CbONOtgl3axQ2kJA0r9wDUSE8hR\r\nZj5uJhX4QY/nicZeMWTYx3utnkv2qXUP4v4=\r\n=ipY0\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.1_1677706622250_0.9051280508322128"},"_hasShrinkwrap":false},"2.1.2":{"name":"@trxn/nestjs-sentry","version":"2.1.2","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"adf6c9932c866c94907787b0501c2795686c63c1","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.2","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-C67+yGbb7xKy64Jtavw7+q4tOPt0x5QlwLnhEGBmQu18XQiZRyF3Gblr52IE25znQ6cXPbeHWqg2i2oZVbAOzg==","shasum":"557fb7e32c5e87eadd14f12ec86cd1eaf63ec964","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.2.tgz","fileCount":45,"unpackedSize":70005,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHo2tWVRa7R3E6wVvCc0u0/TH11m4P2EqoCyJ6kSObeQAiEAj57eGhqIAm4sQ7M/WD7FK47gv2e7Zev8IoE7r7o5i7c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAh01ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxRg//YpryU9X20Aew8gMe0/EYoS0hs+RkwM5JIaxY19iF0bM2bonv\r\n7E3QM1IpWJzUHLqo0Di1R4/YffuUtUeEmP9UDwI1LL1JYrdsLwYLya1n5weZ\r\nJ69Yr8XKAmWY/rCsUxzbjEYEk5HDtBfJko1ABGml1cYMwpCEr7jXrX+eZANG\r\nVQXIoMIBYNra1mqXt6gxn2dmO2KXZVhv8IIn6uvlOJfuvei5fKZGim2dKLnJ\r\nAJXxFwjgmLBKuGE3/ZeM6FwAZgAJAxM6sepV/OAS1zf8NbNp6yYbclVjlUfr\r\nIVvW1w6T9N6MI1KgeR/9hI6MM1EbjBuilkdDJHyC2NIDJca4fnzymhh5WyPI\r\nSmz+LcJxR8BS5m9gcprPnlR4nBLePZ580pPaacOU1WsNL6yNIIJE+Q9Zaf5f\r\n6bKmwVGShXC6ji1buv6i4C5N2UKh1oSkkdy4KYy33a+XnpXKAnmFrC3AihfI\r\njmPvOKQp0H0j/WQjYc1BzrWaDFSbAfp7ZODKfvwR9ebUw6Wopq+tfyvHaFGy\r\nFtClaFwzNveQX+wA1rPKlAr4ouktKcQuuDWuyhirAEx/Vo4cykQoxxQFy8yG\r\nUG6UISfvn6Y/+y68LJcvNKJohCNHO/PvOpnN/6RuEFHt2tQH5LHqaBLDomFh\r\nGbsSyfNx/1EZqCkb07uff8yp1BKFgg+coHQ=\r\n=179j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.2_1677860149524_0.6281678798741248"},"_hasShrinkwrap":false},"2.1.3":{"name":"@trxn/nestjs-sentry","version":"2.1.3","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"d8326b0aa2b48945b2c4c6d01f074fc32102bda6","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.3","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-vaou63f0C78BXk0Cs/KZYDSIJywSPpCb5Kok1NlV0jPLr8zdw77Qfmf+9a7XWyjAB0CQ1Z8PoKQfnM+P1gzEiQ==","shasum":"d311df52422e228786fc867a95dc8ce3d9c26667","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.3.tgz","fileCount":45,"unpackedSize":70091,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHd12D+XrmNzjJiXR5gCEX72u/cF7DCw59MOMoExK9JNAiEAq00Wex3jkwp6ZOJr/7tRRCJ9GjznlX2I+/RE7sSIjjo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAlsMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqvjA//S7DmC6WueKu6V87sXjmiRvfXKKS3PX0MCIHKqqY8uaTsMSvJ\r\nokDqyo6xV/OPobUfVCpL3BG2Bj8Ilnlg783k++NHod5uItVQXlqKvRC+rxHZ\r\nS69kXeDf3xVJKY6f4zmkFbC1lB/CM0ZvSivrp2jU0JNOLFA1ETf6C3eNQKAT\r\nnq2kRPAXfY+DvDnt63TpJhxGln3cL8P3kpnNIrWpSXLuD24YyqIwiujaxeP3\r\nmndYuIhYdR3ewWLhZ6JU7T4bmzLGCYq/LjH3qYyJVB8NS4/Y5hd5+7DKzVKe\r\n78VDCbOtniJdF8W4o5GLdLYqCir8+Ub3RP3xLXOCrH1WBP057tIr4MwbfHLT\r\nJ+npvvQbQ+1jkulHxOi4InImXf0milaIhVCVcFG9XI2iS5r9RK2A0lGaxRiX\r\nb4ZNdECYp8oZ/FmsNibmm/y1fJ/XzeswMqhb9ydWZLxqK7hfGTk9Dhtixdw3\r\nxSA56V5he2YygS1l+JR3dsxkyUX8AmBxxo5Ez/9PhWyYQMX1HNQgEJj9QrIB\r\nxo3kKgpDSANXu0cPIK3E585RyNF0u7dc0XZYIRtNzgcmUwGLhxqxXX0HF6JN\r\ntze/x6WaWf7SwjDqgEJDkVYWfFScMbLgf9BibVW//nUGprdfD47l67+j26ux\r\nFkfPmcH9JUFwHavXpd5Idyj5s7Ueu+Y38II=\r\n=rxs9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.3_1677875980588_0.5606870814759197"},"_hasShrinkwrap":false},"2.1.4":{"name":"@trxn/nestjs-sentry","version":"2.1.4","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"e9e323a22f5b178d3124f8e2533c442c50f1c27a","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.4","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-tltcruBHh5ilVdBVq2vctPSYUzXEAJyuoymQ+zOOPoPvRYYQP3oNwMUJR03ItT6u7tUYM8umeC3ejb0Zg2mxzw==","shasum":"0f32a56f9246993f1a44d2657d58e41ddd7815ae","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.4.tgz","fileCount":45,"unpackedSize":70177,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHtcpkpW5bQ9e5JlBTXNZZcKBDjT2OkxXmIXLvb6569AIhAJeb1OeRNNFGBaWGAvSrwa83O5WHvi4NzqPkjcDBnGlu"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkD3SKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNxw/+IGrJozq6kd++7JMBn7Yy1UOWgdSrABtH/gqgiM7/tmzqjlVu\r\nVdYe6wKyz+4suGdbU1KPtY4NJQb7TOP32QKwI+VTxOdh4OElfRwERrh4tjH/\r\nLWIq9RfK0XkY3mXAxvhynciUNRL13P2vd9aeCcKPtY50Dw1eWiIudtUQ5fbq\r\neVD1FHzLsDYQJdHO4FjExcOQ6NCWrQ6ei761RBNRpJJWEWQTxjFgRUQNYS3z\r\nYzyV4t9n+PtyM5e8e48FMVHJE5F3QPz6oHKupz99414VQ+n0Ol8rGTp41ZmD\r\nfwrlYV6Rr9kiy5Enxt8qKfe12/iLVqTYBWisILRX0fw8xVicQHBiq4tfCbr7\r\nn1+RpfWtpWiwUlZ2oMUJcV+VL0vtu3gH9b7K/FtJ9D4/3o6xMyrfdrteGJa6\r\nZzUGR79jRHODHsujX3uK9ARwVp1OfItOoAmQ8A1qkZWfSXoWjSIM3E8SgM2R\r\nPUQ9wTwOu59/OoymOdJC8e13hAjL6ZILaqhlS0rFgJDRrPmxAusHVHFXqOH7\r\ntTrl6J955Lj/hjOEvFjLvLlTecxjMndh2YvyF4ZYBi/J8SbpOuc1iL2YesR3\r\nGB4LlOI0Gze5t21ZT9LM/4oOEWrJNbNTDTXRZFaF8a4lK+wHPueV3tJuil4M\r\nP7/wSmHfbXkagNWZDkPK2vEFmv7SYPeG1OE=\r\n=miR3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.4_1678734474010_0.9137739028762264"},"_hasShrinkwrap":false},"2.1.5":{"name":"@trxn/nestjs-sentry","version":"2.1.5","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"024de10ab5f48583b8f2c25e216f6d4755749735","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.5","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-1USWSXVOFGVKtXVSF3hU7DFeoP2PPHU/83/Oatumgatn/4cy0v4e9GO9uNyROCd/3eRcdpbXZYV8s9mwungYgw==","shasum":"069ad25ac4183bd70315b26950d22d3e761653f9","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.5.tgz","fileCount":45,"unpackedSize":70263,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG++JGgOV274r58PWZjAlEPWLQ5R5yTUsUt5deE5Oh8mAiEA0qs2D4VFFPiSJxicZXmNi2nWro9me0ZDpwEOilTrzV0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEJK4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCwBAAmDUyiRRCu3CF5jU8VziJatQXyyIZMAzJxDlituq3a02pW4vs\r\nNlPaNLv0TQkrlfr8yw36j2dE+leKiXt2U3P7vFEgqYIfjc5FymGghhn5jZcv\r\n/EISmfTSZZ8DddaXBHXyBXObTvdSGifKOsj+A3Q0Giu5SmNLAMSzH5Q3oHAn\r\nRaYnpalJL00cQQ2toCgMqM7U7GWflRFXiVD0Ictmzc4lUlgK9yxkEnY2GXC7\r\nNQ7G/JOQWrpIn44Uyox+1ndEBcBEjkpcxR74kelagpxDMx1rRLrgn7Msmko6\r\n5tCDmUaOp0dF+T75cMa0b9PCSOjg8rx4zu1P38cRQg6cSRdo23VbXPTopoZC\r\n4NG5hl4erkxo/r2ilAotZMu57MkeLbDGpzQVqYAYjoL0KAx0Tes9Kp0Rf/i2\r\n8kZp0+KRzImVxzpqO8rPeSSfuDzMbMPjC+eG2y8uVAeyNeuSgjyQX5VRr7nA\r\nSgwsVma7BE7m9gd2z+JUoWHhMioN8qPij2px42N7kyyrwEVoMxnB+4sjgDcq\r\nDlnnHRe6fsEj2M5/5xzbA8QkbbVD0CA2X5VTjEZspMrWJE5KC/AgeM31YGgZ\r\nNERukURt4NKIi5cCHICDGHbtjBDwo9AZpcCPlpq6o0iZZ4huBm0jDGwJq7n9\r\nECK5ghA2RNpEnHfzma+bOpEwhDq5Btrl6vc=\r\n=gxgA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.5_1678807736158_0.9945849587876914"},"_hasShrinkwrap":false},"2.1.6":{"name":"@trxn/nestjs-sentry","version":"2.1.6","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.0.0","@trxn/nestjs-core":"^2.0.0","@trxn/common":"^2.0.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"060fd325762f27ade793aef35ee3cbb4b95b0749","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.6","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-ep3whMrClMqSTqJF0eRvrx2Vy9OQ7fmb0AFV92/ZZk0na8oQ/IUnzXqK+xkuHf6V6hLFMwnWxdqdGz3tkZv55w==","shasum":"3037078977c8a19d88e26341fc1ebadd1533685e","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.6.tgz","fileCount":45,"unpackedSize":70349,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+nadN1ox41LoB91zJ0HwMAJCLfZWO682lDa6F2HepnAiB/s96Gt9JJ9tpRuTaXWDsxPbjJJKgg/Y0lLO52V0c4PQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkELR6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpwyw/+Lp3SZGXHKdrGb5UEcnXMgjr4n218H8dU73K6Ws3L/XF06uD+\r\nm7J3BcT4Bqhienpn9DYslAyIP5QBvef0K5mfhFkgza69gQ5OtF36DVnKAvEh\r\nyIvnoTZgcGreWMhJrOLyyMqfSNjOg47FM+kr6R5V4vAR/M41VhPwahXZggcl\r\nKb3H8jyyqji/iAZhNLbIPpKdUtbjTG2wsNA5vitvHMrpcvEIDKenOWxdKJPg\r\n/MTJIkBbIdPvZyeMrAxtxY/Iv91YQyQkdOII8nhZhPLZiYgGEg38SanHqyTS\r\nBgolh8e+Md9HDyAvQjksU5VeUa1pofEhmeaNBsrKjEhceJ/53jShkHiwZF4L\r\nD5YBNUNKwZCpLr+JDOtSsEmiYX1NYXscERTAmpfmdkJrzrFkczBHWk5Glj7Q\r\nFZCety6yGi6ScEYkvxJjTp4LIeGtRvePBKCgZnS30Vq5WF6u3vbd0hk8LE06\r\nmfnU6DKUz32rn3ilkCCbA/4u9sHU6LJsExGH7uYJBqv/MJ0tan+l8lMw1uWe\r\nm3pUheUimfwhmw192chEyEfkrGPq+BGuDbBjBw6VJpyGPk/Gzc0n6cLoHnlX\r\nIxQJ/ckeCy0mibb+PVBT3k4TxaRDPFKx3hw9CjoukmyH/w9gFK9vA33E5UG6\r\n5x+mkX88GW7YfE6VLkpLuc8N5CuPC0fCnO4=\r\n=rp05\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.6_1678816377905_0.011458748179565603"},"_hasShrinkwrap":false},"2.1.7":{"name":"@trxn/nestjs-sentry","version":"2.1.7","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{},"peerDependencies":{"@trxn/nestjs-database":"^2.1.0","@trxn/nestjs-core":"^2.1.0","@trxn/common":"^2.1.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"af13f41c42a136a3fdeb2a6475be11c5d095c5d1","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.7","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-lbgWce9tFl0A8tjrSb6bAtehyaspXUpLQP8W0sT6JMG40Flj2DOWJXaKusTzdPe3Gajj5dnaKWipmEt2VX3Swg==","shasum":"e85839fe596af37fa98662174207ca8321bd2269","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.7.tgz","fileCount":45,"unpackedSize":69831,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDACsONWfVaGMzqHe0c6uDbJQxa7RqNwUY7RO5uUFk9bAIgK6Mj55dYAOOB5hFza0wOsveeiR7CgPsNo61qK4XyHhk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEgDMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpo4w/9Hw0B5V86ib3U2okOn3ZPvLhE8RLP7sCRpp7Q/Bz9y3k33u3I\r\nqM1IvGo5ZciEfp1sGPYWK82OdPQQdI41Bbeh1++/3jcQBGd/MjQc+ol8qXr+\r\nhbpaQNYwpOxTN8YtE4MWSTdZjzGhTm8DZHbc9Trrxsd71sXWJilXFUXKhfjr\r\nzMy9B3vNagZIH6r14Mj+vEf4IFTh3x7wrPbGxQ6n4ZE4lB+YUklrzRINqZUV\r\nqkwaLVFZNc47Grhf9LIVXKRTVlB8NB4AHzIuZe3JlF486rzN76M+TFak7Csu\r\nWzocAhdcoOcWflKeSj0y93GWn0IcVF+KUyLCuwmhPA3XSVbm3KPdCsY4+iL8\r\n7Qy3JTqAYiBkC24ZqpFBIHQoxGQp2gxG/PMkbl3uaTXy9FeRvvB3eXNfDuxg\r\nMFmF5kYLEFMre39Lm6X+YpBlE6b4DIwH0b5PR+C2qI9lDaThKrQ60s7qKKV8\r\n0XiStFwPNk/O9dr3GjkW7hlYQPpPqFrzom96CTzrdBTIjk/oROnoHIDXq45b\r\nA9NssB6OYftTokVQuK0jpVH4sRq3XbIzqzjZRQvVQdcSrtrNx56qv1Zu20VD\r\nbvrteTsp9VWzIq84NnzCZ3gCJkODK8T6r9ixqWCGlxTJiQckmZgqVDUmv0+h\r\nJi+/ZnNBeyoh469wkokH7g4lZ3F5OopqNq0=\r\n=CiKb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.7_1678901452719_0.4387327019855638"},"_hasShrinkwrap":false},"2.1.8":{"name":"@trxn/nestjs-sentry","version":"2.1.8","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{},"peerDependencies":{"@trxn/nestjs-database":"^2.1.0","@trxn/nestjs-core":"^2.1.0","@trxn/common":"^2.1.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"48261bee154019cb707710252e6731b3d464d88e","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.8","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-XQ6Va9UyjtnaQuiEdU62MX9wW2r7EnfwMN+3cEsNhCLpOpan7rjFBPNMh90OyzS7YMTzAOWrXY9LRUnbK5kkPQ==","shasum":"7b72f46735db22eb034e521c89a717483ddbd3b4","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.8.tgz","fileCount":45,"unpackedSize":69917,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDFPq3IpSzdp5VETCNeMgWKg1XW3vQIcal6YVKCb/ZBkAiEAoKmvg19mj7n4RP6aTO187MG9GCnPZv1ISQWmncgRWCw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEinoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp8RQ//bcdzzBruq7jldbhcAMsPCJyTjv2aDGOKKOQ2EMS4eLmCDMg1\r\nxpoDIbavTy/JCV+bDbGUc+7FqjYrDmnChDindOC3wJqLyaFnjp9DdG2rkk8R\r\nYibcd9oQUusR+XsfqltcFsaU/5zvnrbp/9ULj/dtzqhtbR3NXzZ7sELJEkML\r\n/Jz48WRj7GnpXUm4cceZmS+ROiP8qwAvmvpzY96Ys2vJ4qhs9fe2+SM3Kmb0\r\nAkCa67FmwcT52+n0/+sHb0eB2s+OpA5K3t1gHsA5XwSN6NeZWcioMyfj4e3z\r\nNuulwLGGBg4UeuoLuzUWyL2WvEMTzw/KBQC7/6A9LszpwGuuSYeNLw3dH+O/\r\nf6yuE3JtfgYKr8TXwtzhL4gTI0F+S2vGAfrsLV+t9L+YqUxmthi+jYyRewa7\r\naHYsPavawrrloj/ihZZxTEmis+p7OdtMVCoqKIzf/1GK/F03w7AZjkNXXgX7\r\nSVBltLzsDxJPlfSZGq2Sg1bzTUlTeDKrPkWDHaNeEy3agauXl+hnayhx4nNJ\r\n1HCaoR77k+TBxz56SdOXtBkxdKM/rQ7AIWRMDGnoQm9gREy78YICPd0oSWbR\r\nHPA4ktjNhN/ePTc65HZmi3kALhYyLjk48ORhbGG6nSfStEilvCt3JljxcgWT\r\niXHtINK7Ub4CBY3Cj0PjFtLgoaNlnnvn0PM=\r\n=yYcO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.8_1678911976660_0.07693718674488292"},"_hasShrinkwrap":false},"2.1.9":{"name":"@trxn/nestjs-sentry","version":"2.1.9","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{},"peerDependencies":{"@trxn/nestjs-database":"^2.1.0","@trxn/nestjs-core":"^2.1.0","@trxn/common":"^2.1.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"47ae4538afc8cad4e2f9ce84264628cf033d38ad","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.9","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-ZRJHY82w1xpVOWsCDwB/vA9vzIUiN5nv+64P4ukQUkiMskDcfXq51gAgBb/EQ+z9cL2Kj9oyDEHgck0ZfQlicw==","shasum":"e05af0104f11cee1a09ec4f9ca419d98a443eb74","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.9.tgz","fileCount":45,"unpackedSize":70003,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrp9K2XA16jrK/Jw6rNnolF3qyzvpmcmWwJJB7e5uybwIhAM6JVvb6qHFvrNx2qmxTNkknXTVc7pI7QBbsY4QEqk0P"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkE3NoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXpxAAomjB4PA0EjNrhbaBnSDmNFPRLJUk18vCs31O3MJJcWu+GJz2\r\nlGPlFcedVsDL71lCqzZkfkIhusxIHdv7REoky7bfY5PWIT4Q+pEERPuPVIhw\r\nUCJJ2RY2dOl83BbfKYnmpjys/0EayxQIu0wziUQeB/ON/0/34EwHbthhKOZ2\r\nGjQRA5Cfn5rvkmBk5rB3Q5ddxMgqNfXkB8wTYEnVbvKMBSCZwRQZoI6uQ+KP\r\n9esiUbyv5vwOpAx+Vn5HE5M3pi5mMg9nGpdo5bB9b3rZxvDSFd4Ax1+/9D9E\r\nTqXnjZOGzGz3ygGOKFAxzPWlJaSnbBZVE+Rza+cOjRstl0RTVrCmEqjHFscK\r\n13ai2eDlLQ9Tqsw0HdSLosO5DAQMk4rip9HtqNAk9Bn4WBK9y5hyZ485tbi5\r\nhdFqMGI5ohQXJkENrbl2nOeV6ZKXF8ITQME9nId69M2fYGyydtc8CFRdmWQe\r\n9wvPIkWHnLlrZUiTumCiz9ud7GRoV7lFQVyyiJKeilN9QSKkbrNV2coQqPmt\r\nB0q5XHt6jMt5VI6d7MT5mWWcY1E8/xrs5Oa1SRtpEG6Q9HkYxdruAoDMzHyD\r\na0L9zJRrMF7/eMKw4kLG7qLfspP3hExTrmYy7VqaWCeK1xDGlWvmC6cKPJjL\r\nvaOu7y7VO4cqRwEdKuectHdl9MjbBCQ7hkg=\r\n=pALg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.9_1678996328276_0.6857654892685452"},"_hasShrinkwrap":false},"2.1.10":{"name":"@trxn/nestjs-sentry","version":"2.1.10","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-morph":"17.0.1"},"peerDependencies":{"jest":"^28.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.1.0","@trxn/nestjs-core":"^2.1.0","@trxn/common":"^2.1.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"214276b6f26e8fdb604bb586b5aeec0fc9cf23b0","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.10","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-hClQBgzq+wvNxpnP66BHxsXZ+OyvPs2p1RuPbH51GlNZsw4dvMqVIB1ojjOH7IgCpqhfFKJBoOv6pqzMADAPTQ==","shasum":"da17f10823907dbae652d4cf12dfa5b4955d9f48","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.10.tgz","fileCount":45,"unpackedSize":70722,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH/Wkkd87Eq/YKbtPPqd7tQF6+I+mpnemOyG46GCcxpFAiA+xAF9bQl2oTE1381a49C5nGPnhpr0oayWJ7HbTanQKg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkFGO0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrAyg/6AoUpM15Z/keM631jdCaSF0JGmkcahNTHug4jbLU+GMNW/S6v\r\nGVT8N9SrVJrhBQQk2BBnigayotGhj7bPo2EwJrshO2IlZb7eS3ZVg0kUHf3/\r\nTnFSbrgplPajedf1K7zfYeTDH+MiWOZj63+njRXHL+XjeISm25bXLBZTzuHS\r\nRIhhetUxI26b1iJfElGgQVts7RrWIwNkv77W5yPdB7dcNKenixtf1+xug5CH\r\nRzCrYMgwh43DaNlX4Aq1hLsJVg8EF6u/3QZ2U0zG+cbEg6EUY8WR5Tuakm7q\r\nlTEhPCJOWU/9IBCbFhGwDCiDEFnt/afQzqHQCjF4wBYiZ4SpgDOKu8Mm1f1I\r\n6Vw9Jr+Zrn4Jq5pJZ1D69lQH6I/v4rXY+0whn2wrqI8ePAKNdeBBa6W/bidV\r\nUUEIwFi/KpxJbd5c6x0HJt4Vjqvt6I48hcaI9cX7sxVSJYxU9r3QPQ5HVnUo\r\n/0yCzIxglWsRaNShjzYVl6Hk5EbLs2QNAo6u6N9MhLO6mey6idNVcm0N99S7\r\nVm+Y+Hx5txAhnUYbOvF9iSLi8ah3PmHgTI0QpO46eeRK52qE/6eW3q3oulRn\r\ndWS2sU1Gue7s36VLrAQhDQA9vRcCXER8fxD383vJJANarvV4GjopoiFsTTSS\r\nmjvijOk9mGFoVzr+mIOCj/saAYedlkQgVIA=\r\n=0ruA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.10_1679057844208_0.47689431588985953"},"_hasShrinkwrap":false},"2.1.11":{"name":"@trxn/nestjs-sentry","version":"2.1.11","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-morph":"17.0.1"},"peerDependencies":{"jest":"^28.0.0 || ^29.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.1.0","@trxn/nestjs-core":"^2.1.0","@trxn/common":"^2.1.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"4518101a9b022df61c5c04bb2fd1b4f982607a28","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.11","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-57p/tcg3X7x0L+owgmkbqwC0cdcaUSvQoSBTQEu3mVu6idZzXBWo5ppj7bBaq1HapPFPnimKGtetYw1bNgx2EA==","shasum":"8c6cd3694b1ae9747a4f0d852cd8379bb116b4aa","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.11.tgz","fileCount":45,"unpackedSize":70833,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDP0LcKWvFMM5JU3kgSFZLaAJFahmOMVhkxNTcC8G/9CAIgDyMBxhefVAViODpO1Qht5GULtV4DuY1Fge/S6y9RS80="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGIzNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXyQ/5AFGh2/iZjZFart4Iw1Hj9q7vqkj9jUzxVcr5i/K5+H6c/LxB\r\nIPnuUtSeBUxR60DmmJlc/ld87Re9X/AF06VwuyPBANCMbSKjmw76RXaBZ4FC\r\nvSL7w5/aynHhq5im7k/svqPM58B8IYAl5aFt5YoXrr1xR35xgIZbOvJowO6d\r\n3hwi4clymlDT8QuxI2voyqAnL2SaY4VENyyeRxagQrsrfTkISN3zdJHJzeKV\r\nzRbAzxqhgadm/TGIHLHcgsNqfPj/hzEq6ftK8MUpUjnrxxBpuXComiMHaMmY\r\nECWTo9Sp6DEIPB+bqWsKk3eTPy4KAFjxbWuUJf9385rGXrcLCM7dV0Zi+/mi\r\nt+sDia/0H/oiA5xNC8aGh1cpAvQz2Tb2aaSlVl+vmueLsjV2zwse91zDwk9e\r\noExspzdYZ8SIgK2d+1Gpp0fRf/hP8dm5uUHK2wKpFa/NOMEJjMz/QMWcTH8T\r\nglkAk4nV+RuLVbEqmmyJ+/YQulJN71dNydbRUTLhvfyptnhQ1dobljNLMJVc\r\nHek7FJjEurGamzGY4LXRt9Y3CR3nmPOEsg+vudQ79ectxjcl3Ik2JDMPLyDa\r\nrT0+jHfhZccJVkERoMPpl8LyL9cXlZT2/jLQ5A0Ftokw8o1ccfwg3H457XZg\r\niSTADnY7WA1wBjjVXUZQw6GixktX75Ye2ts=\r\n=yyyq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.11_1679330509584_0.40491253535248317"},"_hasShrinkwrap":false},"2.1.12":{"name":"@trxn/nestjs-sentry","version":"2.1.12","repository":{"type":"git","url":"git+https://github.com/tractr/traxion.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","jest-mock-extended":"3.0.1","lodash":"4.17.21","query-string":"7.1.3","reflect-metadata":"0.1.13","rxjs":"7.8.0","supertest":"6.3.3","ts-morph":"17.0.1"},"peerDependencies":{"jest":"^28.0.0 || ^29.0.0","typescript":"^4.0.0","@trxn/nestjs-database":"^2.1.0","@trxn/nestjs-core":"^2.1.0","@trxn/common":"^2.1.0","@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"main":"./src/index.js","types":"./src/index.d.ts","gitHead":"6952d6c9c4e4172d8b2cb0bddc9d92eb9fe39746","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/traxion/issues"},"homepage":"https://github.com/tractr/traxion#readme","_id":"@trxn/nestjs-sentry@2.1.12","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-vjbWuapWHCf1RweUBG4BU7LKTOxgoyMhV7IIFaH+z+vNDhasmHhW3h8sr+nxkxuLF+XCXhLmG1lxkO8JSapUFQ==","shasum":"5750e09bb277ef8273b8b59798094f5f9e08b3f9","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.12.tgz","fileCount":45,"unpackedSize":70922,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBc++wcYAIIuDE8HNnfq5tH1YkpbFB/ukNRhY9wyK4FMAiBAgepO1e8nmCGUboH8JXd9DK1bQ5bwINiO1l9yLd25fg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHeZbACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq1vg/+IX1bNg7eZbswcUpN/bCzracFMIeuuIYRKMRoqhXkA/J0O7lR\r\nL5yM8a2ZsVLLr86PWuVNcvktEx4SHdsHd9kAQUCWeo1Ju5OCPvHnTJ8QmHM0\r\nVQkBkjZRuonDSLTBHPjhz+0mf1s4tFOFwaZ8jXYxrHtH6nLsSvKEkaqrYFCC\r\n17lp8/Lx1wIphOTtE9fylrGydjb3BUWWa37Y4uj8OVPuxCH3uzNUlVM5DHne\r\nSRjPSBMYqrWgdJe0p+9MuVL/himX/I38hf8CWVSfTwpEdsukMOaalbFqstVR\r\nbHekBh/5a34Ad8oMncWjyvu02tzOsPFcM/xFNYg69qOeOacHMuKiiVLXH5Kv\r\niBkv5+ccWbLh02Tdn2ctB90GFJ7cOC8PIlgVfOt+iofJ0vTCpAAgRuLnYcAI\r\nFH9jmqRVe95F6G7AxE65Ha5hwmQ+nk+pLwD3cNhWrX5025zGB0adHlmKeni2\r\nHiTyoWWTqxlq1Ad1RUUDF1JnMUU7S2uWP1uk2nqF+TMU2asxwijldbS147Pf\r\n2mDCRhddQ8AF/MetOzVlbeiAeqWQ9cEQPsycjdHydOPW57ljQRpwBG1RNkyZ\r\nKhgGfHVkMbFCjzBOc220uP5Lo+EghD7tc+Xp9suiw1CE8xqODZA9zBPknqdm\r\ncglbxSNHlq2Q5JZVMpkEvLNUfvFY0VuoEFo=\r\n=Xczj\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.12_1679681115329_0.1442412865733247"},"_hasShrinkwrap":false},"2.1.13":{"name":"@trxn/nestjs-sentry","version":"2.1.13","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"6c81d9aec533ed8a38016d7e64edeb8f3270b2d8","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.1.13","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-qF9qdQICfzZsyN7r1+CkjhtrIXJVDmayWAamxqKHUMLRlXrayVHdAsXhmfHds4WOPHRkqw8b8cpfczzLv96D1Q==","shasum":"a899296b664c2a50339fe574fd9ca9181e4b1b8f","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.13.tgz","fileCount":45,"unpackedSize":70800,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDIp85FOwy0r/sL5VzsNv9ADmBGppZ72mLmFNax2T/CCAiAYnkAbi0vYeQwivsyRxJT3s43RCd3gPJG9u8ff7z+x9g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJsYZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqG+g/9HQ0RRRsQVzBYrZFW5XJEAK7uXDxtPqzhp6IDgqh2UmIF5zMd\r\nk8wg6G27SFZ1fY6+uT998nBC8Qt8ezD33z/Lymqj1b5H8jfrX91OnibHxH1c\r\n72FGtACfSsSwJ6UJD2fmd4XVnTZgPE4FqN8ICZ25yESNic6WOfYEHgoWRAjU\r\nrOYpV9PjjO7nEAE5Z2tW07v0eq9ClIlhHwCR2vSQJHO/tVcLSMC4LYVCsQGp\r\nkWLaxwMY06faSw8zU+DF2MzMp4vrlp1Nenv40J4ShP+PgeYlhvT29hL8tRwo\r\nF1oCnQeInF9Xs+59M0X87nHAkjspf4fSFR5ILnbivlCs7Tdwzu9HCiNOAWsH\r\nVFwjbsQzwQYwehhHerF/sgdNPPVrEBL1u7GFFLjboVZWnzdcwslwKniDKgo9\r\nLDU3hN4780JmCSDXWqKWDPD9UmDxGIVmDuyOZTXe1SO645M4kwzxHbyqXwx+\r\nxmBxZx1Z1Ek9OIIrzMcW24YNNFNQ+6eo3c2aSuRpReRuMM9GOM2+sjhYrPs5\r\nOzzjAX5goKPrzYo4YOVF18M7xUf9mUZ+Zxq+clJQQsXL1XAMopxwqMJtVEVQ\r\nCZlx7kIOdqTpbcfGA4Uv1Ep1qY7BZslBRVOtKc1jfbvhmeNdAMhtjlNBMeOg\r\nsqUiuwn/ned17id4pPdsC21hTWkmvhZBpu4=\r\n=avj9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.13_1680262680946_0.309453176953578"},"_hasShrinkwrap":false},"2.1.14-next.0":{"name":"@trxn/nestjs-sentry","version":"2.1.14-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"ddc532c18d33b58a6733915b3457c250b92f1654","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.1.14-next.0","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-vPVzy/2gH+CddjZWOnUtOVbD7EcPN4VoYpy/7TaaRuABgnooVjygcyIL8NOjsYjRUl3P7HofNkXfPW63z2sOxQ==","shasum":"99b3c71a3b8c46d9d73241108e15367a67cff393","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.14-next.0.tgz","fileCount":45,"unpackedSize":70908,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFWcgO5iRLrUE9lRJTEetzWK6mj7u2/frCYfUVgs+nWgAiByKXQYpH+S7yPuzqpYx4mZ5ZPqcR3uIOOdnazILtqFBw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkK+ZIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmprzg//VnHCAA5TB7KoI7pC3CPSKxSHLcZIsstOEBnr0HPuqas8UrA9\r\nI6SPtfv/acK26izgOw3SKDtDR/jByHWJ4JjvmvB2JISz4nigDuRjglN2aQzQ\r\nXj/gfpzbBUpINYdQN7ty6oXYprvXSsm+mwEQg3RW9nums7mV3IZWhtlYCcJ5\r\nbFdlwX9+ApMaKEQB1X4+En++/CHtD8WN3MU3SyjFFoD0SvD+fQBlmBQlmDUi\r\nyJWdaf+7rmPLFNhVwGEKVm5kC0UyKT3l3OeC6mHffXmbCXzfAvs0UtEvE1Zi\r\nc9x8EL+FzlpXsaGrZlZCwN4NJ8eIFQ+m28PYHrKOXFJAbtjFi5XRpZnMrvDn\r\nhib5wuI3ziAo2SD5qTAb4EWS7YzmskDoBNM00AmZ+UR5ZEIePjy7Fr9nfeMI\r\nJ7htAWE1lmJlNwQ3AACFxTtBBPOvsWZbz2G48pHjtlt1IqIykd+zO5osoYNd\r\npwsqJod18ochw3My5Z90peuIlcGXg/t9bbY79C8Fzuq79A1843UmovI8w48t\r\nonZKuQvS52nth78TymKdYR2t3wSUdzRyJgiI+3j0cSMNC4GfA1zMyzx6Pgwy\r\nyT/j6ccblt9jEZJoRbT644KZ2A7O+mL33WfoMfnK6AMzSjwL0XehYCYDWjFc\r\nXI/SVoxJnPTm4s8lMCtDYf+0LjfR11T95+o=\r\n=f8d6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.14-next.0_1680598600365_0.9307374224067388"},"_hasShrinkwrap":false},"2.2.0-next.0":{"name":"@trxn/nestjs-sentry","version":"2.2.0-next.0","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"a92f9fc10f572e687560460ee578a43ff5a33157","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.0-next.0","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-D+2EZ1rD0FBLmfpMAx929+saqd3PGWLfODg/DGf2UQS9nJxjyN7kvPz6PXPafuU5QFTtBgCnS8vWIemmB/H6Vw==","shasum":"f8c6d2f681184222ed1dfbdcf099ece60245e401","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.0-next.0.tgz","fileCount":45,"unpackedSize":71012,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCJSFsKiP6LklHw2Vb5k3lHsHVxWpKu+FRR9NMCCdUF7AIgYIO7aOlw/50oSvm6WOvw0oaPQki+cVRdOGGcuuGCsjQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkLWCrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpitxAAg9uJ7OwfnfontIdEl7Wx+LUs5FW8U0Wg9WfpquxCtXQG2pU+\r\nZPwI8NTrkD7eesADDhMPrzOdXhoE+wGIy25ndh6BHodgUGARfjw8ESxTUgJg\r\nf2GEx2JJRk5oGX7bm1Vm9d0LwmLVUJX54kVmCTq8lQfJ+G/bsz4lNpFOYWEa\r\ncTdXtYjcpRWSNzpSRCREi+11eZmet6++G2lyx9z8/RH1gnfVwnovSUaB3B6J\r\nNW4j1OQkZboayckBSsOUof4MR8iRAPhR7g2Tb9oSCLDv1GP/nrBSLjZ8PeAr\r\njKFhZGIg8e2FaYBeG6UCNTcm314kbPvgCSwqVaVHGvuxsZTJuHUQ8N4QW314\r\nOit2URCeVrNg66ywPGPXT+GfYTQfs1mviGbC3KniMRjj4CR3HiI2gHqIVAuW\r\n2Nm07QjQWwANc+xPbPqW/7Qsa/am4c0JG95/zm8YNtpim/QAeFHeupmJJSlA\r\nSHklt/pVPa0DSCF7XQDNqTxJhe7Khn84amXd4TCAcAMSUIVvhND4G3K4MBKH\r\nt9evzURrUJ4bIN2hTu1MQNFTgx9jl6y25DxKzqFVWUfY0uU76l93/2PXOui7\r\nFqBx8sp3AfSSlSXBoOA6l5mHAb5Ouh/VvRCiwqYVo9NyfFsKeOJ9PuzZUg9N\r\n1D0vKPVUbMZaXgdFPNwgY4T4JWrfXlMO9Xk=\r\n=0RC3\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.0-next.0_1680695466806_0.36261577637865017"},"_hasShrinkwrap":false},"2.2.0-next.1":{"name":"@trxn/nestjs-sentry","version":"2.2.0-next.1","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"0c6c0a15dbb5e8d790f5c1cfdf45489a3788821a","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.0-next.1","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-HxJLUBWlHxVKnWeGlIXuDjkWAsxgKU3TDHrYDOKhVCuOAltjaqpY1K69uilBO8E3Jx60jtSv2RSku4rYOlYM6w==","shasum":"bfbfaf52d84fddcef0b47fce044d00e6085609db","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.0-next.1.tgz","fileCount":45,"unpackedSize":71116,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCo4CTwGos6dzTCWXAwJsyXgZLrC9Eov93nmUdNOH4SDAIhAIyQVDzNrO2+1w1+R5lH+aB52LpwAnEDEWO+crjNHSXF"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOVA7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpDpw/+NJvrRjRzKxylAw2/WJ6aZAj9sUcRm7nGTIQ41RvImUCJyZlf\r\nsE7OuBp0/TMyvEgiUZu0QwuhYIL50uWQmw4JR9hnoVI6pS7Kiuolvnx8i2y/\r\nwalEPnQVx2xevhL2YS4QJSp75VHRXo7tJRG+n3tQcH85rcZN473J2QdtehnP\r\nna6jPk6BNPqmq3U7SzV52C2YCCMWnGLS2NZxrjJIc3iK+mhuJafXMpoPmz0m\r\n1VzwxoRderAh/yXo68zGJce/veW0qA6VvayAeF7XaigGNDtJboBBHIkyGgJr\r\nMn4b3Vk2vCxTgB0Cppc08kJ8YU6DqKI0W9cA0ep/mCFalF1X+nbucAL94EhI\r\nseeGjVtnAsoYqHkzh0CxbOzqSn2+joJUybaY0AzHn4o6+pbMQh80aWU8ZGpW\r\nQBSbWhx3pbA6G2QSZ5mfO+0kB1ZlAizZVihKQfmRBD7ra4S4I/fuZZCcd4Kl\r\nS7W9JeYx8AcmdfkmDPRZrjyfdm+zb3XK4KUA3R3nPfkpblboHK+tkUM69FXD\r\ntE6qz8o/Ks/KzbYFvcTsrewreqdfVTEh9aWINnChMH9mCGglwzHW/SPjkEiS\r\nQzstFHtykr+fEUwOs4Ly0cPX71cxsKbEuGL9PZRp6s4wpgBO5iwV75RxZRHT\r\nCp0EWIFyV7NuvbcdLtGkIUzZkMwOsA+5EDw=\r\n=GCUh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.0-next.1_1681477690757_0.44926541453247326"},"_hasShrinkwrap":false},"2.2.0-next.2":{"name":"@trxn/nestjs-sentry","version":"2.2.0-next.2","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"be34ca308be900cbaa54c57db33ee7fe9a58f85d","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.0-next.2","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-yZqfMU730vM0sRDw9vZ9aSOcyO7ryAsaKYMNAPcbgWK1BD3U0Qbram4Oi9+ILgDqME6tBCYLs7J1pJy/dEcRYg==","shasum":"2e03fb98c862d1174019b5b27daa5dd0bd07b758","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.0-next.2.tgz","fileCount":45,"unpackedSize":71220,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/BaGhsNyuHWInQYLofP+iU0uU8nFSXjP8v9URNFEABAiAR/nabMs0bnE95UcvO/etTi7xaP9EeEs4SH3KLJ4FO5g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkPPxaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmonMQ//TM/22NnDj7K1B8ZFTWjqyxYCe5bW+w3Xs2h7Y0zuwhF1WNHm\r\nfhL/b/Wr9dRJofpECdBcop4LJ5rlzaw9HUZiv2wCFuR/Wx2UfSPBN97bhEcw\r\npAE2w1M+61vVIvOKVbdCJZcBqpXDmMNjS88POqMzf9Tt057o4PY8tV31+JWQ\r\nsN5RNn+VvfwYmMdycaww22FsK7NX8Oi2JF2kEMKODl87OexlbUsuhBF34iMF\r\nK/QyAnvfM99RZ+Mdn17EibT7wFkGkqgql+ws0R18xY1/5YeEvk/qHaXlQkZC\r\nxBiuKugkLfG9kaCBdiFyD4RpZbWWz9tKsG+8W9zdho67fxERVGVu7jm52ll5\r\n2QVhjP3doNy1UUH0Hpe0/PDwmTVU0z055HkwzzbOVKKdiuYz+Oj97uUmp4Jx\r\ngtwLubW2B+lg72QmedTHP1fs7vzzhXd56tZRKRWS5Ez9LY+XnpogUruYeuoF\r\noO15dJ/hMJCEzNfBz1BhXpoDTqy9CVkox6N5W53nYoiRfoMiTkcy6qxXEVOv\r\n985BGweDQSrTpHQlTdeCOphABg0LmvOzfgJiq+1PtHJ9QElZh96Ym4G0EDFn\r\noRm9Z8lGtL/R473tMY/FzWB1hplGomQJDSOvbE2rxMxSdZQyjrZTrt2NXEZP\r\nm2OQtYD6YhQKUgvP4sWj2/mHQOsBy3oH7II=\r\n=ZTjI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.0-next.2_1681718362552_0.30101502456497187"},"_hasShrinkwrap":false},"2.2.0-next.3":{"name":"@trxn/nestjs-sentry","version":"2.2.0-next.3","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md","gitHead":"4f986614bc8bbc62a37f1694f3b7954e5ccebfb2","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.0-next.3","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-vwXVQA4Ugmj0qaSuRbbK1B6Gyye2SeJlvJEBZytKAyL7ANrNJ5Pwd3tQYLNGMFRKxnrAXQuA27wvmLKfXuop5A==","shasum":"d6e8c3f277c81a7c5271ab2913dbd80cbe0cc9bc","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.0-next.3.tgz","fileCount":45,"unpackedSize":71324,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAetQwD0FYTOTUqp+L3k9bD0Zls8K2Ot8lwEPlpLrp40AiAc1Ty+w9SKDTok03zu/LQqtDO46/tufPuBxPDwVbu5Nw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkPpszACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0bRAAkZ6n/scdxIgV8jeHTF9gwK2r6B0RX3ZXA8nNSFng90gMGcb9\r\nAQoJ54LCcoTl/3fJs7xOI6qhSmGTgqty6uJBJnVwt9alXE3OJ5d4hs3Q1/11\r\nFaMxgBeyNZ57QoKmKCJN9Pr+/lDzEm1a9GxtxCtXCBzeJi6zWKYVyMNaJn6/\r\nTr2dis5x2G1KK/uCqjNSSSa+0Vna4OqfCVKZFa6t6O9fDnCfr1t4uyZAO0BA\r\nXPsGjLF1ntq0+D36PMXlw+/LqSnsnHzq+54vJQ4xM82RNjweK3BwBSY3gPhH\r\nguSwL1cY/Ucu4P04REH7tcmpL5SewS33xL4z4yniqcZwubdm+51CuOHKDb4B\r\nVJXHt2/1fXliRnwsMCkNrQD+6dJZKGQae3+JAsH/lt4RAM7n57hxPde4Cf4m\r\nggnz49BaOtsnUEaSUsmzlsieyAUqunIFXdrl4w5uzSbfH3VHwFe08d9fCqqJ\r\n8exeUWWaJUuQ4N/gncYPAAQK1egWT+bhH7VKxAjbe1bMWhmWwdnM381DQHLJ\r\n0Ap4AgKDnjtH1pZrIOleVqayWbDMZ3Gjm9gSln8WEk5S+O68Trt9zovTlpgD\r\n675mGu12UNYhlhemU9iMactq1P52DlR/LkA9Crr35H6WMkCYMOvhkqBIp9+Z\r\nNE12xOnV2HbayCBVeLx9xx+NLoPCsDte3JY=\r\n=yu+v\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.0-next.3_1681824563041_0.07032348891166218"},"_hasShrinkwrap":false},"2.1.14":{"name":"@trxn/nestjs-sentry","version":"2.1.14","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"72b9c39d6047323751b08c1cd0055ae3d44f3586","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.1.14","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-yjt01E+sAsmtJB3Co4TVauIOdxq5132xQnx8SyyxEwXSvAnMqfmeUviHt04q6hNfP1WvV46CU9aO6qegfV+T+Q==","shasum":"8ac09451488013ad80b97046fee71ae40a352565","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.1.14.tgz","fileCount":45,"unpackedSize":71405,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBcr9k+toLVNKucMo8RhS0nXFi6i7Po5gQHvVKKM/H9HAiAXp2b+AHCCFLea+/bLF4pbESx1IO7Mu/LhcmeApZkH7A=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkP7M+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq/9w/8CJydY2/AkvUIQEKDEPo3nOkmfpeIt37eoLcA6ZkhYe5BXi+v\r\nBbt7Hr2IdPg2zhndc6TtFJAUSXRGLWtKxvuBVKlb5aQW9jsZPeBHRA42qy/o\r\nuhsUADVJP3E2i2fdUsmvsBVwe50cM4HDhOpch5eNRY/g9RXoPgBpxgGaXj0k\r\nW+YqnDfeRe4TV/FWLcaguMxvcZMl5jh7fmRg4H1pD9HIWq4XEEHOhYN1nmPi\r\nasGD6CoqHQXlaLLa3QTaPnegDjEEaIi5Km8Pn0vvEqNbbbp8EXpBX5HqLhMC\r\n7FV7hvwtv4bYu9rNJp/ylmi/LhBg2G0FFbUgOlbgJmY930LXVWh2IJQNFx2P\r\nq459Hc4knc+Wni75Eu3k4NePhm8rgxxDwGD4giKMFotm8XyDRtyNoAGI197p\r\nL5IKC2UUWs+WtW4r2Gdp4JWAOqGZUBRsBTRq5lSSVT5wLyfNlxZ1Az0xf8Nm\r\n7zAKmso000M+e22o+IlbxU7ZGtT/Tz0iqlaWyrA3IZUb0hj9rOHRp7Hupbly\r\nghCBhcSMGPD93FuGCZlllh75GDq6F7dXsb+FmzGeX+seR1RtFnCVcek3L3vu\r\n+/+BmWQp4LLAUTEwKdljeaesV/xIPHo1uZVoL8RlJDlb+RDVN2kGdBQWJHA4\r\npfLxHVRjKAt7haRmrkcPTtW1zXJIZoleAUo=\r\n=pw7j\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.1.14_1681896254188_0.8983799203371758"},"_hasShrinkwrap":false},"2.2.0":{"name":"@trxn/nestjs-sentry","version":"2.2.0","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"86f5a42a54e970e8e92e7701839dd554805859c5","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.0","_nodeVersion":"16.15.1","_npmVersion":"9.4.2","dist":{"integrity":"sha512-0bDyvtt15QAt57VVM9oemAWeQyE96gEYN/xFoGTF6r/A+S133e6Soz33Rt7YvQMxC+09hWGUvlQPeBi05twFeg==","shasum":"ff25db189be6f26dce9186dc16669b4a2b654b74","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.0.tgz","fileCount":45,"unpackedSize":71488,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFStNQcssRcWaOOHkcripkT5vrISu2WsrA19fwxuwG8qAiAnuVEJ9W0nLLaXKmNf+ufz8ID9HIoqHo0tSKeQmIHZtg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkP7fjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6YQ//ambFYTffxQtQ8uZP8htVNPlO7BAPpo/yzxwXsYA05S17cQVk\r\nJ98/1KikFnLwaojCnSxyzU7vEFnz8wtJX9dgKc+iXAYyQ6uW5AmBemuM7cyO\r\nY9miMhJqlrb9RzP1fu4YKQaNmGW22sORlsdsf5SPk51nMMqa9ge8u8Vl+svr\r\nHGZswKHccPSpoKLtqzmlJ7WY21yrvP/187Atz+QcTtvlWbZQdWzopN1wAoEO\r\nskifP4Mo8ME9XZRFJq9YPMQojb/K7rF4KBN6ybzLkzLkBECTqHumstF77+hd\r\nYmVjZxmJQ+q95YE1MUG1XYHC34TzOTxrKLkpc0FTyA1vU0SjtKy6I8uSqca8\r\nWTgyue7sKZ67vuKGnl+ahS6E+a6vgxVtZr2VN+4uekTdMTBBwK3mHo6Gum8E\r\nvccmuul9KAvhj1GEKuXQuA0+KiSUuBrD0UAnPh2F2ENBx67Zo+IzWTcYcrPJ\r\ncVc5G4Y+EqsUDl6PDwmUwyecEHkxuKC8LFGC1sN6MaWnPSrgO/4PBODeGpFn\r\nhkIp8ficia9lvNTebeFHLPIEhYl5xOpyzIHxetLkbeOR4vD6o2C5cykN8tC1\r\nb5GHp3mK/SnAlxZxxm24rUallSoI40xIqrYMGJd7AHcHbXUmq6cU0CIXrJdZ\r\ndzvZ/c+FHqfxk2+wtuVbDyiUy6cfIrfDpmw=\r\n=Mthd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"floross","email":"florian@rossiaud.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.0_1681897443629_0.19983750847060278"},"_hasShrinkwrap":false},"2.2.1":{"name":"@trxn/nestjs-sentry","version":"2.2.1","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"249d25bce1a61bc02397600507766a3ecc34efa4","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.1","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-bRgfa0VvSv5fnf+4RHgYnnxTsXf6aM01kXnUffdjbVHw+GAcl1ZKPHJJ4GZP0wrgV2FcT52TWGHPMeLFzYzwXA==","shasum":"b6f5f3a9107e0140c439c879b48b4776b4e2f5d3","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.1.tgz","fileCount":45,"unpackedSize":71572,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvrFZHWYGZ/7KAegNJ97zK+Hwsag1eR8GGOsWngIGPcAiEA4vk2VSE2UDRK0Mj5Ki9mJBJ0UZHUdbwFLaONq6iu4iM="}]},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.1_1684247726550_0.2119535881451371"},"_hasShrinkwrap":false},"2.2.2":{"name":"@trxn/nestjs-sentry","version":"2.2.2","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"e9b1eb8b384c436c45b651ba88242c6691db1d50","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.2","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-JdPfNkPkpBICw4LvhJa9QUDOHp930JlHIgJSonHM3n9pn8sX1zbx+FQLh5qkBPtvIeczCJosvFmrTUNwuCSeEw==","shasum":"fb8baec14d78dddf2916c2660b5c8539eb816e43","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.2.tgz","fileCount":45,"unpackedSize":71656,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZ5xHPYkPusyJxC5JBfvpuR1VsAIymj/PDc9KWYoFXqgIgRUS/CR+PM4GQ4+b3GJTTRQnfbCK2Z2q5vX+/EBQeuj8="}]},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.2_1685026334752_0.5750948626479868"},"_hasShrinkwrap":false},"2.2.3":{"name":"@trxn/nestjs-sentry","version":"2.2.3","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"f3acc4a29a03394049937372496b7d1c4dea455d","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.3","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-AkdMLpD3HOd3nxnbxhO/3aT1JNNP5oEGfLUl07iSUAQBPIb2JF2dwpi2FR6ayuBROpnl2vz5fxQplgysj87Jiw==","shasum":"60223f0e79d634ae3aca43fea7ecf894b073ecee","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.3.tgz","fileCount":45,"unpackedSize":71740,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC9LU4XntPz3iPFqfcrN5mlv9xQ2B+RHwpdT0ndkntP4AiEAyQOIaDkgEVcEFTzVAl+9MHiXet+sWDro60E6EQ2Mv10="}]},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.3_1689856678173_0.10214322158485079"},"_hasShrinkwrap":false},"2.2.4":{"name":"@trxn/nestjs-sentry","version":"2.2.4","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"6257aa003045deb2a043d0a2ccdf5d912700c89c","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.4","_nodeVersion":"16.20.1","_npmVersion":"8.19.4","dist":{"integrity":"sha512-3YLQTGOf9cSqZhe86QEpCm/rS10NdLmPZLs9kJY9Er/ASwz8I0CnWbuaLhJFw625o1cD/iHdsrezOqwpukRtOg==","shasum":"f819befa79c4542e99d5bc74558fa3a31b508ca7","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.4.tgz","fileCount":45,"unpackedSize":71824,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFhyAT0ZUMrQA2nwXTX74S75KngzY+lBmZko8YO/spUAIgRCncuJ2DlBmmG0rJbvSThR/GTJgGx/aA6cL+ku68Ztg="}]},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.4_1690962979295_0.15527663567987138"},"_hasShrinkwrap":false},"2.2.5":{"name":"@trxn/nestjs-sentry","version":"2.2.5","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"dependencies":{"@sentry/node":"7.36.0","@sentry/types":"7.36.0","express":"4.18.2","graphql":"16.6.0","reflect-metadata":"0.1.13","rxjs":"7.8.0","ts-morph":"17.0.1"},"main":"./src/index.js","types":"./src/index.d.ts","peerDependencies":{"@nestjs/common":"^9.0.0","@nestjs/core":"^9.0.0","@nestjs/graphql":"^10.0.0 || ^11.0.0","@nestjs/platform-express":"^9.0.0","@prisma/client":"^4.0.0","@trxn/nestjs-core":"^2.1.0","@trxn/nestjs-database":"^2.1.0","class-transformer":"~0.5.0","class-validator":"~0.13.0","ts-essentials":"^9.0.0"},"gitHead":"6f14770cd6f14bca173dd6c78c89205e8286f562","description":"Provides a service to send log to Sentry and an interceptor to catch errors.","bugs":{"url":"https://github.com/tractr/stack/issues"},"homepage":"https://github.com/tractr/stack#readme","_id":"@trxn/nestjs-sentry@2.2.5","_nodeVersion":"16.20.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-9LEOcUJHieVgHUXZpcUbXTiqnjlL877OvaMi4UH2AXNZCDMVRZXawSZrY8rWLgxSPyEXQKShw+a0lMTlV/0L+g==","shasum":"39403f40aad93290f627b262db15d9629f2732c7","tarball":"https://registry.npmjs.org/@trxn/nestjs-sentry/-/nestjs-sentry-2.2.5.tgz","fileCount":45,"unpackedSize":71908,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHduYpnarGa+OI42ctMo9tjCSIIEsh8oyjqrjqQPgFKXAiEAh/vB13Cx12hSTJPt4y8KOdzLi6bqRFdg1fi7wsanYvg="}]},"_npmUser":{"name":"dt-tractr","email":"dt@tractr.net"},"directories":{},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-sentry_2.2.5_1695821158242_0.5047118690271759"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-30T16:34:39.796Z","1.65.2":"2022-11-30T16:34:40.079Z","modified":"2023-09-27T13:25:58.662Z","1.65.3":"2022-12-07T15:52:39.902Z","1.65.4":"2022-12-08T21:05:00.577Z","1.65.5":"2022-12-19T22:33:53.561Z","1.65.6":"2022-12-20T20:00:05.788Z","1.65.7":"2022-12-21T19:25:06.664Z","1.65.8":"2023-01-10T20:33:32.125Z","1.65.9":"2023-01-10T21:42:13.325Z","1.65.10":"2023-01-17T08:38:23.077Z","1.65.11-beta.0":"2023-01-17T18:12:44.986Z","1.65.11-beta.1":"2023-01-18T08:11:08.908Z","1.65.11-beta.2":"2023-01-18T09:04:32.106Z","1.65.11-beta.3":"2023-01-18T10:05:07.277Z","1.65.11-next.0":"2023-01-18T10:24:38.588Z","1.65.11":"2023-01-19T16:32:39.426Z","1.65.12":"2023-01-19T20:44:41.906Z","1.65.13-next.0":"2023-01-24T09:14:12.421Z","1.65.13-next.1":"2023-01-25T08:21:59.903Z","1.65.13-next.2":"2023-01-25T16:56:05.052Z","1.65.13-next.4":"2023-01-25T17:37:08.316Z","1.65.13-next.5":"2023-01-26T08:22:40.853Z","1.65.13-next.6":"2023-01-26T08:33:34.258Z","1.65.13-next.7":"2023-01-26T11:27:41.040Z","1.65.13-next.8":"2023-01-26T13:34:42.383Z","2.0.0-next.0":"2023-02-06T09:00:58.836Z","2.0.0-next.1":"2023-02-06T09:11:36.029Z","2.0.0-next.2":"2023-02-06T09:15:30.167Z","2.0.0":"2023-02-06T10:40:07.497Z","2.0.1":"2023-02-06T11:37:49.179Z","2.0.2":"2023-02-06T12:54:37.510Z","2.0.3":"2023-02-06T16:44:02.005Z","2.0.4":"2023-02-07T12:40:06.758Z","2.0.5":"2023-02-07T14:03:44.677Z","2.0.6":"2023-02-09T11:12:59.424Z","2.0.7":"2023-02-09T14:18:38.895Z","2.0.8":"2023-02-14T16:09:53.674Z","2.0.9":"2023-02-14T17:50:36.128Z","2.0.10":"2023-02-14T19:40:14.900Z","2.0.11-next.0":"2023-02-22T08:39:43.898Z","2.0.11-next.1":"2023-02-22T09:02:50.179Z","2.0.11-next.2":"2023-02-22T11:29:35.736Z","2.0.11-next.3":"2023-02-22T12:45:46.373Z","2.0.11":"2023-02-23T15:34:59.019Z","2.0.12":"2023-02-23T16:41:00.861Z","2.0.13":"2023-02-24T19:53:06.644Z","2.1.0-next.0":"2023-02-27T11:17:39.652Z","2.1.0-next.1":"2023-02-27T12:19:28.118Z","2.1.0":"2023-02-28T06:31:48.883Z","2.1.1":"2023-03-01T21:37:02.411Z","2.1.2":"2023-03-03T16:15:49.676Z","2.1.3":"2023-03-03T20:39:40.764Z","2.1.4":"2023-03-13T19:07:54.191Z","2.1.5":"2023-03-14T15:28:56.348Z","2.1.6":"2023-03-14T17:52:58.102Z","2.1.7":"2023-03-15T17:30:52.921Z","2.1.8":"2023-03-15T20:26:16.825Z","2.1.9":"2023-03-16T19:52:08.475Z","2.1.10":"2023-03-17T12:57:24.380Z","2.1.11":"2023-03-20T16:41:49.753Z","2.1.12":"2023-03-24T18:05:15.541Z","2.1.13":"2023-03-31T11:38:01.183Z","2.1.14-next.0":"2023-04-04T08:56:40.597Z","2.2.0-next.0":"2023-04-05T11:51:06.971Z","2.2.0-next.1":"2023-04-14T13:08:10.985Z","2.2.0-next.2":"2023-04-17T07:59:22.743Z","2.2.0-next.3":"2023-04-18T13:29:23.228Z","2.1.14":"2023-04-19T09:24:14.411Z","2.2.0":"2023-04-19T09:44:03.821Z","2.2.1":"2023-05-16T14:35:26.703Z","2.2.2":"2023-05-25T14:52:14.945Z","2.2.3":"2023-07-20T12:37:58.327Z","2.2.4":"2023-08-02T07:56:19.456Z","2.2.5":"2023-09-27T13:25:58.438Z"},"maintainers":[{"name":"floross","email":"florian@rossiaud.net"},{"name":"edouarddemotes","email":"e.demotes@gmail.com"},{"name":"dt-tractr","email":"dt@tractr.net"}],"description":"Provides a service to send log to Sentry and an interceptor to catch errors.","homepage":"https://github.com/tractr/stack#readme","repository":{"type":"git","url":"git+https://github.com/tractr/stack.git"},"bugs":{"url":"https://github.com/tractr/stack/issues"},"readme":"# NestJs Sentry\n\nProvides a service to send log to Sentry and an interceptor to catch errors.\n\n## Usage\n\n### Add Sentry Module to your App\n\n```typescript\n@Module({\n  imports: [\n    SentryModule.register({\n      dsn: 'https://public@sentry.example.com/1',\n      debug: true,\n      environment: 'production',\n      release: API_VERSION ?? undefined,\n      logLevel: 2,\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Enqueue steps (breadcrumbs) during the request life cycle\n\n```typescript\nimport { Controller, Get } from '@nestjs/common';\nimport { Public } from '@trxn/nestjs-core';\nimport { SentryPerRequestLogger } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\nexport class SentryTester {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  @Get('/sample')\n  @Public()\n  public async sample() {\n    this.sentryPerRequestLogger.push('Calling sample method', 'debug');\n    // ... More things\n    this.sentryPerRequestLogger.push('Found 2 users in database', 'query');\n    // ... More things\n  }\n}\n```\n\n### Add the interceptor to the App\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@trxn/nestjs-sentry';\nimport { RequestTimestampModule } from '@trxn/request-timestamp';\n\n@Module({\n  imports: [\n    RequestTimestampModule,\n    // ...\n  ],\n  providers: [SentryAppInterceptorProvider({})],\n  exports: [],\n})\nexport class AppModule {}\n```\n\nWith this configuration, if an error occurred during the request, it will be\nsent to Sentry with the attached breadcrumbs.\n\n`RequestTimestampModule` is required to enhanced error reporting. More\ninformation below.\n\n## Advanced usage\n\n### Filter errors that will be sent to Sentry\n\n```typescript\nimport { SentryAppInterceptorProvider } from '@polo/nestjs-sentry';\n\n@Module({\n  imports: [\n    // ...\n  ],\n  providers: [\n    SentryAppInterceptorProvider({\n      filters: [\n        (error) => error instanceof HttpException && error.getStatus() >= 500,\n      ],\n    }),\n  ],\n  exports: [],\n})\nexport class AppModule {}\n```\n\n### Use interceptor on specific controller\n\n```typescript\nimport { SentryInterceptor } from '@trxn/nestjs-sentry';\n\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  // ...\n}\n```\n\n### Send logs to Sentry outside a request context\n\nYou can use the global logger if you are not in a request context.\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryLogger: SentryLogger) {}\n\n  public method() {\n    this.sentryLogger.warn('This is a warning');\n  }\n}\n```\n\n### Send error manually\n\n```typescript\nimport { Injectable } from '@nestjs/common';\nimport { SentryLogger } from '@trxn/nestjs-sentry';\n\n@Injectable()\nexport class OtherService {\n  constructor(protected sentryPerRequestLogger: SentryPerRequestLogger) {}\n\n  public method() {\n    try {\n      // ....\n    } catch (error) {\n      this.sentryPerRequestLogger.handleError(e);\n    }\n  }\n}\n```\n\n## Reporting\n\n### Global and per request\n\nThis module uses 2 scopes for reporting: global and per-request.\n\nFor better logging and breadcrumb merging, use the per-request scope.\n\nTo send logs to the global scope, use service `SentryLogger`.\n\nTo send logs to the per-request scope, use service `SentryPerRequestLogger`.\nBeware that all services using `SentryPerRequestLogger` will use the request\nscope:\n\n```typescript\n@Injectable({ scope: Scope.REQUEST })\n```\n\nThe interceptor `SentryInterceptor` uses the `SentryPerRequestLogger`.\n\n### Default integrations\n\nBy default, Sentry add console logs and HTTP requests as `breadcrumbs` (in the\nglobal scope). If an error occurs, these breadcrumbs are sent with the error\n(along manually added breadcrumbs).\n\nFor more information about these default integrations:\nhttps://docs.sentry.io/platforms/javascript/configuration/integrations/default/\n\n### Global breadcrumbs\n\nThese default integration are not request scoped. Therefore, we do filter\nbreadcrumbs older than the request to separate signal from noise.\n\n**Warning**\n\nIf two requests are concurrent, global breadcrumbs emitted by those requests\nwill be mixed.\n\nTo disable global breadcrumbs from per request reporting, use this option:\n`pushGlobalBreadcrumbsWithPerRequestBreadcrumbs`.\n\n### Request age\n\nWe need to determine the age of the request in order to filter global\nbreadcrumbs and associate them to the current request.\n\nTo determine the age of the request, we use the module `RequestTimestampModule`\nfrom `@trxn/request-timestamp`. This module adds the request timestamp in\n`req.res.locals.timestamp`.\n\nIf this module is not loaded, we assume the request is 2 seconds old. This age\ncan be configured with this option: `requestDefaultAge` (in milliseconds).\n\n### Prisma middleware\n\nThis module adds a listener on Prisma queries:\nhttps://www.prisma.io/docs/concepts/components/prisma-client/middleware\n\nAs long as we cannot access the request context in this middleware, queries are\npushed as breadcrumbs in the global scope. These breadcrumbs will then be\nfiltered using the request's age mechanism.\n\n### Example\n\nThis controller:\n\n```typescript\n@Controller(['sentry-tester'])\n@UseInterceptors(\n  SentryInterceptor({\n    filters: [\n      (error) => error instanceof HttpException && error.getStatus() >= 500,\n    ],\n  }),\n)\nexport class SentryTester {\n  constructor(\n    @Inject(USER_SERVICE)\n    protected userService: UserService,\n    protected httpService: HttpService,\n    protected sentryPerRequestLogger: SentryPerRequestLogger,\n  ) {}\n\n  @Get('/throw')\n  @Public()\n  public async throw() {\n    this.sentryPerRequestLogger.push('Calling throw method', 'debug');\n\n    const user = await this.userService.findFirst({\n      where: {},\n    });\n\n    console.warn('This is a console.warn');\n\n    await new Promise((r) => setTimeout(r, 1000));\n\n    if (user) {\n      this.sentryPerRequestLogger.push(\n        `Found user \"${user.name}\" with email \"${user.email}\"`,\n        'user',\n      );\n    } else {\n      this.sentryPerRequestLogger.push('No user found', 'user');\n    }\n\n    await this.httpService\n      .request({\n        method: 'GET',\n        url: 'https://dog.ceo/api/breeds/image/random',\n        headers: {\n          'Content-type': 'application/json;charset=utf-8',\n        },\n      })\n      .toPromise();\n\n    await new Promise((resolve, reject) =>\n      setTimeout(() => {\n        reject(new ConflictException('This is a conflict'));\n      }, 1000),\n    );\n\n    return 'ended';\n  }\n}\n```\n\nWill show this in Sentry:\n\n![Sentry log sample](docs/sentry-error.png)\n","readmeFilename":"README.md"}