UNPKG

@csermet/multiprovider

Version:

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

81 lines (80 loc) 3.38 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"); const generateArns_1 = require("../../utils/generateArns"); /** * Route53 Record */ exports.default = ({ service: record, data, }) => { const connections = []; const { HostedZoneId: Id, Name: name, Type: type, AliasTarget: alias, SetIdentifier: identifier = '', } = record; const hostedZoneId = ids_1.getHostedZoneId(Id); const id = ids_1.getRecordId({ hostedZoneId, name, type, identifier }); /** * Find ELBs * related to this Record */ const elbs = flatMap_1.default(data.find(({ name: serviceName }) => serviceName === services_1.default.elb)?.data) || []; if (elbs && alias?.HostedZoneId) { const elbsInRegion = elbs.filter(({ CanonicalHostedZoneNameID: hostedZoneNameId }) => hostedZoneNameId === alias?.HostedZoneId); if (!isEmpty_1.default(elbsInRegion)) { for (const instance of elbsInRegion) { const { LoadBalancerName: lbName, region: elbRegion, account: elbAccount, } = instance; connections.push({ id: generateArns_1.elbArn({ region: elbRegion, account: elbAccount, name: lbName }), resourceType: services_1.default.elb, relation: 'child', field: 'elb', }); } } } /** * Find ALBs * related to this Record */ const albs = flatMap_1.default(data.find(({ name: serviceName }) => serviceName === services_1.default.alb)?.data) || []; if (albs && alias?.HostedZoneId) { const albsInRegion = albs.filter(({ CanonicalHostedZoneId }) => CanonicalHostedZoneId === alias?.HostedZoneId); if (!isEmpty_1.default(albsInRegion)) { for (const instance of albsInRegion) { const { LoadBalancerArn: arn } = instance; connections.push({ id: arn, resourceType: services_1.default.alb, relation: 'child', field: 'alb', }); } } } /** * Find APIGWs * related to this Record */ const restApis = flatMap_1.default(data.find(({ name: serviceName }) => serviceName === services_1.default.apiGatewayRestApi)?.data) || []; if (!isEmpty_1.default(restApis)) { const restApisInRegion = restApis.filter(({ domainNames }) => domainNames.find(dn => name.includes(dn))); if (!isEmpty_1.default(restApisInRegion)) { for (const instance of restApisInRegion) { const { id: restApiId } = instance; connections.push({ id: restApiId, resourceType: services_1.default.apiGatewayRestApi, relation: 'child', field: 'restApi', }); } } } const recordResult = { [id]: connections, }; return recordResult; };