@arnaldo.badin/overwatch

1.0.0 • Public • Published

Overwatch

Simple module that helps you to control and group-up external tasks.

Interface

  • overwatch.start();
  • overwatch.stop();
  • overwatch.task(name, action, schedule);
  • overwatch.gateway(name, action);
  • overwatch.contact(contact, gateway, additional = {});
  • overwatch.subscription(contact, task);
  • overwatch.trigger(task, options);
  • overwatch.notify(gateway, options);

Task

Can 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). Take an example of its declaration using classes:

    const MyTask = function() {
        /* ... do many things here */
    }
    MyTask.prototype.action = function(handler, options) {/* only trigger when called */}
    MyTask.prototype.schedule = function(handler, options) {/* trigger on an interval */}

    const my_task = new MyTask();
    overwatch.task("my-task-name",
        (...params) => {my_task.action(...params);},
        (...params) => {my_task.schedule(...params);}
    );

Events (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. Handler itself is a link between the particular task and the gateways available (including its contacts).

    /* action/schedule event */
    (handler, options) => {
        /* get all task's contacts (using subscriptions, later shown) */
        const contacts = handler.contacts();
        if (!contacts) return false;

        for (let k in contacts) {
            const contact = contacts[k];
            const message = `Hello ${contact.name}. Do not forget you appointment!`;
            /* will call gateway.action -- need to be previous declared -- */
            handler.notify(contact.gateway, {contact : contact.contact, message});
        }
        return true;
    }

Gateway

Can create gateways to manage notifications. Each gateway will have its own implementations and contacts list. Take an example of its declaration using classes:

    const MyGateway = function() {
        /* ... do many things here */
    }
    MyGateway.prototype.action = function(handler, options) {/* only trigger when called */}

    const my_gat = new MyGateway();
    overwatch.gateway("my-gateway-name",
        (...params) => {my_gateway.action(...params);},
    );

You can insert contacts and create subscriptions to those contacts:

    overwatch.contact("myemail@gmail.com", "my-email-gateway", {...options});
    overwatch.subscription("myemail@gmail.com", "my-appointment-task");

Readme

Keywords

none

Package Sidebar

Install

npm i @arnaldo.badin/overwatch

Weekly Downloads

2

Version

1.0.0

License

ISC

Unpacked Size

17.3 kB

Total Files

11

Last publish

Collaborators

  • arnaldo.badin