@backstage/integration
Version:
Helpers for managing integrations towards external systems
76 lines (72 loc) • 2.88 kB
JavaScript
;
var CachedAzureDevOpsCredentialsProvider = require('./CachedAzureDevOpsCredentialsProvider.cjs.js');
var identity = require('@azure/identity');
class DefaultAzureDevOpsCredentialsProvider {
constructor(providers) {
this.providers = providers;
}
static fromIntegrations(integrations) {
const providers = integrations.azure.list().reduce((acc, integration) => {
integration.config.credentials?.forEach((credential) => {
if (credential.organizations === void 0 || credential.organizations.length === 0) {
if (acc.get(integration.config.host) === void 0) {
acc.set(
integration.config.host,
CachedAzureDevOpsCredentialsProvider.CachedAzureDevOpsCredentialsProvider.fromAzureDevOpsCredential(
credential
)
);
}
} else {
const provider = CachedAzureDevOpsCredentialsProvider.CachedAzureDevOpsCredentialsProvider.fromAzureDevOpsCredential(
credential
);
credential.organizations?.forEach((organization) => {
acc.set(`${integration.config.host}/${organization}`, provider);
});
}
});
if (integration.config.host === "dev.azure.com" && acc.get(integration.config.host) === void 0) {
acc.set(
integration.config.host,
CachedAzureDevOpsCredentialsProvider.CachedAzureDevOpsCredentialsProvider.fromTokenCredential(
new identity.DefaultAzureCredential()
)
);
}
return acc;
}, /* @__PURE__ */ new Map());
return new DefaultAzureDevOpsCredentialsProvider(providers);
}
forAzureDevOpsServerOrganization(url) {
const parts = url.pathname.split("/").filter((part) => part !== "");
if (url.host !== "dev.azure.com" && parts.length > 0) {
if (parts[0] !== "tfs") {
return this.providers.get(`${url.host}/${parts[0]}`);
} else if (parts[0] === "tfs" && parts.length > 1) {
return this.providers.get(`${url.host}/${parts[1]}`);
}
}
return void 0;
}
forAzureDevOpsOrganization(url) {
const parts = url.pathname.split("/").filter((part) => part !== "");
if (url.host === "dev.azure.com" && parts.length > 0) {
return this.providers.get(`${url.host}/${parts[0]}`);
}
return void 0;
}
forHost(url) {
return this.providers.get(url.host);
}
async getCredentials(opts) {
const url = new URL(opts.url);
const provider = this.forAzureDevOpsOrganization(url) ?? this.forAzureDevOpsServerOrganization(url) ?? this.forHost(url);
if (provider === void 0) {
return void 0;
}
return provider.getCredentials(opts);
}
}
exports.DefaultAzureDevOpsCredentialsProvider = DefaultAzureDevOpsCredentialsProvider;
//# sourceMappingURL=DefaultAzureDevOpsCredentialsProvider.cjs.js.map