warm

1.0.2 • Public • Published

warm

Build Status via Travis CI NPM version Coverage Status

This node.js module is useful if you want to load other modules and be sure all warming code is executed before you continue.

Quick usage

Install module into own project

# npm install --save warm

Create new class and call .parallel method

Warm = requre('warm');
 
new Warm('./database', './redis').parallel(function (err) {
  if(err) { throw err; }
  console.log('Initial code was executed in all described modules');
});

Modules database and redis should return special method (.init by default), which resolve promise or call callback on finish. See Modules

Options

You can pass additional options like plain object: new Warm({ ... }, 'module1', ...):

Name Default Description
.expect promise will init method inform about finish with promise (reject/resolve it), or will fire callback with error (expect: 'callback')
.path '' prefix for requiring modules
.strict true should return error if init method not found in module
.init init init method name

Samples

Warm = requre('warm');
 
// load modules in array or additional parameters with options
options1 = {
  expect: 'callback'
}
options2 = {
  strict: true
}
new Warm(options1, ['./module1', './module2'], './module3', options2).parallel(console.log);
 
// execute already loaded module
new Warm(require('./module3')).parallel(console.log);
 
// handle promise
new Warm('./module1').parallel().then(function () {
  console.log('loaded');
}).catch(function (err) {
  console.log('error:', err);
})

Modules

Module should contain method .init (or other, described in options) which will return promise or file callback. Example:

module.exports = function () {
  return 'i will not fire';
};
module.exports.init = function (callback) {
  setTimeout(function () {
    console.log('>>> i will fire durning warming');
    callback();
  }, 100);
};

Additional samples can be found in test folder

Package Sidebar

Install

npm i warm

Weekly Downloads

0

Version

1.0.2

License

Apache-2.0

Last publish

Collaborators

  • vkfont