@backstage/integration
Version:
Helpers for managing integrations towards external systems
55 lines (49 loc) • 1.58 kB
JavaScript
;
var parseGitUrl = require('git-url-parse');
var helpers = require('../helpers.cjs.js');
var config = require('./config.cjs.js');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
var parseGitUrl__default = /*#__PURE__*/_interopDefaultCompat(parseGitUrl);
class BitbucketCloudIntegration {
constructor(integrationConfig) {
this.integrationConfig = integrationConfig;
}
static factory = ({
config: config$1
}) => {
const configs = config.readBitbucketCloudIntegrationConfigs(
config$1.getOptionalConfigArray("integrations.bitbucketCloud") ?? []
);
return helpers.basicIntegrations(
configs.map((c) => new BitbucketCloudIntegration(c)),
(i) => i.config.host
);
};
get type() {
return "bitbucketCloud";
}
get title() {
return this.integrationConfig.host;
}
get config() {
return this.integrationConfig;
}
resolveUrl(options) {
const resolved = helpers.defaultScmResolveUrl(options);
if (options.lineNumber) {
const url = new URL(resolved);
url.hash = `lines-${options.lineNumber}`;
return url.toString();
}
return resolved;
}
resolveEditUrl(url) {
const urlData = parseGitUrl__default.default(url);
const editUrl = new URL(url);
editUrl.searchParams.set("mode", "edit");
editUrl.searchParams.set("at", urlData.ref);
return editUrl.toString();
}
}
exports.BitbucketCloudIntegration = BitbucketCloudIntegration;
//# sourceMappingURL=BitbucketCloudIntegration.cjs.js.map