@backstage/integration
Version:
Helpers for managing integrations towards external systems
56 lines (53 loc) • 1.6 kB
JavaScript
import { basicIntegrations, defaultScmResolveUrl } from '../helpers.esm.js';
import { readAwsCodeCommitIntegrationConfigs } from './config.esm.js';
class AwsCodeCommitIntegration {
constructor(integrationConfig) {
this.integrationConfig = integrationConfig;
}
static factory = ({
config
}) => {
const configs = readAwsCodeCommitIntegrationConfigs(
config.getOptionalConfigArray("integrations.awsCodeCommit") ?? []
);
return basicIntegrations(
configs.map((c) => new AwsCodeCommitIntegration(c)),
(i) => i.config.host
);
};
get type() {
return "awsCodeCommit";
}
get config() {
return this.integrationConfig;
}
get title() {
return this.integrationConfig.host;
}
resolveUrl(options) {
const resolved = defaultScmResolveUrl(options);
return resolved;
}
resolveEditUrl(url) {
const parsedUrl = new URL(url);
const pathMatch = parsedUrl.pathname.match(
/^\/codesuite\/codecommit\/repositories\/([^\/]+)\//
);
if (!pathMatch) {
throw new Error(``);
}
const [, repositoryName] = pathMatch;
return replaceCodeCommitUrlType(url, repositoryName);
}
}
function replaceCodeCommitUrlType(url, repositoryName, type) {
const newString = `files/edit` ;
return url.replace(
new RegExp(
`/codesuite/codecommit/repositories/${repositoryName}/(browse|files/edit)/`
),
`/codesuite/codecommit/repositories/${repositoryName}/${newString}/`
);
}
export { AwsCodeCommitIntegration, replaceCodeCommitUrlType };
//# sourceMappingURL=AwsCodeCommitIntegration.esm.js.map