{"_id":"@arnaldo.badin/overwatch","_rev":"1-0aa52f6269c990031468002f2c18dd0d","name":"@arnaldo.badin/overwatch","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@arnaldo.badin/overwatch","version":"1.0.0","description":"just a service that trigger tasks to notify someone or something","main":"extern.js","scripts":{"test":"node test.js"},"author":{"name":"Arnaldo Badin"},"license":"ISC","dependencies":{},"repository":{"type":"git","url":"git+https://github.com/arnaldobadin/overwatch.git"},"bugs":{"url":"https://github.com/arnaldobadin/overwatch/issues"},"homepage":"https://github.com/arnaldobadin/overwatch#readme","gitHead":"70d9cc309b5abfb497e22eac368b50219a2a0b93","_id":"@arnaldo.badin/overwatch@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"arnaldo.badin","email":"arnaldobadin@gmail.com"},"dist":{"integrity":"sha512-i07FrzQhYuMhfCpYDTiWq6iwuoHNObamaRRpGKFLW+i8NEnXavJxyIV+yOizXu1oer6mj2n8TjT6LejKB7XbnQ==","shasum":"3e05d62d93a24b10637e5a7f6c2b188658cdc8ac","tarball":"https://registry.npmjs.org/@arnaldo.badin/overwatch/-/overwatch-1.0.0.tgz","fileCount":11,"unpackedSize":17346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5VTKCRA9TVsSAnZWagAA5iUP/RO0JUYNgY11rmU3957K\nvdQLPmcJ51L6ERvaosRiLLWP25ySqCLIPhUi3Zo/ooF4sUDzfBNIx0bfUJcO\nf/cAPqRdEQMOdN2WVxRg97hxvfMFBKILH2q+MVJSkblJ61phiIXcb0AsVhtl\nI/FnxeL7u1iZQzisjnNoPexuMN2mVgZyMD1rsVm4jpWZjwayMbDteYxkJwqm\n2Ebw3ov7tN/eoxZ+gJv2zwsDDL750hDC4N3J1wWwzImZtR2tNhYt3nxRPPEk\nGO72KXG/DiVrQd7TLWLRMoEImRxQ+mfxYVf+nvAJuGX50rD6pHlgdBEPzaYp\n1mo/DGbulssVn/czGf7Sbb4eCUe3Hyd5rcQIxAd9CZx98c2+htwgA6gKm/6Q\nyGRO20dDto/knyin7/lBup0GLQlH3PBf+/SWGPyVAUAbiikUe6DNv2peYA/W\naiD7nL3qB+bDbJDlQnPmBTwmIFt/lx1X2DTrPinXknOf/jiNDc904u0e5G9D\nU3ng/O+N0Gn4OJwb7KsrTlqh2y4P3L/hJClgUYru3DgKO4p6rdRP4QVIH3pR\nioMLkvyGId6sc1kHMeASjw84VeE9UHHxuksAJc3T5bAwzQkocyd0hG0Ux7NI\ncKVLS+dAUzLphXBy21OKvqYvRxH+fEsXaCD5nN5uwd9kSeVVX92mfRpKH8OZ\nC8B4\r\n=MID0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDHNszakP8yfzb+gALkba4AxxnR2uF8ByNHyaw8dPDH+AiEAx5F01XxgBMcJoXrw0L321j5c1gW8njif9D3XXOJrNDo="}]},"maintainers":[{"name":"arnaldo.badin","email":"arnaldobadin@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/overwatch_1.0.0_1575310537689_0.8254185940958598"},"_hasShrinkwrap":false}},"time":{"created":"2019-12-02T18:15:37.656Z","1.0.0":"2019-12-02T18:15:37.838Z","modified":"2022-04-04T15:33:33.144Z"},"maintainers":[{"name":"arnaldo.badin","email":"arnaldobadin@gmail.com"}],"description":"just a service that trigger tasks to notify someone or something","homepage":"https://github.com/arnaldobadin/overwatch#readme","repository":{"type":"git","url":"git+https://github.com/arnaldobadin/overwatch.git"},"author":{"name":"Arnaldo Badin"},"bugs":{"url":"https://github.com/arnaldobadin/overwatch/issues"},"license":"ISC","readme":"## Overwatch\r\nSimple module that helps you to control and group-up external tasks.\r\n\r\n## Interface\r\n\r\n- overwatch.start();\r\n- overwatch.stop();\r\n- overwatch.task(name, action, schedule);\r\n- overwatch.gateway(name, action);\r\n- overwatch.contact(contact, gateway, additional = {});\r\n- overwatch.subscription(contact, task);\r\n- overwatch.trigger(task, options);\r\n- overwatch.notify(gateway, options);\r\n\r\n## Task\r\n\r\nCan create tasks via overwatch.task function. Tasks will run each a pre-determined interval. You will need to implement a logic inside the function with you want a different interval or want to use timetables (later shown).\r\nTake an example of its declaration using classes:\r\n```javascript\r\n    const MyTask = function() {\r\n        /* ... do many things here */\r\n    }\r\n    MyTask.prototype.action = function(handler, options) {/* only trigger when called */}\r\n    MyTask.prototype.schedule = function(handler, options) {/* trigger on an interval */}\r\n\r\n    const my_task = new MyTask();\r\n    overwatch.task(\"my-task-name\",\r\n        (...params) => {my_task.action(...params);},\r\n        (...params) => {my_task.schedule(...params);}\r\n    );\r\n```\r\n\r\nEvents (action and schedule functions) are these task's functions that will be called at some point. They receive some arguments from its caller and can be used to create your own implementation.\r\nHandler itself is a link between the particular task and the gateways available (including its contacts).\r\n```javascript\r\n    /* action/schedule event */\r\n    (handler, options) => {\r\n        /* get all task's contacts (using subscriptions, later shown) */\r\n        const contacts = handler.contacts();\r\n        if (!contacts) return false;\r\n\r\n        for (let k in contacts) {\r\n            const contact = contacts[k];\r\n            const message = `Hello ${contact.name}. Do not forget you appointment!`;\r\n            /* will call gateway.action -- need to be previous declared -- */\r\n            handler.notify(contact.gateway, {contact : contact.contact, message});\r\n        }\r\n        return true;\r\n    }\r\n```\r\n\r\n## Gateway\r\n\r\nCan create gateways to manage notifications. Each gateway will have its own implementations and contacts list.\r\nTake an example of its declaration using classes:\r\n```javascript\r\n    const MyGateway = function() {\r\n        /* ... do many things here */\r\n    }\r\n    MyGateway.prototype.action = function(handler, options) {/* only trigger when called */}\r\n\r\n    const my_gat = new MyGateway();\r\n    overwatch.gateway(\"my-gateway-name\",\r\n        (...params) => {my_gateway.action(...params);},\r\n    );\r\n```\r\n\r\nYou can insert contacts and create subscriptions to those contacts:\r\n```javascript\r\n    overwatch.contact(\"myemail@gmail.com\", \"my-email-gateway\", {...options});\r\n    overwatch.subscription(\"myemail@gmail.com\", \"my-appointment-task\");\r\n```","readmeFilename":"README.md"}