UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

75 lines (74 loc) 3.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const services_1 = __importDefault(require("../../enums/services")); const regions_1 = require("../../enums/regions"); /** * Cognito Identity Pool */ exports.default = ({ service: identityPool, data, region, }) => { const connections = []; const { IdentityPoolId: id, identityPoolRoles, SamlProviderARNs = [], OpenIdConnectProviderARNs = [], } = identityPool; /** * Find related IAM Roles */ const roles = data.find(({ name }) => name === services_1.default.iamRole); const iamRoleArns = Object.values(identityPoolRoles?.Roles || {}); if (roles?.data?.[regions_1.globalRegionName]) { const dataAtRegion = roles.data[regions_1.globalRegionName].filter(role => iamRoleArns.includes(role.Arn)); if (!lodash_1.isEmpty(dataAtRegion)) { for (const instance of dataAtRegion) { const { Arn: arn } = instance; connections.push({ id: arn, resourceType: services_1.default.iamRole, relation: 'child', field: 'iamRoles', }); } } } /** * Find iamSamlProvider * related to this cognito identity pool */ const iamSamlProviders = data.find(({ name }) => name === services_1.default.iamSamlProvider); if (iamSamlProviders?.data?.[region]) { const dataInRegion = iamSamlProviders.data[region].filter(provider => SamlProviderARNs.includes(provider.arn)); if (!lodash_1.isEmpty(dataInRegion)) { for (const provider of dataInRegion) { connections.push({ id: provider.KeyId, resourceType: services_1.default.iamSamlProvider, relation: 'child', field: 'iamSamlProviders', }); } } } /** * Find iamOpenIdConnectProvider * related to this cognito identity pool */ const iamOpenIdConnectProviders = data.find(({ name }) => name === services_1.default.iamOpenIdConnectProvider); if (iamOpenIdConnectProviders?.data?.[region]) { const dataInRegion = iamOpenIdConnectProviders.data[region].filter(provider => OpenIdConnectProviderARNs.includes(provider.arn)); if (!lodash_1.isEmpty(dataInRegion)) { for (const provider of dataInRegion) { connections.push({ id: provider.KeyId, resourceType: services_1.default.iamOpenIdConnectProvider, relation: 'child', field: 'iamOpenIdConnectProviders', }); } } } const identityPoolResult = { [id]: connections, }; return identityPoolResult; };