UNPKG

@csermet/multiprovider

Version:

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

83 lines (82 loc) 3.26 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 generateArns_1 = require("../../utils/generateArns"); const services_1 = __importDefault(require("../../enums/services")); exports.default = ({ service, data, region, account, }) => { const { id } = service; const connections = []; /** * Find Resources */ const resources = data.find(({ name }) => name === services_1.default.apiGatewayResource); if (resources?.data?.[region]) { const resourcesInRegion = resources.data[region].filter(({ restApiId }) => restApiId === id); if (!lodash_1.isEmpty(resourcesInRegion)) { for (const resource of resourcesInRegion) { const { id } = resource; connections.push({ id, resourceType: services_1.default.apiGatewayResource, relation: 'child', field: 'resources', }); } } } /** * Find Stages */ const stages = data.find(({ name }) => name === services_1.default.apiGatewayStage); if (stages?.data?.[region]) { const stagesInRegion = stages.data[region].filter(({ restApiId }) => restApiId === id); if (!lodash_1.isEmpty(stagesInRegion)) { for (const stage of stagesInRegion) { const { stageName: name, region: stageRegion, restApiId } = stage; const arn = generateArns_1.apiGatewayStageArn({ restApiArn: generateArns_1.apiGatewayRestApiArn({ restApiArn: generateArns_1.apiGatewayArn({ region: stageRegion }), id: restApiId, }), name, }); connections.push({ id: arn, resourceType: services_1.default.apiGatewayStage, relation: 'child', field: 'stages', }); } } } /** * Find Domain Names */ const domainNames = data.find(({ name }) => name === services_1.default.apiGatewayDomainName); if (domainNames?.data?.[region]) { const domainNamesInRegion = domainNames.data[region].filter(({ ApiMappings }) => ApiMappings.find(m => m.ApiId === id)); if (!lodash_1.isEmpty(domainNamesInRegion)) { for (const domain of domainNamesInRegion) { const { DomainName: domainName, region: domainRegion } = domain; const arn = generateArns_1.domainNameArn({ region: domainRegion, account, name: domainName, }); connections.push({ id: arn, resourceType: services_1.default.apiGatewayDomainName, relation: 'child', field: 'domainNames', }); } } } const restApiResult = { [id]: connections, }; return restApiResult; };