You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

strong-daemon

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

strong-daemon

Object wrapper for setInterval

1.0.1
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source
  • About
  • Installation
  • Examples
  • Documentation

About

  • Node.js object wrapper for setInterval.
  • It will help you remember about routine context.
  • No external dependencies.

Installation

Requires Node.js v4.8.7

$ npm install strong-daemon

Examples

  • Ordinary function:
const { StrongDaemon } = require('strong-daemon');
                                         
var daemon = new StrongDaemon(             
  102,                                   
  null,                                  
  () => { console.log('tick', 'tock') }  
);                                       
                                         
daemon.start(); // Will print 'tick' 'tock' every ~102 ms

..

/* (!) Note that multiple 'start' call without previous 'stop' will throw error */
daemon.start();     // First call made after ~102ms
daemon.start(false);// First call made after ~102ms
daemon.start(true); // First call made immediately;

..

daemon.start();
daemon.isRunning(); // true
daemon.stop();
daemon.isRunning(); // false
daemon.start();
  • Equivalent of above example
var daemon = new StrongDaemon(
  102,
  null,
  console.log,
  ['tick', 'tock']
);
  • Function that requires a caller context, because of this usage:
const worker = {
  data: {},
  updateData(source) {
    this.data = source.data;
  } 
}

var daemon = new StrongDaemon(
  102,
  worker,             /* So `this` will be handled properly on `updateData` call */
  worker.updateData,
  [data_source]
);

daemon.start();
  • Example error scenario:
const worker = {
  data: {},
  source: {...},
  
  updateData() {
    this.data = this.source.data()
  }
}

var daemon = new StrongDaemon(
  101,
  null,               /* `this.source` will be undefined while daemon will call `updateData` */
  worker.updateData
);

/* Error - `this.source` is undefined */
daemon.start();

Mocking for test purposes:

/* your-lib.js */
const { getInstance } = require('strong-daemon');

// :(
const non_mockable_daemon = new StrongDaemon(...args);

// :)
const mockable_daemon = getInstance(...args);
/* test-your-lib.js */
const D = require('strong-daemon');

D.getInstance = () => { return your_mock; }

Alternative way:

/* your-lib.js */
const { StrongDaemon, getClass } = require('strong-daemon');

const non_mockable_daemon = new StrongDaemon(...args)

const MockableStrongDaemon = getClass();
const mockable_daemon = new MockableStrongDaemon(...args);
/* test-your-lib.js */
const D = require('strong-daemon');

D.getClass = () => { return YourMock; }

Documentation

class StrongDaemon

  • constructor( interval_time, caller, task, task_args=[] )

    Arguments:

    • interval integer number - interval time of task call in milliseconds. Note this is not guarntee to call task every interval, it works exactly the same as setInterval(..).unref()
    • caller object | null - task's caller context (in case if task will use 'this' keyword)
    • task function - task that will be called every interval
    • [task_args] Array - list of arguments task will be called with.
  • start( immediate_call ) Start daemon.

    Arguments:

    • immediate_call - boolean, is task should be called immediately after start call. Default false.
  • stop() Stop daemon (can be resterted by calling start).

  • isRunning()

    Returns:

    • boolean, is daemon running
  • interval getter for provided interval_time

  • caller getter for provided caller

  • task getter for provided task

  • args getter for provided args ([] returned if not provided])

function getInstance

Provided for mocking purposes.

  • Arguments: @see class StrongDaemon constructor
  • Returns: instance of StrongDaemon.

function getClass

Provided for mocking purposes.

  • Arguments: no
  • Returns: StrongDaemon class.

Keywords

strong

FAQs

Package last updated on 05 Mar 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts