{"_id":"emittery","_rev":"4510381","name":"emittery","description":"Simple and modern async event emitter","dist-tags":{"latest":"2.0.0"},"maintainers":[{"name":"sindresorhus","email":""}],"time":{"modified":"2026-04-09T12:23:43.000Z","created":"2017-11-27T21:18:15.608Z","2.0.0":"2026-03-04T20:22:44.524Z","1.2.1":"2026-02-27T05:05:23.605Z","1.2.0":"2025-06-20T19:04:34.675Z","1.1.0":"2025-01-27T13:26:44.769Z","1.0.3":"2024-02-13T16:00:44.787Z","1.0.2":"2024-01-29T07:10:34.467Z","1.0.1":"2022-11-06T14:19:06.345Z","1.0.0":"2022-09-06T06:37:38.498Z","0.13.1":"2022-08-25T09:32:20.391Z","0.13.0":"2022-08-25T03:36:50.364Z","0.12.1":"2022-08-11T12:08:47.757Z","0.12.0":"2022-08-08T12:43:16.503Z","0.11.0":"2022-05-02T02:45:04.089Z","0.10.2":"2022-04-01T19:51:42.416Z","0.10.1":"2022-02-05T03:51:15.134Z","0.10.0":"2021-09-11T16:54:55.142Z","0.9.2":"2021-06-02T13:31:21.356Z","0.9.1":"2021-06-01T16:31:38.336Z","0.9.0":"2021-05-28T16:32:14.734Z","0.8.1":"2021-01-04T03:36:46.226Z","0.8.0":"2020-12-30T06:36:05.820Z","0.7.2":"2020-10-17T00:06:22.486Z","0.7.1":"2020-07-05T13:53:56.828Z","0.7.0":"2020-05-11T14:16:35.566Z","0.6.0":"2020-03-09T08:27:05.774Z","0.5.1":"2019-09-26T17:20:12.779Z","0.5.0":"2019-09-17T14:25:38.742Z","0.4.1":"2018-07-12T16:24:06.729Z","0.4.0":"2018-06-07T13:11:18.841Z","0.3.0":"2018-02-15T16:14:22.395Z","0.2.0":"2017-11-29T19:27:07.743Z","0.1.2":"2017-11-29T09:56:39.280Z","0.1.1":"2017-11-28T18:36:40.282Z","0.1.0":"2017-11-27T21:18:15.608Z"},"users":{"jsumners":true},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"versions":{"2.0.0":{"name":"emittery","version":"2.0.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":{"types":"./index.d.ts","default":"./index.js"},"sideEffects":false,"engines":{"node":">=22"},"scripts":{"test":"xo && ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^25.3.2","ava":"^6.4.1","delay":"^7.0.0","p-event":"^7.1.0","tsd":"^0.33.0","xo":"^1.2.3"},"gitHead":"bad6377cf8cb3fe5fb7983c7b4103b5b8cb86ad2","types":"./index.d.ts","_id":"emittery@2.0.0","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_nodeVersion":"25.6.0","_npmVersion":"11.11.0","dist":{"shasum":"d2a99bfe05cc9104e75f9f3300a1861636fe9cfe","size":15340,"noattachment":false,"key":"/emittery/-/emittery-2.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-2.0.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emittery_2.0.0_1772655764371_0.5346747806201333"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-03-04T20:22:44.524Z","publish_time":1772655764524,"_source_registry_name":"default","_cnpm_publish_time":1772655764524},"1.2.1":{"name":"emittery","version":"1.2.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","sideEffects":false,"engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^6.0.0","tsd":"^0.23.0","xo":"^0.55.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"c401cf0bc62731eb1d1ff2ad4afdcff0fb4f8d1c","_id":"emittery@1.2.1","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_nodeVersion":"25.6.0","_npmVersion":"11.8.0","dist":{"shasum":"393bc9c96028dcc93ff92f9d1c4a999f2b96ff98","size":11240,"noattachment":false,"key":"/emittery/-/emittery-1.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.2.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emittery_1.2.1_1772168723432_0.7209108542239797"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-02-27T05:05:23.605Z","publish_time":1772168723605,"_source_registry_name":"default","_cnpm_publish_time":1772168723605},"1.2.0":{"name":"emittery","version":"1.2.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","sideEffects":false,"engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^6.0.0","tsd":"^0.23.0","xo":"^0.55.0"},"nyc":{"reporter":["html","lcov","text"]},"_id":"emittery@1.2.0","gitHead":"cfde903357ccfa6fb4d7e1888da17aa84dc2c009","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_nodeVersion":"20.19.1","_npmVersion":"10.9.2","dist":{"shasum":"466edb32bada8d9b35f779c3ee8c514ac2df8dc0","size":11301,"noattachment":false,"key":"/emittery/-/emittery-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.2.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com","actor":{"name":"sindresorhus","email":"sindresorhus@gmail.com","type":"user"}},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emittery_1.2.0_1750446274481_0.6701994129365008"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-20T19:04:34.675Z","publish_time":1750446274675,"_source_registry_name":"default","_cnpm_publish_time":1750446274675},"1.1.0":{"name":"emittery","version":"1.1.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","sideEffects":false,"engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^6.0.0","tsd":"^0.23.0","xo":"^0.55.0"},"nyc":{"reporter":["html","lcov","text"]},"_id":"emittery@1.1.0","gitHead":"0b718882c3368b53419cb941eb1c2312fa97d518","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_nodeVersion":"23.3.0","_npmVersion":"10.9.0","dist":{"shasum":"7b5a00ec9a315fa9bfabeba0673920a1bb385f1b","size":11010,"noattachment":false,"key":"/emittery/-/emittery-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.1.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emittery_1.1.0_1737984404590_0.03126005916458374"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-01-27T13:26:44.769Z","publish_time":1737984404769,"_source_registry_name":"default","_cnpm_publish_time":1737984404769},"1.0.3":{"name":"emittery","version":"1.0.3","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","sideEffects":false,"engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^6.0.0","tsd":"^0.23.0","xo":"^0.55.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"69193ca096fdebeb73bc860a2dbd64d8781c4970","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@1.0.3","_nodeVersion":"20.11.0","_npmVersion":"9.2.0","dist":{"shasum":"c9d2a9c689870f15251bb13b31c67715c26d69ac","size":10831,"noattachment":false,"key":"/emittery/-/emittery-1.0.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.0.3.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_1.0.3_1707840044662_0.928636192528582"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-02-13T16:00:44.787Z","publish_time":1707840044787,"_source_registry_name":"default","_cnpm_publish_time":1707840044787},"1.0.2":{"name":"emittery","version":"1.0.2","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","sideEffects":false,"engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^5.0.1","tsd":"^0.23.0","xo":"^0.55.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"253f457c7428e3f848c639d6a2268f8de584a12c","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@1.0.2","_nodeVersion":"20.11.0","_npmVersion":"9.2.0","dist":{"shasum":"5cab3c35bb8d13e8c29219586bf8d8f6ab1dfa42","size":10830,"noattachment":false,"key":"/emittery/-/emittery-1.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.0.2.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_1.0.2_1706512234241_0.6463044039543442"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2024-01-29T07:10:34.467Z","publish_time":1706512234467,"_source_registry_name":"default","_cnpm_publish_time":1706512234467},"1.0.1":{"name":"emittery","version":"1.0.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^5.0.1","tsd":"^0.23.0","xo":"^0.52.3"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"f0b3c2bf8dc985a7dde0e39607e30950394be54b","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@1.0.1","_nodeVersion":"14.19.3","_npmVersion":"8.3.2","dist":{"shasum":"e0cf36e2d7eef94dbd025969f642d57ae50a56cd","size":10773,"noattachment":false,"key":"/emittery/-/emittery-1.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.0.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_1.0.1_1667744346199_0.20264845925757857"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-11-06T14:19:11.492Z","publish_time":1667744346345,"_cnpm_publish_time":1667744346345},"1.0.0":{"name":"emittery","version":"1.0.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"type":"module","exports":"./index.js","types":"./index.d.ts","engines":{"node":">=14.16"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^18.7.15","ava":"^4.3.3","delay":"^5.0.0","nyc":"^15.1.0","p-event":"^5.0.1","tsd":"^0.23.0","xo":"^0.52.3"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"dc6878c42c4889b86ea148179cb09dadd14958dd","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@1.0.0","_nodeVersion":"14.19.3","_npmVersion":"8.3.2","dist":{"shasum":"7321364e493c8623088bb22483f2a035fd6c2673","size":10654,"noattachment":false,"key":"/emittery/-/emittery-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-1.0.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_1.0.0_1662446258321_0.5897195240463708"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-09-06T06:54:25.944Z","publish_time":1662446258498,"_cnpm_publish_time":1662446258498},"0.13.1":{"name":"emittery","version":"0.13.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"5d814d924c5093389e1f947e6674d4e91a76a75a","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.13.1","_nodeVersion":"14.19.3","_npmVersion":"8.3.2","dist":{"shasum":"c04b8c3457490e0847ae51fced3af52d338e3dad","size":10655,"noattachment":false,"key":"/emittery/-/emittery-0.13.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.13.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.13.1_1661419940240_0.9269759504917212"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-25T10:12:08.256Z","publish_time":1661419940391,"_cnpm_publish_time":1661419940391},"0.13.0":{"name":"emittery","version":"0.13.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"c402f6cfcee3b79ba929364063aeb9fcda9e8814","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.13.0","_nodeVersion":"14.19.3","_npmVersion":"8.3.2","dist":{"shasum":"809da9404edcae3f3971607024ca4d960ccb03a7","size":10580,"noattachment":false,"key":"/emittery/-/emittery-0.13.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.13.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.13.0_1661398610167_0.2524850230860489"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-25T03:57:45.311Z","publish_time":1661398610364,"_cnpm_publish_time":1661398610364},"0.12.1":{"name":"emittery","version":"0.12.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"ca9ed93904970ff8b8ca1d3aaf441b663ab83441","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.12.1","_nodeVersion":"16.15.0","_npmVersion":"8.3.2","dist":{"shasum":"cb9a4a18745816f7a1fa03a8953e7eaededb45f2","size":10432,"noattachment":false,"key":"/emittery/-/emittery-0.12.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.12.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.12.1_1660219727480_0.7593125526879376"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-11T12:10:05.865Z","publish_time":1660219727757,"_cnpm_publish_time":1660219727757},"0.12.0":{"name":"emittery","version":"0.12.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"fb190e1229da64e2f1eb7fd3808c0aafbd58ebeb","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.12.0","_nodeVersion":"18.7.0","_npmVersion":"8.3.2","dist":{"shasum":"023e186c2634be64e986f37a51beb482a21e434d","size":10447,"noattachment":false,"key":"/emittery/-/emittery-0.12.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.12.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.12.0_1659962596209_0.05639232198263522"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-08-08T13:37:49.716Z","publish_time":1659962596503,"_cnpm_publish_time":1659962596503},"0.11.0":{"name":"emittery","version":"0.11.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"f61b87dbf7e0ca372b8a1972fd5d42a2a1f9bfe0","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.11.0","_nodeVersion":"14.19.1","_npmVersion":"8.3.2","dist":{"shasum":"eb5f756a200d3431de2c6e850cb2d8afd97a03b9","size":10321,"noattachment":false,"key":"/emittery/-/emittery-0.11.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.11.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.11.0_1651459503873_0.9379837132017104"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-05-02T02:45:07.348Z","publish_time":1651459504089,"_cnpm_publish_time":1651459504089},"0.10.2":{"name":"emittery","version":"0.10.2","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"3cf4a0a2c9344d0ab0d1f1f23957e3bbde98f617","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.10.2","_nodeVersion":"17.8.0","_npmVersion":"8.3.2","dist":{"shasum":"902eec8aedb8c41938c46e9385e9db7e03182933","size":10259,"noattachment":false,"key":"/emittery/-/emittery-0.10.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.10.2.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.10.2_1648842702200_0.6731599253912686"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-04-01T19:51:47.604Z","publish_time":1648842702416,"_cnpm_publish_time":1648842702416},"0.10.1":{"name":"emittery","version":"0.10.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.19.1","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"types":"./index.d.ts","gitHead":"837a94d69de7571857f90fd2a676fef2eff967fe","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.10.1","_nodeVersion":"12.22.1","_npmVersion":"8.3.2","dist":{"shasum":"3d01ab87e2b6542681f8fd6cbd6597a66daa1869","size":10149,"noattachment":false,"key":"/emittery/-/emittery-0.10.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.10.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.10.1_1644033074993_0.9696814202244541"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-02-05T03:51:22.801Z","publish_time":1644033075134,"_cnpm_publish_time":1644033075134},"0.10.0":{"name":"emittery","version":"0.10.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.16.0","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"de3d78d67f9e099beff6384d1a59213c801562b6","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.10.0","_nodeVersion":"14.17.5","_npmVersion":"7.20.3","dist":{"shasum":"bb373c660a9d421bb44706ec4967ed50c02a8026","size":10140,"noattachment":false,"key":"/emittery/-/emittery-0.10.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.10.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.10.0_1631379294989_0.14373970805273073"},"_hasShrinkwrap":false,"publish_time":1631379295142,"_cnpm_publish_time":1631379295142},"0.9.2":{"name":"emittery","version":"0.9.2","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.16.0","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"175ec7ba544a46d3b13e79fcc623642ff3686897","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.9.2","_nodeVersion":"12.22.1","_npmVersion":"7.10.0","dist":{"shasum":"0a57c40773c6da380115c85bd67d381dd9e22f6f","size":10136,"noattachment":false,"key":"/emittery/-/emittery-0.9.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.9.2.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.9.2_1622640681212_0.9076657550321403"},"_hasShrinkwrap":false,"publish_time":1622640681356,"_cnpm_publish_time":1622640681356},"0.9.1":{"name":"emittery","version":"0.9.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.16.0","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"04b9daa8270b2150c0dc3412de7c8bc0308bce2d","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.9.1","_nodeVersion":"16.0.0","_npmVersion":"7.10.0","dist":{"shasum":"750d14e2741690062afe71c39dc84488bb4e0b9d","size":10115,"noattachment":false,"key":"/emittery/-/emittery-0.9.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.9.1.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.9.1_1622565098225_0.03046211460221704"},"_hasShrinkwrap":false,"publish_time":1622565098336,"_cnpm_publish_time":1622565098336},"0.9.0":{"name":"emittery","version":"0.9.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=12"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^15.6.1","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.16.0","xo":"^0.39.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"02b18ef0fdac61ddc79cdc7c4f3d2357e0908a57","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.9.0","_nodeVersion":"12.22.1","_npmVersion":"7.10.0","dist":{"shasum":"32b76a690f4c9fcd14dd8be1123b45fc7500cf7e","size":10102,"noattachment":false,"key":"/emittery/-/emittery-0.9.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.9.0.tgz"},"_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.9.0_1622219534569_0.7808372068906948"},"_hasShrinkwrap":false,"publish_time":1622219534734,"_cnpm_publish_time":1622219534734},"0.8.1":{"name":"emittery","version":"0.8.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=10"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^13.7.5","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.14.0","xo":"^0.36.1"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"c120cfd596c13eaac229835d1b9ca19ccb977c85","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.8.1","_nodeVersion":"15.5.0","_npmVersion":"6.14.10","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"bb23cc86d03b30aa75a7f734819dee2e1ba70860","size":8588,"noattachment":false,"key":"/emittery/-/emittery-0.8.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.8.1.tgz"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.8.1_1609731406082_0.7548288510563024"},"_hasShrinkwrap":false,"publish_time":1609731406226,"_cnpm_publish_time":1609731406226},"0.8.0":{"name":"emittery","version":"0.8.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=10"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^13.7.5","ava":"^2.4.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.14.0","xo":"^0.36.1"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"cefdb663ac079dfaa2e90733f749ea15860b2b2e","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.8.0","_nodeVersion":"15.5.0","_npmVersion":"6.14.10","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"28e3f2f450bebb969df42b00fd3d6b3de6087905","size":8543,"noattachment":false,"key":"/emittery/-/emittery-0.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.8.0.tgz"},"directories":{},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.8.0_1609310165685_0.15525182836747575"},"_hasShrinkwrap":false,"publish_time":1609310165820,"_cnpm_publish_time":1609310165820},"0.7.2":{"name":"emittery","version":"0.7.2","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=10"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^13.7.5","ava":"^2.4.0","codecov":"^3.1.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.11.0","xo":"^0.25.4"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"b771d536acd89986fda21fd64d0d90dcb2de80c9","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.7.2","_nodeVersion":"14.11.0","_npmVersion":"6.14.8","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"25595908e13af0f5674ab419396e2fb394cdfa82","size":8188,"noattachment":false,"key":"/emittery/-/emittery-0.7.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.7.2.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.7.2_1602893182339_0.3802915258306516"},"_hasShrinkwrap":false,"publish_time":1602893182486,"_cnpm_publish_time":1602893182486},"0.7.1":{"name":"emittery","version":"0.7.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=10"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^13.7.5","ava":"^2.4.0","codecov":"^3.1.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.11.0","xo":"^0.25.4"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"1afed6ab1f8b22a6fa36448a23ea3b829431b5f9","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.7.1","_nodeVersion":"14.5.0","_npmVersion":"6.14.5","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"c02375a927a40948c0345cc903072597f5270451","size":8185,"noattachment":false,"key":"/emittery/-/emittery-0.7.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.7.1.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.7.1_1593957236695_0.024101371620112833"},"_hasShrinkwrap":false,"publish_time":1593957236828,"_cnpm_publish_time":1593957236828},"0.7.0":{"name":"emittery","version":"0.7.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=10"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^13.7.5","ava":"^2.4.0","codecov":"^3.1.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.11.0","xo":"^0.25.4"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"e8206618e30d961b9cb98533486a17d9a7fa0c2c","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.7.0","_nodeVersion":"10.20.1","_npmVersion":"6.14.5","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"0f0789ea90e03f3de7865feb806e4f0916d16c93","size":8184,"noattachment":false,"key":"/emittery/-/emittery-0.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.7.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.7.0_1589206595442_0.5836524014914579"},"_hasShrinkwrap":false,"publish_time":1589206595566,"_cnpm_publish_time":1589206595566},"0.6.0":{"name":"emittery","version":"0.6.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"funding":"https://github.com/sindresorhus/emittery?sponsor=1","author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"https://sindresorhus.com"},"engines":{"node":">=10"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^13.7.5","ava":"^2.4.0","codecov":"^3.1.0","delay":"^4.3.0","nyc":"^15.0.0","p-event":"^4.1.0","tsd":"^0.11.0","xo":"^0.25.4"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"540339bcb3350ddb3f442a2930bc9c4c302367a9","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.6.0","_nodeVersion":"10.18.1","_npmVersion":"6.14.2","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"e85312468d77c3ed9a6adf43bb57d34849e0c95a","size":7713,"noattachment":false,"key":"/emittery/-/emittery-0.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.6.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.6.0_1583742425647_0.9569512157636983"},"_hasShrinkwrap":false,"publish_time":1583742425774,"_cnpm_publish_time":1583742425774},"0.5.1":{"name":"emittery","version":"0.5.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=8"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^12.7.5","ava":"^2.4.0","codecov":"^3.1.0","delay":"^4.3.0","nyc":"^14.1.1","tsd":"^0.7.4","xo":"^0.24.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"3334cff4daf83bfcf7054d35edc51957e3f70f8d","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.5.1","_nodeVersion":"8.16.1","_npmVersion":"6.11.3","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"9fbbf57e9aecc258d727d78858a598eb05ea5c96","size":6850,"noattachment":false,"key":"/emittery/-/emittery-0.5.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.5.1.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.5.1_1569518412612_0.9865897044311112"},"_hasShrinkwrap":false,"publish_time":1569518412779,"_cnpm_publish_time":1569518412779},"0.5.0":{"name":"emittery","version":"0.5.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=8"},"scripts":{"test":"xo && nyc ava && tsd"},"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise","typescript","ts","typed"],"devDependencies":{"@types/node":"^12.7.5","ava":"^2.4.0","codecov":"^3.1.0","delay":"^4.3.0","nyc":"^14.1.1","tsd":"^0.7.4","xo":"^0.24.0"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"ca130470d4fa827bd783cfe3c9fea2e2e1f48c8e","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.5.0","_nodeVersion":"12.10.0","_npmVersion":"6.11.3","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"d38c565bcb2eb5b0bc00c3a595227607b6d3857d","size":6714,"noattachment":false,"key":"/emittery/-/emittery-0.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.5.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.5.0_1568730338647_0.24966302857897316"},"_hasShrinkwrap":false,"publish_time":1568730338742,"_cnpm_publish_time":1568730338742},"0.4.1":{"name":"emittery","version":"0.4.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=6"},"scripts":{"build":"babel --out-file=legacy.js index.js","build:watch":"npm run build -- --watch","prepare":"npm run build","test":"xo && tsc --noEmit && nyc ava"},"files":["Emittery.d.ts","index.js","legacy.js","legacy.d.ts"],"typings":"./Emittery.d.ts","keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"@types/node":"^10.1.2","ava":"*","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-plugin-transform-async-to-generator":"^6.24.1","codecov":"^3.0.0","delay":"^3.0.0","glob":"^7.1.2","nyc":"^12.0.2","ts-node":"^6.0.3","typescript":"^2.9.0","xo":"*"},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"a5d38ece06272aeecd83107e4ff6819c7fe5993f","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.4.1","_npmVersion":"6.1.0","_nodeVersion":"10.6.0","_npmUser":{"name":"novemberborn","email":"mark@novemberborn.net"},"dist":{"shasum":"abe9d3297389ba424ac87e53d1c701962ce7433d","size":5631,"noattachment":false,"key":"/emittery/-/emittery-0.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.4.1.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.4.1_1531412646641_0.4531685657065383"},"_hasShrinkwrap":false,"publish_time":1531412646729,"_cnpm_publish_time":1531412646729},"0.4.0":{"name":"emittery","version":"0.4.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=6"},"scripts":{"build":"babel --out-file=legacy.js index.js","build:watch":"npm run build -- --watch","prepare":"npm run build","test":"xo && tsc --noEmit && nyc ava"},"files":["Emittery.d.ts","index.js","legacy.js","legacy.d.ts"],"typings":"./Emittery.d.ts","keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"@types/node":"^10.1.2","ava":"*","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-plugin-transform-async-to-generator":"^6.24.1","codecov":"^3.0.0","delay":"^3.0.0","glob":"^7.1.2","nyc":"^12.0.2","ts-node":"^6.0.3","typescript":"^2.9.0","xo":"*"},"babel":{"plugins":["transform-async-to-generator"]},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"5e5156a08efd87fd3de5ae427770905018e1b1fb","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.4.0","_npmVersion":"6.1.0","_nodeVersion":"8.11.2","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"b5d194e28f89f494aaad7b308d143e52ac9d0b43","size":5641,"noattachment":false,"key":"/emittery/-/emittery-0.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.4.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.4.0_1528377077719_0.6522371971868492"},"_hasShrinkwrap":false,"publish_time":1528377078841,"_cnpm_publish_time":1528377078841},"0.3.0":{"name":"emittery","version":"0.3.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=4"},"scripts":{"build":"babel --out-file=legacy.js index.js","build:watch":"npm run build -- --watch","prepare":"npm run build","test":"xo && tsc --noEmit && nyc ava"},"files":["Emittery.d.ts","index.js","legacy.js","legacy.d.ts"],"typings":"./Emittery.d.ts","keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"@types/node":"^8.5.2","ava":"*","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-plugin-transform-async-to-generator":"^6.24.1","babel-plugin-transform-es2015-spread":"^6.22.0","codecov":"^3.0.0","delay":"^2.0.0","glob":"^7.1.2","nyc":"^11.3.0","ts-node":"^4.1.0","typescript":"^2.7.0","xo":"*"},"babel":{"plugins":["transform-async-to-generator","transform-es2015-spread"]},"nyc":{"reporter":["html","lcov","text"]},"gitHead":"7b8eb95060e4a95c7d3578f914ca34f4a4891c13","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.3.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"novemberborn","email":"mark@novemberborn.net"},"dist":{"shasum":"e6dcedabae804b5478c760335ecbbaf159da645c","size":5805,"noattachment":false,"key":"/emittery/-/emittery-0.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.3.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery_0.3.0_1518711261599_0.23412399689669905"},"_hasShrinkwrap":false,"publish_time":1518711262395,"_cnpm_publish_time":1518711262395},"0.2.0":{"name":"emittery","version":"0.2.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=4"},"scripts":{"build":"babel --out-file=legacy.js index.js","prepack":"npm install && npm run build","test":"xo && ava"},"files":["index.js","legacy.js"],"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"ava":"*","babel-cli":"^6.26.0","babel-core":"^6.26.0","babel-plugin-transform-async-to-generator":"^6.24.1","babel-plugin-transform-es2015-spread":"^6.22.0","delay":"^2.0.0","xo":"*"},"babel":{"plugins":["transform-async-to-generator","transform-es2015-spread"]},"gitHead":"26d3c76014c4250a99499efd624a6b88419e4789","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.2.0","_shasum":"1dc7a7ef2d0beb38623bafb5eb654a38dcc6df9b","_from":".","_npmVersion":"2.15.11","_nodeVersion":"4.8.4","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"1dc7a7ef2d0beb38623bafb5eb654a38dcc6df9b","size":4115,"noattachment":false,"key":"/emittery/-/emittery-0.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.2.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery-0.2.0.tgz_1511983626817_0.2340813591144979"},"directories":{},"publish_time":1511983627743,"_hasShrinkwrap":false,"_cnpm_publish_time":1511983627743},"0.1.2":{"name":"emittery","version":"0.1.2","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=8"},"scripts":{"test":"xo && ava"},"files":["index.js"],"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"ava":"*","delay":"^2.0.0","xo":"*"},"gitHead":"548d9a5043244c9c9497dc093a7a6aa8088c3bb9","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.1.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"d272967368f7cad542a5357cd8d49128669c53e9","size":3393,"noattachment":false,"key":"/emittery/-/emittery-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.1.2.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery-0.1.2.tgz_1511949398376_0.6574320155195892"},"directories":{},"publish_time":1511949399280,"_hasShrinkwrap":false,"_cnpm_publish_time":1511949399280},"0.1.1":{"name":"emittery","version":"0.1.1","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=8"},"scripts":{"test":"xo && ava"},"files":["index.js"],"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"ava":"*","delay":"^2.0.0","xo":"*"},"gitHead":"6248f777e01367dce1e8628ec2719ed5fd7c48cf","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.1.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"26ac3c9e0c2de0977e6bf6de3c98b45cec404e08","size":3391,"noattachment":false,"key":"/emittery/-/emittery-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.1.1.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery-0.1.1.tgz_1511894200117_0.7775801541283727"},"directories":{},"publish_time":1511894200282,"_cnpm_publish_time":1511894200282,"_hasShrinkwrap":false},"0.1.0":{"name":"emittery","version":"0.1.0","description":"Simple and modern async event emitter","license":"MIT","repository":{"type":"git","url":"git+https://github.com/sindresorhus/emittery.git"},"author":{"name":"Sindre Sorhus","email":"sindresorhus@gmail.com","url":"sindresorhus.com"},"engines":{"node":">=8"},"scripts":{"test":"xo && ava"},"files":["index.js"],"keywords":["event","emitter","eventemitter","events","async","emit","on","once","off","listener","subscribe","unsubscribe","pubsub","tiny","addlistener","addeventlistener","dispatch","dispatcher","observer","trigger","await","promise"],"devDependencies":{"ava":"*","delay":"^2.0.0","xo":"*"},"gitHead":"1be929d47f6226ac513476061bc867957ce15930","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"homepage":"https://github.com/sindresorhus/emittery#readme","_id":"emittery@0.1.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.0","_npmUser":{"name":"sindresorhus","email":"sindresorhus@gmail.com"},"dist":{"shasum":"56168835bd4f19404a211e48e27f1dd1d812612c","size":3314,"noattachment":false,"key":"/emittery/-/emittery-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/emittery/download/emittery-0.1.0.tgz"},"maintainers":[{"name":"sindresorhus","email":""}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/emittery-0.1.0.tgz_1511817492647_0.355037200730294"},"directories":{},"publish_time":1511817495608,"_hasShrinkwrap":false,"_cnpm_publish_time":1511817495608}},"readme":"# <img src=\"media/header.png\" width=\"1000\">\n\n> Simple and modern async event emitter\n\n<!-- [![Coverage Status](https://codecov.io/gh/sindresorhus/emittery/branch/main/graph/badge.svg)](https://codecov.io/gh/sindresorhus/emittery) -->\n[![](https://badgen.net/bundlephobia/minzip/emittery)](https://bundlephobia.com/result?p=emittery)\n\nIt works in Node.js and the browser (using a bundler).\n\n**Highlights**\n\n- Async-first — listeners are deferred to the next microtask, keeping your code non-blocking\n- TypeScript support with strongly typed events\n- Async iteration and `for await...of` support\n- [Lifecycle hooks](#initeventname-initfn) (`init`/`deinit`) for lazy resource setup and teardown\n- [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) support for cancellation\n- [`Symbol.dispose`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/dispose) / [`Symbol.asyncDispose`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/asyncDispose) support for automatic cleanup\n- [Meta events](#custom-subscribable-events) for observing listener changes\n- [Debug mode](#debugging) with customizable logging\n- Zero dependencies\n\nEmitting events asynchronously is important for production code where you want the least amount of synchronous operations. Since JavaScript is single-threaded, no other code can run while doing synchronous operations. For Node.js, that means it will block other requests, defeating the strength of the platform, which is scalability through async. In the browser, a synchronous operation could potentially cause lags and block user interaction.\n\n## Install\n\n```sh\nnpm install emittery\n```\n\n## Usage\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.on('????', ({data}) => {\n\tconsole.log(data);\n});\n\nconst myUnicorn = Symbol('????');\n\nemitter.on(myUnicorn, ({data}) => {\n\tconsole.log(`Unicorns love ${data}`);\n});\n\nemitter.emit('????', '????'); // Will trigger printing '????'\nemitter.emit(myUnicorn, '????');  // Will trigger printing 'Unicorns love ????'\n```\n\n## API\n\n### eventName\n\nEmittery accepts strings, symbols, and numbers as event names.\n\nSymbol event names are preferred given that they can be used to avoid name collisions when your classes are extended, especially for internal events.\n\n### isDebugEnabled\n\nToggle debug mode for all instances.\n\nDefault: `true` if the `DEBUG` environment variable is set to `emittery` or `*`, otherwise `false`.\n\nExample:\n\n```js\nimport Emittery from 'emittery';\n\nEmittery.isDebugEnabled = true;\n\nconst emitter1 = new Emittery({debug: {name: 'myEmitter1'}});\nconst emitter2 = new Emittery({debug: {name: 'myEmitter2'}});\n\nemitter1.on('test', () => {\n\t// …\n});\n\nemitter2.on('otherTest', () => {\n\t// …\n});\n\nemitter1.emit('test');\n//=> [16:43:20.417][emittery:subscribe][myEmitter1] Event Name: test\n//\tdata: undefined\n\nemitter2.emit('otherTest');\n//=> [16:43:20.417][emittery:subscribe][myEmitter2] Event Name: otherTest\n//\tdata: undefined\n```\n\n### emitter = new Emittery(options?)\n\nCreate a new instance of Emittery.\n\n#### options?\n\nType: `object`\n\nConfigure the new instance of Emittery.\n\n##### debug?\n\nType: `object`\n\nConfigure the debugging options for this instance.\n\n###### name\n\nType: `string`\\\nDefault: `undefined`\n\nDefine a name for the instance of Emittery to use when outputting debug data.\n\nExample:\n\n```js\nimport Emittery from 'emittery';\n\nEmittery.isDebugEnabled = true;\n\nconst emitter = new Emittery({debug: {name: 'myEmitter'}});\n\nemitter.on('test', () => {\n\t// …\n});\n\nemitter.emit('test');\n//=> [16:43:20.417][emittery:subscribe][myEmitter] Event Name: test\n//\tdata: undefined\n```\n\n###### enabled?\n\nType: `boolean`\\\nDefault: `false`\n\nToggle debug logging just for this instance.\n\nExample:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter1 = new Emittery({debug: {name: 'emitter1', enabled: true}});\nconst emitter2 = new Emittery({debug: {name: 'emitter2'}});\n\nemitter1.on('test', () => {\n\t// …\n});\n\nemitter2.on('test', () => {\n\t// …\n});\n\nemitter1.emit('test');\n//=> [16:43:20.417][emittery:subscribe][emitter1] Event Name: test\n//\tdata: undefined\n\nemitter2.emit('test');\n```\n\n###### logger?\n\nType: `Function(string, string, EventName?, Record<string, any>?) => void`\n\nDefault:\n\n```js\n(type, debugName, eventName, eventData) => {\n\ttry {\n\t\teventData = JSON.stringify(eventData);\n\t} catch {\n\t\teventData = `Object with the following keys failed to stringify: ${Object.keys(eventData).join(',')}`;\n\t}\n\n\tif (typeof eventName === 'symbol' || typeof eventName === 'number') {\n\t\teventName = eventName.toString();\n\t}\n\n\tconst currentTime = new Date();\n\tconst logTime = `${currentTime.getHours()}:${currentTime.getMinutes()}:${currentTime.getSeconds()}.${currentTime.getMilliseconds()}`;\n\tconsole.log(`[${logTime}][emittery:${type}][${debugName}] Event Name: ${eventName}\\n\\tdata: ${eventData}`);\n}\n```\n\nFunction that handles debug data.\n\nExample:\n\n```js\nimport Emittery from 'emittery';\n\nconst myLogger = (type, debugName, eventName, eventData) => {\n\tconsole.log(`[${type}]: ${eventName}`);\n};\n\nconst emitter = new Emittery({\n\tdebug: {\n\t\tname: 'myEmitter',\n\t\tenabled: true,\n\t\tlogger: myLogger\n\t}\n});\n\nemitter.on('test', () => {\n\t// …\n});\n\nemitter.emit('test');\n//=> [subscribe]: test\n```\n\n#### on(eventName | eventName[], listener, options?: {signal?: AbortSignal})\n\nSubscribe to one or more events.\n\nReturns an unsubscribe method (which is also [`Disposable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/dispose), so it can be used with `using`).\n\nUsing the same listener multiple times for the same event will result in only one method call per emitted event.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.on('????', ({data}) => {\n\tconsole.log(data);\n});\n\nemitter.on(['????', '????'], ({name, data}) => {\n\tconsole.log(name, data);\n});\n\nemitter.emit('????', '????'); // log => '????' and '???? ????'\nemitter.emit('????', '????'); // log => '???? ????'\n```\n\nYou can pass an [abort signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) to unsubscribe too:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\nconst abortController = new AbortController();\n\nemitter.on('????', ({data}) => {\n\tconsole.log(data);\n}, {signal: abortController.signal});\n\nabortController.abort();\nemitter.emit('????', '????'); // Nothing happens\n```\n\nOr use `using` for automatic cleanup when leaving scope:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\n{\n\tusing off = emitter.on('????', ({data}) => {\n\t\tconsole.log(data);\n\t});\n\tawait emitter.emit('????', '????'); // Logs '????'\n}\n\nawait emitter.emit('????', '????'); // Nothing happens\n```\n\n##### Custom subscribable events\n\nEmittery exports some symbols which represent \"meta\" events that can be passed to `Emittery.on` and similar methods.\n\n- `Emittery.listenerAdded` - Fires when an event listener was added.\n- `Emittery.listenerRemoved` - Fires when an event listener was removed.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.on(Emittery.listenerAdded, ({data: {listener, eventName}}) => {\n\tconsole.log(listener);\n\t//=> ({data}) => {}\n\n\tconsole.log(eventName);\n\t//=> '????'\n});\n\nemitter.on('????', ({data}) => {\n\t// Handle data\n});\n```\n\n###### Listener data\n\n- `listener` - The listener that was added.\n- `eventName` - The name of the event that was added or removed if `.on()` or `.off()` was used, or `undefined` if `.onAny()` or `.offAny()` was used.\n\nOnly events that are not of this type are able to trigger these events.\n\n##### listener({name, data?})\n\n#### off(eventName | eventName[], listener)\n\nRemove one or more event subscriptions.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nconst listener = ({data}) => {\n\tconsole.log(data);\n};\n\nemitter.on(['????', '????', '????'], listener);\nawait emitter.emit('????', 'a');\nawait emitter.emit('????', 'b');\nawait emitter.emit('????', 'c');\nemitter.off('????', listener);\nemitter.off(['????', '????'], listener);\nawait emitter.emit('????', 'a'); // Nothing happens\nawait emitter.emit('????', 'b'); // Nothing happens\nawait emitter.emit('????', 'c'); // Nothing happens\n```\n\n##### listener({name, data?})\n\n#### once(eventName | eventName[], predicateOrOptions?)\n\nSubscribe to one or more events only once. It will be unsubscribed after the first event that matches the predicate (if provided).\n\nThe second argument can be a predicate function or an options object with `predicate` and/or `signal`.\n\nReturns a promise for the event data when `eventName` is emitted and predicate matches (if provided). This promise is extended with an `off` method.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nconst {data} = await emitter.once('????');\nconsole.log(data);\n//=> '????'\n```\n\n```js\n// With multiple event names\nconst {name, data} = await emitter.once(['????', '????']);\nconsole.log(name, data);\n```\n\n```js\n// With predicate\nconst event = await emitter.once('data', ({data}) => data.ok === true);\nconsole.log(event.data);\n//=> {ok: true, value: 42}\n```\n\nYou can pass an [abort signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) to cancel the subscription. If the signal is aborted before the event fires, the returned promise rejects with the signal's reason. This is useful for timeouts:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\n// Reject if 'ready' doesn't fire within 5 seconds\nawait emitter.once('ready', {signal: AbortSignal.timeout(5000)});\n```\n\nThe returned promise has an `off` method to cancel the subscription without rejecting:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nconst promise = emitter.once('????');\n// Cancel the subscription (the promise will never resolve)\npromise.off();\n```\n\n#### events(eventName, options?: {signal?: AbortSignal})\n\nGet an async iterator which buffers data each time an event is emitted.\n\nCall `return()` on the iterator to remove the subscription. You can also pass an [abort signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) to cancel the subscription externally, or use `await using` for automatic cleanup.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nfor await (const {data} of emitter.events('????')) {\n\tconsole.log(data);\n\n\tif (data === '????2') {\n\t\tbreak; // Revoke the subscription when we see the value '????2'.\n\t}\n}\n```\n\nIt accepts multiple event names:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nfor await (const {name, data} of emitter.events(['????', '????'])) {\n\tconsole.log(name, data);\n}\n```\n\nYou can use `await using` for automatic cleanup when leaving scope:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\n{\n\tawait using iterator = emitter.events('????');\n\tfor await (const {data} of iterator) {\n\t\tconsole.log(data);\n\t}\n} // Subscription is automatically revoked\n```\n\nSince Emittery requires Node.js 22+, you can use the built-in [async iterator helpers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncIterator#iterator_helpers) to transform events:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nfor await (const {data} of emitter.events('????').filter(event => event.data > 3).take(5)) {\n\tconsole.log(data);\n}\n```\n\n#### emit(eventName, data?)\n\nTrigger an event asynchronously, optionally with some data. Listeners are called in the order they were added, but executed concurrently.\n\nReturns a promise that resolves when all the event listeners are done. *Done* meaning executed if synchronous or resolved when an async/promise-returning function. You usually wouldn't want to wait for this, but you could for example catch possible errors. If any listeners throw/reject, the returned promise rejects with an `AggregateError` — all listener errors are collected in `error.errors`, so no errors are silently lost. All listeners always run to completion, even if some throw or reject.\n\n#### emitSerial(eventName, data?)\n\nSame as above, but it waits for each listener to resolve before triggering the next one. This can be useful if your events depend on each other. Although ideally they should not. Prefer `emit()` whenever possible.\n\nIf any of the listeners throw/reject, the returned promise will be rejected with the error and the remaining listeners will *not* be called.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.on('????', async () => {\n\tconsole.log('listener 1 start');\n\tawait new Promise(resolve => setTimeout(resolve, 100));\n\tconsole.log('listener 1 done');\n});\n\nemitter.on('????', () => {\n\tconsole.log('listener 2'); // Only runs after listener 1 is done\n});\n\nawait emitter.emitSerial('????');\n```\n\n#### onAny(listener, options?: {signal?: AbortSignal})\n\nSubscribe to be notified about any event.\n\nReturns a method to unsubscribe (which is also [`Disposable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/dispose)). Abort signal is respected too.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nconst off = emitter.onAny(({name, data}) => {\n\tconsole.log(name, data);\n});\n\nemitter.emit('????', '????'); // log => '???? ????'\nemitter.emit('????', '????'); // log => '???? ????'\n\noff();\n```\n\n##### listener({name, data?})\n\n#### offAny(listener)\n\nRemove an `onAny` subscription.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nconst listener = ({name, data}) => {\n\tconsole.log(name, data);\n};\n\nemitter.onAny(listener);\nemitter.emit('????', '????'); // log => '???? ????'\nemitter.offAny(listener);\nemitter.emit('????', '????'); // Nothing happens\n```\n\n#### anyEvent(options?: {signal?: AbortSignal})\n\nGet an async iterator which buffers an event object each time an event is emitted.\n\nCall `return()` on the iterator to remove the subscription. You can also pass an [abort signal](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) to cancel the subscription externally, or use `await using` for automatic cleanup.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nfor await (const {name, data} of emitter.anyEvent()) {\n\tconsole.log(name, data);\n}\n```\n\nYou can use `await using` for automatic cleanup when leaving scope:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\n{\n\tawait using iterator = emitter.anyEvent();\n\tfor await (const {name, data} of iterator) {\n\t\tconsole.log(name, data);\n\t}\n} // Subscription is automatically revoked\n```\n\n#### clearListeners(eventNames?)\n\nClear all event listeners on the instance.\n\nIf `eventNames` is given, only the listeners for those events are cleared. Accepts a single event name or an array.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.on('????', listener);\nemitter.on('????', listener);\nemitter.on('????', listener);\n\n// Clear a single event\nemitter.clearListeners('????');\n\n// Clear multiple events\nemitter.clearListeners(['????', '????']);\n\n// Clear all events\nemitter.clearListeners();\n```\n\n#### init(eventName, initFn)\n\nRegister a function to be called when the first `.on()` listener subscribes to `eventName`. The `initFn` can optionally return a cleanup (deinit) function, which is called when the last `.on()` listener unsubscribes (or when `clearListeners()` removes all listeners for that event).\n\nIf `.on()` listeners already exist when `init()` is called, `initFn` is called immediately.\n\nReturns an unsubscribe function (which is also [`Disposable`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/dispose)). Calling it removes the init/deinit hooks, and if the init is currently active, it calls deinit immediately.\n\n> [!NOTE]\n> Lifecycle hooks only apply to `.on()` listeners. Subscriptions via `.events()` async iterators do not trigger the init or deinit functions.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.init('mouse', () => {\n\tterminal.grabInput({mouse: 'button'});\n\n\tterminal.on('mouse', (name, data) => {\n\t\temitter.emit('mouse', data);\n\t});\n\n\t// Optional: return cleanup (deinit) function\n\treturn () => {\n\t\tterminal.releaseInput();\n\t};\n});\n\n// Init is called when the first listener subscribes\nconst off = emitter.on('mouse', handler);\n\n// Adding more listeners does not call init again\nemitter.on('mouse', anotherHandler);\n\n// Removing one listener does not call deinit yet\noff();\n\n// Deinit is called when the last listener unsubscribes\nemitter.off('mouse', anotherHandler);\n```\n\nYou can use `using` for automatic cleanup of the init/deinit hooks:\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\n{\n\tusing removeInit = emitter.init('mouse', () => {\n\t\tstartListening();\n\t\treturn () => stopListening();\n\t});\n} // init/deinit hooks are automatically removed\n```\n\n#### listenerCount(eventNames?)\n\nThe number of listeners for the `eventNames` or all events if not specified.\n\n```js\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery();\n\nemitter.on('????', listener);\nemitter.on('????', listener);\n\nemitter.listenerCount('????'); // 1\nemitter.listenerCount(); // 2\n```\n\n#### bindMethods(target, methodNames?)\n\nBind the given `methodNames`, or all `Emittery` methods if `methodNames` is not defined, into the `target` object.\n\n```js\nimport Emittery from 'emittery';\n\nconst object = {};\n\nnew Emittery().bindMethods(object);\n\nobject.emit('event');\n```\n\n## TypeScript\n\nThe default `Emittery` class has generic types that can be provided by TypeScript users to strongly type the list of events and the data passed to their event listeners.\n\n```ts\nimport Emittery from 'emittery';\n\nconst emitter = new Emittery<\n\t// Pass `{[eventName]: undefined | <eventArg>}` as the first type argument for events that pass data to their listeners.\n\t// A value of `undefined` in this map means the event listeners should expect no data, and a type other than `undefined` means the listeners will receive one argument of that type.\n\t{\n\t\topen: string,\n\t\tclose: undefined\n\t}\n>();\n\n// Typechecks just fine because the data type for the `open` event is `string`.\nemitter.emit('open', 'foo\\n');\n\n// Typechecks just fine because `close` is present but points to undefined in the event data type map.\nemitter.emit('close');\n\n// TS compilation error because `1` isn't assignable to `string`.\nemitter.emit('open', 1);\n\n// TS compilation error because `other` isn't defined in the event data type map.\nemitter.emit('other');\n```\n\n### Emittery.mixin(emitteryPropertyName, methodNames?)\n\nA decorator which mixins `Emittery` as property `emitteryPropertyName` and `methodNames`, or all `Emittery` methods if `methodNames` is not defined, into the target class.\n\n```ts\nimport Emittery from 'emittery';\n\n@Emittery.mixin('emittery')\nclass MyClass {}\n\nconst instance = new MyClass();\n\ninstance.emit('event');\n```\n\n## Scheduling details\n\nListeners are not invoked for events emitted *before* the listener was added. Removing a listener will prevent that listener from being invoked, even if events are in the process of being (asynchronously!) emitted. This also applies to `.clearListeners()`, which removes all listeners. Listeners will be called in the order they were added. So-called *any* listeners are called *after* event-specific listeners.\n\nListeners always fire asynchronously — they are deferred to the next microtask, so any synchronous code after an unawaited `emit()` call runs first. If ordering matters, use `await emit()`.\n\nNote that when using `.emitSerial()`, a slow listener will delay invocation of subsequent listeners. It's possible for newer events to overtake older ones.\n\n## Debugging\n\nEmittery can collect and log debug information.\n\nTo enable this feature set the DEBUG environment variable to `'emittery'` or `'*'`. Additionally you can set the static `isDebugEnabled` variable to true on the Emittery class, or `myEmitter.debug.enabled` on an instance of it for debugging a single instance.\n\nSee [API](#api) for more details on how debugging works.\n\n## FAQ\n\n### How is this different than the built-in `EventEmitter` in Node.js?\n\nThere are many things to not like about `EventEmitter`: its huge API surface, synchronous event emitting, magic error event, flawed memory leak detection. Emittery has none of that.\n\n### Isn't `EventEmitter` synchronous for a reason?\n\nMostly backwards compatibility reasons. The Node.js team can't break the whole ecosystem.\n\nIt also allows silly code like this:\n\n```js\nlet unicorn = false;\n\nemitter.on('????', () => {\n\tunicorn = true;\n});\n\nemitter.emit('????');\n\nconsole.log(unicorn);\n//=> true\n```\n\nBut I would argue doing that shows a deeper lack of Node.js and async comprehension and is not something we should optimize for. The benefit of async emitting is much greater.\n\n### Can you support synchronous `emit()`?\n\nNo. Async emission is Emittery's core design principle. If you need synchronous event emission (for example, proxying DOM events like React's `onChange`), use a synchronous event emitter.\n\n### Can you support multiple arguments for `emit()`?\n\nNo, just use [destructuring](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment):\n\n```js\nemitter.on('????', ({data: [foo, bar]}) => {\n\tconsole.log(foo, bar);\n});\n\nemitter.emit('????', [foo, bar]);\n```\n\n## Related\n\n- [p-event](https://github.com/sindresorhus/p-event) - Promisify an event by waiting for it to be emitted\n","_attachments":{},"homepage":"https://github.com/sindresorhus/emittery#readme","bugs":{"url":"https://github.com/sindresorhus/emittery/issues"},"license":"MIT"}