{"_id":"@astrogd/typed-events","_rev":"2-bf82a4329f981bc37cf7ed0894458eb2","name":"@astrogd/typed-events","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@astrogd/typed-events","version":"1.0.0","description":"A zero Dependency drop-in replacement for NodeJS EventEmitter to support strictly typed events without modifying the EventEmitter namespace","main":"lib/index.js","engines":{"node":">=10"},"scripts":{"build":"tsc","prepublish":"rimraf lib && npm run build","deploy":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/AstroGD/typed-event-emitter.git"},"keywords":["typescript","tsc","types","nodejs","events","eventemitter","emitter","strict","type"],"author":{"name":"AstroGD Lukas Weber","email":"hello@astrogd.eu","url":"https://www.astrogd.eu"},"license":"MPL-2.0","bugs":{"url":"https://github.com/AstroGD/typed-event-emitter/issues"},"homepage":"https://github.com/AstroGD/typed-event-emitter#readme","devDependencies":{"@types/node":"^18.11.9","rimraf":"^3.0.2","typescript":"^4.9.3"},"funding":"https://www.buymeacoffee.com/astrogd","types":"./lib/index.d.ts","gitHead":"e8d668c9bf2b840b1b84f321552f47cefc694de7","_id":"@astrogd/typed-events@1.0.0","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-vYXlYX7EHfKieZDqTec9NVGDZkeCHb7+b7FGQgWaW+gr+S/9F6A0qRzDBJvw6nt04/ZjTz0n50ielBJqIAk1vQ==","shasum":"22f3b2aa1131afd86233a1d040e86d0c659666e5","tarball":"https://registry.npmjs.org/@astrogd/typed-events/-/typed-events-1.0.0.tgz","fileCount":9,"unpackedSize":37156,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHq3vjm+UEvWvQprt908nLBaMdT5SL0XUD3cMoL1IYS7AiEA+1XOqF00eV7BGmrHFQ3Pefi+cFbKJSAsWJAvnlkd5rE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjg8KOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpBgw//UcQdTCB2UXwBxryhOH+FG77AhFtGl+aelmeWUArVxyf+s9m2\r\n4YIQYUWCkMcNNzXTVCTq8esWUEPKeI7i4Iu+yPpGTdP1Uq22VhS5ZynBQB2G\r\nM/K1EYUTRkjao1ezDMFX/TQjbDYd3Uaocrn7cNK9eRko93d8xiJ2T/o5Hypd\r\nmiTEdKYV5ANiY3Lgioz3Vk0EcnrsdraHm0JilArHeClDHbjsM8UumQ4p6spb\r\nOQcLQ/ogV0bNOM/S0CyzOAfhgIlFrtcnzwNI5U+wnhdF2X05aXkP/rRzbn5c\r\nFu0SPYfVjbptENNRw84Jn7QIh13Y4PMIhX3ibYNXOMdafaHTWH6hiOp9z/rg\r\n26GAFdvevWqNDqe9zXZOdCCBX+AgRJvsU3D4he+dAAM3nndLXe8XEJ3Onww+\r\n4hYVEG7MO0e8w7fKCg1e0JNsJ4p5PYD7cCKay87f/f9LPiC+0ku/kBnbXKMa\r\nyJstRGgaAR3a62oKJqt0zk8apIzrMIHkXuAEuIH+bB/rrJIENPOQq9TN/vDJ\r\nNxtrPOe4RNV9+9n04hao48HDbMg2qzn9NCtYfSJzwZSKq2gyY94Yr3yt9QSJ\r\n7GrVBuxwxIFCJH6J3C9KgNCUYwd6nh8SIesP8GuA0I01yIUdpA06Nd/GU2yt\r\nAabWsTvDy/TVC7cErjEVYqIslCLe1mxCzdI=\r\n=onJH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"astrogd","email":"npm@astrogd.eu"},"directories":{},"maintainers":[{"name":"astrogd","email":"npm@astrogd.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-events_1.0.0_1669579406275_0.5665936718673841"},"_hasShrinkwrap":false},"1.0.1":{"name":"@astrogd/typed-events","version":"1.0.1","description":"A zero Dependency drop-in replacement for NodeJS EventEmitter to support strictly typed events without modifying the EventEmitter namespace","main":"lib/index.js","engines":{"node":">=10"},"scripts":{"build":"tsc","prepublish":"rimraf lib && npm run build","deploy":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/AstroGD/typed-event-emitter.git"},"keywords":["typescript","tsc","types","nodejs","events","eventemitter","emitter","strict","type"],"author":{"name":"AstroGD Lukas Weber","email":"hello@astrogd.eu","url":"https://www.astrogd.eu"},"license":"MPL-2.0","bugs":{"url":"https://github.com/AstroGD/typed-event-emitter/issues"},"homepage":"https://github.com/AstroGD/typed-event-emitter#readme","devDependencies":{"@types/node":"^18.11.9","rimraf":"^3.0.2","typescript":"^4.9.3"},"funding":"https://www.buymeacoffee.com/astrogd","types":"./lib/index.d.ts","gitHead":"4d9f4f864257d4c1ed71fc3a0faa973c2ada21f0","_id":"@astrogd/typed-events@1.0.1","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-Xyd3n984jsx98MEjOJkdYMPeueVCYkCfpz8sbsVzLIvNrSdQSYnfdbv8lNiTx69MiLvaPwmE+AEZxMRjKjANKw==","shasum":"ef22f37079fbd8c92e31ca8b9bb0fae936b16825","tarball":"https://registry.npmjs.org/@astrogd/typed-events/-/typed-events-1.0.1.tgz","fileCount":9,"unpackedSize":37161,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqlfG0/w2Fvf/p2oJ8f9YmfJOPVwycM9GUT5/Au4Zr+AIhALd8om2q5Rr2UAnTWKrIe4cBRkjC6jqzf6WjYiOu4Q8k"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjg8PUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo12Q//cZrs7vgU+djD8QjSiCT0JJ6rvkPjKRAt0PvtNpiqN+vS+AMH\r\nHPKXMNb4dBK68nP1X9t4zodJMHDptpeJSdW2gUIwOhBI9b/QUP6/qnaCPd33\r\nwalXAHsCTeklFnag7YKLhIddyFwba4B1uuz9Y9sznRdkpu/Ynk0Z/DxmL5nb\r\nfuJPTZ7nzI6lYfNAibH2pHRSYW2KK+qNo/WedsleYC1AYjvQiM8oO1moH3i4\r\nfLp5d/dfhZsDKnZeXLSKN3zFrkr6EOyl5dW/u19Gb9bveZaKw7joSN6RRxXF\r\n8lrWKPRm8MeC3Uu6o2SGb7bOkRea8X37MCbY0HWR/oKeDjo+iA9UcjDHwQel\r\nwtlEeh8fe4YxWJVE0Kqewj4JttqIWYBlZ30GUQMvfGjOKAaJcorpNoM3I/vT\r\nPWIbmhpyVHBftSmmKa2xWVDaWkx4D70Hm0/Tpqi9Lgn3En25KVZkrDcp6iWH\r\n5LNW+rfs6p4QQy4yGB8MQdcr1orX7LsI3wylyD3iqvlvZibEOj5u1whWvC1c\r\nFcj71KUYCCr+eWE1Y6z87HhnDAJZxJQggcSiUYQxbOEpjYcF0EjOTKCh2exb\r\nmDnfxSlTByGRTkJwz5OIQv4YfYnBw71V4HNKRU0DBJQ5z328Enteg99muA9c\r\n7EJUvdBxbKytKl+mnyPl486fNAs5Ds+EuVw=\r\n=U/J/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"astrogd","email":"npm@astrogd.eu"},"directories":{},"maintainers":[{"name":"astrogd","email":"npm@astrogd.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-events_1.0.1_1669579732166_0.20174688015719577"},"_hasShrinkwrap":false},"1.0.2":{"name":"@astrogd/typed-events","version":"1.0.2","description":"A zero Dependency drop-in replacement for NodeJS EventEmitter to support strictly typed events without modifying the EventEmitter namespace","main":"lib/index.js","engines":{"node":">=10"},"scripts":{"build":"tsc","prepare":"rimraf lib && npm run build","deploy":"npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/AstroGD/typed-event-emitter.git"},"keywords":["typescript","tsc","types","nodejs","events","eventemitter","emitter","strict","type"],"author":{"name":"AstroGD Lukas Weber","email":"hello@astrogd.eu","url":"https://www.astrogd.eu"},"license":"MPL-2.0","bugs":{"url":"https://github.com/AstroGD/typed-event-emitter/issues"},"homepage":"https://github.com/AstroGD/typed-event-emitter#readme","devDependencies":{"@types/node":"^18.11.9","rimraf":"^3.0.2","typescript":"^4.9.3"},"funding":"https://www.buymeacoffee.com/astrogd","types":"./lib/index.d.ts","gitHead":"c2763827a1cd5cc08fc3433e73f3232950eadd31","_id":"@astrogd/typed-events@1.0.2","_nodeVersion":"18.12.1","_npmVersion":"9.1.2","dist":{"integrity":"sha512-EGf4IIkMDs6V3L+Ff+N0wbj/7PA0SjxvKrgSXhwmffBTB8VHHT3ZzZHuSp34BHYnOw7UwpQWP4aMjWBKoZXQsA==","shasum":"e9e3050f70c56fde7135798e7ea85faeec2d6409","tarball":"https://registry.npmjs.org/@astrogd/typed-events/-/typed-events-1.0.2.tgz","fileCount":9,"unpackedSize":37138,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE+QYTOozgEvfpIB+NnlXSESsdZLFTtFyE/ZpzKOsmW4AiAbEoiC8sAAF/XU/Vt70KQxbF6j95aA5Ea+Xs4lt7G5Og=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjg8vRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoP1w//a5CnPpktRaUpaDT0+p/k/bWTrAxkyVLXwfn8BYhrmN1KNzt5\r\nepdFbbcflyWGZMUBj2jHAUSHnoD5dLd/0ds4xLBah/TjfL7stbUZuRomJLzX\r\n/vPv9bfiB9b6O8JdNMbt+oURttTqlxcFVUwRayvkdSQuAyPAKeBb/peAQ/tv\r\nB2//xVo4gcUy3yC/l4W5YOEJqY4/uhybU3iQE+qQQ7gSj7OBFyDZYZuxolMh\r\nhWq23mN2qz1osYlgFBcF7lQlPpAnSJGBn3Z/tdIFRtJvOAwgRMVqiQowBmdT\r\nqLnhHmJZy6cHVlZdBQtin2RII9NdJ/qsYztOjuzGe+mFqAJI5LXXso+eXkuI\r\nWjai0crGhJ/VazrwsxZw+B2cBmXb9teUo/Pwwr4NH4+aRsggzIU3QdhSFxJ+\r\n8zcsaeLYRPJJO+c61yE5Tp4l4z7BmLhBF0inYR9s29k6oUJq0CZqskT7nzUg\r\n/2EBKvKRLkzQu0ztF0FBwRdYweHvI7sbufH7qnFTEmqLVvUkRkJfHOQliVol\r\nJwRtHB6puNpb3LzYcu1tRlYWpfq6BvY0isa2NvVovPY/2gViCjbxc3hxWy/2\r\npBk9Aymt8c7ogxLTZcIr/LoheK12ead8+x+dh2G7JH2WKq0NIwGxu9LnfQZd\r\nSdlzyJkO4hCEbMgoWg2vAfyG86ZxdYH4gDQ=\r\n=hpPg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"astrogd","email":"npm@astrogd.eu"},"directories":{},"maintainers":[{"name":"astrogd","email":"npm@astrogd.eu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/typed-events_1.0.2_1669581777297_0.7072735876345131"},"_hasShrinkwrap":false}},"time":{"created":"2022-11-27T20:03:26.215Z","1.0.0":"2022-11-27T20:03:26.454Z","modified":"2022-11-27T20:42:57.573Z","1.0.1":"2022-11-27T20:08:52.349Z","1.0.2":"2022-11-27T20:42:57.461Z"},"maintainers":[{"name":"astrogd","email":"npm@astrogd.eu"}],"description":"A zero Dependency drop-in replacement for NodeJS EventEmitter to support strictly typed events without modifying the EventEmitter namespace","homepage":"https://github.com/AstroGD/typed-event-emitter#readme","keywords":["typescript","tsc","types","nodejs","events","eventemitter","emitter","strict","type"],"repository":{"type":"git","url":"git+https://github.com/AstroGD/typed-event-emitter.git"},"author":{"name":"AstroGD Lukas Weber","email":"hello@astrogd.eu","url":"https://www.astrogd.eu"},"bugs":{"url":"https://github.com/AstroGD/typed-event-emitter/issues"},"license":"MPL-2.0","readme":"# Typed Events\r\nA zero Dependency drop-in replacement for NodeJS EventEmitter to support strictly typed events without modifying the EventEmitter namespace.\r\n\r\n## Why?\r\nWhen using NodeJS's EventEmitter, typings are not enforced. This means that you can listen to events that don't exist and might encounter unexpected event arguments that lead to unintended behavior.\r\n\r\nAfter searching for a while I couldn't find an open source library that helps with this, so I decided to create one myself.\r\n\r\n## When to use it\r\nIf you are working with typescript and know exactly what events will be emitted and what data they will pass along: This library is exactly for you!\r\n\r\nNot only does it enable valuable intellisense during development, it also ensures your events are type safe and easy to use for people who use your project.\r\n\r\n## Installation\r\nUsing npm:\r\n```bash\r\n$ npm i -g npm\r\n$ npm i @astrogd/typed-events\r\n```\r\n\r\n## Usage\r\nImport the package\r\n```typescript\r\nimport { TypedEventEmitter, CustomEvents } from '@astrogd/typed-events';\r\n```\r\n\r\nDeclare your events\r\n```typescript\r\ninterface MyEvents extends CustomEvents {\r\n  'my-event': (myArg: string) => void;\r\n  'my-other-event': (myArg: boolean, mySecondArg?: number) => void;\r\n}\r\n```\r\n\r\nCreate a new instance of the TypedEventEmitter and start using it like the NodeJS EventEmitter\r\n```typescript\r\nconst events = new TypedEventEmitter<MyEvents>();\r\n```\r\n\r\n## Example\r\n```typescript\r\nimport { TypedEventEmitter, CustomEvents } from '@astrogd/typed-events';\r\n\r\n// You can define your events as an interface...\r\ninterface MyEvents extends CustomEvents {\r\n    'my-event': (someArgument: boolean) => void;\r\n    'removeListener': (customArgument: boolean) => void;\r\n}\r\n\r\n// ...or as a custom type\r\ntype MyEventsType = {\r\n    'my-event': (someArgument: boolean) => void;\r\n    'removeListener': (customArgument: boolean) => void;\r\n}\r\n\r\nconst events = new TypedEventEmitter<MyEvents>();\r\nevents.emit(\"my-event\", true); // Our own events work\r\nevents.emit(\"newListener\", \"my-event\", () => {}); // Default events from NodeJS's EventEmitter are supported too!\r\n\r\n// You can also merge a custom implementation of a default event and types will be supported\r\nevents.emit(\"removeListener\", \"my-event\", () => {});\r\nevents.emit(\"removeListener\", true);\r\n\r\n// Types for the listener function are inferred and ready to use!\r\nevents.on(\"my-event\", (customArgument) => {\r\n    console.log(customArgument);\r\n})\r\n\r\nevents.on(\"removeListener\", (firstArg: boolean | string | symbol, secondArg?: Function) => {\r\n    // Yay we merged the default listener types with the custom implementation!\r\n});\r\n\r\n// You can also attach the typed event emitter to your custom class:\r\nclass MyCoolClass extends TypedEventEmitter<MyEventsType> {\r\n    constructor() {\r\n        super();\r\n\r\n        this.emit(\"my-event\", true); // Works out of the box\r\n    }\r\n}\r\n```\r\n\r\n## Copyright\r\n```\r\nCopyright (c) AstroGD Lukas Weber. All rights reserved.\r\n\r\nThis Source Code Form is subject to the terms of the Mozilla Public\r\nLicense, v. 2.0. If a copy of the MPL was not distributed with this\r\nfile, You can obtain one at http://mozilla.org/MPL/2.0/.\r\n\r\nCovered Software is provided under this License on an \"as is\"\r\nbasis, without warranty of any kind, either expressed, implied, or\r\nstatutory, including, without limitation, warranties that the\r\nCovered Software is free of defects, merchantable, fit for a\r\nparticular purpose or non-infringing. The entire risk as to the\r\nquality and performance of the Covered Software is with You.\r\nShould any Covered Software prove defective in any respect, You\r\n(not any Contributor) assume the cost of any necessary servicing,\r\nrepair, or correction. This disclaimer of warranty constitutes an\r\nessential part of this License. No use of any Covered Software is\r\nauthorized under this License except under this disclaimer.\r\n```","readmeFilename":"README.md"}