@backstage/integration
Version:
Helpers for managing integrations towards external systems
49 lines (46 loc) • 1.36 kB
JavaScript
import parseGitUrl from 'git-url-parse';
import { basicIntegrations, defaultScmResolveUrl } from '../helpers.esm.js';
import { readBitbucketCloudIntegrationConfigs } from './config.esm.js';
class BitbucketCloudIntegration {
constructor(integrationConfig) {
this.integrationConfig = integrationConfig;
}
static factory = ({
config
}) => {
const configs = readBitbucketCloudIntegrationConfigs(
config.getOptionalConfigArray("integrations.bitbucketCloud") ?? []
);
return 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 = 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(url);
const editUrl = new URL(url);
editUrl.searchParams.set("mode", "edit");
editUrl.searchParams.set("at", urlData.ref);
return editUrl.toString();
}
}
export { BitbucketCloudIntegration };
//# sourceMappingURL=BitbucketCloudIntegration.esm.js.map