UNPKG

@csermet/multiprovider

Version:

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

66 lines (65 loc) 2.45 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const isEmpty_1 = __importDefault(require("lodash/isEmpty")); const flatMap_1 = __importDefault(require("lodash/flatMap")); const services_1 = __importDefault(require("../../enums/services")); const ids_1 = require("../../utils/ids"); /** * Route53 Hosted Zone */ exports.default = ({ service: hostedZone, data, }) => { const connections = []; const { Id, VPCs = [] } = hostedZone; const id = ids_1.getHostedZoneId(Id); /** * Find Records * related to this Hosted Zone */ const records = data.find(({ name }) => name === services_1.default.route53Record); if (records?.data?.global) { const recordsFound = records.data.global.filter(({ HostedZoneId }) => HostedZoneId.includes(id)); if (!isEmpty_1.default(recordsFound)) { for (const record of recordsFound) { const hostedZoneId = ids_1.getHostedZoneId(record.HostedZoneId); const recordId = ids_1.getRecordId({ hostedZoneId, name: record.Name, type: record.Type, identifier: record.SetIdentifier || '', }); connections.push({ id: recordId, resourceType: services_1.default.route53Record, relation: 'child', field: 'route53Record', }); } } } /** * Find VPCs * related to this Hosted zone */ const vpcs = flatMap_1.default(data.find(({ name: serviceName }) => serviceName === services_1.default.vpc)?.data) || []; const vpcIds = VPCs.map(({ VPCId }) => VPCId); if (vpcs && VPCs.length > 0) { const associatedVPCs = vpcs.filter(({ VpcId }) => vpcIds.includes(VpcId)); if (!isEmpty_1.default(associatedVPCs)) { for (const vpc of associatedVPCs) { connections.push({ id: vpc.VpcId, resourceType: services_1.default.vpc, relation: 'child', field: 'vpc', }); } } } const hostedZoneResult = { [id]: connections, }; return hostedZoneResult; };