77 lines
1.9 KiB
JavaScript
77 lines
1.9 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.githubUrl = githubUrl;
|
||
|
exports.getS3LikeProviderBaseUrl = getS3LikeProviderBaseUrl;
|
||
|
|
||
|
/** @private */
|
||
|
function githubUrl(options, defaultHost = "github.com") {
|
||
|
return `${options.protocol || "https"}://${options.host || defaultHost}`;
|
||
|
}
|
||
|
|
||
|
function getS3LikeProviderBaseUrl(configuration) {
|
||
|
const provider = configuration.provider;
|
||
|
|
||
|
if (provider === "s3") {
|
||
|
return s3Url(configuration);
|
||
|
}
|
||
|
|
||
|
if (provider === "spaces") {
|
||
|
return spacesUrl(configuration);
|
||
|
}
|
||
|
|
||
|
throw new Error(`Not supported provider: ${provider}`);
|
||
|
}
|
||
|
|
||
|
function s3Url(options) {
|
||
|
let url;
|
||
|
|
||
|
if (options.endpoint != null) {
|
||
|
url = `${options.endpoint}/${options.bucket}`;
|
||
|
} else if (options.bucket.includes(".")) {
|
||
|
if (options.region == null) {
|
||
|
throw new Error(`Bucket name "${options.bucket}" includes a dot, but S3 region is missing`);
|
||
|
} // special case, see http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro
|
||
|
|
||
|
|
||
|
if (options.region === "us-east-1") {
|
||
|
url = `https://s3.amazonaws.com/${options.bucket}`;
|
||
|
} else {
|
||
|
url = `https://s3-${options.region}.amazonaws.com/${options.bucket}`;
|
||
|
}
|
||
|
} else if (options.region === "cn-north-1") {
|
||
|
url = `https://${options.bucket}.s3.${options.region}.amazonaws.com.cn`;
|
||
|
} else {
|
||
|
url = `https://${options.bucket}.s3.amazonaws.com`;
|
||
|
}
|
||
|
|
||
|
return appendPath(url, options.path);
|
||
|
}
|
||
|
|
||
|
function appendPath(url, p) {
|
||
|
if (p != null && p.length > 0) {
|
||
|
if (!p.startsWith("/")) {
|
||
|
url += "/";
|
||
|
}
|
||
|
|
||
|
url += p;
|
||
|
}
|
||
|
|
||
|
return url;
|
||
|
}
|
||
|
|
||
|
function spacesUrl(options) {
|
||
|
if (options.name == null) {
|
||
|
throw new Error(`name is missing`);
|
||
|
}
|
||
|
|
||
|
if (options.region == null) {
|
||
|
throw new Error(`region is missing`);
|
||
|
}
|
||
|
|
||
|
return appendPath(`https://${options.name}.${options.region}.digitaloceanspaces.com`, options.path);
|
||
|
}
|
||
|
// __ts-babel@6.0.4
|
||
|
//# sourceMappingURL=publishOptions.js.map
|