{"_id":"@dkx/event-dispatcher","_rev":"1-0e86e80731774b65a50a6e636c3993cb","name":"@dkx/event-dispatcher","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@dkx/event-dispatcher","version":"0.0.1","description":"Event dispatcher for node.js","repository":{"type":"git","url":"git@gitlab.com:dkx/node.js/event-dispatcher.git"},"author":{"name":"David Kudera","email":"kudera.d@gmail.com"},"license":"MIT","main":"./lib/index.js","types":"./lib/index.d.ts","dependencies":{"@dkx/types-class":"0.0.2"},"devDependencies":{"@types/chai":"^4.1.7","@types/mocha":"^5.2.6","@types/node":"^11.13.9","chai":"^4.2.0","mocha":"^6.1.4","reflect-metadata":"^0.1.13","ts-node":"^8.1.0","typescript":"^3.4.5"},"scripts":{"build":"tsc","watch":"tsc --watch","test":"TS_NODE_PROJECT=./test/tsconfig.json mocha -r ts-node/register 'test/tests/**/*.ts'"},"gitHead":"03c93b96f847c31652660fddecae4fe1d3bcf328","_id":"@dkx/event-dispatcher@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"davidkcz","email":"kudera.d@gmail.com"},"dist":{"integrity":"sha512-XiNrLuq3p6+PzfxMSQ4QCqdz1EsCHdPnD/dzfYqmd5lhydk0rWUgfEB+FNwC4vxOV6fGdXAbOdOTtdaYhwGTZw==","shasum":"dad4d6c9327151da57d67170c8cc4f044fc5eede","tarball":"https://registry.npmjs.org/@dkx/event-dispatcher/-/event-dispatcher-0.0.1.tgz","fileCount":18,"unpackedSize":13115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcze4TCRA9TVsSAnZWagAAT1gP/AxTFh7GT7wpKHLmkakK\niLEhOxqH9zkAm2o7vHwlCHJzFx2Nc0ENkWGYUuuRPm/T8VqZOfOVKRRnfSKq\nbVsFOXal6Uao0Eeu3mmOeNK2Alf3xaGTpa9vuYtJkurgewVk02RSLnfI6FNR\naA39yWz4zYI9rS7mkOD78vwatV3GcyKIoYdQFy6+qHq1ooORpKfDVLyCzn/1\nWQv9szaYvvjAPaHuWQTBciZg5yNhC3Bqm/Bk0NZGrgYFCABs+z2s54oim9Bv\nrXhvClI8Skuirg59w1KqWiIsTNpOzxyf6jaGne4wHE/VflYJn3ATF0qcoVHI\nAI1uQmtxPE619Vpy6wEC2lZC/FxVbz8vOaKbVuYMDrx730jb1oXO2Gt6yzAA\nPZd+wqw86yG2hPzS0xHIYa3RrWuRbCBXyWjhO9fl96/RAeeqyNrqOLaXeysD\n/JYB8J1thTnxT16IhOE79NNk02wNSkz5AmWIGN1ZwWqnIaLiUsocwSit4LIU\nVaO0T4aXmq5LzacfvZVMYRxc/Qls8JiZXCaIr1wzU/AMtPN+Fb2cmnRguZ1U\nPylYfnc1zshXjXUj20XFW0PpWjmy5h+xjcmEQZM/B8mVTcMNIevZ0hzvKJhq\nR2tpigO67CGYfj0sbkVcmfazP3n6TxRNceHaZGXzWcSjqNOJrtQgau/Kfvpi\n+IQ1\r\n=LCsO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICqEDK2YlYtkSrDWkMmXur43udplTTmxJviXpP47za0SAiAuZPT/UmJPo6w8tNSRD6ou2pa3FBSBUTw5YnfGbVlCVg=="}]},"maintainers":[{"name":"davidkcz","email":"kudera.d@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/event-dispatcher_0.0.1_1556999698395_0.03459409256270196"},"_hasShrinkwrap":false}},"time":{"created":"2019-05-04T19:54:58.313Z","0.0.1":"2019-05-04T19:54:58.627Z","modified":"2022-04-05T04:51:35.314Z"},"maintainers":[{"name":"davidkcz","email":"kudera.d@gmail.com"}],"description":"Event dispatcher for node.js","repository":{"type":"git","url":"git@gitlab.com:dkx/node.js/event-dispatcher.git"},"author":{"name":"David Kudera","email":"kudera.d@gmail.com"},"license":"MIT","readme":"# DKX/EventDispatcher\n\nEvent dispatcher for node.js\n\n## Installation\n\n**Dependencies:**\n\n* `reflect-metadata`\n\nwith npm:\n\n```bash\n$ npm install --save @dkx/event-dispatcher\n```\n\nor with yarn:\n\n```bash\n$ yarn add @dkx/event-dispatcher\n```\n\n## Events\n\nEvents should be small value object classes implementing the `Event` interface.\n\n```typescript\nimport {Event} from '@dkx/event-dispatcher';\n\nclass UserUpdatedEvent implements Event\n{\n    constructor(\n        public readonly user: User,\n        public readonly changes: any,\n    ) {}\n}\n```\n\n## Subscribers\n\nSubscribers are classes which contains subscriptions to defined events. They should implement the `Subscriber` interface.\n\n```typescript\nimport {Subscriber, Subscribe} from '@dkx/event-dispatcher';\nimport {UserUpdatedEvent} from './user-updated-event';\n\nclass UserUpdatedEmailNotification implements Subscriber\n{\n    @Subscribe()\n    public onUserUpdated(event: UserUpdatedEvent): void\n    {\n        console.log(event);\n        // todo send email\n    }\n}\n```\n\nEvent to which the subscriber should subscribe is taken from method argument type (`event: UserUpdatedEvent`).\n\nSubscription method can be also `async` and return `Promise`.\n\n## Call event\n\n```typescript\nimport {EventDispatcher} from '@dkx/event-dispatcher';\nimport {UserUpdatedEvent} from './user-updated-event';\nimport {UserUpdatedEmailNotification} from './user-updated-email-notification';\n\n// create and register first subscriber\nconst events = new EventDispatcher;\nevents.addSubscriber(new UserUpdatedEmailNotification);\n\n// dispatch event\nevents.dispatch(new UserUpdatedEvent(user, {}));\n```\n","readmeFilename":"README.md"}