UNPKG

@backstage/integration

Version:

Helpers for managing integrations towards external systems

70 lines (67 loc) 2.32 kB
'use strict'; const AZURE_HOST = "blob.core.windows.net"; function readAzureBlobStorageIntegrationConfig(config) { const endpoint = config.getOptionalString("endpoint"); const accountName = config.getString("accountName"); const accountKey = config.getOptionalString("accountKey")?.trim(); const sasToken = config.getOptionalString("sasToken")?.trim(); const connectionString = config.getOptionalString("connectionString")?.trim(); const endpointSuffix = config.getOptionalString("endpointSuffix")?.trim(); let host; let pathname; if (endpoint) { try { const url = new URL(endpoint); host = url.host; pathname = url.pathname; } catch { throw new Error( `invalid azureBlobStorage integration config, endpoint '${endpoint}' is not a valid URL` ); } if (pathname !== "/") { throw new Error( `invalid azureBlobStorage integration config, endpoints cannot contain path, got '${endpoint}'` ); } } else { host = AZURE_HOST; } const aadCredential = config.has("aadCredential") ? { clientId: config.getString("aadCredential.clientId"), tenantId: config.getString("aadCredential.tenantId"), clientSecret: config.getString("aadCredential.clientSecret")?.trim() } : void 0; if (accountKey && sasToken) { throw new Error( `Invalid Azure Blob Storage config for ${accountName}: Both account key and SAS token cannot be used simultaneously.` ); } if (aadCredential && (accountKey || sasToken)) { throw new Error( `Invalid Azure Blob Storage config for ${accountName}: Cannot use both Azure AD credentials and account keys/SAS tokens for the same account.` ); } return { host, endpoint, accountName, accountKey, sasToken, connectionString, endpointSuffix, aadCredential }; } function readAzureBlobStorageIntegrationConfigs(configs) { const result = configs.map(readAzureBlobStorageIntegrationConfig); if (!result.some((c) => c.host === AZURE_HOST)) { result.push({ host: AZURE_HOST }); } return result; } exports.readAzureBlobStorageIntegrationConfig = readAzureBlobStorageIntegrationConfig; exports.readAzureBlobStorageIntegrationConfigs = readAzureBlobStorageIntegrationConfigs; //# sourceMappingURL=config.cjs.js.map