code: function Names(options) {
    if (!this) return new Names(options);
  
    options = options || {};
  
    this.url = options.url || 'https://raw.githubusercontent.com/polyhack/npm-github-data/master/allpackages.json';
    this.interval = +options.interval || 1000 * 60 * 60;
    this.suffix = options.suffix || '\xff';
    this.db = level(options.db || path.join(__dirname, 'names.db'), {
      valueEncoding: 'utf-8'
    });
  
    if (options.refresh) this.refresh();
    this.setInterval = setInterval(this.refresh.bind(this), this.interval);
  }
docs: Names: Autocomplete for npm package names through leveldb #buzzwordbingo.
  
  Options:
  
  - url: The API endpoint where we can get the package data from. It should
  return an array with objects contain a name and description.
  - interval: Refresh interval of the data.
  - suffix: Suffix key which will be appended to key names so we can get
  a range.
  - db: The location of the database.
  
  @constructor
  @param {Object} options Configuration of the names.
  @api private