whole_func_string: function Publisher(AWSConfig, cacheOptions) {
    this.config = AWSConfig;
    this.client = new AWS.S3(AWSConfig);
    var bucket = this.config.params.Bucket;
  
    if (!bucket) {
      throw new Error('Missing `params.Bucket` config value.');
    }
  
    // init Cache file
    this._cacheFile =
      cacheOptions && cacheOptions.cacheFileName
        ? cacheOptions.cacheFileName
        : '.awspublish-' + bucket;
  
    // load cache
    try {
      this._cache = JSON.parse(fs.readFileSync(this.getCacheFilename(), 'utf8'));
    } catch (err) {
      this._cache = {};
    }
  }
func_code_string: function Publisher(AWSConfig, cacheOptions) {
    this.config = AWSConfig;
    this.client = new AWS.S3(AWSConfig);
    var bucket = this.config.params.Bucket;
  
    if (!bucket) {
      throw new Error('Missing `params.Bucket` config value.');
    }
  
    // init Cache file
    this._cacheFile =
      cacheOptions && cacheOptions.cacheFileName
        ? cacheOptions.cacheFileName
        : '.awspublish-' + bucket;
  
    // load cache
    try {
      this._cache = JSON.parse(fs.readFileSync(this.getCacheFilename(), 'utf8'));
    } catch (err) {
      this._cache = {};
    }
  }
func_documentation_string: create a new Publisher
  @param {Object} S3 options as per http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#constructor-property
  @api private