{"_id":"@brainhubeu/hadron-events","_rev":"27-d86dd3fdb83a8ec810e0de8e792e5907","name":"@brainhubeu/hadron-events","dist-tags":{"latest":"1.0.1"},"versions":{"0.0.1":{"name":"@brainhubeu/hadron-events","version":"0.0.1","keywords":["hadron","brainhub","hadron-events"],"author":{"name":"Brainhub"},"license":"MIT","_id":"@brainhubeu/hadron-events@0.0.1","maintainers":[{"name":"brainhub-adam","email":"adam@brainhub.pl"},{"name":"caderek","email":"maciej.caderek@gmail.com"},{"name":"drymek","email":"marcin@dryka.pl"},{"name":"dyoda","email":"lukasz.pluszczewski@gmail.com"},{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"}],"dist":{"shasum":"d2e40edcf8960e29a142a21bcdc5fae780f225e7","tarball":"https://registry.npmjs.org/@brainhubeu/hadron-events/-/hadron-events-0.0.1.tgz","fileCount":11,"integrity":"sha512-qLj8Ub+VSb8grUd4mtrkCo7KYLXjKm7V5+exKAbmd+zXb9jSelAP/HPFvwUTUHrnRXOKkU/sp46RuWNAKJ08gg==","signatures":[{"sig":"MEUCIQDA27jNp+NerOQ6uo1SL+Ddn2f8/JBpQ5GmynciPIUJqQIgZwIx9SaTDrMxW6Kc53AwyIi98f/13TFSPQzuA5NKwMc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa2fCYCRA9TVsSAnZWagAAcGcP/RkbBdmJK7HWZp11124T\n44FwYytmJOmAXtK2ABnn0OqyNnLhinU5dNOj4HV5EQTsc0oJ5paWqZN8XUPP\nzTm9n19RRJOdt77QIVIVopphg4G+AbutRxoa/QVnAJGC5ZZM7r97k0cTIi0+\nvfhwPQtCvkxMNsm4tPRRtzywqRNv8WmUlKLxx0gTYs/edj5tVjKLQuUKpUGX\nu+HXxHyZBrbGUlsK/W9WcTj5g5icQT4ZUqg2uEWij0FeXtX/+wpD4yjZfsWy\nxUpLdNH3A7zzVX3TgPy14WM3FMkqZK1BORoPiApjZcyiv6OrVNE8E2GHmbng\nqQSUqDhhgB5TbfcZc/HWtZt58eyaBRGKLOZ0eGVrlD9uHAAR8hEjXbbSyEKL\ns6+PRV0oI9gRbCuRFn4gxVeZ2/K60e7jUoZZcTdEU/+YNV6XRiNpbWhDhjAc\nDfMbySE/e7KmQ4OKRK/es6qI3UGW3nNEf7xoD5oCB4CxnuAq9QUiFA8LYM2w\nOb/QhYUkG3WniMLi25uH/I92Dvw8/NlWQZT7SpD0NcotpBOD8NS/TYgTUMBT\nFuHb4a30sKoS1dKHZ8cAybDqqwOPGVXevdVd0T97HT2wDpaL7DJ77IpthgCo\nk8kuxNr6UjUvWfAJIuDh7Q/NiZbqCz2mz/7lrcDeiE5YbSLwPPIjwJ35kNBi\nJcIq\r\n=szB/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","files":["dist","./LICENSE"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"tsc"},"_npmUser":{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"},"_npmVersion":"5.5.1","description":"Hadron event emitter module","directories":{},"_nodeVersion":"8.6.0","dependencies":{"@brainhubeu/hadron-core":"^0.0.1","@brainhubeu/hadron-utils":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/events":"1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hadron-events_0.0.1_1524232343194_0.9531977946685877","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@brainhubeu/hadron-events","version":"0.0.2","keywords":["hadron","brainhub","hadron-events"],"author":{"name":"Brainhub"},"license":"MIT","_id":"@brainhubeu/hadron-events@0.0.2","maintainers":[{"name":"brainhub-adam","email":"adam@brainhub.pl"},{"name":"caderek","email":"maciej.caderek@gmail.com"},{"name":"drymek","email":"marcin@dryka.pl"},{"name":"dyoda","email":"lukasz.pluszczewski@gmail.com"},{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"}],"dist":{"shasum":"2a5b1ebe9db058c819eb1450c3ae18c6bac46050","tarball":"https://registry.npmjs.org/@brainhubeu/hadron-events/-/hadron-events-0.0.2.tgz","fileCount":11,"integrity":"sha512-nGmM0Uc7O3X3y9V+vRcGxXU+ljPGab6AK900lXvHmoLYT3Iwl8HiybSbGlBb6+qfTaDUYfpmca7sa5PDLXzULg==","signatures":[{"sig":"MEUCIEj7dnddn1VnKs7O9Bi27SnFwMaos42oUIk8hAcgPCHmAiEAkcXmb+TMGpU54MdKq3OJ1Pt9GUz+xqm9XYEMxwcOXIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8ClqCRA9TVsSAnZWagAA3voP/0g9ZhdPtObXJ9Z2tamK\nrb9vBxWpoHeINWJy853j8tiXWa/0VtLccydrLmzTbdu2GnyMUZKtcGGKHEFf\nE1xgL/9K6JKDrKQVhDEyX6ZXp8Z4TzIMXQwhWm1N7cFcR7ucKH9Q7o+t/2+7\nT43Xr142/fBfD7B8i7BDq4C8BrpualaTJKQDFYxTFahIjV63ZXWQCf4Tjo49\nC3W7a5/rCXi0pZq0wMNupaK/pr/w3d/NBC3h0etrVFIxs/RxUA0hGb5fqBda\nfuGNzLDEXCQbmwO+/6nJZLK1f0b1PyEvtt4xU6+cT5xmxDjgZleWLzk1Ld+z\nOGMuBPoFw/sVXhuxk6ViuF3X77BoYgvF0akyRtKZVwLve3fFNxo2Np4nM/70\n1gOWffA0cgHCTnhefn42/RfUcf26EXWJWcCjETKLqieALu25Od+tt3qoS5oR\nM1aDmQuGIpbHjC0dLknbOhuX+mDuq3dPLAZgEtJDuocIOfDzRwdpaS0rOWVI\nGzhLvTqkJ0oXW4YIx4i2OxZfUigU95JQXPz/g4Lmo2JzM1MnXQ8NhBSOef19\nklLJ2r3GyFV7uftWfo36Bssf75aIeN9cx42IrL4pLSnh+z/LaxdAN1LQH6jC\nzkUdCDSM18vYWonnPmLn7kvhKiY/GXeouIQ8SlHbM8CtFSqQQq6qPWd3wuNe\nIxcy\r\n=tRQv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","files":["dist","./LICENSE"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"tsc"},"_npmUser":{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"},"_npmVersion":"5.5.1","description":"Hadron event emitter module","directories":{},"_nodeVersion":"8.6.0","dependencies":{"@brainhubeu/hadron-core":"^0.0.2","@brainhubeu/hadron-utils":"^0.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/events":"1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hadron-events_0.0.2_1525688681821_0.12293459082044822","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@brainhubeu/hadron-events","version":"1.0.0","keywords":["hadron","brainhub","hadron-events"],"author":{"name":"Brainhub"},"license":"MIT","_id":"@brainhubeu/hadron-events@1.0.0","maintainers":[{"name":"brainhub-adam","email":"adam@brainhub.pl"},{"name":"caderek","email":"maciej.caderek@gmail.com"},{"name":"drymek","email":"marcin@dryka.pl"},{"name":"dyoda","email":"lukasz.pluszczewski@gmail.com"},{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"}],"dist":{"shasum":"76ef24b54172fd5763112d7c9ec64b17844e8098","tarball":"https://registry.npmjs.org/@brainhubeu/hadron-events/-/hadron-events-1.0.0.tgz","fileCount":11,"integrity":"sha512-Z73klAYeBA6EtzPwvX1lgPTJWcDYw+OujhyGGkYE9P+g1xVr6dGfa9O/qYQULgom4LzX7B10GdHdJ7wfIuninA==","signatures":[{"sig":"MEQCIFdaT2t45Q0oYvXGRXefavj349ObRh40HCRbNrfLM/rvAiAyjmcPm6p/b5wuEAJ1h0pAzQXUCrtqaBB+yNkcoKC19A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFXV4CRA9TVsSAnZWagAAG9MP/3egMd3o3Alrp3rKdQxW\n75OTkaRN1s8IJ4rzEGybyljGKwZwCiE7oOIMZ/OCYgszXFfezDa5/qCLD+mp\nuNJelAL7Kt+kmtl8fZgtkf2dBRV4YfO8+YpJrz8AsqNCL5elQvyWaheuq2tX\ny7TPc+XFLu6xaRlN70eskWs8j9N/keXTXVj03h3iKjLPNPhRpB0ySXVqi4Q6\n6Jfrag+3v3+M0PZINs/sxsDHg37LHGDU2NJcf0Vn2dmdSioBgPUO7mR/Fq/L\nl5O9+WrDHowR1wpnbo86r5P9GT7EowMc2Lb8dEVNxPORLUU2eurNw154EOVz\nADDjfqKq537z2iTzPIua8nMbDpvv/92pn/Di3v7WViMOLp0numr4B6lQgzaw\nZwaaVD4Am1L/lgGPxBlGdhBDlxFg+SmOHUkTRS5ZXqng75SN9BqCHk4hm7NM\neknRA0DvzVXUhSyQQznVYWXCyX1eOZyQacsM2lwOFDwM1ii4c/TDVTT8BgVW\nggA1ZH2oofC9HQDKcW5LIWMWjR49+JRG67COoOkG7CuzeGtklNwes69xY2YK\nhVx8CSuOGI9/W0uipnDfl2K+IRUw+2nVRrEoWKSALmwvYxDUrB4adExIuyZZ\nrl6g7tT+0NllYORIrIwsqHay6/AtxC26BKUqEQ2eYLSv946aQMQE2ZG/ADn/\nhFXM\r\n=8XSI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","files":["dist","./LICENSE"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"tsc"},"_npmUser":{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"},"_npmVersion":"5.5.1","description":"Hadron event emitter module","directories":{},"_nodeVersion":"8.6.0","dependencies":{"@brainhubeu/hadron-core":"^1.0.0","@brainhubeu/hadron-utils":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/events":"1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hadron-events_1.0.0_1528132983520_0.02953735449625028","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@brainhubeu/hadron-events","version":"1.0.1","keywords":["hadron","brainhub","hadron-events"],"author":{"name":"Brainhub"},"license":"MIT","_id":"@brainhubeu/hadron-events@1.0.1","maintainers":[{"name":"brainhub-adam","email":"adam@brainhub.pl"},{"name":"caderek","email":"maciej.caderek@gmail.com"},{"name":"drymek","email":"marcin@dryka.pl"},{"name":"dyoda","email":"lukasz.pluszczewski@gmail.com"},{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"}],"dist":{"shasum":"884078c395bc0339b4c0e6a8ce03b1f7275e7311","tarball":"https://registry.npmjs.org/@brainhubeu/hadron-events/-/hadron-events-1.0.1.tgz","fileCount":15,"integrity":"sha512-mMKWMljVgGLAek9eP3sHIf1pbpYIELTSUkoZcBqTwWSk3liwq8Axdn8flm3lYWW7/b1AABg5bv5kRwoviEaLzQ==","signatures":[{"sig":"MEQCIEvTJDRhM71IatmQTE3HhhXFFPmBe8xcx+cCACYCu/bFAiBFGTjiU3oEka7nHGKdE2ZqJMsYSenOvo70oEYE8OnmtA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHpinCRA9TVsSAnZWagAATBgP/2z0vLVkaqztdQ7TaLM0\n0ClB0PBOHHLOQWeRPXI8LShfhJIcE6+FHpZSTrvXDo0rfHPdSrpacKrIT8An\n2dN1dcFN7f4cs14+6mX0hfgr1mprSD2vS8Jkl3KDZZl205/iYS0md6zDM6xC\nT3FW+8PaFSQkNaI2+h3Eku215DC2giO7D+WoOX1ENqzKMuG+PITXKfSgK7xR\nQFq3wExT19Qmi0ZenrrwG9WjLzAL03iuCVcxvRCcx2VzKggI85o48nAUaHBT\npB52MIUwIx5zRCHQMLh9N6JExgYa5LFUV4lIOTMe7IjGpMqmJKQk4kMSw92w\nzd19m8pQ0g2i6BztiNwVeJ+pvAgQqqN1OIPy6Qa5igWMeGtZTLbu/9+3+r32\n7kGEiYjgqi4+NiLsm61BHPSz1htA2nq7WOlN36b2wBezLZd21Rbg+PGANgAa\nvxH7DBJyEXPO1IsOrAs7aqT5kqgiCnPIKHJY3lrtNIzu2ohMRmiGgSwigf5R\nUZA2veldtT2ancethXkUL/R/rxvwDCT8pxfib+FTCIkojU98+NRXfD0vaRxg\nFdPezZBVMFs8uRVmcxKMj7SIppzp4lsziEIrupojPBUB3Qkm6j/sbykSUc6l\nnNpjSRBnDedoys8gWHnw1ijqyfaEzr4Hp1tLPbddN1cS8JDOGNJ20d3pZMD6\nOEp/\r\n=rAEQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","files":["dist","./LICENSE"],"scripts":{"test":"echo \"Error: no test specified\" && exit 1","prepare":"tsc"},"_npmUser":{"name":"szymon.morawski","email":"szymon.morawski@brainhub.pl"},"_npmVersion":"5.5.1","description":"Hadron event emitter module","directories":{},"_nodeVersion":"8.6.0","dependencies":{"@brainhubeu/hadron-core":"^1.0.0","@brainhubeu/hadron-utils":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/events":"1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/hadron-events_1.0.1_1528731814536_0.9501179172925702","host":"s3://npm-registry-packages"}}},"time":{"created":"2018-04-20T13:52:23.145Z","modified":"2024-10-25T13:04:49.501Z","0.0.1":"2018-04-20T13:52:23.269Z","0.0.2":"2018-05-07T10:24:41.878Z","1.0.0":"2018-06-04T17:23:03.636Z","1.0.1":"2018-06-11T15:43:34.587Z"},"author":{"name":"Brainhub"},"license":"MIT","keywords":["hadron","brainhub","hadron-events"],"description":"Hadron event emitter module","maintainers":[{"email":"angjeziorska@gmail.com","name":"angjez"},{"email":"mateusz.jarzebowski.bownik@gmail.com","name":"matt-jb"},{"email":"filip.kublin@brainhub.pl","name":"fkublin"},{"email":"cypherq@gmail.com","name":"benedyktdryl"},{"email":"dariusz.luber@gmail.com","name":"dluber"},{"email":"devops@brainhub.pl","name":"brainhubeu-devops"},{"email":"anna.lach@brainhub.pl","name":"annalach"},{"email":"szymon.morawski@brainhub.pl","name":"szymon.morawski"},{"email":"lukasz.pluszczewski@gmail.com","name":"dyoda"},{"email":"dev@brainhub.pl","name":"brainhubeu-ci"},{"email":"robert_hebel@icloud.com","name":"roberthebel"}],"readme":"## Installation\n\n```bash\nnpm install @brainhubeu/hadron-events --save\n```\n\n[More info about installation](/core/#installation)\n\n## Overview\n\nEvent Manager is a tool which allows manipulating Hadron's default behavior without the need to change the code base. It can be achieved via custom listeners defined by the developer. There are a bunch of extension points spread all over the hadron framework where listeners can be hooked up.\n\n## Initializing\n\nPass package as an argument for hadron bootstrapping function:\n\n```javascript\nconst hadronEvents = require('@brainhubeu/hadron-events');\n// ... importing and initializing other components\n\nhadron(expressApp, [hadronEvents], config).then(() => {\n  console.log('Hadron with eventManager initialized');\n});\n```\n\nAfter initialization you can retrieve event manager from DI container - it is registered under the key `eventManager`.\n\n## Event Manager methods\n\n### Registering listeners for events\n\n```javascript\neventManager.registerEvents(listeners);\n```\n\n* `listeners` - an array of objects which have to follow convention showed below:\n\n```javascript\n{\n  name: 'string',  // listener name\n  event: 'string', // event to register to\n  handler: 'function' // function to handle the event\n}\n```\n\nExample:\n\n```javascript\nconst config = {\n  events: {\n    listeners: [\n      {\n        name: 'Listener1',\n        event: 'createRoutesEvent',\n        handler: (callback, ...args) => {\n          const myCustomCallback = () => {\n            console.log(\"Hey! I've changed the original hadron function!\");\n            return callback(...args);\n          };\n          return myCustomCallback();\n        },\n      },\n      {\n        name: 'Listener2',\n        event: 'myCustomEvent',\n        handler: (callback, ...args) => {\n          const myCustomCallback = () => {\n            console.log('My custom event!');\n            return callback(...args);\n          };\n          return myCustomCallback();\n        },\n      },\n    ],\n  },\n};\n\nhadron(app, [hadronEvents], config).then((container) => {\n  container.take('eventManager').emitEvent('myCustomEvent'); // \"My custom event!\"\n});\n```\n\n### Emitting events\n\n```javascript\neventEmitter.emitEvent(eventName);\n```\n\nCalls all listeners handlers registered for the event with event name passed to it.\n\n* `eventName` - name of the event which will be fired\n\n## Listeners\n\nYou can create your listeners in the main config file.\n\nAs a first argument listener's handler method will receive a callback function originally called by hadron, so you can change/override it however you want and then return a call of newly created function or a call of existing callback if you don't want to change it.\n\nTo be able to receive callback mentioned above, the first argument should be named exactly `callback`, otherwise, you will not receive the callback.\n\nYou can also, define your listener's handler without `callback` argument or even without any arguments, which is also a valid way to create listeners, you just won't be able to access the callback.\n\nThe second argument of listeners handler method is `...args`, which can be used as arguments for the callback function.\n\nAn example of a listener:\n\n```javascript\n{\n  name: 'Listener',\n  event: 'createRoutesEvent',\n  handler: (callback, ...args) => {\n    const myCustomCallback = () => {\n      console.log(\"Hey! I've changed the original hadron function!\");\n      return callback(...args);\n    }\n    return myCustomCallback();\n  }\n}\n```\n\n## Extension points in hadron\n\nAs said before, there are a couple of extension points in the hadron framework to which you can hook up your listeners.\nThe extension depends from packages that You are using and are listed below:\n\n--- hadron-express\n\n`HANDLE_REQUEST_CALLBACK_EVENT`\n\nEvent fires, before route callback function is called, passes route callback to the listener.\n\nExample:\n\n```javascript\nconst ExpressEvent = require('@brainhubeu/hadron-express').Event;\nconst listeners = [\n  {\n    name: 'Listener',\n    event: ExpressEvent.HANDLE_REQUEST_CALLBACK_EVENT, // or simply event: 'HANDLE_REQUEST_CALLBACK_EVENT'\n    handler: (callback, ...args) => {\n      console.log('Request Handled!');\n      callback(...args);\n    },\n  },\n];\n```\n\n---\n\n`HANDLE_TERMINATE_APPLICATION_EVENT`\n\nEvent fires when the application is terminated with <kbd>CTRL</kbd> + <kbd>C</kbd>, passes default hadron callback to the listener.\n\n```javascript\nconst Event = require('@brainhubeu/hadron-events').Event;\nconst listeners = [\n  {\n    name: 'Listener',\n    event: Event.HANDLE_TERMINATE_APPLICATION_EVENT, // or simply event: 'HANDLE_TERMINATE_APPLICATION_EVENT'\n    handler: () => {\n      console.log('Application is going to close');\n    },\n  },\n];\n```\n","readmeFilename":"README.md"}