"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createClient = exports.isUrlProbablySupportMultiRangeRequests = void 0; const builder_util_runtime_1 = require("builder-util-runtime"); const BitbucketProvider_1 = require("./providers/BitbucketProvider"); const GenericProvider_1 = require("./providers/GenericProvider"); const GitHubProvider_1 = require("./providers/GitHubProvider"); const KeygenProvider_1 = require("./providers/KeygenProvider"); const PrivateGitHubProvider_1 = require("./providers/PrivateGitHubProvider"); function isUrlProbablySupportMultiRangeRequests(url) { return !url.includes("s3.amazonaws.com"); } exports.isUrlProbablySupportMultiRangeRequests = isUrlProbablySupportMultiRangeRequests; function createClient(data, updater, runtimeOptions) { // noinspection SuspiciousTypeOfGuard if (typeof data === "string") { throw builder_util_runtime_1.newError("Please pass PublishConfiguration object", "ERR_UPDATER_INVALID_PROVIDER_CONFIGURATION"); } const provider = data.provider; switch (provider) { case "github": { const githubOptions = data; const token = (githubOptions.private ? process.env["GH_TOKEN"] || process.env["GITHUB_TOKEN"] : null) || githubOptions.token; if (token == null) { return new GitHubProvider_1.GitHubProvider(githubOptions, updater, runtimeOptions); } else { return new PrivateGitHubProvider_1.PrivateGitHubProvider(githubOptions, updater, token, runtimeOptions); } } case "bitbucket": return new BitbucketProvider_1.BitbucketProvider(data, updater, runtimeOptions); case "keygen": return new KeygenProvider_1.KeygenProvider(data, updater, runtimeOptions); case "s3": case "spaces": return new GenericProvider_1.GenericProvider({ provider: "generic", url: builder_util_runtime_1.getS3LikeProviderBaseUrl(data), channel: data.channel || null, }, updater, { ...runtimeOptions, // https://github.com/minio/minio/issues/5285#issuecomment-350428955 isUseMultipleRangeRequest: false, }); case "generic": { const options = data; return new GenericProvider_1.GenericProvider(options, updater, { ...runtimeOptions, isUseMultipleRangeRequest: options.useMultipleRangeRequest !== false && isUrlProbablySupportMultiRangeRequests(options.url), }); } case "custom": { const options = data; const constructor = options.updateProvider; if (!constructor) { throw builder_util_runtime_1.newError("Custom provider not specified", "ERR_UPDATER_INVALID_PROVIDER_CONFIGURATION"); } return new constructor(options, updater, runtimeOptions); } default: throw builder_util_runtime_1.newError(`Unsupported provider: ${provider}`, "ERR_UPDATER_UNSUPPORTED_PROVIDER"); } } exports.createClient = createClient; //# sourceMappingURL=providerFactory.js.map