{"_id":"@alessiofrittoli/event-emitter","_rev":"13-646470ff669e87fd8497d06c4a5e54b0","name":"@alessiofrittoli/event-emitter","dist-tags":{"alpha":"1.5.0-alpha.1","latest":"1.6.0"},"versions":{"0.1.0":{"name":"@alessiofrittoli/event-emitter","version":"0.1.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@0.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"801723bd065fb65eb6f8af814e9c7a354d88aed2","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-0.1.0.tgz","fileCount":7,"integrity":"sha512-7+WxhKTJRFXBgH/bc4PgKw8UuYiFn6Okxrj8ngoJIx//n5E4DsmN6mixQgDXf3ioEm73PqJjdrhwdd42uI0N4Q==","signatures":[{"sig":"MEYCIQDluSycz+HwNhkdyXkOxB3YoFimzaDsjEaEn0/MLef+YAIhAKTHrwFJVabRfA8Fq3Dq0Eky48AmXdYZMQw+hOxQ0GlV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56227},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"d2acccafb2e0a66abce399a52eb53675b2345308","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.5","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_0.1.0_1736014218100_0.9586499773425239","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alessiofrittoli/event-emitter","version":"0.1.1","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@0.1.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"f745c4b854254d349c6d666ae639808049a6c883","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-0.1.1.tgz","fileCount":7,"integrity":"sha512-uZDZga4UU0WO3kDyefOY7zK9sbJuPodmtzcucUFMSLHIQu49cHEiZBS0w3x7NTgu8XOPIhfO6hgjC9a4CpccLQ==","signatures":[{"sig":"MEUCIQDhkYBCHLBWrd43bKiGEZ6Hi+yoG8RFh5yyI0lUEzkauwIgCk7zHNO3xI39CymZAr+sRtiV4YKNxUMPd8cdhSNj4Sg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":56551},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"8506dcef833dd00568512075a83a1a11eb883787","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"20.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.5","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_0.1.1_1736014475235_0.9064238380916798","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alessiofrittoli/event-emitter","version":"0.2.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@0.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"a8ef540c98df25cd2a8cc82d21dd69e81a381f94","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-0.2.0.tgz","fileCount":7,"integrity":"sha512-E+QQsaKPBEckVEsCq1Poj10843o54sLyzUH/OsnbF+XEg+X0OG8QGI+hqpgtjflCPUFX5tyN0Xknh4wFkFFeNw==","signatures":[{"sig":"MEYCIQCel8j2bOLG9QDxQ10YAk05rJ/H+9MN3fLMAPUvIHScQAIhAMZPKBZVfC+HkgBWiGHAhlSgxXdUCaAw0FLylxWWjvCb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76238},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"908e427bbbd30fab5af6cdc1fbb55811007a93e7","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.17.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/jest":"^29.5.14","@types/node":"^22.10.5","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.19.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_0.2.0_1736096717553_0.30680965418530226","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@alessiofrittoli/event-emitter","version":"1.0.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.0.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"a9b03a7f09710a31a1df09a9f1491089e0484d5f","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.0.0.tgz","fileCount":7,"integrity":"sha512-kxoY+XSfJpoy2uw6rXfGWstoZ2y/yulxkRJRNsDWcE8v7+OogX4aFuHrlyIBjbuqclPRiwItDrBT4r38o1XB1Q==","signatures":[{"sig":"MEQCIAHaE7M3Ct1SBVrGyKJdbESlGmevPurqMiwF27RfEUvWAiA0im9W47L/i9jgG+NXOebJKJVtKzZQYozyZgijs7eaLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":76325},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"cda1889d2497df5a2ef2ab53233fb19d0ac4772c","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.0.0_1737211654486_0.8808487958032849","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alessiofrittoli/event-emitter","version":"1.1.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.1.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"ec02c86d9169e015599bde63b351c8d40f91f096","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.1.0.tgz","fileCount":9,"integrity":"sha512-kjVs4Q1/wmTgMUQA02EISf7K42gjYX933d0ShzOlkKs6WTlNJPFNTh82sby2yO6pKOwwcjtKje05aLii4CqKMw==","signatures":[{"sig":"MEUCIHwltHl8DmB8DaKKYGrDXcF3gP2YuE1p0ACus+POPuFmAiEAlCnHJag0o29DI2w6hTfXNM1eT5+zisCU91KI8F7OOME=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144092},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","gitHead":"5a43c35d603c692110095ff36e7d239261f9cdfa","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.3.5","dotenv":"^16.4.7","eslint":"^9.18.0","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","@eslint/js":"^9.18.0","typescript":"^5.7.3","@types/jest":"^29.5.14","@types/node":"^22.10.7","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.20.0","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.1.0_1737401438980_0.6712977108639004","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@alessiofrittoli/event-emitter","version":"1.2.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.2.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"2f2c26f0c8bb5413aadf33c480febd6cad8df95a","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.2.0.tgz","fileCount":9,"integrity":"sha512-ZjcAI3bScWwrkvmKzxq+7bl6VZsi+IZVaqN9Hx8trFIcQNUFznlD5I40XX182t8ml1VlA22ZUCW+qiymjmM1RQ==","signatures":[{"sig":"MEUCIQCRIHdxmuKuTmRAAqHhGM2OBQZWlFd8ZraIEyKRskwWWQIgCeqJY0UUzzqsegv6yBDjy/wDwENp0TLYJxhAvu/QUfE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":144715},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"2a1c580ee94cfb4418c9d6a2e2aee516e4ac5c84","scripts":{"lint":"eslint","test":"pnpm test:watch","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.2.0_1742396956536_0.4880059145964779","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@alessiofrittoli/event-emitter","version":"1.2.1","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.2.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"936ec276115b34c67c59a7c32dba22784e5b53d0","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.2.1.tgz","fileCount":9,"integrity":"sha512-+o6ODtOzombJu8le1lVWtxMOSLr19+XZ8QabKuqi6NidepmUyj2g+kizefGq6Ovmh32ldaxIUyEm8Bhph+zejw==","signatures":[{"sig":"MEYCIQCmB9eAezbsyH7dz9QhOKzVrES8637kj4xmjFMWlQurfAIhAN9MEOxwyppugw6T7tADdsZGXTwwWFAxD0pqLiL2LcnY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146198},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"1a31dd4d1127b7359af1708f6224de870bb37bf2","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","//4a":"*********************************************************************","//4b":"************************ TARGETED UNIT TESTS ************************","//4c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:jest":"pnpm test:watch jest.test.ts","test:jsdom":"JSDOM=true pnpm test:watch","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:ci:jsdom":"JSDOM=true pnpm test:ci","test:coverage":"pnpm test:watch --coverage","test:jest:jsdom":"JSDOM=true pnpm test:jest","test:ci:coverage":"pnpm test:ci --coverage","test:event-emitter":"pnpm test:watch evente-mitter.test.ts","test:coverage:jsdom":"JSDOM=true pnpm test:coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:jsdom:serve":"JSDOM=true pnpm test:coverage:serve"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.10","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.26.1","jest-environment-jsdom":"^29.7.0","@alessiofrittoli/node-scripts":"^2.3.1"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.2.1_1742408065511_0.8370980065894869","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@alessiofrittoli/event-emitter","version":"1.3.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.3.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"7aeaac939cb4530467e50eda60d6298c18b18672","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.3.0.tgz","fileCount":9,"integrity":"sha512-ZjxHWpshGALnbpL9Hy1v9ohb5UxkieevkN+pMSNcaDfeJMn6XhBIodpkcNPs5BcNq2ZJ8014PQZfWADmxaCxZg==","signatures":[{"sig":"MEUCIQCS5TvfvnBr7+HcpyZdba1toh8EPTlD8gD2qtWupxskbQIgQCLFBrM8WE4ifKB9YtOvbNxyCP3pAmgKPBaQ9sV2crQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145496},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"06cc4e216eca263e07ea7bbd25f6cbed3c5c02ed","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"10.9.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.4.7","eslint":"^9.22.0","globals":"^16.0.0","ts-jest":"^29.2.6","ts-node":"^10.9.2","@eslint/js":"^9.22.0","typescript":"^5.8.2","@types/jest":"^29.5.14","@types/node":"^22.13.11","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.27.0","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.3.0_1742558399698_0.7473406811003407","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@alessiofrittoli/event-emitter","version":"1.3.1","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.3.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"6d2ff2b9609b4a89f7e793c0e14ba2e6efacf7f4","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.3.1.tgz","fileCount":9,"integrity":"sha512-Fr/RsCJ0zHssVP2FT9b5LQqBaMlleWDZ25MMVq9wvLnKn5cPthehKsz/Q8lSyNHPwP5I+eNPR/TPv14Xu3G7hQ==","signatures":[{"sig":"MEUCIQDKR1wj4SseyHNnwVc7iHhMmNBYXFATNwrrVFq1mLLObAIgBRbhsg/KT2E0ZPSa96nR+U04JhS7vm6dxmzb/DChQPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145561},"main":"./dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"edd733060ddabd3d6774b49e741bd7aacd944a91","scripts":{"//1a":"*********************************************************************","//1b":"*********************** BUILD - LINT - RELEASE **********************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && tsup","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","test:watch":"jest --watchAll --verbose","build:watch":"tsup --watch","test:coverage":"pnpm test:watch --coverage","test:ci:coverage":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"11.0.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.5.0","eslint":"^9.25.1","globals":"^16.0.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@eslint/js":"^9.25.1","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.3","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.31.1","@alessiofrittoli/node-scripts":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.3.1_1746172705977_0.33879988744928613","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@alessiofrittoli/event-emitter","version":"1.4.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.4.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"f240dbaee9712404ce28cbfb94e528df7e3e0367","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.4.0.tgz","fileCount":7,"integrity":"sha512-dkUsRk6h4k4UAKbPFpXGwB4n/fs+9wVxMCMyf1EU4P1wfqqZXiBmYuuV/GMtTn7qlhIVs+mQHa2jjEN6lHXPbw==","signatures":[{"sig":"MEYCIQCXb/HOxWTGbOVG39f/GZKB9HUzKMPuuEQ5Jc+7ivNgBAIhAM7jV5QKRT+Dj6iXb3MqIc4s29H4J1YFhGvbruVeX7ae","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78388},"main":"./dist/index.js","_from":"file:alessiofrittoli-event-emitter-1.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"_resolved":"/private/var/folders/vw/x6y06sz974x6xd8ft1h5dh1r0000gn/T/57a02e7bcac015b5633a5646b3553acf/alessiofrittoli-event-emitter-1.4.0.tgz","_integrity":"sha512-dkUsRk6h4k4UAKbPFpXGwB4n/fs+9wVxMCMyf1EU4P1wfqqZXiBmYuuV/GMtTn7qlhIVs+mQHa2jjEN6lHXPbw==","repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"11.0.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","tsup":"^8.4.0","dotenv":"^16.5.0","eslint":"^9.25.1","globals":"^16.0.0","ts-jest":"^29.3.2","ts-node":"^10.9.2","@eslint/js":"^9.25.1","typescript":"^5.8.3","@types/jest":"^29.5.14","@types/node":"^22.15.3","http-server":"^14.1.1","concurrently":"^9.1.2","@jest/globals":"^29.7.0","typescript-eslint":"^8.31.1","@alessiofrittoli/node-scripts":"^2.5.0"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.4.0_1746200286935_0.18723154691524457","host":"s3://npm-registry-packages-npm-production"}},"1.5.0-alpha.1":{"name":"@alessiofrittoli/event-emitter","version":"1.5.0-alpha.1","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.5.0-alpha.1","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"851a2e0311f48a3e44745eb6519e3833b0879eb3","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.5.0-alpha.1.tgz","fileCount":7,"integrity":"sha512-YdjJXX0fGixYdXpBFHrTm8k2U74DBb9XvXhfTzL8M/ppMBmWY26pXC1Q2d2DhczbqIDaMrSPm/a84DU3URHE3A==","signatures":[{"sig":"MEQCIAZkFIsvRL3nkas31o0KAX1g91A7T4pqc4NVyhyfWlqlAiBofpMIl/KEnd59/s0BbKJWkhgE1PbisljYqyKH2t9Nxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78443},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"54da7c8c7e0af4a2d9017ae2c6f6a9b8d8053bf9","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","actor":{"name":"alessiofrittoli","type":"user","email":"info@alessiofrittoli.it"},"email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"11.4.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.0.1","eslint":"^9.30.1","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.30.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.10","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.35.1","@alessiofrittoli/node-scripts":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.5.0-alpha.1_1751620238280_0.177969923538571","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@alessiofrittoli/event-emitter","version":"1.5.0","keywords":["events","event-emitter","cross-env-event-emitter"],"author":{"url":"https://alessiofrittoli.it","name":"Alessio Frittoli","email":"info@alessiofrittoli.it"},"license":"MIT","_id":"@alessiofrittoli/event-emitter@1.5.0","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"dist":{"shasum":"4354da6dbdaa475703f2cf94227332009376a329","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.5.0.tgz","fileCount":7,"integrity":"sha512-BZmfvyLc/ip+CgNRwvND9EBWEvCyEqvhf2bQ6xlQkRlNxmkylauJf7SuVYHjOwoo/kttGmaZdCCLmIZSXfEJ0A==","signatures":[{"sig":"MEUCIQC6F9GvRgorJFKpqSIJ42IYt9joo/IE9hNX0/odYxWtlQIgT/9MRuTu/nTDQEzHIlsskwsK8giVlLIDhfQQ3ozNaUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78435},"main":"./dist/index.js","types":"./dist/index.d.ts","module":"./dist/index.mjs","funding":[{"url":"https://github.com/sponsors/alessiofrittoli","type":"github"}],"gitHead":"9c1a431ef1708e9ce9438133133ea11eff3879d2","scripts":{"dev":"NODE_ENV=development tsup --watch","//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","lint":"eslint","test":"jest --verbose","build":"pnpm lint && pnpm test:ci && pnpm build:prod","release":"node scripts/publish.js --verbose --npm","test:ci":"jest --ci --verbose","build:prod":"NODE_ENV=production tsup","test:watch":"jest --watchAll --verbose","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\"","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent"},"_npmUser":{"name":"alessiofrittoli","actor":{"name":"alessiofrittoli","type":"user","email":"info@alessiofrittoli.it"},"email":"info@alessiofrittoli.it"},"repository":{"url":"git+https://github.com/alessiofrittoli/event-emitter.git","type":"git"},"_npmVersion":"11.4.0","description":"Cross-env TypeScript Event Emitter","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.4","tsup":"^8.5.0","dotenv":"^17.0.1","eslint":"^9.30.1","globals":"^16.3.0","ts-jest":"^29.4.0","ts-node":"^10.9.2","@eslint/js":"^9.30.1","typescript":"^5.8.3","@types/jest":"^30.0.0","@types/node":"^24.0.10","http-server":"^14.1.1","concurrently":"^9.2.0","@jest/globals":"^30.0.4","typescript-eslint":"^8.35.1","@alessiofrittoli/node-scripts":"^2.6.0"},"_npmOperationalInternal":{"tmp":"tmp/event-emitter_1.5.0_1751620333154_0.5290843129867955","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@alessiofrittoli/event-emitter","version":"1.6.0","description":"Cross-env TypeScript Event Emitter","author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","funding":[{"type":"github","url":"https://github.com/sponsors/alessiofrittoli"}],"keywords":["events","event-emitter","cross-env-event-emitter"],"homepage":"https://github.com/alessiofrittoli/event-emitter#readme","bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/event-emitter.git"},"main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","sideEffects":false,"scripts":{"//1a":"*********************************************************************","//1b":"******************** DEV - BUILD - LINT - RELEASE *******************","//1c":"*********************************************************************","dev":"cross-env NODE_ENV=development tsup --watch","build:prod":"cross-env NODE_ENV=production tsup","build":"pnpm lint && pnpm test:ci && pnpm build:prod","lint":"eslint","release":"node scripts/release.js --verbose --npm","//2a":"*********************************************************************","//2b":"***************************** UNIT TESTS ****************************","//2c":"*********************************************************************","test":"jest --verbose","test:watch":"jest --watchAll --verbose","test:ci":"jest --ci --verbose","//3a":"*********************************************************************","//3b":"************************ UNIT TESTS COVERAGE ************************","//3c":"*********************************************************************","test:coverage":"pnpm test:watch --coverage","test:coverage:ci":"pnpm test:ci --coverage","test:serve-coverage":"http-server ./coverage/lcov-report --gzip true -p 0 -o --silent","test:coverage:serve":"concurrently --prefix none --kill-others \"pnpm test:coverage\" \"pnpm test:serve-coverage\""},"devDependencies":{"@alessiofrittoli/node-scripts":"^3.2.0","@eslint/js":"^9.39.1","@jest/globals":"^30.2.0","@types/jest":"^30.0.0","@types/node":"^24.10.1","concurrently":"^9.2.1","cross-env":"^10.1.0","dotenv":"^17.2.3","eslint":"^9.39.1","globals":"^16.5.0","http-server":"^14.1.1","jest":"^30.2.0","ts-jest":"^29.4.6","ts-node":"^10.9.2","tsup":"^8.5.1","typescript":"^5.9.3","typescript-eslint":"^8.48.1"},"_id":"@alessiofrittoli/event-emitter@1.6.0","gitHead":"91e955e726da4792d51b864100a11575ed297ef7","_nodeVersion":"22.15.0","_npmVersion":"11.5.2","dist":{"integrity":"sha512-Fu1VZGUbxjZfhwUzoAia0iXQwbjSID17VcsASjXFua1+oxqKAjBofayLZ8BMRGsGwHNeyycax0fSwZd2SI6uzA==","shasum":"72631df3faf8fc07794d2105c6f63eb34a5aaa5b","tarball":"https://registry.npmjs.org/@alessiofrittoli/event-emitter/-/event-emitter-1.6.0.tgz","fileCount":7,"unpackedSize":78481,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDFKZsZ1f4/pf3HoAYaPmx9rbR9/kAYaJRzi3MLRQZz9AIgP2/ljJunD8snwvJFz6LtUgyFM6BiBsvC1sDX+A3IJak="}]},"_npmUser":{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"},"directories":{},"maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/event-emitter_1.6.0_1764782962070_0.5321418307808572"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-04T18:10:18.026Z","modified":"2025-12-03T17:29:22.460Z","0.1.0":"2025-01-04T18:10:18.322Z","0.1.1":"2025-01-04T18:14:35.409Z","0.2.0":"2025-01-05T17:05:17.722Z","1.0.0":"2025-01-18T14:47:34.729Z","1.1.0":"2025-01-20T19:30:39.192Z","1.2.0":"2025-03-19T15:09:16.697Z","1.2.1":"2025-03-19T18:14:25.687Z","1.3.0":"2025-03-21T11:59:59.894Z","1.3.1":"2025-05-02T07:58:26.167Z","1.4.0":"2025-05-02T15:38:07.145Z","1.5.0-alpha.1":"2025-07-04T09:10:38.509Z","1.5.0":"2025-07-04T09:12:13.348Z","1.6.0":"2025-12-03T17:29:22.268Z"},"bugs":{"url":"https://github.com/alessiofrittoli/event-emitter/issues","email":"info@alessiofrittoli.it"},"author":{"name":"Alessio Frittoli","email":"info@alessiofrittoli.it","url":"https://alessiofrittoli.it"},"license":"MIT","homepage":"https://github.com/alessiofrittoli/event-emitter#readme","keywords":["events","event-emitter","cross-env-event-emitter"],"repository":{"type":"git","url":"git+https://github.com/alessiofrittoli/event-emitter.git"},"description":"Cross-env TypeScript Event Emitter","maintainers":[{"name":"alessiofrittoli","email":"info@alessiofrittoli.it"}],"readme":"# Event Emitter 🔊\n\n[![NPM Latest Version][version-badge]][npm-url] [![Coverage Status][coverage-badge]][coverage-url] [![Socket Status][socket-badge]][socket-url] [![NPM Monthly Downloads][downloads-badge]][npm-url] [![Dependencies][deps-badge]][deps-url]\n\n[![GitHub Sponsor][sponsor-badge]][sponsor-url]\n\n[version-badge]: https://img.shields.io/npm/v/%40alessiofrittoli%2Fevent-emitter\n[npm-url]: https://npmjs.org/package/%40alessiofrittoli%2Fevent-emitter\n[coverage-badge]: https://coveralls.io/repos/github/alessiofrittoli/event-emitter/badge.svg\n[coverage-url]: https://coveralls.io/github/alessiofrittoli/event-emitter\n[socket-badge]: https://socket.dev/api/badge/npm/package/@alessiofrittoli/event-emitter\n[socket-url]: https://socket.dev/npm/package/@alessiofrittoli/event-emitter/overview\n[downloads-badge]: https://img.shields.io/npm/dm/%40alessiofrittoli%2Fevent-emitter.svg\n[deps-badge]: https://img.shields.io/librariesio/release/npm/%40alessiofrittoli%2Fevent-emitter\n[deps-url]: https://libraries.io/npm/%40alessiofrittoli%2Fevent-emitter\n\n[sponsor-badge]: https://img.shields.io/static/v1?label=Fund%20this%20package&message=%E2%9D%A4&logo=GitHub&color=%23DB61A2\n[sponsor-url]: https://github.com/sponsors/alessiofrittoli\n\n## Cross-env TypeScript Event Emitter\n\nA cross-environment implementation of an `EventEmitter` that works seamlessly in **Node.js**, **Edge Runtime** (such as Next.js middleware), and **browser** environments.\n\nThe `EventEmitter` class provides a mechanism to handle events and their listeners.\nIt allows you to register event listeners, emit events, and manage the listeners for those events.\n\n### Table of Contents\n\n- [Getting started](#getting-started)\n- [API Reference](#api-reference)\n  - [`EventEmitter` Class](#eventemitter-class)\n    - [Constructor](#constructor)\n    - [Methods](#methods)\n  - [Types](#types)\n  - [Examples](#examples)\n- [Development](#development)\n  - [Install depenendencies](#install-depenendencies)\n  - [Build the source code](#build-the-source-code)\n  - [ESLint](#eslint)\n  - [Jest](#jest)\n- [Contributing](#contributing)\n- [Security](#security)\n- [Credits](#made-with-)\n\n---\n\n### Getting started\n\nRun the following command to start using `event-emitter` in your projects:\n\n```bash\nnpm i @alessiofrittoli/event-emitter\n```\n\nor using `pnpm`\n\n```bash\npnpm i @alessiofrittoli/event-emitter\n```\n\n---\n\n### API Reference\n\n#### `EventEmitter` Class\n\n##### Constructor\n\n```ts\nnew EventEmitter<T>( options?: EventEmitterOptions )\n```\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type | Default | Description |\n|-----------|------|---------|-------------|\n| `options` | `EventEmitterOptions` | - | Optional configuration object for the emitter instance. |\n| `options.captureRejections` | `boolean` | `false` | If set to `true`, captures and handles promise rejections in listeners. |\n\n</details>\n\n---\n\n##### Methods\n\n###### `EventEmitter.emit()`\n\nEmits an event to all registered listeners.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type         | Description                            |\n|-----------|--------------|----------------------------------------|\n| `event`   | `K`          | The event name to emit.                |\n| `args`    | `Args<K, T>` | The arguments passed to the listeners. |\n\n</details>\n\n---\n\n###### `EventEmitter.on()`\n\nAdds a listener for the specified event.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                             |\n|------------|------------------|---------------------------------------------------------|\n| `event`    | `K`              | The event name to listen for.                           |\n| `listener` | `Listener<T, K>` | The listener function called when the event is emitted. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.addListener()`\n\nAlias for `EventEmitter.on( event, listener )`.\n\n---\n\n###### `EventEmitter.prepend()`\n\nAdds a listener to the beginning of the listener array for the specified event.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                             |\n|------------|------------------|---------------------------------------------------------|\n| `event`    | `K`              | The event name to listen for.                           |\n| `listener` | `Listener<T, K>` | The listener function called when the event is emitted. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.prependListener()`\n\nAlias for `EventEmitter.prepend( event, listener )`.\n\n---\n\n###### `EventEmitter.once()`\n\nAdds a one-time listener for the specified event. Even if the event is emitted multiple times, listeners registered with `.once()` method will only get called one single time.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                             |\n|------------|------------------|---------------------------------------------------------|\n| `event`    | `K`              | The event name to listen for.                           |\n| `listener` | `Listener<T, K>` | The listener function called when the event is emitted. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.prependOnce()`\n\nAdds a one-time listener to the beginning of the listener array for the specified event.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                             |\n|------------|------------------|---------------------------------------------------------|\n| `event`    | `K`              | The event name to listen for.                           |\n| `listener` | `Listener<T, K>` | The listener function called when the event is emitted. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.prependOnceListener()`\n\nAlias for `EventEmitter.prependOnce( event, listener )`.\n\n---\n\n###### `EventEmitter.off()`\n\nRemoves a listener for the specified event.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                             |\n|------------|------------------|---------------------------------------------------------|\n| `event`    | `K`              | The event name to remove the listener from.             |\n| `listener` | `Listener<T, K>` | The listener function to remove from the given `event`. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.removeListener()`\n\nAlias for `EventEmitter.off( event, listener )`.\n\n---\n\n###### `EventEmitter.removeAllListeners()`\n\nRemoves all listeners for a specified event or all events.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                             |\n|------------|------------------|---------------------------------------------------------|\n| `event`    | `K`              | (Optional) The event name to remove listeners from.     |\n| `listener` | `Listener<T, K>` | (Optional) The listener function to remove.             |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.getMaxListeners()`\n\nGets the current maximum number of listeners. Default: `EventEmitter.defaultMaxListeners` (10).\n\n<details>\n<summary>Returns</summary>\n\nType `number`\n\nThe current maximum number of listeners.\n\n</details>\n\n---\n\n###### `EventEmitter.setMaxListeners()`\n\nSets the maximum number of listeners allowed for each event.\n\nBy default, a maximum of `10` listeners can be registered for any single event. This limit can be changed for individual `EventEmitter` instances using the `EventEmitter.setMaxListeners( n )` method.\n\nThis is not a hard limit. The `EventEmitter` instance will allow more listeners to be added but will output a trace warning to stderr indicating that a \"possible EventEmitter memory leak\" has been detected.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type     | Description                      |\n|-----------|----------|----------------------------------|\n| `n`       | `number` | The maximum number of listeners. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `EventEmitter`\n\nThe current `EventEmitter` instance so that calls can be chained.\n\n</details>\n\n---\n\n###### `EventEmitter.listenerCount()`\n\nGets the number of listeners for the specified event.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter  | Type             | Description                                              |\n|------------|------------------|----------------------------------------------------------|\n| `event`    | `K`              | The event name to check the listeners for.               |\n| `listener` | `Listener<T, K>` | (Optional) The specific listener to count (if provided). |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `number`\n\nThe number of listeners for the specified event and optionally for the given listener.\n\n</details>\n\n---\n\n###### `EventEmitter.listeners()`\n\nReturns a list of listeners for the specified event.\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type | Description                          |\n|-----------|------|--------------------------------------|\n| `event`   | `K`  | The event name to get listeners for. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `( Listener<T, K> )[]`\n\nAn array of registered listeners. Even if the listener is registered using the `.once()` method, the actual listener is returned instead of the `OnceListenerWrapper<T, K>`.\n\n</details>\n\n---\n\n###### `EventEmitter.rawListeners()`\n\nReturns a copy of the array of listeners for the specified event, including any wrappers (such as those created by `.once()`).\n\n<details>\n<summary>Parameters</summary>\n\n| Parameter | Type | Description                          |\n|-----------|------|--------------------------------------|\n| `event`   | `K`  | The event name to get listeners for. |\n\n</details>\n\n---\n\n<details>\n<summary>Returns</summary>\n\nType: `( Listener<T, K> | OnceListenerWrapper<T, K> )[]`\n\nAn array of registered listener callback.\n\nIf a listener has been registered using the `.once()` method a `OnceListenerWrapper<T, K>` is returned. In that case the original listener can be retrieved through the `listener` property.\n\n</details>\n\n---\n\n###### `EventEmitter.eventNames()`\n\nReturns a list of all event names.\n\n<details>\n<summary>Returns</summary>\n\nType: `( keyof T )[]`\n\nAn array of registered event names.\n\n</details>\n\n---\n\n#### Types\n\n##### `EventEmitterOptions`\n\nOptions for configuring the `EventEmitter`.\n\n<details>\n<summary>Properties</summary>\n\n| Proeprty            | Type      | Description |\n|---------------------|-----------|-------------|\n| `captureRejections` | `boolean` | If set to true, captures and handles promise rejections in listeners. |\n\n</details>\n\n---\n\n##### `Listener<T, K>`\n\nDefines the type of a listener function.\n\n<details>\n<summary>Properties</summary>\n\n| Proeprty | Type         | Description |\n|----------|--------------|-------------|\n| `args`   | `Args<K, T>` | Arguments passed to the listener corresponding to the event key. |\n\n</details>\n\n---\n\n##### `OnceListenerWrapper<T, K>`\n\nA wrapper for listeners that should be invoked only once.\n\n<details>\n<summary>Properties</summary>\n\n| Proeprty   | Type             | Description |\n|------------|------------------|-------------|\n| `args`     | `Args<K, T>`     | Arguments passed to the listener corresponding to the event key. |\n| `listener` | `Listener<T, K>` | The actual listener function to be invoked. |\n\n</details>\n\n---\n\n##### `Args<K, T>`\n\nA utility type that resolves to a specific type based on the provided keys and event map.\n\n---\n\n#### Examples\n\n##### Defining custom types\n\n<details>\n\n<summary>Details</summary>\n\n```ts\nimport type { Listener } from '@alessiofrittoli/event-emitter'\n\n// Define an event map for your EventEmitter\ninterface MyEvents\n{\n  greet     : [ name: string ]  // The 'greet' event takes a string argument\n  farewell  : [ name: Error ]   // The 'farewell' event also takes a string argument\n  error     : [ error: Error ]  // The 'error' event takes an Error argument\n}\n\n// Optionally define listeners types\ntype OnGreetEventListener     = Listener<MyEvents, 'greet'>\ntype OnFarewellEventListener  = Listener<MyEvents, 'farewell'>\ntype OnErrorEventListener     = Listener<MyEvents, 'error'>\n```\n\n</details>\n\n---\n\n##### Emitting and Listening events\n\n<details>\n<summary>Declaring listeners</summary>\n\n```ts\nconst greetListener: OnGreetEventListener = name => {\n  console.log( `Hello, ${ name }!` )\n}\n\n\nconst farewellListener: OnFarewellEventListener = name => {\n  console.log( `Goodbye, ${ name }!` )\n}\n\n\nconst errorListener: OnErrorEventListener = error => {\n  console.error( 'Something went wrong.', error.message )\n}\n```\n\n</details>\n\n---\n\n<details>\n<summary>Registering listeners and emitting events</summary>\n\n```ts\nimport { EventEmitter } from '@alessiofrittoli/event-emitter'\n\nconst emitter = new EventEmitter<MyEvents>()\n\n// Attach listeners\nemitter.on( 'greet', greetListener )\nemitter.on( 'farewell', farewellListener )\nemitter.on( 'error', errorListener )\n\n// Emit events\nemitter.emit( 'greet', 'Foo' )\nemitter.emit( 'farewell', 'Bar' )\nemitter.emit( 'error', new Error( 'An error occured.' ) )\n```\n\n</details>\n\n---\n\n##### One-time events listeners\n\n<details>\n\n<summary>Details</summary>\n\n```ts\nconst emitter = new EventEmitter<MyEvents>()\n\n// Define a listener for the 'greet' event that should only be called once\nconst greetOnceListener: OnGreetEventListener = name => {\n  console.log( `Once Hello, ${ name }!` )\n}\n\nemitter.once( 'greet', greetOnceListener )\n\n// Emit the event\nemitter.emit( 'greet', 'Foo' )\n// `greetOnceListener` won't be called anymore, as the listener was removed after the first call.\nemitter.emit( 'greet', 'Bob' )\n```\n\n</details>\n\n---\n\n##### Error Handling with `captureRejections`\n\n<details>\n\n<summary>Details</summary>\n\n```ts\nconst emitter = new EventEmitter<MyEvents>( { captureRejections: true } )\n\nconst greetListener: OnGreetEventListener = name => {\n  if ( name === 'He-Who-Must-Not-Be-Named' ) {\n    throw new Error( 'nooose!' )\n  }\n  console.log( `Howdy, ${ name }!` )\n}\n\nconst errorListener: OnErrorEventListener = error => {\n  console.error( 'Caught your', error.message )\n}\n\n\n// Add listeners\nemitter.on( 'greet', greetListener )\nemitter.on( 'error', errorListener )\n\n// Emit events\nemitter.emit( 'greet', 'Foo' )\nemitter.emit( 'greet', 'He-Who-Must-Not-Be-Named' )\n```\n\n</details>\n\n---\n\n##### Managing Max Listeners\n\n<details>\n\n<summary>Details</summary>\n\n```ts\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .setMaxListeners( 1 )\n)\n\nconst greetListener1: OnGreetEventListener = name => {\n  console.log( `Hello, ${ name }!` )\n}\n\n\nconst greetListener2: OnGreetEventListener = name => {\n  console.log( `Hi, ${ name }!` )\n}\n\n\nconst greetListener3: OnGreetEventListener = name => {\n  console.log( `Howdy, ${ name }!` )\n}\n\n\n// Attach listeners\nemitter.on( 'greet', greetListener1 )\nemitter.on( 'greet', greetListener2 ) // This will trigger a warning but it will get executed anyway.\nemitter.on( 'greet', greetListener3 ) // This won't trigger a warning. Warnings are emitted once.\n\nemitter.emit( 'greet', 'Foo' )\n// Output: \n// Hello, Foo!\n// Hi, Foo!\n// Howdy, Foo!\n```\n\n</details>\n\n---\n\n##### Using `prepend` and `prependOnce`\n\n<details>\n\n<summary>Details</summary>\n\n```ts\nconst emitter = new EventEmitter<MyEvents>()\n\n// Attach listeners\nemitter.on( 'greet', name => {\n  console.log( `A: Hello! Better late than never ${ name }.` )\n} )\nemitter.prepend( 'greet', name => {\n  console.log( `B: Hello, ${ name }!` )\n} )\nemitter.prependOnce( 'greet', name => {\n  console.log( `C: Once Hello, ${ name }! I won't say hello to you, Bar.` )\n} )\n\n// Emit events\nemitter.emit( 'greet', 'Foo' )\nemitter.emit( 'greet', 'Bar' )\n// Outputs:\n// C: Once Hello, Foo! I won't say hello to you, Bar.\n// B: Hello, Foo!\n// A: Hello! Better late than never Foo.\n// B: Hello, Bar!\n// A: Hello! Better late than never Bar.\n```\n\n</details>\n\n---\n\n##### Retrieve listeners count\n\n<details>\n<summary>Get listeners count for a specific event</summary>\n\n```ts\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', () => {} )\n    .on( 'greet', () => {} )\n    .on( 'farewell', () => {} )\n)\n\nconsole.log( emitter.listenerCount( 'greet' ) )     // Outputs: `2`\nconsole.log( emitter.listenerCount( 'farewell' ) )  // Outputs: `1`\nconsole.log( emitter.listenerCount( 'error' ) )     // Outputs: `0`\n```\n\n</details>\n\n---\n\n<details>\n<summary>Get listeners count for a specific event and listener</summary>\n\n```ts\nconst callback1 = () => {}\nconst callback2 = () => {}\n\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', callback1 )\n    .on( 'greet', callback1 )\n    .on( 'greet', callback2 )\n)\n\nconsole.log( emitter.listenerCount( 'greet', callback1 ) ) // Outputs: `2`\nconsole.log( emitter.listenerCount( 'greet', callback2 ) ) // Outputs: `1`\n```\n\n</details>\n\n---\n\n##### Retrieve registered listeners\n\n<details>\n<summary>Get registerd listeners array</summary>\n\nWe register `callback2` with `EventEmitter.once()` to verify that we correctly get the original `callback2` instead of the `onceWrapper` function in the returning array.\n\n```ts\nconst callback1 = () => {}\nconst callback2 = () => {}\n\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', callback1 )\n    .once( 'greet', callback2 )\n    .on( 'farewell', callback1 )\n)\nconst functions = emitter.listeners( 'greet' ) // Listener<MyEvents, 'greet'>[]\n\nconsole.log( functions )\n// Outputs: `[ [Function: callback1], [Function: callback2] ]`\n\nfunctions.map( listener => {\n  listener() // manually execute the listener.\n} )\n```\n\n</details>\n\n---\n\n<details>\n<summary>Get registerd raw listeners array</summary>\n\nAgain we register `callback2` with `EventEmitter.once()` to verify that we correctly get the `onceWrapper` function instead of the original `callback2` listener in the returning array.\n\n```ts\nconst callback1 = () => {}\nconst callback2 = () => {}\n\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', callback1 )\n    .once( 'greet', callback2 )\n    .on( 'farewell', callback1 )\n)\n\nconst functions = emitter.rawListeners( 'greet' ) // ( Listener<MyEvents, 'greet'> | OnceListenerWrapper<MyEvents, 'greet'> )[]\n\nconsole.log( functions )\n// Outputs: `[ [Function: callback1], [Function: onceWrapper] { listener: [Function: callback2] } ]`\n\nfunctions.map( callback => {\n  /** Manually execute the listener. If this is a `onceWrapper` function, it will remove the listener from the listeners array and then execute the original listener function. */\n  callback()\n\n  /** Or execute the original listener without removing it from the listeners array. */\n  if ( 'listener' in callback ) {\n    callback.listener()\n  }\n} )\n```\n\n</details>\n\n---\n\n##### Batch removing listeners\n\n<details>\n<summary>Remove all attached listeners to every registered event</summary>\n\n```ts\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', () => {} )\n    .once( 'greet', () => {} )\n    .on( 'farewell', () => {} )\n)\n\nconsole.log( emitter.listenerCount( 'greet' ) )     // Outputs: `2`\nconsole.log( emitter.listenerCount( 'farewell' ) )  // Outputs: `1`\nconsole.log( emitter.listenerCount( 'error' ) )     // Outputs: `0`\n\nemitter.removeAllListeners()\n\nconsole.log( emitter.listenerCount( 'greet' ) )     // Outputs: `0`\nconsole.log( emitter.listenerCount( 'farewell' ) )  // Outputs: `0`\nconsole.log( emitter.listenerCount( 'error' ) )     // Outputs: `0`\n```\n\n</details>\n\n---\n\n<details>\n<summary>Remove all attached listeners to a specific event</summary>\n\n```ts\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', () => {} )\n    .once( 'greet', () => {} )\n    .on( 'farewell', () => {} )\n    .removeAllListeners( 'greet' )\n)\n\nconsole.log( emitter.listenerCount( 'greet' ) )     // Outputs: `0`\nconsole.log( emitter.listenerCount( 'farewell' ) )  // Outputs: `1`\nconsole.log( emitter.listenerCount( 'error' ) )     // Outputs: `0`\n```\n\n</details>\n\n---\n\n<details>\n<summary>Remove specifc listeners attached to a specific event</summary>\n\n```ts\nconst callback1 = () => {}\nconst callback2 = () => {}\n\nconst emitter = (\n  new EventEmitter<MyEvents>()\n    .on( 'greet', callback1 )\n    .once( 'greet', callback1 )\n    .once( 'greet', callback2 )\n    .on( 'farewell', callback1 )\n    .removeAllListeners( 'greet', callback1 )\n)\n\nconsole.log( emitter.listenerCount( 'greet' ) )     // Outputs: `1`\nconsole.log( emitter.listenerCount( 'farewell' ) )  // Outputs: `1`\nconsole.log( emitter.listenerCount( 'error' ) )     // Outputs: `0`\n```\n\n</details>\n\n---\n\n### Development\n\n#### Install depenendencies\n\n```bash\nnpm install\n```\n\nor using `pnpm`\n\n```bash\npnpm i\n```\n\n#### Build the source code\n\nRun the following command to test and build code for distribution.\n\n```bash\npnpm build\n```\n\n#### [ESLint](https://www.npmjs.com/package/eslint)\n\nwarnings / errors check.\n\n```bash\npnpm lint\n```\n\n#### [Jest](https://npmjs.com/package/jest)\n\nRun all the defined test suites by running the following:\n\n```bash\n# Run tests and watch file changes.\npnpm test:watch\n\n# Run tests in a CI environment.\npnpm test:ci\n```\n\n- See [`package.json`](./package.json) file scripts for more info.\n\nRun tests with coverage.\n\nAn HTTP server is then started to serve coverage files from `./coverage` folder.\n\n⚠️ You may see a blank page the first time you run this command. Simply refresh the browser to see the updates.\n\n```bash\ntest:coverage:serve\n```\n\n---\n\n### Contributing\n\nContributions are truly welcome!\n\nPlease refer to the [Contributing Doc](./CONTRIBUTING.md) for more information on how to start contributing to this project.\n\nHelp keep this project up to date with [GitHub Sponsor][sponsor-url].\n\n[![GitHub Sponsor][sponsor-badge]][sponsor-url]\n\n---\n\n### Security\n\nIf you believe you have found a security vulnerability, we encourage you to **_responsibly disclose this and NOT open a public issue_**. We will investigate all legitimate reports. Email `security@alessiofrittoli.it` to disclose any security vulnerabilities.\n\n### Made with ☕\n\n<table style='display:flex;gap:20px;'>\n  <tbody>\n    <tr>\n      <td>\n        <img alt=\"avatar\" src='https://avatars.githubusercontent.com/u/35973186' style='width:60px;border-radius:50%;object-fit:contain;'>\n      </td>\n      <td>\n        <table style='display:flex;gap:2px;flex-direction:column;'>\n          <tbody>\n              <tr>\n                <td>\n                  <a href='https://github.com/alessiofrittoli' target='_blank' rel='noopener'>Alessio Frittoli</a>\n                </td>\n              </tr>\n              <tr>\n                <td>\n                  <small>\n                    <a href='https://alessiofrittoli.it' target='_blank' rel='noopener'>https://alessiofrittoli.it</a> |\n                    <a href='mailto:info@alessiofrittoli.it' target='_blank' rel='noopener'>info@alessiofrittoli.it</a>\n                  </small>\n                </td>\n              </tr>\n          </tbody>\n        </table>\n      </td>\n    </tr>\n  </tbody>\n</table>\n","readmeFilename":"README.md"}