{"_id":"@elephantroom-jumbo/telemetry","_rev":"10-e8ceff1ec53f3aa60afb979b8e1eb2ca","name":"@elephantroom-jumbo/telemetry","dist-tags":{"latest":"0.5.0"},"versions":{"0.2.0":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.0","_id":"@elephantroom-jumbo/telemetry@0.2.0","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"456ce600785fd37c0d1a7c32a585b1e011146e7f","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.0.tgz","fileCount":20,"integrity":"sha512-d5ik7sdF6m9/+VwU8HdPs0YAjSDfxWF87d5X6L2VxDWZXfQucTGhP7V4v2YKa/kVK3Qeu4oIg8ajfSmjLvO74A==","signatures":[{"sig":"MEYCIQCPPY5pT1lGkuVjP68AXeCHZUuteMQvuQH2FL/FYAbLDAIhALD/+XHjcsEhznr/kwiRxS+maIXZFPMSEK8woPRsDoDb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17468},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"4e6a84f673e6821818bb59128a1a95f183cadd3b","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.0_1775483188774_0.4317026096166994","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.1","_id":"@elephantroom-jumbo/telemetry@0.2.1","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"bcbf8901167f846bfe0a0161463a62c4d98a5f90","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.1.tgz","fileCount":20,"integrity":"sha512-ztUWmkJEFX3rlX+nOxgwnzBF9KrQ+YGf1DoZ/c/6d25K0Ele5Haqti0NlkmKlQ/qG/ih5tVnNwfQXvEfGYlqVQ==","signatures":[{"sig":"MEUCIAKYFhbD0hZnRtFQ/RHkdeP46gzra8qqUL+lxae30pFqAiEA/vcxS3f6j3Q7fv3dbOWPfJwkJBNnDRA8pp0CDzGL3b0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17691},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"056826a26626f30ad3504784701321e1ae2370b7","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.1_1776084777458_0.009159211473047435","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.2","_id":"@elephantroom-jumbo/telemetry@0.2.2","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"f5f11a64e35781b000fa6d71764557a14e282a58","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.2.tgz","fileCount":20,"integrity":"sha512-wM+Bzlx/L4gQahZ+mvby2sIthxQnOrb6X0+22e/TVTmj+nIjHbv5+2lxlzNq0PMAOPbqjWEPN8gnH5/3r2Xj7w==","signatures":[{"sig":"MEUCIQD/RilIyqwptefuB7zf/z1ysqgnxUfJvQpb7PT8g9brkAIgWxhNiVE9es/ocCKxikbgp53sHRUl6oEvjmQW2zoqthk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17914},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f6bd10909a23dc144784effb829748c87fe31cbe","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.2_1776086237657_0.5647327883648021","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.3","_id":"@elephantroom-jumbo/telemetry@0.2.3","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"034dc89f17e7207345631e53a96b8c11a9ea86d5","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.3.tgz","fileCount":20,"integrity":"sha512-ZmqLwWN9it/1AEENSMef6n3ya0zz35TY91gUPRKxaSfNgZ5hssnF5b5G7XFQRLX+qGS3p/qiTbaf4TLo1LCF8g==","signatures":[{"sig":"MEQCIE6RMutUGVHNl/ig5hVY9jldiNRGHi/ePObJ6zqBwMHBAiB0oFWlc1vWBJzNrXy77Fv6piUxm1fYtv3QATWW2y0LSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20232},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"167a8c9a273aa727c31ca739ebeaf33270cf7dcd","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.3_1776086555759_0.7210775039990112","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.4","_id":"@elephantroom-jumbo/telemetry@0.2.4","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"638b20d22aedd030fd013585c0737c6cffa9ef17","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.4.tgz","fileCount":21,"integrity":"sha512-cw9XFaWB00hFxDpttqolEvGf47WEsXjAKnwW/OGuWxP/e+xBFUvuMmNaPmiV1AistY91KZihphZta5WHUM8P7Q==","signatures":[{"sig":"MEUCIHMRdsoXYZwU0cuN5IbDzK+CMZCxrz5ytnqdO8QodM3YAiEAz1nax2qoXNYhbwKFVwcIbnKC5KVvlkKdALxtxEnM+FE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22352},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"6f61fd54abfe6841f1667bb14ea884ebcfc571eb","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.4_1776091776948_0.3023391666526358","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.5","_id":"@elephantroom-jumbo/telemetry@0.2.5","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"b94542033b6c0b69b71e701f2d5da6a3a50df0f6","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.5.tgz","fileCount":23,"integrity":"sha512-BCBKM4SBNYK+hbqDijxl3iuIHAcZli3Vo9QlXegd+u9SGpNQMNoOHpTS6b9PsgyGBwV4Rumh0/LZQ+8TxFyjFg==","signatures":[{"sig":"MEQCIGvSaq26qeMGGzQrBSfgmGu78AjHXgcDE4gBxwg6rXMGAiBCIpY1+V1JcPyIWrJqVGRKxSUHbXQ/G3xhCYsR1IDNyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25220},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"519e374c1bf4a3919c7dacb8a4cff3327239f179","scripts":{"build":"tsc","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.5_1777083495152_0.9868194978107856","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@elephantroom-jumbo/telemetry","version":"0.2.6","_id":"@elephantroom-jumbo/telemetry@0.2.6","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"6bb074f75b76d715187de9b3e684f46f5df1dee2","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.2.6.tgz","fileCount":17,"integrity":"sha512-Tnw84OdgZHtZq8vvXzDfb/OwhaOVjN8gS0mzBsBwrvZ8U66Xpgb6KKwQtijq7fpKN/dHTZK2ynav0Ly4bsjv5g==","signatures":[{"sig":"MEYCIQCOZJeKP1zQmLWJ2ob+43rXlUjrSL5cyp2gcj4S3bNSMgIhAJpbe3gbGsYNLafeo+Gx9nD+UUlceKYfFPxfGrJ4+UEN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19150},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"08c29403e26b0a1899fa77743bfd43517ee05348","scripts":{"build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-logs":"^0.57.0","@opentelemetry/sdk-node":"^0.57.0","@opentelemetry/resources":"^1.30.0","@opentelemetry/sdk-metrics":"^1.30.0","@opentelemetry/semantic-conventions":"^1.30.0","@opentelemetry/exporter-logs-otlp-proto":"^0.57.0","@opentelemetry/exporter-trace-otlp-proto":"^0.57.0","@opentelemetry/auto-instrumentations-node":"^0.56.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.57.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.2.6_1782994633874_0.3966577305734047","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@elephantroom-jumbo/telemetry","version":"0.3.0","_id":"@elephantroom-jumbo/telemetry@0.3.0","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"ed53435e29eac0ff8b0b6ac03e9a23173a8ede7d","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.3.0.tgz","fileCount":17,"integrity":"sha512-zlgde+A9RnyYHRQCcMXDEovD70XahVhS/P2KHxxxbBgV9mFFehA22WVy7blieBqEEh2GKlpMQN5QbdEnImbVZw==","signatures":[{"sig":"MEYCIQCwpdHpedox8+gPHKC3r4YDJuqgBwFtDxUqXIJbq/LLuAIhAITPD96JO6+liMBHZDj+qOVZwUtVVfR34VfR8lgim6S3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19225},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.219.0","@opentelemetry/sdk-logs":"^0.219.0","@opentelemetry/sdk-node":"^0.219.0","@opentelemetry/resources":"^2.8.0","@opentelemetry/sdk-metrics":"^2.8.0","@opentelemetry/semantic-conventions":"^1.41.0","@opentelemetry/exporter-logs-otlp-proto":"^0.219.0","@opentelemetry/exporter-trace-otlp-proto":"^0.219.0","@opentelemetry/auto-instrumentations-node":"^0.77.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.219.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.3.0_1782996026200_0.3987990121026326","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@elephantroom-jumbo/telemetry","version":"0.4.0","_id":"@elephantroom-jumbo/telemetry@0.4.0","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"dist":{"shasum":"fbd69a8bea4585b4cd6c4233e67fc3a55c97fca9","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.4.0.tgz","fileCount":17,"integrity":"sha512-ydohGBz0kPLRbIyYup3Zjl0T+D752LT5pSJopiKIbg13Pyl5HWmathRd+JdB3H/VUXYBO7IE35VUi402wUwQRA==","signatures":[{"sig":"MEUCIQCPkBhxyq5zyiMeGU5v1T0D4RCjSv9Y3fTE0555OmIAhQIgMlOCi+FlgrJf6m5mtb9Q2iqvNWYP6TcAo8kSwnP0Y+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22165},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"db2a3a7f9a4f8f1a85a70004f06e3233603f088d","scripts":{"build":"tsc","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"_npmVersion":"11.11.1","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","directories":{},"_nodeVersion":"25.8.2","dependencies":{"pino":"^9.6.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.219.0","@opentelemetry/sdk-logs":"^0.219.0","@opentelemetry/sdk-node":"^0.219.0","@opentelemetry/resources":"^2.8.0","@opentelemetry/sdk-metrics":"^2.8.0","@opentelemetry/semantic-conventions":"^1.41.0","@opentelemetry/exporter-logs-otlp-proto":"^0.219.0","@opentelemetry/exporter-trace-otlp-proto":"^0.219.0","@opentelemetry/auto-instrumentations-node":"^0.77.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.219.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/telemetry_0.4.0_1783072819386_0.7113280394293473","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@elephantroom-jumbo/telemetry","version":"0.5.0","description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","typecheck":"tsc --noEmit","test":"node --import tsx --test test/*.test.ts","prepublishOnly":"npm run build"},"dependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.219.0","@opentelemetry/auto-instrumentations-node":"^0.77.0","@opentelemetry/exporter-logs-otlp-proto":"^0.219.0","@opentelemetry/exporter-metrics-otlp-proto":"^0.219.0","@opentelemetry/exporter-trace-otlp-proto":"^0.219.0","@opentelemetry/resources":"^2.8.0","@opentelemetry/sdk-logs":"^0.219.0","@opentelemetry/sdk-metrics":"^2.8.0","@opentelemetry/sdk-node":"^0.219.0","@opentelemetry/semantic-conventions":"^1.41.0","pino":"^9.6.0"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^22.0.0","tsx":"^4.19.0","typescript":"^5.6.0"},"peerDependencies":{"express":"^4.0.0 || ^5.0.0"},"peerDependenciesMeta":{"express":{"optional":true}},"publishConfig":{"access":"public"},"engines":{"node":">=20"},"gitHead":"1c7e64471b97e2475fa9ffe3b8f8f6952923e35f","_id":"@elephantroom-jumbo/telemetry@0.5.0","_nodeVersion":"25.8.2","_npmVersion":"11.11.1","dist":{"integrity":"sha512-ytQXJyxvzjRSjKp4MV03WHvmfwqQ3ctbvFZAf3NGJ58XBC2nUU6G7lblYrzV2dtB6jrtqJORQwRz2X65MSE2Ow==","shasum":"aa854022376280b69ebd9f7ef937ede985f63aec","tarball":"https://registry.npmjs.org/@elephantroom-jumbo/telemetry/-/telemetry-0.5.0.tgz","fileCount":18,"unpackedSize":30935,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDgM2fOO1WMo5CoPPMlRkH41bLbgn1VFB7xLaeswPBXjAIhALB36Eq1n1w+Ed54TIa60aU10flshckwsFJ9F9fOMe0O"}]},"_npmUser":{"name":"aechevar-er","email":"angelo@elephantroom.com.au"},"directories":{},"maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/telemetry_0.5.0_1783433160143_0.18784460146301396"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-06T13:46:28.647Z","modified":"2026-07-07T14:06:00.568Z","0.2.0":"2026-04-06T13:46:28.925Z","0.2.1":"2026-04-13T12:52:57.633Z","0.2.2":"2026-04-13T13:17:17.793Z","0.2.3":"2026-04-13T13:22:35.896Z","0.2.4":"2026-04-13T14:49:37.141Z","0.2.5":"2026-04-25T02:18:15.298Z","0.2.6":"2026-07-02T12:17:14.081Z","0.3.0":"2026-07-02T12:40:26.349Z","0.4.0":"2026-07-03T10:00:19.524Z","0.5.0":"2026-07-07T14:06:00.379Z"},"description":"Batteries-included OpenTelemetry SDK for Jumbo Node services","maintainers":[{"name":"aechevar-er","email":"angelo@elephantroom.com.au"}],"readme":"# @elephantroom-jumbo/telemetry\n\nBatteries-included OpenTelemetry SDK for Jumbo Node services. Wraps\n`@opentelemetry/sdk-node` with sane defaults, a Pino logger that forwards to the\nLGTM stack, HTTP RED metrics, and Cube query tracing — so a service gets traces,\nmetrics, and logs with one `init()` call.\n\n- **npm:** [`@elephantroom-jumbo/telemetry`](https://www.npmjs.com/package/@elephantroom-jumbo/telemetry) (public)\n- ESM only (`\"type\": \"module\"`), Node ≥ 20.\n\n## Install\n\n```bash\nnpm install @elephantroom-jumbo/telemetry\n```\n\n## Quick start\n\n`init()` **must run before importing anything else** — auto-instrumentation\npatches modules at import time.\n\n```ts\nimport { init } from '@elephantroom-jumbo/telemetry';\ninit({ serviceName: 'jumbo-production' }); // first import in the entry point\n\nimport { getLogger } from '@elephantroom-jumbo/telemetry';\nconst log = getLogger('orders');      // Pino child, auto-injects trace_id/span_id\nlog.info({ orderId }, 'order placed');\n```\n\n### Environment\n\n```\nOTEL_EXPORTER_OTLP_ENDPOINT=https://<collector-host>\nOTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer <token>\nNODE_ENV=production            # → deployment.environment.name resource attribute\n```\n\n## API\n\n| Export | Purpose |\n|--------|---------|\n| `init(config)` | Start the SDK. Call first. Idempotent. |\n| `getLogger(component)` | Pino child logger; trace context auto-injected; forwards to Loki. |\n| `getTracer(name)` | Manual OTel tracer for custom spans. |\n| `getMeter(name)` | Manual OTel meter for custom metrics. |\n| `metricsMiddleware(options?)` | Express middleware: HTTP RED metrics + span-name repair + optional per-user usage attribution. |\n| `wrapCubeQuery(fn)` | Wrap a Cube `/load` call in a traced span. |\n| `shutdown()` | Graceful flush — call on `SIGTERM`. |\n\n## HTTP metrics + per-user usage — `metricsMiddleware`\n\nMount it after your body parsers (and, if you want user attribution, **after**\nyour auth middleware — see below):\n\n```ts\nimport { metricsMiddleware } from '@elephantroom-jumbo/telemetry';\napp.use(metricsMiddleware());\n```\n\nRecords RED metrics (`http.server.request.total`, `.duration`, `.error.total`)\nand repairs the server span name to the templated route\n(`GET /api/customers/:customerId`) so per-request IDs never leak into span names\nor spanmetrics cardinality.\n\n### Opt-in user attribution (`resolveUser`)\n\nPass `resolveUser` to make authed requests attributable to the logged-in user.\nWhen it returns a non-null user, the middleware:\n\n1. tags the request span with `enduser.id` (and `enduser.role` when present) — for Tempo trace↔log correlation; and\n2. emits a **`feature_used`** log to Loki: `{ event, user_id, role, http_route, http_method, status_code }`.\n\n```ts\n// auth middleware must run first so req.user is populated\napp.use(clerkAuth);\napp.use(\n  metricsMiddleware({\n    resolveUser: (req) =>\n      req.user ? { id: String(req.user.id), role: req.user.role } : null,\n  }),\n);\n```\n\n`resolveUser` is called at most once per request, at response finish, and must\nnever throw (errors are swallowed). **User identity is written only to the span\nattribute and the `feature_used` log body** (which lands as Loki structured\nmetadata) — never to the RED metric labels, so Prometheus cardinality stays\nbounded. `feature_used` is emitted only for authenticated requests that matched\na route, so unauthenticated traffic (health checks, login) produces none.\n\nThe `feature_used` event is the per-user *usage* signal — \"who used which\nfeature\" — queryable in Loki by `user_id` + `http_route` since a given time.\n\n## Graceful shutdown\n\n```ts\nprocess.on('SIGTERM', async () => { await shutdown(); process.exit(0); });\n```\n\n## Development\n\n```bash\nnpm run build       # tsc → dist/\nnpm run typecheck   # tsc --noEmit\nnpm test            # node:test + tsx (test/*.test.ts)\n```\n","readmeFilename":"README.md"}