{"_id":"@birtalanrobert/observability","_rev":"9-91ee14cb27ff91c1849d9691d629ad7d","name":"@birtalanrobert/observability","dist-tags":{"latest":"1.5.0"},"versions":{"0.1.0":{"name":"@birtalanrobert/observability","version":"0.1.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@0.1.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"f87f63d30c8b9d4976b0064697ae7453d748b63c","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-0.1.0.tgz","fileCount":50,"integrity":"sha512-6OvJ21QlJaGggm7VwTGn8GZzRggtUW4c2OWVIt9P2mqnRZTY/ZZiUtqgTZq/pXmIeuqjECU82S+Gw4nNqL55Tg==","signatures":[{"sig":"MEUCIBvmqMjaOTcurNNvPowcuihoovDM2zioW6tqSv9GmQ53AiEAwUAHWCPeDbabQILudZNhRraZRwhEoMOKSWLk4zrX5V8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115236},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-0.1.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/a606e9f8a2515e9450c74b90aa8e2ade/birtalanrobert-observability-0.1.0.tgz","_integrity":"sha512-6OvJ21QlJaGggm7VwTGn8GZzRggtUW4c2OWVIt9P2mqnRZTY/ZZiUtqgTZq/pXmIeuqjECU82S+Gw4nNqL55Tg==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_0.1.0_1787664406639_0.44595703316339996","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@birtalanrobert/observability","version":"0.2.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@0.2.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"e23ccd54cbb83ef2c7723f1b5d5a2376703fd3de","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-0.2.0.tgz","fileCount":51,"integrity":"sha512-G/TFy/Rs2G/ENGaHeorZY50NlGe/3NTM9+Cbx7NlrV9icZduNlL50sPtg8Y8CrWGw2Pa090xmXqLmGTQqzlkPQ==","signatures":[{"sig":"MEYCIQDCszMs6qazjld7EkRV8l8DlCM2SzTcojjNje445ABKwwIhAKFA+y33AJs5MWkhpDL/DSSytR0/b7sG6ZOXfuAZxz/a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIELeKNBcXMGrS70P3xucL0zr910QuVzqe3Kz+gXTG6zpAiAYVpdXZS9r8pgqe/prEm0rU6r4XGa8BzV0aU7hA5lJnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120568},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-0.2.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/ef60606255e3f77fe0a4e8dd57f66c66/birtalanrobert-observability-0.2.0.tgz","_integrity":"sha512-G/TFy/Rs2G/ENGaHeorZY50NlGe/3NTM9+Cbx7NlrV9icZduNlL50sPtg8Y8CrWGw2Pa090xmXqLmGTQqzlkPQ==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_0.2.0_1787732905681_0.7934451359042793","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@birtalanrobert/observability","version":"1.0.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@1.0.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"9214b3128036ffdceee24671312cddb5a438c04a","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.0.0.tgz","fileCount":56,"integrity":"sha512-toSysyLCpl/yp7JrjT9Okd5nuUaxHRqUxpbAwBfVPojkDjinIi/ufl+MOSLpBA4XwiATVV6zMvfVLD8RrGSOVw==","signatures":[{"sig":"MEUCIQDcBGobdUR6x5CCYBm007zpKzlVzVbOOrqYqttswjcj1gIgBgryp4wujgMlX7weazh2uFocmLiHzRtQGzRa/6pJjX0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGfJAgs7TkV2WWIGucbcXMAfR4E9fHPQCXvXmwNql2QiAiEAy0MyDvH/tBFXlofYa/ihHWCDhDGmLj+U7YiC6b903yk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129296},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-1.0.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/8519294ae3c047319b34a7065a26d14a/birtalanrobert-observability-1.0.0.tgz","_integrity":"sha512-toSysyLCpl/yp7JrjT9Okd5nuUaxHRqUxpbAwBfVPojkDjinIi/ufl+MOSLpBA4XwiATVV6zMvfVLD8RrGSOVw==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.0.0_1787736205638_0.8338781200728185","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@birtalanrobert/observability","version":"1.0.1","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@1.0.1","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"4a2350fd4f32aed06f36eb3fdfc61bc955474746","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.0.1.tgz","fileCount":56,"integrity":"sha512-w6tgDaalOsse3xvq1KFayj0zaBphad2qBeLc/O3zfbC5VIf9lSoAzfuJaLdrMBpSKtPZ9JrEdvYV3UaqVok1MA==","signatures":[{"sig":"MEYCIQCCr3OFZTiP28pXhWYDXWFGapGO5B1xU0LMzRK3CWTWfAIhAPNmhT+rxDBgmN59rIidrXBDCpJbVSQRNKYrDkxmsZyC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHQkIVGAuvzu4qw/6sAVERYhkDxuZuj0u4Hv8pxX/AyUAiEA28RsZqXsGdUvTDLLSjA64yHOsE7AiwTtvHIGexOlZ9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129554},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-1.0.1.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/874958296e1624cc2e394c000440a6eb/birtalanrobert-observability-1.0.1.tgz","_integrity":"sha512-w6tgDaalOsse3xvq1KFayj0zaBphad2qBeLc/O3zfbC5VIf9lSoAzfuJaLdrMBpSKtPZ9JrEdvYV3UaqVok1MA==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.0.1_1787736489163_0.47652064871115996","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@birtalanrobert/observability","version":"1.1.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@1.1.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"0f761b706292b44c151c5260e2c40f19f59267c6","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.1.0.tgz","fileCount":56,"integrity":"sha512-Y7JZ6uEhHXNSct4fQ2o/mGSdqgec35ACub5zw6OLG47zIHDw/6Tqx6Db10+r7G8YmNSLG5pKQtDVFhoH40GdKg==","signatures":[{"sig":"MEQCIBv5tJRzx/dS/gwq+yhkCAxP616Ai14fAVsy+FuOQr43AiAPgsyyE84LKzVhow7qAPM8ml7h6ieSato44zmCyQoShA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC3f9C8ZU2s1eA9sG2ZL1ZLMuFoGdrumWowOYf86OcQ9AiBBZEEDxVJJRwh4xuCL8BPIy66cxDAb950H37gu7nczrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138159},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-1.1.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/7b599b6a7fb8c2e2f9824d5b6c5f6df6/birtalanrobert-observability-1.1.0.tgz","_integrity":"sha512-Y7JZ6uEhHXNSct4fQ2o/mGSdqgec35ACub5zw6OLG47zIHDw/6Tqx6Db10+r7G8YmNSLG5pKQtDVFhoH40GdKg==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.1.0_1787737919677_0.1697926635209177","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@birtalanrobert/observability","version":"1.2.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@1.2.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"1619e7f3ce6100bc05f2744d7517e32797df815c","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.2.0.tgz","fileCount":56,"integrity":"sha512-cyA5u4blIicXUXguYqhcPXIt6B3uV/V/xXFnDz+PI8b78STxVHBNBw5LqjylV/MHoqZiWnYLs2NETJZiZBbFCw==","signatures":[{"sig":"MEUCIH6bEmtgvlGmWMU0ZxtDXObhfeVgHCWcQCHjmZsoXCTKAiEAmIU5wkxeQPxuw26BW83g1d/7DGygEc3StEKDJW1A1N4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGV9NkHISqRcWl3PB6G5j1VaaZBOhzLlh9Dx48zuz7aSAiEAmGqm9NiU2i/6cKNr6ER6OD0+7sx7ubeGnqeQvJBt/c0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":170114},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-1.2.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/b9ca8be877e22d664e59d7ae642e4ca4/birtalanrobert-observability-1.2.0.tgz","_integrity":"sha512-cyA5u4blIicXUXguYqhcPXIt6B3uV/V/xXFnDz+PI8b78STxVHBNBw5LqjylV/MHoqZiWnYLs2NETJZiZBbFCw==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.2.0_1788707569346_0.14467716404078756","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@birtalanrobert/observability","version":"1.3.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@1.3.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"6afdf2e71bc55e78d579f380b52665ac24f50f52","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.3.0.tgz","fileCount":56,"integrity":"sha512-H2xJT3fyliOEgzAd0G81gPXmM2DkGn0/4CYOOa6tjV3FVB5Wceo09T13ICAsrfx5RThbjitzURC6S4V8odKxxQ==","signatures":[{"sig":"MEYCIQCzCOsVTyDEBxAMQgbQY9IpqJefz336lf5Bgi84NMgG6QIhAMWz5ZrW2km216TzBOgeFR6+R2Aj0jrLx+tU6/b4SlFN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDKmWXOYbMolMUUgWkt7Qf8Hf6pRJKZwvGYLr0hdAVnpgIgUMxnARhEeJhaEv9lCpww5N5z6hP/RT+oWzY/cowl9cI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235313},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-1.3.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/7287c71eaae34fb0a3abdff4719cd1ca/birtalanrobert-observability-1.3.0.tgz","_integrity":"sha512-H2xJT3fyliOEgzAd0G81gPXmM2DkGn0/4CYOOa6tjV3FVB5Wceo09T13ICAsrfx5RThbjitzURC6S4V8odKxxQ==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.3.0_1789925510963_0.8823279994339295","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@birtalanrobert/observability","version":"1.4.0","license":"AGPL-3.0-only","_id":"@birtalanrobert/observability@1.4.0","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"homepage":"https://github.com/birtalanrobert/mortar#readme","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"49e985a6e8eaae93c9ac5e981130c0efb624b6bc","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.4.0.tgz","fileCount":61,"integrity":"sha512-nlGgJl8gCXj38SSDTeQQw6IUjW36EXpQqFECc/WPCbnbVnNQMBFFjohotGZOM/LJEy2Hw7qIe7qd7wOxy6ZFpA==","signatures":[{"sig":"MEUCIBuZtuC7mJbcQPW7du81lsdAJi5eEE/TAglie7+uxAJSAiEAiYUbP/dXSR4f5HlT6cb+iwZlfouDFZc8oQ8tzGBfOk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICfWxQ7qsPQ6raAvLwVx6Ehr4I8gL2qA7QG2JAHhzMaMAiAWYhoWMhzeaY58MOnd0G2gWB5czDtuk873uJK2SBaCZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":252836},"main":"./dist/index.js","type":"commonjs","_from":"file:birtalanrobert-observability-1.4.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/570d37a941033e733c1320e476f7e8ab/birtalanrobert-observability-1.4.0.tgz","_integrity":"sha512-nlGgJl8gCXj38SSDTeQQw6IUjW36EXpQqFECc/WPCbnbVnNQMBFFjohotGZOM/LJEy2Hw7qIe7qd7wOxy6ZFpA==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/observability_1.4.0_1790193806351_0.26392417952117553","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"_id":"@birtalanrobert/observability@1.5.0","bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"dist":{"shasum":"014eae497f3310047d67067b12f56f365bfe2eb1","tarball":"https://registry.npmjs.org/@birtalanrobert/observability/-/observability-1.5.0.tgz","fileCount":61,"integrity":"sha512-b4KCfAX80Y1zP0QJE6wvNBtPPYb5FT9hRGabMFikyFrwllJFPAGZhNN2JMjr4hfR8C1khlSFjDqBiF3WM4tIzw==","signatures":[{"sig":"MEUCIFiYgcArMezerwuOUttJ6GQoF4/iCVdLsaCsuEto1w3HAiEAl2G/RbKgDrVKzLFsE8AGgfJtymszJvdZBkE2eijfYcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAZqTDBt7i7xtrGpt8RC0ViL6Md+dtqyNm/xlTwYsX5EAiAMVemwlyivfspokKedcoloz+74TaSxvbu8183Hl3RqoQ=="}],"unpackedSize":271727},"main":"./dist/index.js","name":"@birtalanrobert/observability","type":"commonjs","_from":"file:birtalanrobert-observability-1.5.0.tgz","types":"./dist/index.d.ts","mortar":{"entries":["nestjs"]},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./nestjs":{"types":"./dist/nestjs/index.d.ts","default":"./dist/nestjs/index.js"},"./package.json":"./package.json"},"license":"AGPL-3.0-only","scripts":{"build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","typecheck":"tsc -p tsconfig.json"},"version":"1.5.0","_npmUser":{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"},"homepage":"https://github.com/birtalanrobert/mortar#readme","_resolved":"/private/var/folders/zx/7dcyg3mn6kjfyzsymzgpx1jr0000gn/T/c806ed275cb55c7a2e05d5d8935944fb/birtalanrobert-observability-1.5.0.tgz","_integrity":"sha512-b4KCfAX80Y1zP0QJE6wvNBtPPYb5FT9hRGabMFikyFrwllJFPAGZhNN2JMjr4hfR8C1khlSFjDqBiF3WM4tIzw==","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"_npmVersion":"11.13.0","description":"Structured logging, metrics and correlation","directories":{},"maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"_nodeVersion":"24.16.0","dependencies":{"pino":"^10.3.1","pino-pretty":"^13.0.0","@birtalanrobert/context":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"rxjs":"^7.0.0","@nestjs/common":"^10.0.0 || ^11.0.0"},"peerDependenciesMeta":{"rxjs":{"optional":true},"@nestjs/common":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/observability_1.5.0_1790396880463_0.03314483567437221"}}},"time":{"created":"2026-08-25T13:26:46.461Z","modified":"2026-09-26T04:28:00.709Z","0.1.0":"2026-08-25T13:26:46.784Z","0.2.0":"2026-08-26T08:28:25.776Z","1.0.0":"2026-08-26T09:23:25.728Z","1.0.1":"2026-08-26T09:28:09.244Z","1.1.0":"2026-08-26T09:51:59.780Z","1.2.0":"2026-09-06T15:12:49.449Z","1.3.0":"2026-09-20T17:31:51.075Z","1.4.0":"2026-09-23T20:03:26.579Z","1.5.0":"2026-09-26T04:28:00.543Z"},"bugs":{"url":"https://github.com/birtalanrobert/mortar/issues"},"license":"AGPL-3.0-only","homepage":"https://github.com/birtalanrobert/mortar#readme","repository":{"url":"git+https://github.com/birtalanrobert/mortar.git","type":"git","directory":"packages/observability"},"description":"Structured logging, metrics and correlation","maintainers":[{"name":"birtalanrobert","email":"birtalanrobert@gmail.com"}],"readme":"# @birtalanrobert/observability\n\nStructured logging and metrics.\n\n## Using it in a NestJS application\n\n`LoggerModule.forRootAsync`, registered **second** — after `ConfigModule`, so\nits options are validated, and before everything else, so anything that logs\nduring its own construction has somewhere to log to.\n\n```ts\nimport { LoggerModule } from '@birtalanrobert/observability/nestjs';\n\n@Module({\n  imports: [\n    ConfigModule.forRoot({ schema: envSchema }),\n\n    LoggerModule.forRootAsync({\n      inject: [ConfigModule.token()],\n      useFactory: (config: AppConfig) => ({\n        serviceName: config.SERVICE_NAME,\n        level: config.LOG_LEVEL,\n        // Human-readable locally; one JSON object per line everywhere else,\n        // because that is what a log shipper can parse.\n        pretty: config.NODE_ENV === 'development',\n        // With a fleet, \"which of these eight replicas is stuck\" is the first\n        // question, and without this the logs cannot answer it.\n        base: config.INSTANCE_ID ? { instance: config.INSTANCE_ID } : undefined,\n      }),\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\nThe module is `@Global()`, so one registration covers the application.\n\n## Injecting a logger\n\n```ts\nimport { InjectLogger } from '@birtalanrobert/observability/nestjs';\nimport type { Logger } from '@birtalanrobert/observability';\n\n@Injectable()\nexport class Thing {\n  constructor(@InjectLogger() private readonly logger: Logger) {}\n\n  work() {\n    // Fields, not interpolation: a message you can search by field survives\n    // being read by a machine.\n    this.logger.info('Sent request', { requestId, parties: 3 });\n  }\n}\n```\n\n`InjectMetrics()` and `Metrics` work the same way.\n\n## Replacing Nest's own logger\n\n`NestLoggerAdapter` makes the framework's boot output go through the same\npipeline, so a deployment produces one log format rather than two:\n\n```ts\nconst app = await NestFactory.create(AppModule, { bufferLogs: true });\napp.useLogger(app.get(NestLoggerAdapter));\n```\n\n`bufferLogs` matters — without it, everything Nest prints before the adapter is\nresolved escapes in the default format.\n\n## Request logging\n\n`LoggingInterceptor` records method, route, status and duration for every\nrequest. Register it once, globally:\n\n```ts\nproviders: [{ provide: APP_INTERCEPTOR, useClass: LoggingInterceptor }];\n```\n\n## Outside NestJS\n\nThe root entry is framework-free, so a worker or a script builds a logger\ndirectly:\n\n```ts\nimport { createLogger } from '@birtalanrobert/observability';\n\nconst logger = createLogger({ serviceName: 'importer', level: 'info' });\n```\n\n## Metrics\n\nAn in-process registry with counters, gauges and histograms. A metric is named\nonce — with the sentence that explains it — and the instrument it returns is\nwhat carries values and labels:\n\n```ts\nmetrics.counter('jobs_total', 'Jobs handled, by outcome.').increment(1, { status: 'failed' });\nmetrics.gauge('queue_depth', 'Jobs waiting.').set(waiting, { queue: 'notifications' });\nmetrics.histogram('job_duration_ms', 'How long a job took.').observe(elapsed, { queue });\n```\n\nLabels are stored beside the observation rather than parsed back out of a key,\nbecause parsing a key back into labels breaks the first time a label value\ncontains the separator.\n\n`InMemoryMetrics` is the registry `LoggerModule` provides unless given another,\nso it is built for a process that runs for months. **Nothing it keeps grows with\nwhat it records**: a histogram is a count per bucket, a count, a sum, a minimum\nand a maximum — the buckets `DEFAULT_BUCKETS_MS` unless the first caller names\nthe histogram with its own, which then fix it — and a ring of its most recent\nobservations for `observations()`, a thousand unless `recentObservations` says\notherwise. Naming a histogram again with different buckets is refused: one\nmetric counted into two sets of buckets is two metrics under one name.\n\n```ts\nmetrics.histogram('timeline_punctuality_seconds', 'From due to done.', [0.1, 0.5, 1, 5, 30]);\n```\n\n### Serving them\n\n`toPrometheus` renders a snapshot as text exposition. It is a plain function\nrather than a method so that a Nest controller, a bare `node:http` handler and\na test can all use the same one — a deployment points a single scraper at every\nprocess it runs, and two of them rendering the same registry differently is a\ndashboard that can only show half a system.\n\n```ts\nimport { InMemoryMetrics, toPrometheus, type Metrics } from '@birtalanrobert/observability';\n\n@Get('metrics')\nread(): string {\n  // A deployment supplying its own adapter exports through that instead, and\n  // this should report nothing rather than pretend to be the source.\n  return this.metrics instanceof InMemoryMetrics ? toPrometheus(this.metrics.snapshot()) : '';\n}\n```\n\nA histogram renders as its cumulative `_bucket` series up to `+Inf`, then\n`_count`, `_sum` and `_max`. The buckets are what a percentile comes from —\n`histogram_quantile(0.95, rate(job_duration_ms_bucket[5m]))` — which a mean\ncannot give; `_max` answers the question neither can, how slow the slowest one\nwas. A snapshot assembled by hand with no buckets renders without them.\n","readmeFilename":"README.md"}