code: function Persist(cacheFile, keys, log) {
    var pdata = (cacheFile) ? JSON.parse(fs.readFileSync(cacheFile, 'utf8')) : {}
      , guid = makeGuid(keys);
  
    pdata[guid] = pdata[guid] || {};
  
    // this is the only member that needs access to the full object and the file
    this.save = function () {
      if (cacheFile) {
        fs.writeFileSync(cacheFile, JSON.stringify(pdata));
      }
    };
  
    // members need only know their config object
    this.cfg = pdata[guid];
    this.cfg.opts = this.cfg.opts || {};
  
    // was a logger passed down?
    this.log = (type.isFunction(log)) ? log : noop;
  }
docs: Persist class
  
  @[in] file - path to where persist data is stored
  @[in] keys - list of strings to scramble together with script load path as an internal guid
  @[in] log  - log function (such as logule.get('debug') || console.log) for printing