{"_id":"@454creative/easy-events","_rev":"19-cd9a2673c6051fa17f5c9ab5b045a994","name":"@454creative/easy-events","dist-tags":{"latest":"2.0.17"},"versions":{"1.0.0":{"name":"@454creative/easy-events","version":"1.0.0","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.0.0","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"7c3a5209bc25a658a703cc7d6e15b069d33b0929","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.0.0.tgz","fileCount":30,"integrity":"sha512-Xj4FAbawqaQYXxBLpBHxPNIn/VmkbBVdSKLdP/QsgYz23LPhsI5kCkHrvFo7VJUr1BnjvaTlLlcU48efnqpjGQ==","signatures":[{"sig":"MEUCIQD9DwprZfctTaqOppufilU7/ZvTL7rm6bxePjxKYcmBsgIgMcUT+HRsPJkGuNT2lidffiNY4dbOOO+w6woSmC5Dw2I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44767},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"0bc42dab51d29762022557cf34d2addf038d9fa2","scripts":{"dev":"npm run build:watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.0.0_1753131684315_0.23234903909846327","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@454creative/easy-events","version":"1.1.0","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.1.0","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"064835c34cabd455ef7cf39f0365c9d5f2297b14","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.1.0.tgz","fileCount":30,"integrity":"sha512-sgUN84Lb8QHojy+CgOXVwxLGjt6o7mFVAA4aDf9X3gYCgKhFK1BHSSe9bydBnxRsgwAEFAlRwfre5S9Didi09w==","signatures":[{"sig":"MEUCIBw5YgHNeN6uWterreH2JkKOE/XzERUdu2nuGDtGRzoJAiEAmzYOh4NgJcOvs3ZO5VATE2cvkR0wn8YI/sAOLuBVif0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50603},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"f1bab81e762dda965d8b762978cd17ca35d3b180","scripts":{"dev":"npm run build:watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.1.0_1753138548684_0.5080395368172852","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@454creative/easy-events","version":"1.1.1","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.1.1","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"162e8a72613e0d410fbdfd48bee7ba4c09f7325e","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.1.1.tgz","fileCount":30,"integrity":"sha512-Vn/Au1YS3zw0sPJd/ZIJXw11sWaNi7VBpLf0jhHj2gm3jfr3T6dEMqjaeEkCgn7ZxKmJbCyoEyVWZqyXrOW42A==","signatures":[{"sig":"MEYCIQC3UBD4czAVYze9k52Ncmc68BnIXegmKaT5GrccfVY8uwIhAINIUDjRtw+VFqhWCTe27V6zQkG6uoWs9V37kzbIQrke","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50772},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"29a971791b308670db829fbaad2a64268b31a507","scripts":{"dev":"npm run build:watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.1.1_1753138868029_0.3644890212250016","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@454creative/easy-events","version":"1.1.2","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.1.2","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"12f484af955abf2a1a45cf9eccdca924c420fb0b","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.1.2.tgz","fileCount":30,"integrity":"sha512-0StUI+3n2AwJDSpPxPHrvDW0fEbfzOLEFW3e9sfz+1wX6tzla8uELmEWJRsyGcNXYQuQ6OQcHwZZUnjMdg5VKg==","signatures":[{"sig":"MEQCIAIBsSxSJ/NanLBTsdvAd4HeKlz6u4dzXKw1apfPmpY0AiAO8rqbe+p8owinX3qT1PMXqg35HB9oOvhUauvuKGEqew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50824},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b2d6f062ef18b884affc412500683b84f9380cfe","scripts":{"dev":"npm run build:watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.1.2_1753139059725_0.9754665950016663","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@454creative/easy-events","version":"1.2.0","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.2.0","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"a576c5e0fe71488c76e37670830c5846928c6374","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.2.0.tgz","fileCount":34,"integrity":"sha512-c3ynFyA8k55B8yD1xRRDwh4so/QaI2dRQPxT5siwkstQWiM8/N3zlAZt+1u7M2lqu17ZKC8A8uuHmk7HnCWwRA==","signatures":[{"sig":"MEQCIDeUIbctkzeWGJtdJMyV4QMijkEDNu7EwyH0NL833W6jAiB0y2ZC6Hhcou2aJ3G3HaqaT7s0F+ZLVpPd0x2F3jVS8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66547},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b2d6f062ef18b884affc412500683b84f9380cfe","scripts":{"dev":"npm run build:watch","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.2.0_1753144062688_0.583336738136099","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@454creative/easy-events","version":"1.2.1","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.2.1","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"b9ed864b179ffc02dc5289828049ccc0c821cb03","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.2.1.tgz","fileCount":34,"integrity":"sha512-wrE8d06ht86ZuJPjkWq7upXNeBxh5e8YspFdpcWH/MysCAaBPvRNLK7NSrT/2r/mZj/UdAlA+pdOjLXSxd7nCA==","signatures":[{"sig":"MEMCIGSbDZ8eLl2EA7+HFErgTZPJe8BR74p3uiRt0NQPNccCAh96JAkW9uwzucTnlqKFmDlZRAa7E68svDLY+gTQVF9D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66609},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b1fc9beb19b34a4c90d2973ddfc7921f7033afb7","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.2.1_1753163598708_0.20578976897697743","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@454creative/easy-events","version":"1.3.0","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@1.3.0","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"567932bd4cdc2ba3c212ad1baccffa5846641ed6","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-1.3.0.tgz","fileCount":34,"integrity":"sha512-T5ncpN/nKE6HyzOOS0WzJadwH1zrbMF2raVDaggEv1B9/ri9IDOFQ1txPX8Ts8gskCpuc5CROL8M89iuZ628vA==","signatures":[{"sig":"MEUCID5WomZZGuB2znNqMlfU9vrTQhFo6DcO1XxmPk7sFlFzAiEAjjMtNZSdUyJpCn9ZU+xIclKpQFUa709xQfqCEQoh+z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90032},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b1fc9beb19b34a4c90d2973ddfc7921f7033afb7","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easy-events_1.3.0_1753487226189_0.5583559306736035","host":"s3://npm-registry-packages-npm-production"}},"2.0.5":{"name":"@454creative/easy-events","version":"2.0.5","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.5","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"f74562ad37e0aad02e4136064b75933c115c6104","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.5.tgz","fileCount":190,"integrity":"sha512-k1OuwnGFBFIw8rGDKQq9HBp03Yuuyg5NDSMwytV/x53Ly60dzLNHEZAaXbYDbgIijBg9g/8RDtiu9FtIFQQr/w==","signatures":[{"sig":"MEQCIDwhxZG0ibCw//jp+8PoIxwoiopZk43vwKE45XuqRXXBAiBeWLSVvHI7VxH3Zl4ov4UvBlKgMdKLnv+rX8uzLD2Tfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746127},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"d01229e680bff69e52a2de0e23c11f3138ade5e1","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.5_1756415370927_0.32920846482197996","host":"s3://npm-registry-packages-npm-production"}},"2.0.6":{"name":"@454creative/easy-events","version":"2.0.6","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.6","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"12d4ba41562cb2dc119f8866863141b8646a0c0a","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.6.tgz","fileCount":190,"integrity":"sha512-5n9jcR91ZYLucuUNnAmXrAD2Y1Y4AlHfVQR5umuU1zFnuLLVmMdoONxDFRCb3ux77IZ3LYSeN1k8b/EpnPgiKw==","signatures":[{"sig":"MEUCIQDu9L9b7b7v2RhzCfn4xe6hi4ARK6V8NJZw7m7/sTgkKwIgTfIdP+qkQm8yTCwnaXZBkkEuv0Xe9HsfVM6chbRmtgQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":750230},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b376193969f7835f153bd7f84eecfb71414ad4c1","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.6_1756426129449_0.47685636980363144","host":"s3://npm-registry-packages-npm-production"}},"2.0.7":{"name":"@454creative/easy-events","version":"2.0.7","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.7","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"5ba158e565bab4b328a473b943c5e23f34c611c6","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.7.tgz","fileCount":190,"integrity":"sha512-4AT7fFSp9k2pMTEtO6JBz2bfOLv9BqfkhmiqUdmmmv4kwKonHUv7h8Yx3kSPKqxN9gJvM6YNVjiBcgA9E+kp4w==","signatures":[{"sig":"MEUCIG2Hwkwrxjb5i0imyFsVqJG9HHBsjNnhjXoxPli9fVLnAiEAg0UeFdBWhtQMObPLZnDdOU889NDivPp2YhBuEx1HAHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":749755},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"b376193969f7835f153bd7f84eecfb71414ad4c1","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.7_1756426496434_0.08569248765953752","host":"s3://npm-registry-packages-npm-production"}},"2.0.9":{"name":"@454creative/easy-events","version":"2.0.9","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.9","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"84f3ab0738a704e2a6060b91a582dfd30fbbbf88","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.9.tgz","fileCount":190,"integrity":"sha512-CL6BsF/bms5Zqeyr2f53/+g6izx/6wWaRwNv5xZMl8hFoGIKWLL6BVFK7AOnHYrQQa/HirklRVmeqkydkZUamw==","signatures":[{"sig":"MEQCIHMwDNMK1bLOemzlPGFu/WzsSXJn62WUs8Gmwd8aRxxlAiBsS1Jhjbk1fe6ob1YkYW1AghznQJ0qz9v8h+KK+Gesmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":750716},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"1f2934c45744db70061c33fd1cc2b228a9388548","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.9_1756428731811_0.3970059483725059","host":"s3://npm-registry-packages-npm-production"}},"2.0.10":{"name":"@454creative/easy-events","version":"2.0.10","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.10","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"7281498c9bb588016c7833eb90dec59121f06427","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.10.tgz","fileCount":190,"integrity":"sha512-prSYDSI7gZzQEOVVotoUkvrIGHm5Cteu/EfOmC9++svXG8F1ihuwVw5BkADGq3ws/JooUY6qXNB25eTXkhbXVg==","signatures":[{"sig":"MEQCIBVq5g7QvBGIFmxMKPQCoDlTNr+RtlHhy42wWQXuk1p2AiBv99sRvwx03HEbDvX0BWq8BGc0nzy8JsBqNiwl4WECxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":752117},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"762405003fc375d06ac82b88131e40557ceaf01f","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.10_1756499768734_0.5661881772625714","host":"s3://npm-registry-packages-npm-production"}},"2.0.11":{"name":"@454creative/easy-events","version":"2.0.11","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.11","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"cb0c8b04bc16a35c1fe42b319ea9fed454eb5c85","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.11.tgz","fileCount":198,"integrity":"sha512-gtS5Dqw5gJut9BXslQC84K6Vrx0VsIq4ayHa0Vi/Voiy9Ka0tCP/U9iew4y1NCNsRckoNFBGnVW3eZQx8mTiWg==","signatures":[{"sig":"MEUCIQDre+X5Dr3BGvsPnQrmQCZfwVVLoOpBOpnt1QZul2IVWgIgSwSC+Uu5QpszRFWgYLYPZ2rMaaWRNHm49BaZWX4ENmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":760177},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"7b2ce1f54d5dc88a854d4a85323a6884ac680566","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.11_1756502492020_0.46372981978543915","host":"s3://npm-registry-packages-npm-production"}},"2.0.12":{"name":"@454creative/easy-events","version":"2.0.12","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.12","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"428073da33ad397eb4f663ee897d7dfd8096a9d5","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.12.tgz","fileCount":202,"integrity":"sha512-tpBmu0C2CMfLJYAebBpMdu03BRsbooClqTPEY0uYAldmANIykHGE5IhvsNlbNQ0/2lKMlNtBN6ZKGgqUHOTy2Q==","signatures":[{"sig":"MEYCIQD+jYO89ionGmMJFDo/H5S7sv8ei7TIl9Lp2CwC+km6qgIhAJqcrzofJy2/PZpasTo/Gpsd7nE5WJM09AK7NuVcq/Lb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":774928},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"620f1b71d70a36bbf10c3e07e325a82d4dc728c2","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.12_1756504231341_0.9185239656836435","host":"s3://npm-registry-packages-npm-production"}},"2.0.13":{"name":"@454creative/easy-events","version":"2.0.13","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.13","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"8b3026c24eeffc0952a84749f09106a8757d8967","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.13.tgz","fileCount":202,"integrity":"sha512-0FCoHQ/ego0Cui2JAJ6wr2W0Y/8KbOez0j6mbDBOikUGQIk0cPCkGy9H8GSwtAbed/BfvAWOv3oN+y3AleL2/A==","signatures":[{"sig":"MEUCIANan7RiJ1dzGyh4MsiImjbicTANPNBfzFyBnAxykWoeAiEA+lA7nm29g0jd0MVhEVYBTvUIG+fgJwnB6D9PXdWt12I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778037},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"1040eface85aca6178e00bc621e7160cf6842954","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.13_1756504778928_0.2631521147602671","host":"s3://npm-registry-packages-npm-production"}},"2.0.14":{"name":"@454creative/easy-events","version":"2.0.14","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.14","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"6e7fc01849b7af2d57bcfcc6688f49ba1c6e0a7c","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.14.tgz","fileCount":202,"integrity":"sha512-uJ70sNmryp7yZxKganSGJyFjKOGI8fcjEKwkWv5QZlX/xgy07UwZXHxsWVUAPnpav8SKMDz56dMDH4GTWLrkrA==","signatures":[{"sig":"MEQCIAlyUtWYFLF+TZc9PBEfAWcG4dTPDUl9pIAwZHt0EcwTAiAR0lLDLchBIhWNQ9SqAHxkboHFiIhoJyuHY+sIsUXkSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778037},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"60b2ddb7363cacf266960b09994aecd8f779ef0c","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.14_1756505201643_0.7884525255473138","host":"s3://npm-registry-packages-npm-production"}},"2.0.15":{"name":"@454creative/easy-events","version":"2.0.15","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.15","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"f02538775be23396bd56a56c1c2573824ebf3aa3","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.15.tgz","fileCount":202,"integrity":"sha512-NKtfJ5ilvHdJQnxwjBkFYrrjjYNKzxonUx9NsblotUFhjr97ybFOytb4TAIdGwxlquVrK6V5O/aKWp+P6i15dw==","signatures":[{"sig":"MEUCIQCL5eO/Dc155nWgybyLcrjl6OUgW6sve7fNmiUdkUgM9gIgb9fHlyzTAux7r7Yi+Y4oDUAFscJxssnllxUbHF0omN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778037},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"e580b3ba404dcd9d8d0b5896794517b6cca6adca","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.15_1756506342597_0.5768185059139341","host":"s3://npm-registry-packages-npm-production"}},"2.0.16":{"name":"@454creative/easy-events","version":"2.0.16","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","_id":"@454creative/easy-events@2.0.16","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"homepage":"https://bitbucket.org/454creative/easy-events#readme","bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"dist":{"shasum":"867df2868b7a1279c5725f8d2e14452ee43be30f","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.16.tgz","fileCount":202,"integrity":"sha512-Q8hN2Kx0bYuNzF2Q0ctcrh80csMbb6QinXZLsqX4SAjIU/2dd7Kh0fLsIIhpYuHdOimm7vfryxTlO556GTSNfg==","signatures":[{"sig":"MEYCIQCJcGiCCXqpS0mAsjS7ujX6XH3HlQNz625ABrrMEHMQjwIhAOMOZNV7Vg2ms9yZovCtYPdEPmumjCCq0StdsxpAuow7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778037},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"npm":">=8.0.0","node":">=18.0.0"},"gitHead":"bb694f2b4321407caad8492628811f12a20bd338","scripts":{"dev":"npm run build:watch","docs":"typedoc src/index.ts","lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rimraf dist coverage","format":"prettier --write src/**/*.ts","prepare":"npm run build","test:ci":"jest --ci --coverage --watchAll=false","lint:fix":"eslint src/**/*.ts --fix","test:watch":"jest --watch","build:watch":"tsc --watch","format:check":"prettier --check src/**/*.ts","test:coverage":"jest --coverage","prepublishOnly":"npm run build && npm run test:ci","publish:public":"npm publish --access public"},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"repository":{"url":"git+https://bitbucket.org/454creative/easy-events.git","type":"git"},"_npmVersion":"10.5.2","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","directories":{},"_nodeVersion":"20.13.1","dependencies":{"uuid":"^11.1.0","emmett":"^3.2.0","winston":"^3.17.0","@types/uuid":"^10.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","prettier":"^3.0.0","typescript":"^5.3.3","@types/jest":"^29.5.0","@types/node":"^20.0.0","@nestjs/testing":"^10.4.19","@typescript-eslint/parser":"^8.37.0","@typescript-eslint/eslint-plugin":"^8.37.0"},"peerDependencies":{"@nestjs/core":"^10.0.0","@nestjs/common":"^10.0.0"},"peerDependencyMeta":{"pg":{"optional":true},"redis":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/easy-events_2.0.16_1756507158896_0.706902458330606","host":"s3://npm-registry-packages-npm-production"}},"2.0.17":{"name":"@454creative/easy-events","version":"2.0.17","description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","main":"dist/index.js","types":"dist/index.d.ts","publishConfig":{"registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","build:watch":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:ci":"jest --ci --coverage --watchAll=false","lint":"eslint src/**/*.ts","lint:fix":"eslint src/**/*.ts --fix","format":"prettier --write src/**/*.ts","format:check":"prettier --check src/**/*.ts","prepublishOnly":"npm run build && npm run test:ci","prepare":"npm run build","clean":"rimraf dist coverage","dev":"npm run build:watch","docs":"typedoc src/index.ts","publish:public":"npm publish --access public"},"keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","peerDependencies":{"@nestjs/common":"^10.0.0","@nestjs/core":"^10.0.0"},"peerDependencyMeta":{"redis":{"optional":true},"pg":{"optional":true}},"devDependencies":{"@nestjs/testing":"^10.4.19","@types/jest":"^29.5.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^8.37.0","@typescript-eslint/parser":"^8.37.0","eslint":"^8.0.0","jest":"^29.5.0","prettier":"^3.0.0","rimraf":"^5.0.0","ts-jest":"^29.1.0","typedoc":"^0.28.7","typescript":"^5.3.3"},"repository":{"type":"git","url":"git+https://bitbucket.org/454creative/easy-events.git"},"bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"homepage":"https://bitbucket.org/454creative/easy-events#readme","engines":{"node":">=18.0.0","npm":">=8.0.0"},"dependencies":{"@types/uuid":"^10.0.0","emmett":"^3.2.0","uuid":"^11.1.0","winston":"^3.17.0"},"_id":"@454creative/easy-events@2.0.17","gitHead":"404a76510e94852c74a10741d3558cc2ab5bfb3b","_nodeVersion":"20.13.1","_npmVersion":"10.5.2","dist":{"integrity":"sha512-5DnGVFVntODg3bws1/0t7MRSR9a5z5HLWj8S6TC5CUI2GNGkNqWaBEQ4oPbPxektkDHQfwown9bHILwsiG1cuQ==","shasum":"173b8c4084a517750a2ae2270156d565c731dffd","tarball":"https://registry.npmjs.org/@454creative/easy-events/-/easy-events-2.0.17.tgz","fileCount":202,"unpackedSize":778037,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHgKafm2SUgwvFBpK5zVf5S/v8vS8iZd9pIJVk9hra41AiEA8LNf6p28g9Cz3gmZCoP9BNFBm7swa+/17u+0K5B/bV0="}]},"_npmUser":{"name":"454-creative","email":"technology@454creative.com"},"directories":{},"maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/easy-events_2.0.17_1756509338523_0.4662787234304362"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-21T21:01:24.212Z","modified":"2025-08-29T23:15:38.923Z","1.0.0":"2025-07-21T21:01:24.571Z","1.1.0":"2025-07-21T22:55:48.873Z","1.1.1":"2025-07-21T23:01:08.224Z","1.1.2":"2025-07-21T23:04:19.889Z","1.2.0":"2025-07-22T00:27:42.884Z","1.2.1":"2025-07-22T05:53:18.877Z","1.3.0":"2025-07-25T23:47:06.375Z","2.0.5":"2025-08-28T21:09:31.175Z","2.0.6":"2025-08-29T00:08:49.646Z","2.0.7":"2025-08-29T00:14:56.645Z","2.0.9":"2025-08-29T00:52:12.022Z","2.0.10":"2025-08-29T20:36:08.929Z","2.0.11":"2025-08-29T21:21:32.235Z","2.0.12":"2025-08-29T21:50:31.532Z","2.0.13":"2025-08-29T21:59:39.112Z","2.0.14":"2025-08-29T22:06:41.838Z","2.0.15":"2025-08-29T22:25:42.826Z","2.0.16":"2025-08-29T22:39:19.080Z","2.0.17":"2025-08-29T23:15:38.694Z"},"bugs":{"url":"https://bitbucket.org/454creative/easy-events/issues"},"author":{"name":"Will Chu","email":"wchu@454creative.com"},"license":"MIT","homepage":"https://bitbucket.org/454creative/easy-events#readme","keywords":["454creative","easy-events","events","event-driven","nestjs","typescript","emmett","event-engine","lightweight","observability","monitoring","auditing"],"repository":{"type":"git","url":"git+https://bitbucket.org/454creative/easy-events.git"},"description":"A minimal event engine for Node.js and NestJS, wrapping Emmett for lightweight in-process event handling","maintainers":[{"name":"454-creative","email":"technology@454creative.com"},{"name":"454-marissa","email":"marissa@454creative.com"},{"name":"will_454creative","email":"will@454creative.com"}],"readme":"# @454creative/easy-events\n\nA lightweight, in-process event engine for Node.js and NestJS applications. Built on top of [Emmett](https://github.com/event-driven-io/emmett) with optional observability and storage capabilities.\n\n## 🚀 Quick Start\n\n### Basic Usage (Zero Configuration)\n\n```ts\nimport { Events } from '@454creative/easy-events';\n\n// Emit events\nEvents.emit('user.created', { id: 1, name: 'John' });\n\n// Handle events\nEvents.on('user.created', (payload) => {\n  console.log('User created:', payload);\n});\n\n// Handle events once (auto-removes after execution)\nEvents.once('app.initialized', (payload) => {\n  console.log('App initialized:', payload);\n});\n\n// Remove specific handler\nconst handler = (payload) => console.log(payload);\nEvents.on('user.updated', handler);\nEvents.off('user.updated', handler);\n\n// Check if event has listeners\nif (Events.hasListeners('user.created')) {\n  console.log('User creation is being monitored');\n}\n\n// Get listener count\nconst count = Events.listeners('user.created');\nconsole.log(`${count} handlers listening to user.created`);\n\n// Remove all listeners for an event\nEvents.removeAllListeners('user.created');\n\n// Clear all listeners\nEvents.clear();\n```\n\n### With Observability (Optional)\n\n```ts\nimport { Events, DefaultObservabilityEngine } from '@454creative/easy-events';\n\n// Configure observability\nconst observability = new DefaultObservabilityEngine({\n  enableMetrics: true,\n  enableAuditing: true,\n  logLevel: 'info'\n});\n\nEvents.setObservability(observability);\n\n// Your events now include metrics and audit logs\nEvents.emit('user.created', { id: 1 });\n\n// Get metrics\nconst metrics = observability.getMetrics();\nconsole.log('Total events:', metrics.totalEvents);\n\n// Get audit logs\nconst logs = observability.getAuditLogs();\nconsole.log('Recent events:', logs);\n```\n\n## 📚 Documentation\n\n### Getting Started\n- **[Quick Start Guide](documentation/quick-start-guide.md)** - Complete setup and examples\n- **[API Reference](documentation/api-reference.md)** - Complete method documentation and examples\n- **[Migration Guide 1.x → 2.x](documentation/migration-1x-to-2x.md)** - Breaking changes and migration steps\n- **[Architecture Guide 2.0](documentation/architecture-guide-2.0.md)** - New modular architecture overview\n- **[Observability Guide](documentation/observability-guide.md)** - Metrics, auditing, and monitoring\n- **[Observability Examples](documentation/observability-examples-guide.md)** - Working observability examples\n- **[Logging Examples](documentation/logging-examples-guide.md)** - Custom logging and Winston integration\n\n### Best Practices & Architecture\n- **[Event-Driven Best Practices](documentation/event-driven-best-practices.md)** - Architecture patterns and guidelines\n- **[Cost-Effective Message Brokers](documentation/cost-effective-message-brokers.md)** - Migration from in-process to distributed events\n\n### Publishing & Deployment\n- **[Publishing Guide](documentation/publishing-guide.md)** - How to publish to npm registry\n\n## 🏗️ Architecture Overview\n\nEasy-Events 2.0 features a **modular architecture** with clear separation of concerns:\n\n### Core Components\n\n```ts\n// 1. Core Event Engine (Required)\nimport { Events, EmmettEngine } from '@454creative/easy-events';\n\n// 2. Observability Engine (Optional)\nimport { DefaultObservabilityEngine } from '@454creative/easy-events';\n\n// 3. Storage Engine (Optional)\nimport { MemoryStorageEngine, FileStorageEngine } from '@454creative/events';\n\n// 4. Event Sourcing (Optional - Phase 3)\nimport { EmmettEngine } from '@454creative/easy-events';\n// Event sourcing features are automatically available with storage\n\n// 5. Distributed Events (Optional - Phase 4)\nimport { createDistributedEventEngine } from '@454creative/easy-events';\n```\n\n### Usage Patterns\n\n#### Pattern 1: Simple Event Handling\n```ts\nimport { Events } from '@454creative/easy-events';\n\n// Lightweight, no overhead\nEvents.emit('order.placed', { orderId: '123' });\nEvents.on('order.placed', (order) => {\n  // Process order\n});\n```\n\n#### Pattern 2: With Observability\n```ts\nimport { Events, DefaultObservabilityEngine } from '@454creative/easy-events';\n\nconst observability = new DefaultObservabilityEngine();\nEvents.setObservability(observability);\n\n// Events are automatically tracked\nEvents.emit('payment.processed', { amount: 100 });\n```\n\n#### Pattern 3: With Custom Storage\n```ts\nimport { Events, DefaultObservabilityEngine, FileStorageEngine } from '@454creative/easy-events';\n\nconst storage = new FileStorageEngine({ path: './logs' });\nconst observability = new DefaultObservabilityEngine({ storage });\n\nEvents.setObservability(observability);\n```\n\n#### Pattern 4: NestJS Integration (2.0)\n\n```ts\n// For basic usage (recommended)\nimport { EasyEventsProvider } from '@454creative/easy-events';\n\n@Module({\n  providers: [EasyEventsProvider],\n  exports: [EasyEventsProvider],\n})\nexport class EventsModule {}\n\n// In your service\n@Injectable()\nexport class UserService {\n  constructor(@Inject('EVENTS') private readonly events) {}\n\n  createUser() {\n    this.events.emit('user.created', { id: 1 });\n  }\n}\n```\n\n#### Pattern 5: Event Sourcing (Phase 3)\n\n```ts\nimport { EmmettEngine } from '@454creative/easy-events';\nimport { createStorageEngine } from '@454creative/easy-events';\n\nconst storage = createStorageEngine({ type: 'file', path: './events' });\nconst engine = new EmmettEngine(undefined, storage);\n\n// Events are automatically persisted with full event sourcing\nawait engine.emit('user.created', { userId: '123' });\n\n// Replay events from storage\nconst events = await engine.replayEvents();\n```\n\n#### Pattern 6: Distributed Events (Phase 4)\n\n```ts\nimport { createDistributedEventEngine } from '@454creative/easy-events';\n\nconst engine = createDistributedEventEngine(undefined, {\n  mode: 'hybrid',\n  instanceId: 'app-1',\n  clusterName: 'production-cluster'\n});\n\n// Events can be local or distributed based on routing rules\nawait engine.emitWithRouting('user.created', { userId: '123' }, 'distributed');\n```\n\n📖 **See [NestJS Integration Guide](docs/nestjs-integration-guide.md) for detailed setup and error handling.**\n\n## 📦 Installation\n\n### For Development (Local Path)\n```json\n{\n  \"dependencies\": {\n    \"@454creative/easy-events\": \"file:../path/to/easy-events\"\n  }\n}\n```\n\n### For Production (npm Registry)\n```bash\nnpm install @454creative/easy-events\n```\n\n## 🎯 Key Features\n\n### ✅ Zero Configuration Required\n- Works out of the box with minimal setup\n- Optional observability and storage\n- Lightweight bundle size\n\n### ✅ Flexible Architecture\n- In-process event handling for local development\n- Easy migration to distributed message brokers\n- Custom storage and observability engines\n\n### ✅ Developer Experience\n- TypeScript support\n- Comprehensive examples\n- Clear documentation\n- NestJS integration ready\n\n### ✅ Production Ready\n- Error handling and recovery\n- Performance monitoring\n- Audit logging\n- Custom logging support\n\n### ✅ Complete Event Emitter API\n- Full Node.js EventEmitter compatibility\n- Memory leak prevention with `once()` handlers\n- Comprehensive listener management\n- Debugging and monitoring tools\n\n## 🚀 New in 2.0\n\n### ✅ Event Sourcing (Phase 3)\n- **Event Versioning**: Schema evolution and migration support\n- **Event Snapshots**: Optimized replay with snapshot strategies\n- **Enhanced Replay**: Advanced filtering and transformation\n- **Event Persistence**: Automatic event storage and retrieval\n\n### ✅ Distributed Events (Phase 4)\n- **Hybrid Mode**: Seamless local/distributed event handling\n- **Event Distribution**: Cross-instance event emission\n- **Instance Discovery**: Multiple discovery mechanisms\n- **Conflict Resolution**: Multiple resolution strategies\n- **Cluster Management**: Multi-instance cluster support\n\n### ✅ Modular Architecture\n- **Clean Separation**: Clear module boundaries and dependencies\n- **Optional Dependencies**: Feature flags for external packages\n- **Factory Functions**: Pre-configured engines and presets\n- **Performance Optimized**: Minimal overhead, maximum flexibility\n\n## 🔧 Configuration Options\n\n### Observability Configuration\n```ts\nconst observability = new DefaultObservabilityEngine({\n  enableMetrics: true,           // Track event metrics\n  enableAuditing: true,          // Log all events\n  enableTracing: true,           // Include correlation IDs\n  enablePerformanceMonitoring: true, // Track processing times\n  logLevel: 'info',              // 'debug' | 'info' | 'warn' | 'error'\n  auditRetentionDays: 30,        // How long to keep audit logs\n  metricsRetentionDays: 7,       // How long to keep metrics\n  customAuditLogger: (audit) => {\n    // Custom audit logging\n  }\n});\n```\n\n### Storage Configuration\n```ts\nconst storage = new FileStorageEngine({\n  type: 'file',\n  path: './logs',                // Where to store logs\n  maxLogs: 10000,               // Maximum logs to keep\n  retentionDays: 30             // How long to keep logs\n});\n```\n\n## 📋 Complete API Reference\n\n### Core Event Methods\n\n#### `emit<T>(event: string, payload: T, tracing?: EventTracing): void`\nEmit an event with optional tracing information.\n\n```ts\nEvents.emit('user.created', { id: 1, name: 'John' });\nEvents.emit('payment.processed', { amount: 100 }, { \n  traceId: 'trace-123', \n  userId: 'user-456' \n});\n```\n\n#### `on<T>(event: string, handler: (payload: T) => void): void`\nRegister a handler for an event. Handlers persist until manually removed.\n\n```ts\nEvents.on('user.created', (user) => {\n  console.log('User created:', user);\n});\n```\n\n#### `once<T>(event: string, handler: (payload: T) => void): void`\nRegister a handler that executes only once and automatically removes itself. Perfect for one-time events.\n\n```ts\nEvents.once('app.initialized', (config) => {\n  console.log('App initialized with config:', config);\n});\n\nEvents.once('database.connected', () => {\n  console.log('Database connection established');\n});\n```\n\n#### `off(event?: string, handler?: (payload: any) => void): void`\nRemove event handlers. Supports multiple removal patterns.\n\n```ts\n// Remove specific handler for specific event\nconst handler = (user) => console.log(user);\nEvents.on('user.created', handler);\nEvents.off('user.created', handler);\n\n// Remove all handlers for specific event\nEvents.off('user.created');\n\n// Remove specific handler from all events\nEvents.off(undefined, handler);\n\n// Remove all handlers from all events\nEvents.off();\n```\n\n### Listener Management\n\n#### `listeners(event: string): number`\nGet the number of listeners for a specific event.\n\n```ts\nconst count = Events.listeners('user.created');\nconsole.log(`${count} handlers listening to user.created`);\n```\n\n#### `listenerCount(event: string): number`\nAlias for `listeners(event)` - follows Node.js EventEmitter naming.\n\n```ts\nconst count = Events.listenerCount('user.created');\n```\n\n#### `hasListeners(event: string): boolean`\nCheck if an event has any listeners.\n\n```ts\nif (Events.hasListeners('user.created')) {\n  console.log('User creation is being monitored');\n}\n```\n\n#### `eventNames(): string[]`\nGet an array of all registered event names.\n\n```ts\nconst events = Events.eventNames();\nconsole.log('Active events:', events);\n// Output: ['user.created', 'payment.processed', 'app.initialized']\n```\n\n### Bulk Operations\n\n#### `removeAllListeners(event?: string): void`\nRemove all listeners for a specific event (or all events if no event specified).\n\n```ts\n// Remove all handlers for specific event\nEvents.removeAllListeners('user.created');\n\n// Remove all handlers from all events\nEvents.removeAllListeners();\n```\n\n#### `clear(): void`\nRemove all listeners from all events. Shorter alias for `removeAllListeners()`.\n\n```ts\nEvents.clear(); // Removes all listeners\n```\n\n### Advanced Features\n\n#### `prependListener<T>(event: string, handler: (payload: T) => void): void`\nAdd a listener to the beginning of the listeners array (executes first). Note: Emmett doesn't support true prepend, so this acts like `on()`.\n\n```ts\nEvents.prependListener('user.created', (user) => {\n  console.log('First handler to execute');\n});\n```\n\n#### `rawListeners(event: string): Function[]`\nGet the raw listener functions (including wrapper functions used internally).\n\n```ts\nconst rawListeners = Events.rawListeners('user.created');\nconsole.log('Raw listener functions:', rawListeners);\n```\n\n### Memory Management\n\n#### `setMaxListeners(n: number): void`\nSet maximum number of listeners per event. Warns when exceeded.\n\n```ts\nEvents.setMaxListeners(5); // Allow max 5 listeners per event\n```\n\n#### `getMaxListeners(): number`\nGet the current maximum listeners setting.\n\n```ts\nconst max = Events.getMaxListeners();\nconsole.log(`Max listeners per event: ${max}`);\n```\n\n### Observability Methods\n\n#### `setObservability(observability: ObservabilityEngine): void`\nSet the observability engine for metrics and audit logging.\n\n```ts\nconst observability = new DefaultObservabilityEngine();\nEvents.setObservability(observability);\n```\n\n#### `getObservability(): ObservabilityEngine | undefined`\nGet the current observability engine.\n\n```ts\nconst obs = Events.getObservability();\nif (obs) {\n  const metrics = obs.getMetrics();\n}\n```\n\n## 🚀 Examples\n\n### Run All Examples\n```bash\n# Basic observability\nnpx ts-node examples/basic-observability-example.ts\n\n# Simple observability\nnpx ts-node examples/simple-observability-example.ts\n\n# Full observability\nnpx ts-node examples/observability-example.ts\n\n# Custom logging\nnpx ts-node examples/custom-logging-example.ts\n\n# Winston integration\nnpx ts-node examples/winston-integration-example.ts\n\n# Storage examples\nnpx ts-node examples/storage-example.ts\nnpx ts-node examples/simple-storage-demo.ts\n\n# Email examples\nnpx ts-node examples/nestjs-email-example/src/simple-app.ts\nnpx ts-node examples/nestjs-email-example/src/easy-events-demo.ts\nnpx ts-node examples/nestjs-email-example/src/email-with-observability.ts\n```\n\n## 📊 Observability Features\n\n### Metrics\n- Total events processed\n- Events by type\n- Average processing time\n- Error count\n- Active handlers\n\n### Audit Logging\n- Event ID and type\n- Timestamp and payload\n- Correlation ID\n- User ID and source\n- Processing time\n- Success/error status\n\n### Tracing\n- Correlation IDs for request tracking\n- User context\n- Source identification\n- Performance monitoring\n\n## 🔄 Migration Path\n\n### Development → Production\n1. **Start Simple**: Use in-process events for local development\n2. **Add Observability**: Enable metrics and audit logging\n3. **Add Storage**: Persist logs to file or database\n4. **Scale Up**: Migrate to distributed message brokers (Kafka, Redis, etc.)\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests\n5. Submit a pull request\n\n## 📄 License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## 🆘 Support\n\n- **Documentation**: [docs/](docs/)\n- **Examples**: [examples/](examples/)\n- **Issues**: [Bitbucket Issues](https://bitbucket.org/454creative/easy-events/issues)\n\n---\n\n**Built with ❤️ by [454 Creative](https://454creative.com)** ","readmeFilename":"README.md"}