{"_id":"@cherie-xf/nestjs-microservice-otel","_rev":"3-f4ce21e415e291f5265d98d93b35da09","name":"@cherie-xf/nestjs-microservice-otel","dist-tags":{"latest":"1.0.2-beta.1"},"versions":{"1.0.0":{"name":"@cherie-xf/nestjs-microservice-otel","version":"1.0.0","description":"deeply integrated OpenTelemetry module for Nestjs Microservice","author":{"name":"cherie.x.fu@gmail.com"},"license":"MIT","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/cherie-xf/nestjs-microservice-otel.git"},"keywords":["nestjs","opentelemetry","tracing","observability","metric","prometheus","zipkin","jaeger"],"bugs":{"url":"https://github.com/cherie-xf/nestjs-microservice-otel/issues"},"homepage":"https://github.com/cherie-xf/nestjs-microservice-otel/#readme","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/main","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"jest --config ./test/jest-e2e.json","build:local":"pack"},"dependencies":{"@nestjs/common":"^8.4.3","@nestjs/core":"^8.4.3","@nestjs/event-emitter":"^1.1.0","@nestjs/microservices":"^8.4.3","@nestjs/schedule":"^1.1.0","@opentelemetry/api":"^1.0.4","@opentelemetry/context-async-hooks":"^1.0.1","@opentelemetry/core":"^1.0.1","@opentelemetry/host-metrics":"^0.27.1","@opentelemetry/instrumentation-http":"^0.27.0","@opentelemetry/instrumentation-nestjs-core":"^0.28.3","@opentelemetry/propagator-b3":"^1.0.1","@opentelemetry/propagator-jaeger":"^1.0.1","@opentelemetry/resource-detector-aws":"^1.0.3","@opentelemetry/resources":"^1.0.1","@opentelemetry/sdk-node":"^0.27.0","@opentelemetry/sdk-trace-base":"^1.0.1","@opentelemetry/sdk-trace-node":"^1.0.1","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.1.0"},"devDependencies":{"@nestjs/schematics":"^8.0.3","@nestjs/testing":"^8.0.7","@types/cron":"^1.7.3","@types/express":"^4.17.13","@types/jest":"^27.0.2","@types/node":"^16.9.6","@types/supertest":"^2.0.11","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.2.2","prettier":"^2.4.1","supertest":"^6.1.6","ts-jest":"^27.0.5","ts-loader":"^9.2.6","ts-node":"^10.2.1","tsconfig-paths":"^3.11.0","typescript":"^4.5.2","wait-for-expect":"^3.0.2"},"types":"./dist/index.d.ts","gitHead":"7645eebd0b3d4fc4c52fa798925a3909275dd59b","_id":"@cherie-xf/nestjs-microservice-otel@1.0.0","_nodeVersion":"16.11.1","_npmVersion":"8.0.0","dist":{"integrity":"sha512-c1TXVf1OvnAiIAbqxpwzj1WG3ryxblVezZ2Oj0kzWuNMWSLnasvuWwoPhafQcXGMpgmd4G59MQmsdkSPAY6qxQ==","shasum":"33406a2b61ff69ff8ff937968602440278726625","tarball":"https://registry.npmjs.org/@cherie-xf/nestjs-microservice-otel/-/nestjs-microservice-otel-1.0.0.tgz","fileCount":247,"unpackedSize":790392,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHYIyl6kvfpfX0JDxa3eS9Xqdb/HY4rxXUViwjg1mudbAiEA75564Bo9Ut3DwZCbwcYI4mT3K0ObrxJpsqLF+wHpNbc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiS/QGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpKtA//cvU0XzG343LZG09Bq+s8Ts9jvjechKyAoQNYo/IxiCZFTq2k\r\nl+rJ/PAYsrzuf99XipHLSmgM4wGle92i0658+H7r3U55ftjHYEFfY4m4b/Sf\r\nARIWCvmOjjzwPgMfDxdwD+tlPKUmASp6+Zrqy29NPTWdMLEfIv6mUeFJ8RKr\r\nX5MRHpyPULNQhbXO8qdprNLDz0Vk6pPh5UEsiQSFVkzTBxoxQ1ac4P1ScvmV\r\nueaxp40RXGgfZhVTLz58tFpuMIQ2+yiMzt0I8lx8gTnx08cvpCqUfM/WmpC9\r\nE6sIhmJ76oWrRJE2SCoLkEc9YsqaoAxqRA56zS2kTbICB1hKdttmXCB0Y5uF\r\nWb8C2qMuelbxnVSyjOHGzfxhNIh2p1ut9RUF+vZtOMGIctOey5d9vLyNYtOQ\r\nOwA6tz4/XUXZQAYXTAI8CG9gnw+73wz1Plfk367US4qSUckJOMu7w/xrWfcZ\r\nSm/Z1O4LOrSh6TIaGonb+4sgluQaoKSRSaobJZEmv3flf2Tb3C6sW+59JRhn\r\nIbXQeS5Y0w54YiZ33nrLoKGoZh/vuX7P8dABz/VdjjWJKpx7q/BtELOcRXmD\r\neJMy6M61EmuPUuGBUIHNFanMi6Ty5w/Eq/XaLu7zz+dp5OH7vQ4AjP6e9j5e\r\nt97UgL3PkShixD9Nfg0r+IzUjofyp6opiAs=\r\n=pPvW\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"},"directories":{},"maintainers":[{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-microservice-otel_1.0.0_1649144837920_0.5048277884716998"},"_hasShrinkwrap":false},"1.0.1":{"name":"@cherie-xf/nestjs-microservice-otel","version":"1.0.1","description":"deeply integrated OpenTelemetry module for Nestjs Microservice","author":{"name":"cherie.x.fu@gmail.com"},"license":"MIT","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/cherie-xf/nestjs-microservice-otel.git"},"keywords":["nestjs","opentelemetry","tracing","observability","metric","prometheus","zipkin","jaeger"],"bugs":{"url":"https://github.com/cherie-xf/nestjs-microservice-otel/issues"},"homepage":"https://github.com/cherie-xf/nestjs-microservice-otel/#readme","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/main","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"jest --config ./test/jest-e2e.json","build:local":"pack"},"dependencies":{"@nestjs/common":"^8.4.3","@nestjs/core":"^8.4.3","@nestjs/event-emitter":"^1.1.0","@nestjs/microservices":"^8.4.3","@nestjs/schedule":"^1.1.0","@opentelemetry/api":"^1.0.4","@opentelemetry/context-async-hooks":"^1.0.1","@opentelemetry/core":"^1.0.1","@opentelemetry/host-metrics":"^0.27.1","@opentelemetry/instrumentation-http":"^0.27.0","@opentelemetry/instrumentation-nestjs-core":"^0.28.3","@opentelemetry/propagator-b3":"^1.0.1","@opentelemetry/propagator-jaeger":"^1.0.1","@opentelemetry/resource-detector-aws":"^1.0.3","@opentelemetry/resources":"^1.0.1","@opentelemetry/sdk-node":"^0.27.0","@opentelemetry/sdk-trace-base":"^1.0.1","@opentelemetry/sdk-trace-node":"^1.0.1","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.1.0"},"devDependencies":{"@nestjs/schematics":"^8.0.3","@nestjs/testing":"^8.0.7","@types/cron":"^1.7.3","@types/express":"^4.17.13","@types/jest":"^27.0.2","@types/node":"^16.9.6","@types/supertest":"^2.0.11","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","jest":"^27.2.2","prettier":"^2.4.1","supertest":"^6.1.6","ts-jest":"^27.0.5","ts-loader":"^9.2.6","ts-node":"^10.2.1","tsconfig-paths":"^3.11.0","typescript":"^4.5.2","wait-for-expect":"^3.0.2"},"types":"./dist/index.d.ts","gitHead":"2c0dee3319b30d5a32bd9a4f31b88c650c270a67","_id":"@cherie-xf/nestjs-microservice-otel@1.0.1","_nodeVersion":"16.11.1","_npmVersion":"8.0.0","dist":{"integrity":"sha512-N1dZqzIXuwQaT94ZYiscCtv7NyA5SYSLQU8rFMv2VOwHpGHM50dU5WLfSuSAs16naNiiZYkM1wWqvRkXlctCNw==","shasum":"cd1ff5220ddc8a085faebfec2267b50e4f1302fc","tarball":"https://registry.npmjs.org/@cherie-xf/nestjs-microservice-otel/-/nestjs-microservice-otel-1.0.1.tgz","fileCount":249,"unpackedSize":861181,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFGiF8utIRE4QAFld4e8Ab0oYZMZGEQKZ9KA8I+9eetFAiEA+0/mj8d4RuH4dTMzhbqre2Xy54BOvjZTxVR4nzezAJM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTUIkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqpbQ/8C4Ot1YRXRefZA4ytj+6Z7w7owRTmFerUkgSfJNttHqe68ikj\r\nu5HfBNriNIrs5YNKr1lVUXG8+lS/DirddyV/XTm9pVPM4zr8luMTS4vVMYfs\r\n7lPSEB4lRjH4DXxjmCHD7ByD/RtWqDbUufP+Thyo/+0jV5bSciQkq9rLdchj\r\nQAB+hJA66GRn3Go2MUDYlq9CEIgu0N62V3em9Lvlro6lyhkgRQaidiTmoLbh\r\nKHBbxbN0zMYppV93TJsQLaUNO7z9eNFz+sddpB5EYPHTxMHXmnLbj++/pqrR\r\nUyFxHfJu4MaP86dqHb31+cCQHTyHxAPPeC5lVlovZ4WKDHRMIhUgthmIMRcp\r\nfw2JgPgtcknZ/sGh8yRiek+zAke/7g+F35q0Wnpf4kw2eXRn77LJDGS3i/Z4\r\n9AQmfHVZgKvfyg1kWg09HU3yiTvhoEu/fbF7uMbYUxo5xMJRQPlyv3KzpoyC\r\n+rr2Meg1yXlxDB8c3AAr/FW+lodufkQTiyGe93G06OWgn6aEojMjqymtMYVv\r\n+Vww99ragoTXGIs27GAVENZEO6IbcrofDrvJJV7YhJZblH7tWzJ0Kr64UwUV\r\nq4mLmxCnUospjWYYwwi6PQQPHJ1jqWXB9dnpK2wQ65kt/CYVuljHB/+d12M4\r\nASrSNrtDz3MTquR9SUGazbZqhi1WL0HkbSg=\r\n=H9fb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"},"directories":{},"maintainers":[{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-microservice-otel_1.0.1_1649230372001_0.0007458914252473914"},"_hasShrinkwrap":false},"1.0.2-beta.0":{"name":"@cherie-xf/nestjs-microservice-otel","version":"1.0.2-beta.0","description":"deeply integrated OpenTelemetry module for Nestjs Microservice","author":{"name":"cherie.x.fu@gmail.com"},"license":"MIT","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/cherie-xf/nestjs-microservice-otel.git"},"keywords":["nestjs","opentelemetry","tracing","observability","metric","prometheus","zipkin","jaeger"],"bugs":{"url":"https://github.com/cherie-xf/nestjs-microservice-otel/issues"},"homepage":"https://github.com/cherie-xf/nestjs-microservice-otel/#readme","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/main","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"jest --config ./test/jest-e2e.json","build:local":"pack"},"dependencies":{"@nestjs/common":"^9.2.1","@nestjs/core":"^9.2.1","@nestjs/event-emitter":"^1.3.1","@nestjs/microservices":"^9.2.1","@nestjs/schedule":"^2.1.0","@opentelemetry/api":"^1.3.0","@opentelemetry/auto-instrumentations-node":"^0.35.0","@opentelemetry/context-async-hooks":"^1.8.0","@opentelemetry/core":"^1.8.0","@opentelemetry/instrumentation":"^0.34.0","@opentelemetry/instrumentation-http":"^0.34.0","@opentelemetry/instrumentation-nestjs-core":"^0.32.0","@opentelemetry/propagator-b3":"^1.8.0","@opentelemetry/propagator-jaeger":"^1.8.0","@opentelemetry/resources":"^1.8.0","@opentelemetry/sdk-node":"^0.34.0","@opentelemetry/sdk-trace-base":"^1.8.0","@opentelemetry/sdk-trace-node":"^1.8.0","@opentelemetry/semantic-conventions":"^1.8.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.8.0"},"devDependencies":{"@nestjs/testing":"^9.2.1","@types/cron":"^2.0.0","@types/express":"^4.17.15","@types/jest":"^29.2.4","@types/node":"^18.11.15","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"^5.46.1","@typescript-eslint/parser":"^5.46.1","eslint":"^8.29.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","jest":"^29.3.1","prettier":"^2.8.1","source-map-support":"^0.5.21","supertest":"^6.3.3","ts-jest":"^29.0.3","ts-node":"^10.9.1","tsconfig-paths":"^4.1.1","typescript":"^4.9.4","wait-for-expect":"^3.0.2"},"types":"./dist/index.d.ts","gitHead":"40d0cd70263813cae4fd5cb42c1440355c509bf9","_id":"@cherie-xf/nestjs-microservice-otel@1.0.2-beta.0","_nodeVersion":"16.11.1","_npmVersion":"8.13.2","dist":{"integrity":"sha512-zceLSu25xs++eXEJjHdCUcDSHv6CLsPyHZM5+TOTComyVwdh7xe2tKDU8V1GKfFeTBiVTp4YSZTBM0Fz0EZ0Cw==","shasum":"cea22778629f5fd0935fcb76eb3cf346e9d671f1","tarball":"https://registry.npmjs.org/@cherie-xf/nestjs-microservice-otel/-/nestjs-microservice-otel-1.0.2-beta.0.tgz","fileCount":125,"unpackedSize":798434,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD29Snh9f3bmJwB7ryOiSKG4YFf+ea7rQIBMYY7nArRYQIhAKM04Vcc+me2zOn/yzacxwBpHdI2RRRWEtbDWgitFVw6"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnnUhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSxw/+NVguRs5COGxtukS2aHwxj35XvcYYcnXrFC1UZO1O4FoWvTHL\r\nUEoZ4/HwLX97h7hACj4ISsL5ehXYSJBRmDEhzO2irzr9m0F+6c0BziambMUs\r\ntm9EGM1dG7jUiAELoVSC+ItZaX/bmMq01mWhKnWLsfyivTZ17x4IfZKJCqix\r\ndMU1B6NziGqOfmWaqlLTTGMhzafiRhUolMNUvCL4sG+brcBCSJAYn/80P8r9\r\n4NTmqVhI0AC01UeVpgbyqdrqndXsn4phSnAVSgW+huSJbDW6TOL60oVpGMHL\r\n6rBmxoMiixkhZCSWKwnl3guObhLbtnSZ9FYYhIuBk4lC0Lgkdir/MCWD34CF\r\n4ZrcS4r8h0BQBKa4hXJoZVjUdKPAN6UU61qcfiadKlOrSs3sa6U8TXodawvh\r\n7LsRH1Dq0zzdQg2dL2HJdPudBm/l69j6KRZQit3zQrJ3+P3EPwKvdQZ6xjDH\r\nYV0CeKAEuTkZvmPbxMFEcPokTjZCIKh/7x5yUPcut9mk6be9+umqM9uagVGm\r\nCHs8AFSp156ZlwuJ6FvrFYNxXZDpWOlbjDNhlWCsk9IJxPzrGK/PZvsSTU6w\r\nvAAKcCyJY/1bFgJyJ4wMHnBeNcQWnlEtCM2SmIswJlFFSbhsb09U8dT2d82i\r\nmdpqyJxCfXBpxqcPDXV053+QPduU3ZBsGmg=\r\n=2ssD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"},"directories":{},"maintainers":[{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-microservice-otel_1.0.2-beta.0_1671329057266_0.024786310428135394"},"_hasShrinkwrap":false},"1.0.2-beta.1":{"name":"@cherie-xf/nestjs-microservice-otel","version":"1.0.2-beta.1","description":"deeply integrated OpenTelemetry module for Nestjs Microservice","author":{"name":"cherie.x.fu@gmail.com"},"license":"MIT","main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/cherie-xf/nestjs-microservice-otel.git"},"keywords":["nestjs","opentelemetry","tracing","observability","metric","prometheus","zipkin","jaeger"],"bugs":{"url":"https://github.com/cherie-xf/nestjs-microservice-otel/issues"},"homepage":"https://github.com/cherie-xf/nestjs-microservice-otel/#readme","scripts":{"prebuild":"rimraf dist","build":"nest build","format":"prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start":"nest start","start:dev":"nest start --watch","start:debug":"nest start --debug --watch","start:prod":"node dist/main","lint":"eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test":"jest","test:watch":"jest --watch","test:cov":"jest --coverage","test:debug":"node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e":"jest --config ./test/jest-e2e.json","build:local":"pack"},"dependencies":{"@nestjs/common":"^9.2.1","@nestjs/core":"^9.2.1","@nestjs/event-emitter":"^1.3.1","@nestjs/microservices":"^9.2.1","@nestjs/schedule":"^2.1.0","@opentelemetry/api":"^1.3.0","@opentelemetry/auto-instrumentations-node":"^0.35.0","@opentelemetry/context-async-hooks":"^1.8.0","@opentelemetry/core":"^1.8.0","@opentelemetry/instrumentation":"^0.34.0","@opentelemetry/instrumentation-http":"^0.34.0","@opentelemetry/instrumentation-nestjs-core":"^0.32.0","@opentelemetry/propagator-b3":"^1.8.0","@opentelemetry/propagator-jaeger":"^1.8.0","@opentelemetry/resources":"^1.8.0","@opentelemetry/sdk-node":"^0.34.0","@opentelemetry/sdk-trace-base":"^1.8.0","@opentelemetry/sdk-trace-node":"^1.8.0","@opentelemetry/semantic-conventions":"^1.8.0","reflect-metadata":"^0.1.13","rimraf":"^3.0.2","rxjs":"^7.8.0"},"devDependencies":{"@nestjs/testing":"^9.2.1","@types/cron":"^2.0.0","@types/express":"^4.17.15","@types/jest":"^29.2.4","@types/node":"^18.11.15","@types/supertest":"^2.0.12","@typescript-eslint/eslint-plugin":"^5.46.1","@typescript-eslint/parser":"^5.46.1","eslint":"^8.29.0","eslint-config-prettier":"^8.5.0","eslint-plugin-prettier":"^4.2.1","jest":"^29.3.1","prettier":"^2.8.1","source-map-support":"^0.5.21","supertest":"^6.3.3","ts-jest":"^29.0.3","ts-node":"^10.9.1","tsconfig-paths":"^4.1.1","typescript":"^4.9.4","wait-for-expect":"^3.0.2"},"types":"./dist/index.d.ts","gitHead":"ceeee0cb00610c34a9c92876ddcdc430731bc59d","_id":"@cherie-xf/nestjs-microservice-otel@1.0.2-beta.1","_nodeVersion":"16.11.1","_npmVersion":"8.13.2","dist":{"integrity":"sha512-/cdC62GhsYP32MVbsY/vY+nqoRHEQ3hr+QLQZaqHaJQ8l6GAKAi1B3xhS59isJcb5IQyMZHlxgX9ox8BRJBS9g==","shasum":"88c43ccd63feb589589a6013fdc8039b2ac81d06","tarball":"https://registry.npmjs.org/@cherie-xf/nestjs-microservice-otel/-/nestjs-microservice-otel-1.0.2-beta.1.tgz","fileCount":125,"unpackedSize":799084,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKWSiPCmHTDNh8TniHQDwfkX2aOj5fxVDMTR3jAZmqPAIgW1tOfLmES7Ov2gbCKAtsNhHLF2jQhsGsA809vOE7gqo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjnstwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoKSRAAmJiG//a2LwnUuNghzOL0eo2iZGz0wShT7utnLjmU8dSZu+f5\r\nbhFhQ5sg9wmCQ9it98MAnj0bSbGHpISsbTrDHHkZYDWBz1CZB2yVxbchzPJC\r\na0LEhwEGnCvl8FtsfKT+42WsnIVQSZvLoW6pzRZdKbeWbwDhi28z0NrYwA2Q\r\nYZqMBd84h0J8M0UInAquVGDw/nkjfTX/G8OUhfDECOAe6nT2w+o9YCkBJYxP\r\nkeiEYjNYfrJQlbk6SawtNhVE9fwfEQfH8RQwZF0Bu584CDj4wCRissuGb3EO\r\njxIZpeUETSztTCOzvlVuOMN9DRwZukAwBMgB9Hj+cvf54wYSkS4YDtjHqQle\r\n/HS1kNUtEQp4zJHDGNQEwnjTwRzeQKOXSXiVS8ydA+ejDM1hJAcYHWrD4lUx\r\nojg2ex2ryqRfmwZMTf38N0mDa1Er1ZCmKzHhbOnii6RqM8hFmXwbZ1VaM35C\r\naejGE53+yJCIhuV+gqX1tY1QuEaCaPCyxq6XlLsMQA29CBsT1wCgrAZXz5DG\r\nqnSra0OqGBtZ2bnfZTqhztCxce1xnEGGqWSydCQIdY9zlXygi8KOb/fDJaJ0\r\nLyDd4z196UgboG6NbOXn53Lg9rrSoqjmhsSGiM2sZVb/ZvDSd70f6jlM8cR7\r\nQUi3xY0t4F7agMLzpz6gA58CsHD1d61NMVs=\r\n=SIjR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"},"directories":{},"maintainers":[{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/nestjs-microservice-otel_1.0.2-beta.1_1671351152603_0.804250404036025"},"_hasShrinkwrap":false}},"time":{"created":"2022-04-05T07:47:17.864Z","1.0.0":"2022-04-05T07:47:18.139Z","modified":"2022-12-18T08:12:32.935Z","1.0.1":"2022-04-06T07:32:52.229Z","1.0.2-beta.0":"2022-12-18T02:04:17.529Z","1.0.2-beta.1":"2022-12-18T08:12:32.831Z"},"maintainers":[{"name":"cherie-xf","email":"cherie.x.fu@gmail.com"}],"description":"deeply integrated OpenTelemetry module for Nestjs Microservice","homepage":"https://github.com/cherie-xf/nestjs-microservice-otel/#readme","keywords":["nestjs","opentelemetry","tracing","observability","metric","prometheus","zipkin","jaeger"],"repository":{"type":"git","url":"git+https://github.com/cherie-xf/nestjs-microservice-otel.git"},"author":{"name":"cherie.x.fu@gmail.com"},"bugs":{"url":"https://github.com/cherie-xf/nestjs-microservice-otel/issues"},"license":"MIT","readme":"<h1 align=\"center\">NestJS Microservice OpenTelemetry</h1>\n\nThis library provides a smimple way to automatically for collecting traces from NestJS applications with Microservice architecture. This library integrated [NestJS Microservice](https://github.com/nestjs/nest/tree/master/packages/microservices), [OpenTelemetry-js](https://github.com/open-telemetry/opentelemetry-js) and Nodejs instrumentations\n\n### Description\n\nNestjs is a protocol-agnostic framework. That's why this library can able to work with different protocols like TCP,RabbitMQ, GRPC and HTTP. Also you can observe and trace Nestjs specific layers like [Pipe](https://docs.nestjs.com/pipes), [Guard](https://docs.nestjs.com/guards), [Controller](https://docs.nestjs.com/controllers) and [Provider](https://docs.nestjs.com/providers).\n\n\n- #### Distributed Tracing\n  - [Setup](#distributed-tracing-setup)\n  - [Trace Interceptor](#trace-interceptor)\n  - [Microserve RPC Customized ClientProxy](#microserve-rpc-customized-clientproxy-traceclientproxy)\n  - [Trace Decorators](#trace-decorators)\n  - [Trace Providers](#trace-providers)\n\n### Installation\n``` bash\nnpm install @/cherie-xf/nestjs-microservice-otel --save\n```\n***\n### Introduce\nThis is a basic configuration without any trace exporter, but includes default injectors\n```ts\nimport { OpenTelemetryModule } from '@cherie-xf/nestjs-microservice-otel';\n\n@Module({\n  imports: [OpenTelemetryModule.forRoot()]\n})\nexport class AppModule {}\n```\n#### Default Parameters\n| key                 | value                                                                                                                                                                                                                    | description                                                                                                                                                                                                                                                               |\n|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| spanProcessor       | NoopSpanProcessor                                                                                                                                                                                                        | default spanProcessor inherited from  <a href=\"https://github.com/open-telemetry/opentelemetry-js/blob/745bd5c34d3961dc73873190adc763747e5e026d/experimental/packages/opentelemetry-sdk-node/src/types.ts#:~:text=NodeSDKConfiguration\"> NodeSDKConfiguration </a>        |\n| serviceName       | String                                                                                                                                                                                                        | set to resource attribute : SemanticResourceAttributes.SERVICE_NAME        |\n| textMapPropagator   | JaegerPropagator, B3Propagator                                                                                                                                                                                           | default textMapPropagator inherited from <a href=\"https://github.com/open-telemetry/opentelemetry-js/blob/745bd5c34d3961dc73873190adc763747e5e026d/experimental/packages/opentelemetry-sdk-node/src/types.ts#:~:text=NodeSDKConfiguration\"> NodeSDKConfiguration </a>     |\n\n`OpenTelemetryModule.forRoot()` takes [OpenTelemetryModuleConfig](https://github.com/MetinSeylan/Nestjs-OpenTelemetry/blob/main/src/OpenTelemetryModuleConfig.ts#L25) as a parameter, this type is inherited by [NodeSDKConfiguration](https://github.com/open-telemetry/opentelemetry-js/blob/745bd5c34d3961dc73873190adc763747e5e026d/experimental/packages/opentelemetry-sdk-node/src/types.ts#:~:text=NodeSDKConfiguration) so you can use same OpenTelemetry SDK parameter.\n***\n### Distributed Tracing Setup\nSimple setup with Jaeger exporter, including with default trace instrumentations.\n```ts\nimport { JaegerExporter } from '@opentelemetry/exporter-jaeger';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { OpenTelemetryModule } from '@cherie-xf/nestjs-microservice-otel';\n\n@Module({\n  imports: [\n    OpenTelemetryModule.forRoot({\n      spanProcessor: new BatchSpanProcessor(\n        new JaegerExporter({\n          endpoint: `http://${jaeger.host}:14268/api/traces`,\n        }),\n      ),\n      serviceName: `${myServiceName}`,\n    }),\n  ],\n})\nexport class AppModule {}\n```\nAfter setup, your application will be instrumented, so that you can see almost every layer of application in JeagerUI, including Guards, Pipes, Controllers even global layers like this\n\n![Example trace output](./docs/jaeger-ui.png)\n![Example trace detail output](./docs/jaeger-ui-detail.png)\n\nList of supported official exporters [here](https://opentelemetry.io/docs/js/exporters/).\n***\n### Trace Interceptor\nThis library supports: rename trace span name to meaningful name for both http and rpc; propagation extract parent spanContext of RPC type context\n\nmain.ts\n```ts\nimport { TraceInterceptor } from '@cherie-xf/nestjs-microservice-otel';\n\nasync function bootstrap() {\n  const app = await NestFactory.create(AppModule);\n\n  // set up global interceptor\n  app.useGlobalInterceptors(new TraceInterceptor());\n\n  await app.listen(port);\n}\n\nbootstrap();\n\n```\n\napi.controller.ts\n```ts\nimport {\n  TraceInterceptor,\n} from '@cherie-xf/nestjs-microservice-otel';\n\n@Controller('api')\n@UseInterceptors(TraceInterceptor)\nexport class ApiController {\n  constructor(\n    private readonly apiService: ApiService,\n  ) {}\n  @Get('get-hello')\n  getHello(@Res() res): string {\n    return res.status(200).send('Hello World!');\n  }\n}\n```\n***\n### Microserve RPC Customized ClientProxy: TraceClientProxy\nThis libary provide customized TraceClientProxy to automatically propagation.inject while making RPC microservice request\n\n```ts\nimport { Inject, Injectable, Logger } from '@nestjs/common';\nimport { ClientProxy } from '@nestjs/microservices';\nimport { TraceClientProxy } from '@cherie-xf/nestjs-microservice-otel';\n\n@Injectable()\nexport class ApiService {\n  private readonly _logger = new Logger(ApiService.name);\n  constructor(\n    @Inject('USER_CLIENT')\n    private readonly user_client: ClientProxy,\n    private traceClient: TraceClientProxy,\n  ) {}\n\n  async createUser(data: any) {\n    const pattern = { name: 'user', cmd: 'create.user' };\n    const payload = {\n      user_name: data.user_name,\n      user_email: data.user_email,\n    };\n    return await this.traceClient.send(this.user_client, pattern, payload);\n  }\n\n```\n#### Trace Decorators\nThis library supports auto instrumentations for Nestjs layers, but sometimes you need to define custom span for specific method blocks like providers methods. In this case `@Span` decorator will help you.\n```ts\nimport { Injectable } from '@nestjs/common';\nimport { Span } from '@metinseylan/nestjs-opentelemetry';\n\n@Injectable()\nexport class AppService {\n  @Span()\n  getHello(): string {\n    return 'Hello World!';\n  }\n}\n```\nAlso `@Span` decorator takes `name` field as a parameter\n```ts\n@Span('hello')\n```\n***\n#### Trace Providers\nYou can use Decorators to trace Services, or you can access the native OpenTelemetry Trace api to manually handle span.\n```ts\nimport { Injectable } from '@nestjs/common';\nimport { Tracer } from '@opentelemetry/sdk-trace-base';\n\n@Injectable()\nexport class AppService {\n  constructor(private readonly tracer: Tracer) {}\n\n  getHello(): string {\n    const span = this.tracer.startSpan('important_section_start');\n    // do something important\n    span.setAttributes({ userId: 1150 });\n    span.end();\n    return 'Hello World!';\n  }\n}\n```\n`TraceService` can access directly current span context and start new span.\n```ts\nimport { Injectable } from '@nestjs/common';\nimport { TraceService } from '@metinseylan/nestjs-opentelemetry';\n\n@Injectable()\nexport class AppService {\n  constructor(private readonly traceService: TraceService) {}\n\n  getHello(): string {\n    const span = this.traceService.startSpan('hello');\n    // do something\n    span.end();\n    return 'Hello World!';\n  }\n}\n```\n***\n","readmeFilename":"README.md"}