UNPKG

@backstage/integration

Version:

Helpers for managing integrations towards external systems

63 lines (59 loc) 1.88 kB
'use strict'; var helpers = require('../helpers.cjs.js'); var AzureUrl = require('./AzureUrl.cjs.js'); var config = require('./config.cjs.js'); class AzureIntegration { constructor(integrationConfig) { this.integrationConfig = integrationConfig; } static factory = ({ config: config$1 }) => { const configs = config.readAzureIntegrationConfigs( config$1.getOptionalConfigArray("integrations.azure") ?? [] ); return helpers.basicIntegrations( configs.map((c) => new AzureIntegration(c)), (i) => i.config.host ); }; get type() { return "azure"; } get title() { return this.integrationConfig.host; } get config() { return this.integrationConfig; } /* * Azure repo URLs on the form with a `path` query param are treated specially. * * Example base URL: https://dev.azure.com/organization/project/_git/repository?path=%2Fcatalog-info.yaml */ resolveUrl(options) { const { url, base } = options; if (helpers.isValidUrl(url)) { return url; } try { const azureUrl = AzureUrl.AzureUrl.fromRepoUrl(base); const newUrl = new URL(base); const mockBaseUrl = new URL(`https://a.com${azureUrl.getPath() ?? ""}`); const updatedPath = new URL(url, mockBaseUrl).pathname; newUrl.searchParams.set("path", updatedPath); if (options.lineNumber) { newUrl.searchParams.set("line", String(options.lineNumber)); newUrl.searchParams.set("lineEnd", String(options.lineNumber + 1)); newUrl.searchParams.set("lineStartColumn", "1"); newUrl.searchParams.set("lineEndColumn", "1"); } return newUrl.toString(); } catch { return new URL(url, base).toString(); } } resolveEditUrl(url) { return url; } } exports.AzureIntegration = AzureIntegration; //# sourceMappingURL=AzureIntegration.cjs.js.map