whole_func_string: function KJU(configuration) {
    var self = this
      , option;
  
    // defaults
    this.limit = 500;
    this.ms = 100;
    this.interval = 15000;
    this.warnings = true;
    this.enabled = true;
    this.recover = true;
    this.dump = true;
    this.path = process.cwd() + '/';
    this.name = 'node_kju_backup.{sequence}.kju';
  
    // apply the configuration
    for (option in configuration)
      this[option] = configuration[option];
  
    // these values should not be configured
    this.buffer = [];
    this.length = 0;
  
    this.drained = 0;
    this.processed = 0;
    this.since = Date.now();
  
    this.minimum = this.interval / 2;
    this.maximum = this.interval * 2;
  
    // initialize the event emitter
    EventEmitter2.call(this, { wildcard: true });
  
    if (this.recover) this.recovery();
    if (this.enabled) this.enable();
  
    // make sure our backup path exists
    fsExists(this.path, function existing(exists) {
      if (!exists) {
        return self.emit('error', new Error(self.path + ' does not exist.'));
      }
  
      if (self.path[self.path.length - 1] !== '/') {
        return self.emit('error', new Error(self.path + ' should end with a slash'));
      }
    });
  }
func_code_string: function KJU(configuration) {
    var self = this
      , option;
  
    // defaults
    this.limit = 500;
    this.ms = 100;
    this.interval = 15000;
    this.warnings = true;
    this.enabled = true;
    this.recover = true;
    this.dump = true;
    this.path = process.cwd() + '/';
    this.name = 'node_kju_backup.{sequence}.kju';
  
    // apply the configuration
    for (option in configuration)
      this[option] = configuration[option];
  
    // these values should not be configured
    this.buffer = [];
    this.length = 0;
  
    this.drained = 0;
    this.processed = 0;
    this.since = Date.now();
  
    this.minimum = this.interval / 2;
    this.maximum = this.interval * 2;
  
    // initialize the event emitter
    EventEmitter2.call(this, { wildcard: true });
  
    if (this.recover) this.recovery();
    if (this.enabled) this.enable();
  
    // make sure our backup path exists
    fsExists(this.path, function existing(exists) {
      if (!exists) {
        return self.emit('error', new Error(self.path + ' does not exist.'));
      }
  
      if (self.path[self.path.length - 1] !== '/') {
        return self.emit('error', new Error(self.path + ' should end with a slash'));
      }
    });
  }
func_documentation_string: Initialize our queue.
  
  Options:
  
  - `limit` Limit of the buffer. Defaults to 500 items.
  - `ms` Amount of milliseconds to increase or decrease the interval. Defaults
  to 100 ms
  - `interval` Baseline interval for queue, this is where the minimum and
  maximum levels are based off.  Defaults to 15000 ms
  - `warnings` When enabled we will emit events when our maximum or minimum
  interval has been reached. Defaults to true.
  - `enabled` Enable the queue by default. Defaults to true.
  - `recover` Enable recovery of old `.kju` storage files so no data is lost
  when the process is exiting. Defaults to true.
  - `dump` In addition to the storage of `.kju` files also dump JSON to
  stderr. Defaults to false.
  - `path` Location where the `.kju` recover files are stored. Defaults to
  the current working directory.
  - `name` Name of the `.kju` recover files.
  
  @constructor
  @param {Object} configuration kju configuration
  @api public