UNPKG

@backstage/integration

Version:

Helpers for managing integrations towards external systems

50 lines (46 loc) 1.72 kB
'use strict'; var identity = require('@azure/identity'); class DefaultAzureCredentialsManager { constructor(configProviders) { this.configProviders = configProviders; this.cachedCredentials = /* @__PURE__ */ new Map(); } cachedCredentials; /** * Creates an instance of DefaultAzureCredentialsManager from a Backstage integration registry. */ static fromIntegrations(integrations) { const configProviders = integrations.azureBlobStorage.list().reduce((acc, integration) => { acc.set( integration.config.accountName || "default", integration.config ); return acc; }, /* @__PURE__ */ new Map()); return new DefaultAzureCredentialsManager(configProviders); } createCredential(config) { if (config.aadCredential && config.aadCredential.clientId && config.aadCredential.clientSecret && config.aadCredential.tenantId) { return new identity.ClientSecretCredential( config.aadCredential.tenantId, config.aadCredential.clientId, config.aadCredential.clientSecret ); } return new identity.DefaultAzureCredential(); } async getCredentials(accountName) { if (this.cachedCredentials.has(accountName)) { return this.cachedCredentials.get(accountName); } const config = this.configProviders.get(accountName); if (!config) { throw new Error(`No configuration found for account: ${accountName}`); } const credential = this.createCredential(config); this.cachedCredentials.set(accountName, credential); return credential; } } exports.DefaultAzureCredentialsManager = DefaultAzureCredentialsManager; //# sourceMappingURL=DefaultAzureCredentialsProvider.cjs.js.map