{"_id":"traxx","_rev":"32-284445c577700a5a9201a4ec21f9dd14","name":"traxx","dist-tags":{"latest":"2.0.3"},"versions":{"1.3.0":{"name":"traxx","version":"1.3.0","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.0","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"b78703a051e1b273fd1df9eb4d9fa27cf7cf7f39","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.0.tgz","fileCount":9,"integrity":"sha512-HWVDKTf+jXkw1BmkCwoC0X3W605pcmanNHBE7kjzJDJJsGxqwkTIGLHyQtvrMUT3p0WnLI6Msvvr2zchGuhWMg==","signatures":[{"sig":"MEYCIQCOuPGvadx7OfOBttLdfd09J9xbuCJkzxfMy/259fo4rQIhAIhbbVgleaemNciCzoUf57yLmprkJJPMTeSdZryacQ8Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9659},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"ffd44d76692293d9bb644dea060b9a75bd2d8e96","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.0_1743413730270_0.8458014002080336","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"traxx","version":"1.3.1","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.1","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"67c693b986ddf5f300316db69bc63bcde2fbe3cf","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.1.tgz","fileCount":10,"integrity":"sha512-4OrqmJU1WLATaHqfhthCFZ/8p8LXev4KO4BTpeisWjHtNn/ck5UbAcsN3U8+4LlMKdOOmyHuaJFJuzQnve1GRw==","signatures":[{"sig":"MEQCIEzh08cEMoGWtvA9wiyeZc5CPnHtRME66Z9vF9Hj6sUwAiBE80llyv3uOecwacLkPYGBIWzlkWg0A+0gJw4fP3KIPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9838},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"648a9607d59dcac7b628fa6dd78f5c72bd9bdc62","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.1_1743643912066_0.17907842005193464","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"traxx","version":"1.3.2","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.2","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"2934e3f0cfe21e852521d9b5bd5e015edc43396f","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.2.tgz","fileCount":10,"integrity":"sha512-pyCqqYJ2XZ+bkQSSriS83a6j3fZ2nF4r99FNGqRu2N3pOHI4l/WkoChj+kPAhGkM/30Zy4UMZdGpWfvf54kbJw==","signatures":[{"sig":"MEYCIQDILlglrg/VBI1ogiVfmbmiTBZKm7H7ur3JEyT+j8UESAIhAIpYo57VYM22uWjHSy9Krrd/p1sUQnA1VI4zFXYO/dnb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10050},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"1c9f3d5548e1195e8f56c246e0f4fe9013d0d488","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.2_1743645257285_0.7535337420629422","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"traxx","version":"1.3.3","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.3","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"ce2a80a771ab50d600ca3ba59d049fbafead7b29","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.3.tgz","fileCount":10,"integrity":"sha512-iJ4YmO9a/0Cb5faK1eiuF7vSGkNwCqQovNAf9pUvLj6+xkf+fxXOTHqC3VqVfnwe+RtmBmiJKQcXkVovJovutg==","signatures":[{"sig":"MEQCIGIo7RQdOf4kShyTVYEbtlQJPmb8QTGBcSqMjKmNzIU5AiAS4mVnkTXjWXBBU1j+G2QNpRZQANjuT3fJNw6/j02qtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9803},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"ccbbb308111fe09780a577698b76025add0c2fd9","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.3_1743645956798_0.17629783776729324","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"traxx","version":"1.3.5","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.5","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"9068ae841c4f63a5f4789a16531fd3b8a248f941","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.5.tgz","fileCount":10,"integrity":"sha512-uLq0kFkLhv4b2fxRA5rIFpxHQs64Ecm8Xeeq4fVgPjLboboXpwCkPbN7OfoSqxYKoEOxKXqDBjMtDxJ/cglCoQ==","signatures":[{"sig":"MEQCIGGFbKfvUib2msBZljVsMbIJ/dEIkcFj+mSHvJgt52xRAiBTw1vlP4a18MPf+DegVclOwaPXL3Cc4jTgtgNTZjCJ1A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11480},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"118dcdfea9d246edbe2c245da92c2d8001eb4919","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.5_1743682840863_0.4776323621852401","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"traxx","version":"1.3.6","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.6","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"be321ca44d5f359649ea60571e736c507ba1bb76","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.6.tgz","fileCount":10,"integrity":"sha512-fgjMJmKaAwZSvRb8STuRuFF0nkbv5EGTGNWVU5P48R1X8EVcH/OZpdnM50oZKXKteAXqBqLz9CIVTGo3Dvpy8w==","signatures":[{"sig":"MEUCIQDYgPCbDxLRnCkchKcycR2741DWEzr2QvAkO4bHFnhvygIga5mvcYZOnwn7ub/BfELf0ho9ieWa8HQ2sS+X5yLRcWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11696},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"45cf24fd99ba3f7a8fd0414588665172ea111bb3","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.6_1743683310894_0.16820084777693656","host":"s3://npm-registry-packages-npm-production"}},"1.3.7":{"name":"traxx","version":"1.3.7","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@1.3.7","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"d8d8d9b83bea2713c8be9364e69036808655cea2","tarball":"https://registry.npmjs.org/traxx/-/traxx-1.3.7.tgz","fileCount":10,"integrity":"sha512-fVdb+RFNZxtf99jSWEVpyEWxjGguYgpZ6UZseoiLbaVWNIdhNpu2WlwZeFUA423doN5imukNnCEHDseI7GX8RA==","signatures":[{"sig":"MEYCIQD2fxmnZgZGb+UFfr0PosRPcqJPr/MmkVPlp+wie6c3cAIhAL9II39CH5vcrmP/iaCP2qKu4nxqMpn4iGZvMoPSQjXB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11656},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"df0305cb7087209874ac29fd6926f9ace5cb8b8d","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_1.3.7_1743683654050_0.8979402079647807","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"traxx","version":"2.0.0","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx","notifications","slack","teams","google-chat","alerts"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@2.0.0","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"e537943d2d27c7766a463c6a9f53d22634ab9a2a","tarball":"https://registry.npmjs.org/traxx/-/traxx-2.0.0.tgz","fileCount":15,"integrity":"sha512-Zb6L0BDQbJZScyPZd7VoFxA131PHISan766lVmUvHy74D3vZlcAXLVeX2m4jCqfVsmXvOI3G277j7S2V1E8elQ==","signatures":[{"sig":"MEQCIH7mE4OCbDWbNS/uTL934J10Dzo6lIrDE9GaTsuDjd3EAiAj0CEsj8sUYjJbEe9OcVeD3x96PbFyEyV+Rf388GFqLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33712},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"0b594ce8d60b7fa79fec5a720e97b978f0504f75","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. Supports notifications via Teams, Slack, and Google Chat. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_2.0.0_1750001753207_0.8970181936916131","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"traxx","version":"2.0.1","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx","notifications","slack","teams","google-chat","alerts"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@2.0.1","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"3448b97a7df12d6f0d0ebbbd04440d5f0bdb35f9","tarball":"https://registry.npmjs.org/traxx/-/traxx-2.0.1.tgz","fileCount":15,"integrity":"sha512-W+kHOnj5Qq3JrHuu3qYWMuMBw48KaRsvlHbdnwnlaB71jx/uWHkDXGfZewdcW92Lgw7zH3fFsICsSeIyhROOZQ==","signatures":[{"sig":"MEUCIQCGQ30u93pi8BJlWH5Og1TLvUBYoT0/CvXS2SwEpQjlOAIgFOMgHhm3+5vd2HRn/pB0tL9l/Nw+N0Dtfa5oyUVf7Ls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34066},"main":"index.js","engines":{"node":">=16.0.0"},"gitHead":"57b425baa4af0e260c9c1158a73ba452e3d691aa","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"10.9.2","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. Supports notifications via Teams, Slack, and Google Chat. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_2.0.1_1750006183804_0.6741691212964873","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"traxx","version":"2.0.2","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx","notifications","slack","teams","google-chat","alerts"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","_id":"traxx@2.0.2","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"homepage":"https://github.com/boopathi-srb/traxx#readme","bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"dist":{"shasum":"5dc77154eafa3d18b7b0cfba103132b22b7b5811","tarball":"https://registry.npmjs.org/traxx/-/traxx-2.0.2.tgz","fileCount":16,"integrity":"sha512-Jj3VfIije9yrLJeU9o8U3xhyzBmO439k0yZJsTFljVjEUVFiPRL2lDMRNOEoFg1zBPVlW7SwvuccUWov39X3ZQ==","signatures":[{"sig":"MEUCIQCfCOprKpT1izxcL0YheysMqkvUtl8qgRQBJOKK1reTSQIgLnzesXzJ1vnvtfSlU+boS6mjpW9js1fUl4ew9fNB0MM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35582},"main":"index.js","types":"index.d.ts","engines":{"node":">=16.0.0"},"gitHead":"57b425baa4af0e260c9c1158a73ba452e3d691aa","scripts":{"dev":"nodemon index.js","test":"echo \"No tests yet\" && exit 0"},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"repository":{"url":"git+https://github.com/boopathi-srb/traxx.git","type":"git"},"_npmVersion":"11.3.0","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. Supports notifications via Teams, Slack, and Google Chat. MongoDB + BullMQ + Redis.","directories":{},"_nodeVersion":"24.2.0","dependencies":{"ejs":"^3.1.10","dayjs":"^1.11.13","bullmq":"^5.45.0","express":"^4.21.2","ioredis":"^5.6.0","chart.js":"^4.4.8","mongoose":"^8.13.0"},"_hasShrinkwrap":false,"devDependencies":{"nodemon":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/traxx_2.0.2_1757701535769_0.005698862308385566","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"traxx","version":"2.0.3","description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. Supports notifications via Teams, Slack, and Google Chat. MongoDB + BullMQ + Redis.","main":"index.js","types":"index.d.ts","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx","notifications","slack","teams","google-chat","alerts"],"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","repository":{"type":"git","url":"git+https://github.com/boopathi-srb/traxx.git"},"bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"homepage":"https://github.com/boopathi-srb/traxx#readme","engines":{"node":">=16.0.0"},"dependencies":{"bullmq":"^5.45.0","chart.js":"^4.4.8","dayjs":"^1.11.13","ejs":"^3.1.10","express":"^4.21.2","ioredis":"^5.6.0","mongoose":"^8.13.0"},"devDependencies":{"nodemon":"^3.1.0"},"scripts":{"test":"echo \"No tests yet\" && exit 0","dev":"nodemon index.js"},"_id":"traxx@2.0.3","gitHead":"599317bdf7f49e1afaac4d9a3d2b9a3ccfd34924","_nodeVersion":"24.2.0","_npmVersion":"11.3.0","dist":{"integrity":"sha512-bbQMT3kX/65ohdogmAU0hYXgskS1acRn0PcSikfV3rwiWuRAdTWM2e7xJkKajOOd3MR/RN0dHbyUX20b7rKhog==","shasum":"0539012c1d4408c57cbe308ac42c9dedceff2844","tarball":"https://registry.npmjs.org/traxx/-/traxx-2.0.3.tgz","fileCount":16,"unpackedSize":37189,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID2tg6F4nynNhmmAuE0qHffg00t3Wr2wm5W7dwzWuxFlAiEAyuhr9dYo6LqOEDpwQSp5PDZIksDKnSd7fQ7jsJggw+A="}]},"_npmUser":{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"},"directories":{},"maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/traxx_2.0.3_1757702391620_0.7781853461609529"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-31T09:35:30.269Z","modified":"2025-09-12T18:39:51.971Z","0.0.5-beta.2":"2022-12-14T03:48:22.772Z","1.0.0":"2025-03-29T12:22:00.463Z","1.0.1":"2025-03-29T12:26:43.435Z","1.0.2":"2025-03-29T12:29:57.492Z","1.0.3":"2025-03-29T12:39:45.041Z","1.0.4":"2025-03-29T15:38:56.774Z","1.1.0":"2025-03-29T16:00:18.299Z","1.1.1":"2025-03-29T16:29:40.515Z","1.1.2":"2025-03-29T16:48:15.416Z","1.1.3":"2025-03-29T16:56:17.933Z","1.1.4":"2025-03-29T17:21:15.451Z","1.1.5":"2025-03-30T07:49:57.261Z","1.1.6":"2025-03-30T07:53:43.469Z","1.1.7":"2025-03-30T08:16:42.411Z","1.1.8":"2025-03-30T08:18:57.608Z","1.1.9":"2025-03-30T08:22:41.790Z","1.3.0":"2025-03-31T09:35:30.460Z","1.3.1":"2025-04-03T01:31:52.302Z","1.3.2":"2025-04-03T01:54:17.567Z","1.3.3":"2025-04-03T02:05:56.967Z","1.3.5":"2025-04-03T12:20:41.035Z","1.3.6":"2025-04-03T12:28:31.073Z","1.3.7":"2025-04-03T12:34:14.281Z","2.0.0":"2025-06-15T15:35:53.405Z","2.0.1":"2025-06-15T16:49:44.031Z","2.0.2":"2025-09-12T18:25:35.941Z","2.0.3":"2025-09-12T18:39:51.795Z"},"bugs":{"url":"https://github.com/boopathi-srb/traxx/issues"},"author":{"name":"boopathi-srb"},"license":"CC-BY-NC-4.0","homepage":"https://github.com/boopathi-srb/traxx#readme","keywords":["express","analytics","routes","observability","bullmq","redis","mongoose","logging","middleware","performance","tracing","metrics","monitoring","traxx","notifications","slack","teams","google-chat","alerts"],"repository":{"type":"git","url":"git+https://github.com/boopathi-srb/traxx.git"},"description":"Asynchronous route-level analytics for Express.js. Tracks latency, request data, and errors. Supports notifications via Teams, Slack, and Google Chat. MongoDB + BullMQ + Redis.","maintainers":[{"name":"boopathi-srb","email":"rathinaboopathi.srb@gmail.com"}],"readme":"# 🚀 traxx\n\n![License: CC BY-NC 4.0](https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg)\n\nA minimal, production-ready route analytics toolkit for Express.js.\n\nTracks every request — latency, status codes, request metadata, and errors — and stores it asynchronously in MongoDB using BullMQ + Redis.\n\nBuilt for **SaaS platforms**, **internal tools**, and **teams who care about visibility without bloat**.\n\n---\n\n## 📦 Features\n\n- ✅ **Tracks route** method, status code, latency, timestamp\n- 📊 **Captures request details**: body, params, query\n- 🧵 **Captures error stack + message** (if request fails)\n- ⚙️ **Asynchronous writes** via BullMQ (Redis)\n- 🧱 **MongoDB model access** for custom queries\n- 🔔 **Notifications** via Teams, Slack, and Google Chat for specific status codes with detailed error information\n\n---\n\n## 🧪 Installation\n\n```bash\nnpm install traxx\n```\n\n---\n\n## ⚙️ Quick Start\n\n```js\nconst express = require(\"express\");\nconst Traxx = require(\"traxx\");\n\nconst app = express();\n\nconst traxx = new Traxx({\n  mongoUri: process.env.MONGO_URI,\n  redisUri: process.env.REDIS_URI,\n  logIPAddress: true, //false by default\n  notifications: {\n    statusCodes: [404, 500], // or { min: 400, max: 599 } for all error codes\n    channels: [\n      {\n        type: 'teams',\n        options: {\n          webhookUrl: process.env.TEAMS_WEBHOOK_URL\n        }\n      },\n      {\n        type: 'slack',\n        options: {\n          webhookUrl: process.env.SLACK_WEBHOOK_URL\n        }\n      }\n    ]\n  }\n});\n\n// Enable tracking middleware without any custom fields\napp.use(traxx.middleware());\n\n// if needed to add any custom fields for tracking purpose, like the tenantId\napp.use((req, res, next) => traxx.middleware({tenantId: req.body.tenantId})(req, res, next))\n\n// Example route\napp.get(\"/shop/:id\", (req, res) => {\n  res.json({ status: true, shop: req.params.id });\n});\n\n//Start the server and initialize the traxx\nconst port = process.env.PORT || 8080;\nconst server = app.listen(port, async () => {\n  await traxx.init(); // Connect to Mongo + Redis\n  console.log(`Listening on port ${port}...`);\n});\n\n```\n\n---\n\n## 🟦 TypeScript Usage\n\nTraxx ships with built‑in type declarations. No extra typings are required.\n\n### Install\n\n```bash\nnpm install traxx\n```\n\n### Import\n\n```ts\n// Option A: with esModuleInterop (recommended)\nimport Traxx from \"traxx\";\n\n// Option B: without esModuleInterop\n// import Traxx = require(\"traxx\");\n```\n\n### Example (Express + TS)\n\n```ts\nimport express from \"express\";\nimport Traxx from \"traxx\";\n\nconst app = express();\n\nconst traxx = new Traxx({\n  mongoUri: process.env.MONGO_URI as string,\n  redisUri: process.env.REDIS_URI as string,\n  logIPAddress: true,\n  notifications: {\n    statusCodes: { min: 400, max: 599 },\n    channels: [\n      {\n        type: \"teams\",\n        options: { webhookUrl: process.env.TEAMS_WEBHOOK_URL as string },\n      },\n    ],\n  },\n});\n\n// Enable tracking middleware\napp.use(traxx.middleware());\n\n// Add custom fields (e.g., tenantId)\napp.use((req, res, next) =>\n  traxx.middleware({ tenantId: (req as any).tenantId })(req, res, next)\n);\n\napp.get(\"/shop/:id\", (req, res) => {\n  res.json({ status: true, shop: req.params.id });\n});\n\nconst port = Number(process.env.PORT) || 8080;\napp.listen(port, async () => {\n  await traxx.init();\n  console.log(`Listening on port ${port}...`);\n});\n```\n\n### Types\n\n- Options type: `Traxx.TraxxOptions`\n- Mongo model: `Model<Traxx.TraxxLog>`\n\n```ts\nconst Log = traxx.model();\nconst recent = await Log.find().sort({ timestamp: -1 }).limit(50);\n```\n\n### Minimal tsconfig.json\n\n```json\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"CommonJS\",\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true\n  }\n}\n```\n\n---\n\n## 🔍 What Gets Tracked\n\n| Field           | Description                            |\n|----------------|----------------------------------------|\n| `route`         | Full URL path without query string     |\n| `method`        | `GET`, `POST`, etc.                    |\n| `statusCode`    | Final response status                  |\n| `latency`       | ms, calculated via `process.hrtime()`  |\n| `timestamp`     | ISO string                             |\n| `requestBody`   | Parsed `req.body`                      |\n| `requestParams` | From `req.params`                      |\n| `requestQuery`  | From `req.query`                       |\n| `customFields`  | Anything that you pass in the middleware()                      |\n| `ipAddress`     | From `req.ip` or `req.headers[\"x-forwarded-for\"]`  (optional, stored only if logIPAddress is set to true)                    |\n\nEach request is stored as its own document — **no pre-aggregation**, full raw logs for full custom analytics.\n\n---\n\n## 🧱 Access the MongoDB Model\n\nNeed to build your own dashboard or metrics?\n\n```js\nconst Log = traxx.model();//get the model instance\nconst recent = await Log.find().sort({ timestamp: -1 }).limit(50);\n```\n\n## 🔔 Notification Configuration\n\nTraxx can send notifications to Teams, Slack, and Google Chat when specific status codes are encountered.\n\n### Status Code Configuration\n\nYou can specify which status codes should trigger notifications in several ways:\n\n```js\n// Specific status codes as an array\nnotifications: {\n  statusCodes: [404, 500, 503],\n  // ...\n}\n\n// Range of status codes\nnotifications: {\n  statusCodes: { min: 400, max: 599 }, // All 4xx and 5xx errors\n  // ...\n}\n```\n\n### Channel Configuration\n\nConfigure one or more notification channels:\n\n```js\nnotifications: {\n  statusCodes: [500],\n  channels: [\n    {\n      type: 'teams',\n      options: {\n        webhookUrl: 'https://outlook.office.com/webhook/...'\n      }\n    },\n    {\n      type: 'slack',\n      options: {\n        webhookUrl: 'https://hooks.slack.com/services/...'\n      }\n    },\n    {\n      type: 'googleChat',\n      options: {\n        webhookUrl: 'https://chat.googleapis.com/v1/spaces/...'\n      }\n    }\n  ]\n}\n```\n\n### Comprehensive Notification Data\n\nNotifications include all data that is tracked in the database:\n\n- **Basic Request Info**: Method, route, status code, latency, timestamp\n- **Request Data**: Request body, parameters, query string\n- **Response Data**: Response body\n- **Custom Fields**: Any custom fields passed to the middleware\n- **IP Address**: Client IP address (if logIPAddress is enabled)\n- **Error Information**: Error message and stack trace\n\nThis comprehensive data helps you quickly identify and diagnose issues when they occur, with all the context you need to reproduce and fix problems.\n\n### Error Information in Notifications\n\nNotifications automatically include detailed error information when available:\n\n- **Error Message**: The error message is displayed prominently in the notification\n- **Error Stack**: For debugging purposes, the full stack trace is included when available\n- **Automatic Error Detection**: Even for status codes without explicit errors, Traxx generates appropriate error messages\n\nThis helps you quickly identify and diagnose issues when they occur.\n\n---\n\n## 🧠 Why Traxx?\n\n- Built for **modern Express apps**\n- Tracks everything you need, nothing you don't\n- Async, performant, and ready for production\n\n---\n\n## 🚀 Nginx Configuration (For Reverse Proxy Setup, if logIPAddress is set to true)\n\nIf you're running Traxx behind an Nginx reverse proxy, make sure to update your Nginx configuration to forward the real client IP properly. This ensures that Traxx can log the original client IP instead of the reverse proxy IP (127.0.0.1).\n\n### Nginx Configuration\n\nIn your Nginx configuration (typically found in `/etc/nginx/nginx.conf` or `/etc/nginx/sites-available/default`), make sure to include the following:\n\n```nginx\nserver {\n    listen 80;\n\n    # Forward the real client IP to the Express app\n    location / {\n        proxy_set_header X-Forwarded-For $remote_addr;  # Pass the original client IP\n        proxy_set_header X-Real-IP $remote_addr;        # Pass the original client IP\n        proxy_set_header Host $host;                    # Preserve the original Host header\n        proxy_pass http://your_backend_upstream;         # Replace with your Express app URL\n    }\n}\n```\n\nWith this setup:\n\n- Traxx will correctly capture the real client IP via the `X-Forwarded-For` header.\n- If you're using multiple proxies, this setup will always capture the first IP in the chain (the client's original IP).\n\n---\n\n## 👨‍💻 Author\n\nMade with 💻 by [boopathi-srb](https://github.com/boopathi-srb)\n\n---\n\n## 📄 License\n\nCC-BY-NC-4.0\n","readmeFilename":"readme.md"}