UNPKG

@backstage/integration

Version:

Helpers for managing integrations towards external systems

56 lines (53 loc) 1.6 kB
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