UNPKG

@csermet/multiprovider

Version:

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

69 lines (68 loc) 2.73 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const sdk_1 = require("@cloudgraph/sdk"); const translations_1 = __importDefault(require("../../properties/translations")); const generateArns_1 = require("../../utils/generateArns"); const format_1 = require("../../utils/format"); /** * NACL */ exports.default = ({ service: rawData, account, region, }) => { const { NetworkAclId: id, Associations: associations, Entries: entries, VpcId: vpcId, IsDefault: isDefault, Tags, } = rawData; const associatedSubnets = (associations || []).map(({ NetworkAclAssociationId: networkAclAssociationId, SubnetId: subnetId, }) => ({ id: sdk_1.generateUniqueId({ networkAclAssociationId, subnetId, }), networkAclAssociationId, subnetId, })); const egress = (entries || []).filter(({ Egress: e }) => e); const ingress = (entries || []).filter(({ Egress: e }) => !e); const [outboundRules, inboundRules] = [ { data: egress, direction: translations_1.default.destination }, { data: ingress, direction: translations_1.default.source }, ].map(({ data, direction }) => data.map((rule) => { const { CidrBlock: cidrBlock, Ipv6CidrBlock: ipv6CidrBlock, PortRange: { To: toPort, From: fromPort } = {}, Protocol: protocol, RuleNumber: ruleNumber, RuleAction: ruleAction, } = rule; let portRange = ''; if (!fromPort && !toPort) { portRange = translations_1.default.all; } else if (fromPort === toPort) { portRange = fromPort.toString(); } else { portRange = `${fromPort} - ${toPort}`; } return { id: sdk_1.generateUniqueId({ ...rule, }), ruleNumber, protocol: protocol === '-1' ? translations_1.default.all : protocol, portRange, toPort, fromPort, source: direction === translations_1.default.source ? cidrBlock || ipv6CidrBlock || '' : undefined, destination: direction === translations_1.default.destination ? cidrBlock || ipv6CidrBlock || '' : undefined, allowOrDeny: ruleAction, }; })); return { id, vpcId, arn: generateArns_1.networkAclArn({ region, account, id }), accountId: account, associatedSubnets, inboundRules, outboundRules, default: isDefault, region, tags: format_1.formatTagsFromMap(Tags), }; };