text: "use strict";
  
  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.BintrayProvider = void 0;
  
  function _bluebirdLst() {
    const data = require("bluebird-lst");
  
    _bluebirdLst = function () {
      return data;
    };
  
    return data;
  }
  
  function _builderUtilRuntime() {
    const data = require("builder-util-runtime");
  
    _builderUtilRuntime = function () {
      return data;
    };
  
    return data;
  }
  
  function _bintray() {
    const data = require("builder-util-runtime/out/bintray");
  
    _bintray = function () {
      return data;
    };
  
    return data;
  }
  
  function _url() {
    const data = require("url");
  
    _url = function () {
      return data;
    };
  
    return data;
  }
  
  function _main() {
    const data = require("./main");
  
    _main = function () {
      return data;
    };
  
    return data;
  }
  
  function _Provider() {
    const data = require("./Provider");
  
    _Provider = function () {
      return data;
    };
  
    return data;
  }
  
  class BintrayProvider extends _main().Provider {
    constructor(configuration, httpExecutor) {
      super(httpExecutor);
      this.client = new (_bintray().BintrayClient)(configuration, httpExecutor, new (_builderUtilRuntime().CancellationToken)());
      this.baseUrl = (0, _main().newBaseUrl)(`https://dl.bintray.com/${this.client.owner}/${this.client.repo}`);
    }
  
    setRequestHeaders(value) {
      super.setRequestHeaders(value);
      this.client.setRequestHeaders(value);
    }
  
    getLatestVersion() {
      var _this = this;
  
      return (0, _bluebirdLst().coroutine)(function* () {
        try {
          const data = yield _this.client.getVersion("_latest");
          const channelFilename = (0, _main().getChannelFilename)((0, _main().getDefaultChannelName)());
          const files = yield _this.client.getVersionFiles(data.name);
          const channelFile = files.find(it => it.name.endsWith(`_${channelFilename}`) || it.name.endsWith(`-${channelFilename}`));
  
          if (channelFile == null) {
            // noinspection ExceptionCaughtLocallyJS
            throw (0, _builderUtilRuntime().newError)(`Cannot find channel file "${channelFilename}", existing files:\n${files.map(it => JSON.stringify(it, null, 2)).join(",\n")}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND");
          }
  
          const channelFileUrl = new (_url().URL)(`https://dl.bintray.com/${_this.client.owner}/${_this.client.repo}/${channelFile.name}`);
          return (0, _Provider().parseUpdateInfo)((yield _this.httpRequest(channelFileUrl)), channelFilename, channelFileUrl);
        } catch (e) {
          if ("statusCode" in e && e.statusCode === 404) {
            throw (0, _builderUtilRuntime().newError)(`No latest version, please ensure that user, package and repository correctly configured. Or at least one version is published. ${e.stack || e.message}`, "ERR_UPDATER_LATEST_VERSION_NOT_FOUND");
          }
  
          throw e;
        }
      })();
    }
  
    resolveFiles(updateInfo) {
      return (0, _Provider().resolveFiles)(updateInfo, this.baseUrl);
    }
  
  }
  
  exports.BintrayProvider = BintrayProvider;
  //# sourceMappingURL=BintrayProvider.js.map