1.2.0 • Published 6 years ago

aggregate-base v1.2.0

Weekly downloads
7
License
MIT
Repository
github
Last release
6 years ago

aggregate-base

Base class for aggregate operation, sush as http request, write file.

NPM version build status Test coverage David deps Known Vulnerabilities NPM download

Usage

npm i aggregate-base --save

You can wrap Class for aggregate operation, if you have a Logger that write log to file.

class Logger {
  info(log) {
    this.writeToFile(log);
  }

  writeToFile() {
    // your implementation
  }
}

However, it has bad performance that write file system every function call, so you can use this module to merge the operations.

const { wrap } = require('aggregate-base');

class Logger {
  info(log) {
    this.writeToFile(log);
  }

  flush(logs) {
    this.writeToFile(logs.join('\n'));
  }

  writeToFile() {
    // your implementation
  }
}

const WrapLogger = wrap(Logger, {
  interval: 1000,
  intercept: 'info',
  flush: 'flush',
});

The module will create a loop (configured by interval), it will collect data by intercepting the specified intercept method, and call flush method after interval with all collected data.

Options

  • interval: the time between flush
  • intercept: the intercept method name of class, the method will not be run.
  • interceptTransform: the function that can tranform the arguments of intercept method, if it return false, it won't cache this data
  • flush: the flush method name of class.
  • close: the close method name of class, it should be a async function.

License

MIT