{"_id":"@polinater/redis-event-bus","_rev":"31-b0ad655389584c1917e02905e66459ea","name":"@polinater/redis-event-bus","dist-tags":{"latest":"4.0.0"},"versions":{"1.0.0":{"name":"@polinater/redis-event-bus","version":"1.0.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.0.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"0024895d6c2ee4e4c62b1428ea932851a1bac62f","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.0.0.tgz","fileCount":50,"integrity":"sha512-hJ4UnQM5w0OQbiuPCy6l3yuHVHYAOkTltnFeCfJgRulHzFitFQGn16+WPHmAxwEvtm/IwZYhgolmQJIqVFSYGQ==","signatures":[{"sig":"MEQCIFstAv6IMF48mUq2bhgWbygxz4i1RegrsQDjqoGfk8ptAiB0IkDB71khZNOGu3a062/V2sw79ekfxbDTr+A8kpSSCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49159},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"d1c6b537c609f2998515675df67a8f085cc846c7","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.0.0_1748495768689_0.873815246724968","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@polinater/redis-event-bus","version":"1.0.1","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.0.1","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"6ec210f28899a3b9562454627a9b68c6003885b5","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.0.1.tgz","fileCount":50,"integrity":"sha512-yszt8inXJQl9t0GCCrwpvAjlsL6poAej0xK0WgAso+7DKswEIt+l9OeT25TEbaLB/T4FUWYAHIs48JMTl/re2A==","signatures":[{"sig":"MEQCIAtr7I08+aXHf91y7YimzskEnNtFJ/uE4fSJCY7VY+BCAiBG3J8m9gg7zzKDdsnt/LhSVvPpZOcF2hokIg+pOOhklw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49160},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"d1c6b537c609f2998515675df67a8f085cc846c7","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.0.1_1748496001069_0.9895034969927226","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@polinater/redis-event-bus","version":"1.0.2","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.0.2","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"95cc9cd83bedfa44beca23a0de174007e0595827","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.0.2.tgz","fileCount":50,"integrity":"sha512-ajocFtXYMSTsvbQtjv+6dWWR1kIYUmsBgoBLP7ChEE0Jzh8ba5YjNLr/wPKVUvK6O2nicEXJCYPBO7yuoRrffA==","signatures":[{"sig":"MEUCIQDAWYAzMXMXW5iHy0zE3YxxnP7nbWq75X5mogxqemDuNQIgYDD6dtNAZ+AklPMJE46EiFWZI2wN0NJGeQbtvqvJrLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49224},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"17cb6d60404baf90a2c40fd3a652094304d8251e","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.0.2_1748499432691_0.08202631923868475","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@polinater/redis-event-bus","version":"1.0.3","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.0.3","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"35c31c313e300672af058e9c51bdc1b96f4b72b5","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.0.3.tgz","fileCount":50,"integrity":"sha512-DrkqbkNckoHOGDmWE8YogFRE4o9IM14OkenSAKbxxuMBhhbSJk/ePVFgaoGL27FtUalhD5Hi/MS/sVt5dqnKSw==","signatures":[{"sig":"MEYCIQC/NqNzlUgA6e9JrIWcpu2WCs5ToZo6nz9UZa0Y5nTengIhAOHUYh9Y3QeUq4ZOZUbXDpkuGxNtvrhDgHJcyVOVywCr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50946},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0c0e61941afbe0038ff608bd1acb733789913c33","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.0.3_1748501609185_0.34524143935942186","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@polinater/redis-event-bus","version":"1.1.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.1.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"4ab78cf4ec23e773cf61474235b19bbc11385d63","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.1.0.tgz","fileCount":50,"integrity":"sha512-HYgiRpR9QbJMwvJOM55ykkRff2l0lHVwa5NfSWCKcO0vBGMu84+tyCOrxkqy/X24b3b4AhJROddHnCTUEviHjg==","signatures":[{"sig":"MEQCIBmD3lfaesdBeh4r2w5f90h8Tl/Wj2NYJGWq4U5v/+xhAiBhNJQrzix7UQbN2btBvdPBGpLDWr/45rq+9evUtOsxlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51017},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0c0e61941afbe0038ff608bd1acb733789913c33","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.1.0_1749430008617_0.788459597632527","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@polinater/redis-event-bus","version":"1.1.1","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.1.1","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"135cef80b9803dae90206a3b59139afa669ba542","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.1.1.tgz","fileCount":50,"integrity":"sha512-x0TijfBk/SYN7+G5wig25aYX39wxx+YwNiwyV5RHOoxMUpISfqDknIKkfpd2/Sz4KGYZrUfGJEZYzdXE4z2X3w==","signatures":[{"sig":"MEQCID69NbL6QZlAeOwILqzqTHD+kf1FV3HjoGiaqv3iwOSIAiACZayuXBIfuZg7LvfuYMvc7X4f+GEVaNQNzgZhQQhU/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51000},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0c0e61941afbe0038ff608bd1acb733789913c33","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.1.1_1749430337388_0.2996756845318571","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@polinater/redis-event-bus","version":"1.1.2","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.1.2","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"b897d74fdb14a821cb0ed0b153ec4deeea46c60b","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.1.2.tgz","fileCount":50,"integrity":"sha512-5fZvSaB33jMjFrONITzlNVwJrElD2ytlYQLuRq5BQG2GWtFjHeTN5vFjo5pgLWzIy4co5GZPnd+16aLZXKBmOw==","signatures":[{"sig":"MEQCIHvwDTMr3DwV9I8ruapexAeWynZpJGhSCJcLaL5K2vHiAiACjs55gGbCKsAKzl0M88xbCj4Zz8iVJMTmL20HCo4h+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52929},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0c0e61941afbe0038ff608bd1acb733789913c33","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.1.2_1749430667058_0.8034338815575721","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@polinater/redis-event-bus","version":"1.1.3","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.1.3","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"3c73db637dac81ab74ad85df397928bfcba92e17","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.1.3.tgz","fileCount":50,"integrity":"sha512-XiR5Qz84umjOwozY8jpk7joZgjiC+pgQHgum/LDDubMPs0jKbXNszYsBxXbKJ8EVD6LzKVc6iklAlPr8HbXGlA==","signatures":[{"sig":"MEUCIQCES6eJc6kFIVr76wPiW3FVsajmCFDCf3fCXvWWV14yJAIgPAjQJXI2QttbQYWYUqR8UuMDqlvO0Lm7jVICwkV0Shc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53071},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0c0e61941afbe0038ff608bd1acb733789913c33","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.1.3_1749430759961_0.4937534924308553","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@polinater/redis-event-bus","version":"1.1.4","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.1.4","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"4f418cee9236b5a6090f661a3ba8fe480d6faec6","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.1.4.tgz","fileCount":50,"integrity":"sha512-orVn4oQAKHNpBfCGlMA1C4toGzFJoj+AwjTTyovZd63Uq32oggACVglIBQE9hp3hDTtPYKUtzn0mHDPSb+V14Q==","signatures":[{"sig":"MEQCIE04XhMIWhYp0ZJVl1KeXcjayezhlC9kbW57u3mjAwk1AiA0G7Ijp4LGxmBnH9fNmRgeJMQxf4WH5JxVjXb23VbUDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53028},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"fe43afe621bc01bcd655ada37097501acb802068","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.1.4_1749431215355_0.8644722054301615","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@polinater/redis-event-bus","version":"1.1.5","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.1.5","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"820b411706fb5f7a9418fd2834e71d9dcf5a328e","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.1.5.tgz","fileCount":50,"integrity":"sha512-oo3/hkP2qFgcwL4vzWv8bG6sARKXjSUiiH43tUSi5wAFx9S91cIap80p67gYI6oHR/ovmC9py6ydm63cLvwNJw==","signatures":[{"sig":"MEUCIQDx0xvS3VC7A1vvQwuWtUp8SMB0F2uxm6HxxqaAKNvjXQIgAj/tV0eMvc8b96mABr7qTYhPvs2ade6v/r5FGrxdFrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51257},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"fe43afe621bc01bcd655ada37097501acb802068","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.1.5_1749432376294_0.05625723399814153","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@polinater/redis-event-bus","version":"1.2.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@1.2.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"b5879457b209ecac0b596aa2adb1ed7341d51b33","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-1.2.0.tgz","fileCount":50,"integrity":"sha512-w2HQVDm0Xls6U03naYvPD++leTYHIByznGhbRO8dkNeSvE3VQls8yUDk8fGG3bjddz2XGfu/B5yPqIoNZakIJw==","signatures":[{"sig":"MEQCIBtyBqy0/Eo6yI6jf/Sy90zwTbLus5f8L/O7UQ5ffbabAiATASNjxPjz3NciMRj5e0D/AdpMhQGgzBmuhGS2xHUIEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49285},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"fe43afe621bc01bcd655ada37097501acb802068","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_1.2.0_1749433388980_0.8590668946482503","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@polinater/redis-event-bus","version":"2.0.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.0.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"b4517469a36fe2f76202e997799a989ee4269e66","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.0.0.tgz","fileCount":50,"integrity":"sha512-/XUmvQGRG12WO+YlLMr6eWoKw9gx0p3XQFJiZL+asAY3WNOA8zKdAPl24GtsitXqtMhIwbdij89zJAk7TSvnIQ==","signatures":[{"sig":"MEUCIQD6asU6oofgnSv8azEIAzodTK7qOtlWMpsqETOu1YlhfAIgVWRi0L7duk9TFxH7+iZs/me603mUDr5C0GYjbsdKupM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48668},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0fac079edfa6ce0128fcb916072270531c224a53","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.0.0_1749433635823_0.9384946346350025","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@polinater/redis-event-bus","version":"2.0.1","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.0.1","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"7e3db7ca3da8085d72cfc6e19eef604ac5f4ce95","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.0.1.tgz","fileCount":55,"integrity":"sha512-aYMeQi/3VlTsMMAQRszuUmJ+pSURwENTZo183pXEk7OxPC/tEOflDdL/LvuvX0r8bZcrGCLyD5Gt7+UqEjxOeg==","signatures":[{"sig":"MEQCIF+Ay8LPB92Ty/atbXiEjAd0KpeC+D4lxfEJGBzpt22iAiA9aVywvVs+mKXmqCa/kGEQOFoiOMFfn+u3oShLqNjghw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72024},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0fac079edfa6ce0128fcb916072270531c224a53","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.0.1_1749434341695_0.37907634250427313","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@polinater/redis-event-bus","version":"2.0.2","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.0.2","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"5b663d3465b7021bec56030fd972ff4e2e5f090f","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.0.2.tgz","fileCount":55,"integrity":"sha512-w5LVoO1Z6DxTbnE33xclBmK0GOiwpCbviKI5aFMhNjlDEdM08saZEFZVVyy9mdJt9kxWEPMRy6NczMuoDvQlqQ==","signatures":[{"sig":"MEYCIQC+AI+AHDSaZqUb9WpQgANqHN/pahp29ldOQVwUlU2NTwIhAIK2F+r8K5doU1vWpQQVTJ3grjG6lv9NZ59CSvtex4Rs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72024},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0fac079edfa6ce0128fcb916072270531c224a53","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.0.2_1749434606464_0.8123710297359814","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"@polinater/redis-event-bus","version":"2.0.3","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.0.3","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"b7ad0fd664c9bd249f50cf882e22bdcfed710ecd","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.0.3.tgz","fileCount":58,"integrity":"sha512-Jak3v6ftjr2SK1S4trZNfPmSPTUt8eBspwtDqemmypqCPBOl02D2rsNUhEgS+DqOPqghSBSwgpyzLl6VD2b6hA==","signatures":[{"sig":"MEUCIQCSrWaYfy2n4cQU0sTs7v1bAO9zRT7t5Cmp5Qba6Pp8EQIgA5YMDdHpmJ0oBq80LGWsgJ+u+/pNk8Nvuib2xvzyhIQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71737},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0fac079edfa6ce0128fcb916072270531c224a53","scripts":{"test":"jest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage","test:integration":"jest --testPathPattern=integration"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","dotenv":"^16.5.0","ts-jest":"^29.3.4","typescript":"^5.0.0","@types/jest":"^29.5.14","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":">=5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.0.3_1749434933448_0.3781809689289408","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"@polinater/redis-event-bus","version":"2.0.4","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.0.4","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"ec3076a06722b354213f5e2b42a47ce579e94331","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.0.4.tgz","fileCount":20,"integrity":"sha512-7NxLTxbLgSFXFz3NQQXMlq54cEiYO6kN4JKXTgfk+puI68nWWAKPEWpGUgbaJ9N8YLhigNGS0rdvFXluuyfwGA==","signatures":[{"sig":"MEUCIQD5x044hMfnjUoc6yW+48Q7qUyXQcN15e+BYVeQwl6Y5QIgC/i7ZrWKZFhTCeQMO4lF9fvJNWkrFvTbdstgLyTE3SE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25480},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"0fac079edfa6ce0128fcb916072270531c224a53","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.0.4_1749435175055_0.15326170825005403","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@polinater/redis-event-bus","version":"2.0.5","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.0.5","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"05469e7a0171a3fa05331726fdb6fcfc5f94d88f","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.0.5.tgz","fileCount":22,"integrity":"sha512-u5+BeVDwaEqhPzpSuDDnqe3Du/lXJTw1pEnWyF+GSY3khq4Znwfo0nLQWYeI4SFHKo5fX7m4xfNiP+m/VgS3aQ==","signatures":[{"sig":"MEQCICPEg2v7swqU+VBwPj6b9HVkJssirYCHCpZKb8ZxqR9qAiAq0Gm2z0eeyAKHjZcztOJjBnEVzyOAE2M5fYZvIb7l/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26071},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"171c48da3445d258fc94191d8e4f87041a9503e7","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.0.5_1749435630396_0.13315469806332603","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@polinater/redis-event-bus","version":"2.1.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.1.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"b9c9b0beadafaba831a2dc48ad098d3d07ef2302","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.1.0.tgz","fileCount":22,"integrity":"sha512-Y+ZSB/+mAHQYmaDiUHPQqEboKLjbIOvuQUL2r5gLjCTjhFwrgJhhhh+ZqSj9remAB2dFC7TKosR5RycL5fBRoA==","signatures":[{"sig":"MEQCIACKklt0DMg21/UFclIst6snByG77sRsIPZ3uSAYRilHAiBgOmzxvdw+6KIN2d42CLoJ+KyrM9lSAYmEGgsB5BZDvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26024},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"171c48da3445d258fc94191d8e4f87041a9503e7","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.1.0_1749437707596_0.4784222794430333","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@polinater/redis-event-bus","version":"2.2.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@2.2.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"9839a61508d032c983cecbce1805240ddd4d76c1","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-2.2.0.tgz","fileCount":22,"integrity":"sha512-Sl5/tmHlJdcf4Z6vu0GzcWuObBaKtGvvByfRgoWr7tQVXVakAHbRaqX6jv8uaP3MSiIJW8YKVylTdRo443F9ig==","signatures":[{"sig":"MEUCIAHKNFUcMtb3dONHwSbd+c3mQfNIrUrirWHW+oQuvb4lAiEAmGukVoQ0ucWUMxzuIRDhf4M2FZzPhvgENfD2wVcXXiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27250},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"gitHead":"adb00e04ea29b7067d78e1250377bfe5770a7d04","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_2.2.0_1749439601951_0.9603055743293751","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@polinater/redis-event-bus","version":"3.0.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.0.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"014f40fad24858da2b0f6259a8b3381767da747e","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.0.0.tgz","fileCount":20,"integrity":"sha512-zNlBrX+0ooyqLfW8dRiSldez2U7htoqqia3lBZzauKo6c9+nJE91zkyUTiIbPEaPOgxAc37Qvct7gXAIeqDG9A==","signatures":[{"sig":"MEUCIDT38VOPofk0HGc/XjrIAiODjq0Z7xM/lUhgCfbUVnEnAiEA2OaLPyOR0LhC7LFGb45C76Rt4CGV01IcNbOENY3yMaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34834},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"adb00e04ea29b7067d78e1250377bfe5770a7d04","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":"^5.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.0.0_1749620585534_0.8577274061797513","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@polinater/redis-event-bus","version":"3.0.1","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.0.1","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"39730e121d0d76e6a7230f53c49bc67e1c80ccec","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.0.1.tgz","fileCount":20,"integrity":"sha512-xNHEs6IqvW2JiCKE4XPIeSNupn2/0ZxKZf0d45r5qfd6+a5DKinN2c240IxBHzKabdyicc6knUhDAAsFH71gcg==","signatures":[{"sig":"MEUCIAOnFmLAa77eBoyHt5drodoV85kyKJEVyVOrcqGmPMcnAiEA3LUBMts2a48Zzxv5zQQ/zy2HbY8lyCA717BL2twMUmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34844},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"adb00e04ea29b7067d78e1250377bfe5770a7d04","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.0.1_1749620729808_0.9480416321011247","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@polinater/redis-event-bus","version":"3.0.2","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.0.2","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"09ac5fb7be9cabd69293139842085b8cd53b88d3","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.0.2.tgz","fileCount":20,"integrity":"sha512-U0bFpvPhsmCxPmnGGAxjT1szPc2Qy79M22zRk0iLWoYAvm1uCjXDC8ebdsXS5hJkCfVpk26QFaFn/qwupNL8iw==","signatures":[{"sig":"MEQCIE4fFt4x/9S7vYVUNbr54NMQmDwJnjxTgKKkTuEOc3wlAiB5jj5T0HcdVrrcV6a6/olD+QrTMvc3dY+ldqonH33NOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48152},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"5f1a1f380a4285c296102f7a4442e0ed65d30ac8","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.0.2_1749620982739_0.5935185781497303","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@polinater/redis-event-bus","version":"3.0.3","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.0.3","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"062e3d5410e1a959421d7d9d71377583cf7077f4","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.0.3.tgz","fileCount":18,"integrity":"sha512-1jjyWd3pwMeU8DzG25avrSZiXWMOXjpj2uSA4YU+C6SW4VMhuO0hnCr54QHhNrSKf6Y5mq/LBncQT6KzymGCjQ==","signatures":[{"sig":"MEQCIGa3eblR59gle6vAIOLC8usH4baSOhs3z5hGuxY1qinqAiBZ1rrQcAh6/RZvC9uk5wYS9g2j/JjS0S8fMmrZlWieEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57336},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dfd39658ebdfd6af0a55ba74005ea67bc515124f","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.0.3_1749622205336_0.6645078966656661","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@polinater/redis-event-bus","version":"3.1.0","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.0","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"9fdad6eda6b4c4ed837ab9df6ef40a3f00af4630","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.0.tgz","fileCount":18,"integrity":"sha512-pI8Z+6EwGDVES/s5aZ2HVi+vK5uJel5UlSbP3g6i1eSbsCRCTFXODjdeYYXNsAH3bR/+iqZu/I/t2TB+n76Rpw==","signatures":[{"sig":"MEUCIArcUq/27KkWFuhNhrGuIQloozWpaQAo/AmvltNdhtVYAiEAvqmpnCZTBeKpWxxvW4E9/EwTDWqRJ9rzKQDiZQVHtc8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115514},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"253add77df0cfd8d638654382194e293cbd5d2de","scripts":{"build":"tsc","clean":"rm -rf dist","prepare":"npm run build"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.0_1749623704975_0.4669458854011843","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"@polinater/redis-event-bus","version":"3.1.1","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.1","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"5e3fd5e4e7a6e86cfcd6ed715cda82c9b5c95741","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.1.tgz","fileCount":18,"integrity":"sha512-4kiZ5qXPgon0n+FLVbaEMDk+1SMhVYTlh12PP2YINugPeP3za2Co362CgwhIrRyZN1n1GeUj+j9ligv0d3jjew==","signatures":[{"sig":"MEUCIGR2CNyt1skxKrFjX2nHID5hGK52p2mlxC/PuN/MiRkWAiEA/RHSeWjJB7UPTJGvkoZmASoTBaGRZ0Fsxtv4Ha9GZ8U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115248},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"51269640d6d539b53009f5ff3ac1b1a1fcb70255","scripts":{"test":"vitest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.1_1749781100692_0.7683829634206305","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"@polinater/redis-event-bus","version":"3.1.2","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.2","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"e8d2e1c6d542177b9c80b0c4aa8b24d98dad9e4b","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.2.tgz","fileCount":18,"integrity":"sha512-7RfqWRO1AAMBVjNLONgVx5Vgo5iy9/LxX/0Gzi6soE1kuzXpwfHvh6TP/HQxfQLuIZtVPabf8AEQOv+iOv8i2g==","signatures":[{"sig":"MEYCIQDIKSeNGF91T+m6nimv5MrXwSpNwOzEtkRJ0v1GMXuR8QIhAJ9lz9fSHFRgXqPwD0zTfOsAsjgus1jUeVf4LNuV0cOB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115224},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"9286fbea1e7de563318bbb96dd4b760cede6fd38","scripts":{"test":"vitest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.2_1749790769517_0.8579359557569497","host":"s3://npm-registry-packages-npm-production"}},"3.1.3":{"name":"@polinater/redis-event-bus","version":"3.1.3","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.3","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"7654b172231efb684c288a2780bbcbd9d18d7861","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.3.tgz","fileCount":18,"integrity":"sha512-HET86DbXfFxMnXiMdsGnNPVM6Qyq6nQs43/SYClkNp4jk2/CjEgozBuwd5k4lrYKAZksddSDMrpou6R/yBOzAg==","signatures":[{"sig":"MEQCIDZo6zgVSMKSu3Zl2YsrUHthZZ1aQnYODJrR7Cg9PZKwAiB9U6F7BNoYFRHS1C9w4zjkyGalksGqA7BD/1MTMU45KQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115230},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"760088cc32595b09fdca2b6bf16d14efabeeef54","scripts":{"test":"vitest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.3_1749953508655_0.30021326874512666","host":"s3://npm-registry-packages-npm-production"}},"3.1.4":{"name":"@polinater/redis-event-bus","version":"3.1.4","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.4","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"09a3a820bcf78aeaf15419b9d2e9a35fc87572f5","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.4.tgz","fileCount":18,"integrity":"sha512-bDsWpjwyjB0j+L6L9WL6v5XKeBjRT/agqNvpTN1Sm3JFMJ/kobvZhtu31amqCeO8WoBYWAAxyLG2SrBqCvZl+g==","signatures":[{"sig":"MEUCIDsNbp74CyJxT9x8iuibUn80RDjelYRM8QrIDbMWwuYrAiEA3BJKZFdhRpU4zFZHPfQ2OokVhYWv8rEkkuGsM4NLO9k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121629},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"8a02976ac99b23070617d69b04df473d9e4d9e71","scripts":{"test":"vitest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.4_1750061444981_0.8238944370247425","host":"s3://npm-registry-packages-npm-production"}},"3.1.5":{"name":"@polinater/redis-event-bus","version":"3.1.5","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.5","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"bf76bc96a584966e2270f7588db8771fcd16a8c2","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.5.tgz","fileCount":18,"integrity":"sha512-aPKSfidllpC57AcqBthodVDauegBAK6ehcMyM5KGEXTz7PnN3/WKWsey8a+8t3Tsb4yzgUb0TO0LWGeVLgtUXw==","signatures":[{"sig":"MEUCIQDJkY1de5JCzoF9w2sDOW+SjI9xOKfTpCWPxrD86zaH8AIgJCKtBa9EE7/JIXyBIGh50IzqMs8ykRdniV5/c8Dj6Ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121654},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"701f565be9e5a091a283e83d9bc1ffa395e6d376","scripts":{"test":"vitest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.5_1750093220984_0.8050404418409594","host":"s3://npm-registry-packages-npm-production"}},"3.1.6":{"name":"@polinater/redis-event-bus","version":"3.1.6","keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","_id":"@polinater/redis-event-bus@3.1.6","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"dist":{"shasum":"c9a4d94a30cea4a98ecafa5a824855f605011680","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-3.1.6.tgz","fileCount":18,"integrity":"sha512-S7qdqGVNey2yOessl9P0u+0U8sHmUZC6FiWo1PoFPz7rU7XVgnma2DUUyCwcDndLCq1mBixZExn0Rcg3XvZRqw==","signatures":[{"sig":"MEUCIQDPeembbS7UbbV6+VbIOJ/ZV65m4GVW1MpeVAYfFh5rYAIgMCcSzElEmPA+HPKn8s+hG4/16x83HeImRrkmXl3xE2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121678},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dceb13a2d7a6a0df77509a96784c659398cbd678","scripts":{"test":"vitest","build":"tsc","clean":"rm -rf dist","prepare":"npm run build","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"polinate","actor":{"name":"polinate","type":"user","email":"admin@polinate.com.au"},"email":"admin@polinate.com.au"},"_npmVersion":"10.8.2","description":"Redis-backed event bus with strict type safety and automatic retries","directories":{},"_nodeVersion":"20.19.1","dependencies":{"ioredis":"^5.3.2"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.0.0","@types/node":"^20.0.0","@types/ioredis":"^5.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/redis-event-bus_3.1.6_1750660411157_0.98187505764939","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@polinater/redis-event-bus","version":"4.0.0","description":"Redis-backed event bus with strict type safety and automatic retries","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"build":"tsc","prepare":"npm run build","clean":"rm -rf dist","test":"vitest","test:run":"vitest run","test:watch":"vitest --watch","test:coverage":"vitest run --coverage"},"keywords":["redis","event-bus","typescript","events"],"author":"","license":"MIT","dependencies":{"bullmq":"^4.18.2","ioredis":"^5.3.2"},"peerDependencies":{"@prisma/client":"^5.0.0 || ^6.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":true}},"devDependencies":{"@types/ioredis":"^5.0.0","@types/node":"^20.0.0","@vitest/coverage-v8":"^1.0.0","redis-memory-server":"^0.10.0","typescript":"^5.0.0","vitest":"^1.0.0"},"engines":{"node":">=16"},"_id":"@polinater/redis-event-bus@4.0.0","gitHead":"3383bb85c286bd3754b39723f2b8f9f719d1af9d","_nodeVersion":"20.19.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-FpyQ9vcp3S122EscMzF5epooiY2URweTrIUiQjGBEhEiL0R/0hhIA8H0J16E/CYh832cPTbKeV6fy/tvrX9+pw==","shasum":"6a0a0eb16158a7194fa3917f6cbfa47c1b655551","tarball":"https://registry.npmjs.org/@polinater/redis-event-bus/-/redis-event-bus-4.0.0.tgz","fileCount":22,"unpackedSize":129237,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCW6onfYosNEcp3smZUArKrh0uI9VXLCMGhp6SDwmHHngIhAIhrijZjnT6GgS5FW46t7Ue68akQbA42yFJdsUQ2mXsR"}]},"_npmUser":{"name":"polinate","email":"admin@polinate.com.au"},"directories":{},"maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/redis-event-bus_4.0.0_1752194261849_0.380694045096474"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-29T05:16:08.595Z","modified":"2025-07-11T00:37:42.232Z","1.0.0":"2025-05-29T05:16:08.893Z","1.0.1":"2025-05-29T05:20:01.273Z","1.0.2":"2025-05-29T06:17:12.899Z","1.0.3":"2025-05-29T06:53:29.355Z","1.1.0":"2025-06-09T00:46:48.815Z","1.1.1":"2025-06-09T00:52:17.592Z","1.1.2":"2025-06-09T00:57:47.247Z","1.1.3":"2025-06-09T00:59:20.204Z","1.1.4":"2025-06-09T01:06:55.541Z","1.1.5":"2025-06-09T01:26:16.514Z","1.2.0":"2025-06-09T01:43:09.193Z","2.0.0":"2025-06-09T01:47:16.048Z","2.0.1":"2025-06-09T01:59:01.889Z","2.0.2":"2025-06-09T02:03:26.646Z","2.0.3":"2025-06-09T02:08:53.613Z","2.0.4":"2025-06-09T02:12:55.244Z","2.0.5":"2025-06-09T02:20:30.598Z","2.1.0":"2025-06-09T02:55:07.773Z","2.2.0":"2025-06-09T03:26:42.114Z","3.0.0":"2025-06-11T05:43:05.694Z","3.0.1":"2025-06-11T05:45:29.978Z","3.0.2":"2025-06-11T05:49:42.935Z","3.0.3":"2025-06-11T06:10:05.513Z","3.1.0":"2025-06-11T06:35:05.152Z","3.1.1":"2025-06-13T02:18:20.870Z","3.1.2":"2025-06-13T04:59:29.727Z","3.1.3":"2025-06-15T02:11:48.822Z","3.1.4":"2025-06-16T08:10:45.160Z","3.1.5":"2025-06-16T17:00:21.136Z","3.1.6":"2025-06-23T06:33:31.322Z","4.0.0":"2025-07-11T00:37:42.028Z"},"license":"MIT","keywords":["redis","event-bus","typescript","events"],"description":"Redis-backed event bus with strict type safety and automatic retries","maintainers":[{"name":"polinate","email":"admin@polinate.com.au"}],"readme":"# Redis Event Bus\n\n## What’s New in v4.0.0 – The **BullMQ Update**\n\nv4 migrates the underlying transport from Redis Pub/Sub to [BullMQ](https://docs.bullmq.io/), bringing:\n\n* Durable storage – jobs survive restarts & deployments.\n* Automatic retries with exponential back-off.\n* Stalled-job detection & dead-letter inspection via Bull Board.\n* Horizontal-scaling friendliness (work-queue model).\n* No breaking TypeScript API changes – keep using `emit`, `on`, `off`, and all Prisma generics.\n\n### 30-second migration\n\n1. **Install the new dependency**\n\n   ```bash\n   npm install bullmq --save\n   ```\n2. **Run a long-lived worker process** (outside Vercel/Netlify functions).\n\n   ```bash\n   # scripts/event-worker.ts\n   import { initializeSubscribers } from '../src/initializeSubscribers';\n   import { createEventBus } from '@polinater/redis-event-bus';\n\n   await createEventBus();\n   await initializeSubscribers();\n   console.log('Event-bus worker ready');\n   process.stdin.resume();\n   ```\n\n3. Deploy that script on Render, Fly.io, Docker, k8s, etc. Your Next.js app can stay on Vercel.\n\n_No other code changes required._\n\n---\n\n## Installation\n\n```bash\nnpm install @polinater/redis-event-bus bullmq\n```\n\n### Prerequisites\n\n- Node.js 16 or higher\n- Redis server (local or cloud)\n- Prisma Client (optional but recommended for type safety)\n- Next.js 13+ (for app router examples)\n\n### Peer Dependencies\n\nThe package works with Prisma v5 and v6:\n\n```bash\nnpm install @prisma/client  # ^5.0.0 || ^6.0.0\n```\n\n---\n\n## Quick Start\n\n```typescript\n// lib/eventBus.ts\nimport { PrismaClient } from '@prisma/client';\nimport { createEventBusFromClient, EventType } from '@polinater/redis-event-bus';\n\nconst prisma = new PrismaClient();\nexport const eventBus = createEventBusFromClient(prisma);\n\n// Emit an event\nawait eventBus.emit(EventType.BusinessCreated, {\n  metadata: {\n    eventId: crypto.randomUUID(),\n    timestamp: new Date().toISOString(),\n    version: '1.0'\n  },\n  data: {\n    id: 'biz_123',\n    business: await prisma.business.findUnique({ where: { id: 'biz_123' } })\n  }\n});\n```\n\n## Setup Guide\n\n### Step 1: Environment Configuration\n\nCreate or update your `.env.local` file:\n\n```bash\n# Required: Redis connection URL\nREDIS_EVENTS_URL=redis://localhost:6379\n\n# Optional: Redis configuration\nREDIS_PASSWORD=your_password\nREDIS_DB=0\n```\n\n### Step 2: Initialize Event Bus\n\nCreate a centralized event bus instance:\n\n```typescript\n// lib/eventBus.ts\nimport { PrismaClient } from '@prisma/client';\nimport { \n  createEventBusFromClient, \n  type ExtractPrismaTypes \n} from '@polinater/redis-event-bus';\n\n// Initialize Prisma\nconst prisma = new PrismaClient();\n\n// Create type-safe event bus\nexport const eventBus = createEventBusFromClient(prisma);\n\n// Extract your Prisma types for reuse\nexport type MyPrismaTypes = ExtractPrismaTypes<typeof prisma>;\n\n// Export prisma for use in other files\nexport { prisma };\n```\n\n### Step 3: Set Up Event Subscribers\n\nCreate a centralized subscribers file:\n\n```typescript\n// lib/subscribers.ts\nimport { EventType } from '@polinater/redis-event-bus';\nimport { eventBus } from './eventBus';\nimport { sendWelcomeEmail } from './email';\nimport { updateAnalytics } from './analytics';\n\nexport async function initializeSubscribers() {\n  // Business Events\n  await eventBus.on(EventType.BusinessCreated, async (event) => {\n    const business = event.data.data;\n    \n    // Send welcome email\n    if (business.email) {\n      await sendWelcomeEmail(business.email, business.name);\n    }\n    \n    // Update analytics\n    await updateAnalytics('business_created', {\n      businessId: business.id,\n      timestamp: event.metadata.timestamp\n    });\n  });\n\n  await eventBus.on(EventType.BusinessUpdated, async (event) => {\n    console.log('Business updated:', event.data.businessId);\n    console.log('Changes:', event.data.changes);\n    \n    // Sync with external services\n    await syncWithCRM(event.data.data);\n  });\n\n  await eventBus.on(EventType.BusinessDeleted, async (event) => {\n    // Clean up related data\n    await cleanupBusinessData(event.data.businessId);\n  });\n\n  console.log('Event subscribers initialized');\n}\n\nasync function syncWithCRM(business: any) {\n  // Your CRM sync logic\n}\n\nasync function cleanupBusinessData(businessId: string) {\n  // Your cleanup logic\n}\n```\n\n### Step 4: Initialize in Next.js\n\nFor **Next.js App Router**, use the instrumentation file:\n\n```typescript\n// instrumentation.ts (in your project root)\nexport async function register() {\n  if (process.env.NEXT_RUNTIME === 'nodejs') {\n    // Only run in Node.js runtime (server-side)\n    const { initializeSubscribers } = await import('./lib/subscribers');\n    await initializeSubscribers();\n    console.log('Redis Event Bus initialized');\n  }\n}\n```\n\nMake sure to enable instrumentation in `next.config.js`:\n\n```javascript\n// next.config.js\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  experimental: {\n    instrumentationHook: true,\n  },\n}\n\nmodule.exports = nextConfig;\n```\n\nFor **Next.js Pages Router**, initialize in a startup script or API route:\n\n```typescript\n// pages/api/init.ts\nimport { initializeSubscribers } from '../../lib/subscribers';\n\nlet initialized = false;\n\nexport default async function handler(req: any, res: any) {\n  if (!initialized) {\n    await initializeSubscribers();\n    initialized = true;\n  }\n  \n  res.status(200).json({ message: 'Event bus initialized' });\n}\n```\n\n### Step 5: Using in API Routes\n\n```typescript\n// app/api/businesses/route.ts\nimport { NextRequest, NextResponse } from 'next/server';\nimport { eventBus, prisma } from '@/lib/eventBus';\nimport { EventType } from '@polinater/redis-event-bus';\n\nexport async function POST(request: NextRequest) {\n  try {\n    const data = await request.json();\n    \n    // Create business in database\n    const business = await prisma.business.create({ \n      data: {\n        name: data.name,\n        email: data.email,\n        // ... other fields\n      }\n    });\n    \n    // Emit event (this will trigger all subscribers)\n    await eventBus.emit(EventType.BusinessCreated, {\n      metadata: {\n        eventId: crypto.randomUUID(),\n        timestamp: new Date().toISOString(),\n        version: '1.0',\n        correlationId: data.correlationId // Optional\n      },\n      data: {\n        businessId: business.id,\n        data: business\n      }\n    });\n    \n    return NextResponse.json(business);\n  } catch (error) {\n    console.error('Error creating business:', error);\n    return NextResponse.json(\n      { error: 'Failed to create business' }, \n      { status: 500 }\n    );\n  }\n}\n\nexport async function PUT(request: NextRequest) {\n  try {\n    const { searchParams } = new URL(request.url);\n    const id = searchParams.get('id');\n    const data = await request.json();\n    \n    if (!id) {\n      return NextResponse.json({ error: 'ID required' }, { status: 400 });\n    }\n    \n    // Get original business for change comparison\n    const originalBusiness = await prisma.business.findUnique({\n      where: { id }\n    });\n    \n    if (!originalBusiness) {\n      return NextResponse.json({ error: 'Business not found' }, { status: 404 });\n    }\n    \n    // Update business\n    const updatedBusiness = await prisma.business.update({\n      where: { id },\n      data\n    });\n    \n    // Calculate changes\n    const changes: Record<string, any> = {};\n    Object.keys(data).forEach(key => {\n      if (originalBusiness[key as keyof typeof originalBusiness] !== data[key]) {\n        changes[key] = {\n          from: originalBusiness[key as keyof typeof originalBusiness],\n          to: data[key]\n        };\n      }\n    });\n    \n    // Emit update event\n    await eventBus.emit(EventType.BusinessUpdated, {\n      metadata: {\n        eventId: crypto.randomUUID(),\n        timestamp: new Date().toISOString(),\n        version: '1.0'\n      },\n      data: {\n        businessId: id,\n        data: updatedBusiness,\n        changes\n      }\n    });\n    \n    return NextResponse.json(updatedBusiness);\n  } catch (error) {\n    console.error('Error updating business:', error);\n    return NextResponse.json(\n      { error: 'Failed to update business' }, \n      { status: 500 }\n    );\n  }\n}\n```\n\n## Usage Patterns\n\n### Pattern 1: Simple Event Emission\n\n```typescript\nimport { eventBus } from '@/lib/eventBus';\nimport { EventType } from '@polinater/redis-event-bus';\n\n// Basic event emission\nawait eventBus.emit(EventType.BusinessCreated, {\n  metadata: {\n    eventId: crypto.randomUUID(),\n    timestamp: new Date().toISOString(),\n    version: '1.0'\n  },\n  data: {\n    businessId: business.id,\n    data: business\n  }\n});\n```\n\n### Pattern 2: Event Chaining\n\n```typescript\n// In your subscriber\nawait eventBus.on(EventType.BusinessCreated, async (event) => {\n  const business = event.data.data;\n  \n  // Process business\n  await processNewBusiness(business);\n  \n  // Emit follow-up event\n  await eventBus.emit(EventType.BusinessBrandingCreated, {\n    metadata: {\n      eventId: crypto.randomUUID(),\n      timestamp: new Date().toISOString(),\n      version: '1.0',\n      correlationId: event.metadata.eventId // Link events\n    },\n    data: {\n      businessId: business.id,\n      data: await createDefaultBranding(business.id)\n    }\n  });\n});\n```\n\n### Pattern 3: Conditional Event Handling\n\n```typescript\nawait eventBus.on(EventType.BusinessUpdated, async (event) => {\n  const { data: business, changes } = event.data;\n  \n  // Only process if email changed\n  if (changes.email) {\n    await updateEmailInCRM(business.id, changes.email.to);\n  }\n  \n  // Only process if status changed to active\n  if (changes.status?.to === 'active') {\n    await activateBusinessServices(business.id);\n  }\n});\n```\n\n### Pattern 4: Error Handling in Subscribers\n\n```typescript\nawait eventBus.on(EventType.BusinessCreated, async (event) => {\n  try {\n    await sendWelcomeEmail(event.data.data.email);\n  } catch (error) {\n    console.error('Failed to send welcome email:', error);\n    \n    // Emit error event for monitoring\n    await eventBus.emit(EventType.EventCreated, {\n      metadata: {\n        eventId: crypto.randomUUID(),\n        timestamp: new Date().toISOString(),\n        version: '1.0'\n      },\n      data: {\n        id: crypto.randomUUID(),\n        businessId: event.data.businessId,\n        data: {\n          id: crypto.randomUUID(),\n          businessId: event.data.businessId,\n          eventType: 'email_send_failed',\n          createdAt: new Date(),\n          updatedAt: new Date()\n        }\n      }\n    });\n    \n    // Don't rethrow - let other subscribers continue\n  }\n});\n```\n\n## Configuration\n\n### Basic Configuration\n\nThe event bus automatically uses environment variables:\n\n```bash\nREDIS_EVENTS_URL=redis://localhost:6379\n```\n\n### Advanced Configuration\n\nFor more control, use the configuration API:\n\n```typescript\nimport { configureRedisEventBus } from '@polinater/redis-event-bus';\n\n// Configure before creating event bus instances\nconfigureRedisEventBus({\n  url: process.env.REDIS_URL || 'redis://localhost:6379',\n  enableLogging: process.env.NODE_ENV !== 'production',\n  options: {\n    // Redis connection options\n    maxRetriesPerRequest: 5,\n    connectTimeout: 15000,\n    lazyConnect: true,\n    \n    // Custom retry strategy\n    retryStrategy: (times) => {\n      const delay = Math.min(times * 50, 2000);\n      return delay;\n    },\n    \n    // TLS configuration for cloud Redis\n    tls: process.env.REDIS_TLS === 'true' ? {} : undefined,\n    \n    // Password authentication\n    password: process.env.REDIS_PASSWORD,\n    \n    // Database selection\n    db: parseInt(process.env.REDIS_DB || '0'),\n  }\n});\n```\n\n### Cloud Redis Providers\n\n#### Redis Cloud\n```typescript\nconfigureRedisEventBus({\n  url: 'rediss://username:password@your-endpoint:port',\n  options: {\n    tls: {\n      rejectUnauthorized: true\n    }\n  }\n});\n```\n\n#### AWS ElastiCache\n```typescript\nconfigureRedisEventBus({\n  url: 'redis://your-cluster.cache.amazonaws.com:6379',\n  options: {\n    family: 4, // IPv4\n    keepAlive: true,\n    maxRetriesPerRequest: 3\n  }\n});\n```\n\n#### Upstash Redis\n```typescript\nconfigureRedisEventBus({\n  url: process.env.UPSTASH_REDIS_REST_URL,\n  options: {\n    password: process.env.UPSTASH_REDIS_REST_TOKEN,\n    tls: {}\n  }\n});\n```\n\n## Event Types\n\nThe package includes predefined event types for common business operations:\n\n### Business Events\n- `EventType.BusinessCreated`\n- `EventType.BusinessUpdated` \n- `EventType.BusinessDeleted`\n\n### Business Component Events\n- `EventType.BusinessBrandingCreated/Updated/Deleted`\n- `EventType.BusinessBuyerInfoCreated/Updated/Deleted`\n- `EventType.BusinessSupplierInfoCreated/Updated/Deleted`\n- `EventType.BusinessFinanceCreated/Updated/Deleted`\n- `EventType.BusinessPartnerCreated/Updated/Deleted`\n\n### Item Management Events\n- `EventType.BuyerItemAliasCreated/Updated/Deleted`\n- `EventType.CustomItemCostCreated/Updated/Deleted`\n- `EventType.CustomItemTaxCreated/Updated/Deleted`\n\n### System Events\n- `EventType.EventCreated/Updated/Deleted`\n- `EventType.IdempotencyKeyCreated/Updated/Deleted`\n\n### Event Metadata\n\nAll events include standardized metadata:\n\n```typescript\ninterface EventMetadata {\n  eventId: string;          // Unique identifier for this event\n  timestamp: string;        // ISO timestamp of when event occurred\n  version: string;          // Event schema version\n  membershipId?: string;    // Optional: User/membership context\n  integrationId?: string;   // Optional: External integration context\n  correlationId?: string;   // Optional: Link related events\n}\n```\n\n## Error Handling\n\n### Connection Errors\n\n```typescript\nimport { eventBus } from '@/lib/eventBus';\n\n// Check connection health\nconst isHealthy = await eventBus.isHealthy();\nif (!isHealthy) {\n  console.error('Redis connection is not healthy');\n  // Handle gracefully - maybe use fallback or queue\n}\n\n// Get connection status\nconst isConnected = eventBus.getConnectionStatus();\n```\n\n### Emission Errors\n\nThe event bus automatically retries failed emissions:\n\n```typescript\ntry {\n  await eventBus.emit(EventType.BusinessCreated, payload);\n} catch (error) {\n  if (error.name === 'PublishError') {\n    console.error('Failed to publish event after retries:', error.message);\n    // Handle failed emission - maybe store for later retry\n  }\n}\n```\n\n### Subscription Errors\n\n```typescript\ntry {\n  await eventBus.on(EventType.BusinessCreated, handler);\n} catch (error) {\n  if (error.name === 'SubscriptionError') {\n    console.error('Failed to subscribe to event:', error.message);\n    // Handle subscription failure\n  }\n}\n```\n\n### Graceful Shutdown\n\n```typescript\n// In your shutdown handler (e.g., process.on('SIGTERM'))\nasync function gracefulShutdown() {\n  try {\n    await eventBus.disconnect();\n    console.log('Event bus disconnected gracefully');\n  } catch (error) {\n    console.error('Error during shutdown:', error);\n  }\n}\n\nprocess.on('SIGTERM', gracefulShutdown);\nprocess.on('SIGINT', gracefulShutdown);\n```\n\n## Performance & Scaling\n\n### Connection Pooling\n\nThe event bus uses Redis connection pooling automatically:\n\n```typescript\nconfigureRedisEventBus({\n  options: {\n    maxRetriesPerRequest: 3,\n    enableOfflineQueue: true,\n    enableAutoPipelining: true, // Automatic command batching\n    maxmemoryPolicy: 'allkeys-lru'\n  }\n});\n```\n\n### Event Batching\n\nFor high-throughput scenarios, batch events:\n\n```typescript\nasync function batchEmitBusinessEvents(businesses: Business[]) {\n  const promises = businesses.map(business => \n    eventBus.emit(EventType.BusinessCreated, {\n      metadata: {\n        eventId: crypto.randomUUID(),\n        timestamp: new Date().toISOString(),\n        version: '1.0'\n      },\n      data: {\n        businessId: business.id,\n        data: business\n      }\n    })\n  );\n  \n  // Emit all events concurrently\n  await Promise.allSettled(promises);\n}\n```\n\n### Memory Management\n\nMonitor and manage event handlers:\n\n```typescript\n// Remove specific handler\nconst handler = async (event: any) => { /* ... */ };\nawait eventBus.on(EventType.BusinessCreated, handler);\n\n// Later, remove it\nawait eventBus.off(EventType.BusinessCreated, handler);\n\n// Remove all handlers for an event type\nawait eventBus.off(EventType.BusinessCreated);\n```\n\n### Scaling Considerations\n\n1. **Multiple Instances**: Each app instance creates its own Redis connections\n2. **Load Balancing**: Redis pub/sub works across multiple consumers\n3. **Persistence**: Events are not persisted by default - consider Redis persistence settings\n4. **Monitoring**: Monitor Redis memory usage and connection counts\n\n## Troubleshooting\n\n### Common Issues\n\n#### 1. Events Not Being Received\n\n**Problem**: Subscribers not receiving events\n**Solutions**:\n```typescript\n// Ensure subscribers are initialized before emitting\nawait initializeSubscribers();\nawait new Promise(resolve => setTimeout(resolve, 1000)); // Brief delay\nawait eventBus.emit(EventType.BusinessCreated, payload);\n\n// Check Redis connection\nconst isHealthy = await eventBus.isHealthy();\nconsole.log('Redis healthy:', isHealthy);\n```\n\n#### 2. Type Errors with Prisma\n\n**Problem**: TypeScript errors with Prisma types\n**Solutions**:\n```typescript\n// Ensure Prisma client is generated\n// Run: npx prisma generate\n\n// Use type assertion if needed\nimport type { Business } from '@prisma/client';\nconst business = event.data.data as Business;\n\n// Or regenerate types\nimport type { ExtractPrismaTypes } from '@polinater/redis-event-bus';\nimport { PrismaClient } from '@prisma/client';\ntype MyTypes = ExtractPrismaTypes<PrismaClient>;\n```\n\n#### 3. Redis Connection Issues\n\n**Problem**: Cannot connect to Redis\n**Solutions**:\n```bash\n# Check Redis is running\nredis-cli ping\n\n# Check environment variables\necho $REDIS_EVENTS_URL\n\n# Test connection manually\nredis-cli -u $REDIS_EVENTS_URL ping\n```\n\n#### 4. Memory Leaks\n\n**Problem**: Memory usage growing over time\n**Solutions**:\n```typescript\n// Clean up event handlers\nawait eventBus.off(EventType.BusinessCreated);\n\n// Implement connection cleanup\nprocess.on('exit', async () => {\n  await eventBus.disconnect();\n});\n```\n\n### Debug Mode\n\nEnable detailed logging:\n\n```typescript\nconfigureRedisEventBus({\n  enableLogging: true,\n  options: {\n    showFriendlyErrorStack: true,\n    maxmemoryPolicy: 'allkeys-lru'\n  }\n});\n```\n\n### Health Checks\n\nImplement health checks for monitoring:\n\n```typescript\n// app/api/health/redis/route.ts\nimport { eventBus } from '@/lib/eventBus';\n\nexport async function GET() {\n  try {\n    const isHealthy = await eventBus.isHealthy();\n    \n    if (isHealthy) {\n      return Response.json({ status: 'healthy', redis: 'connected' });\n    } else {\n      return Response.json(\n        { status: 'unhealthy', redis: 'disconnected' }, \n        { status: 503 }\n      );\n    }\n  } catch (error) {\n    return Response.json(\n      { status: 'error', message: error.message }, \n      { status: 500 }\n    );\n  }\n}\n```\n\n## API Reference\n\n### Factory Functions\n\n```typescript\n// Create with default types\nconst eventBus = createEventBus();\n\n// Create with Prisma types\nconst eventBus = createEventBusWithPrisma<MyPrismaTypes>();\n\n// Create from Prisma client (recommended)\nconst eventBus = createEventBusFromClient(prismaClient);\n```\n\n### Event Bus Methods\n\n```typescript\n// Subscribe to events\nawait eventBus.on(eventType, handler);\n\n// Unsubscribe from events\nawait eventBus.off(eventType, handler?);\n\n// Emit events\nawait eventBus.emit(eventType, payload);\n\n// Health checks\nconst healthy = await eventBus.isHealthy();\nconst connected = eventBus.getConnectionStatus();\n\n// Cleanup\nawait eventBus.disconnect();\n```\n\n### Configuration\n\n```typescript\n// Configure Redis connection\nconfigureRedisEventBus(config);\n\n// Configuration interface\ninterface RedisEventBusConfig {\n  url?: string;\n  options?: RedisOptions;\n  enableLogging?: boolean;\n}\n```\n\n### Type Utilities\n\n```typescript\n// Extract types from Prisma client\ntype MyTypes = ExtractPrismaTypes<typeof prismaClient>;\n\n// Infer types from instance\ntype MyTypes = InferPrismaTypes<typeof prismaClient>;\n```\n\n---\n\n## Support\n\nFor issues, questions, or contributions, please visit the [GitHub repository](https://github.com/your-org/redis-event-bus).\n\n## License\n\nMIT License - see LICENSE file for details.","readmeFilename":"README.md"}