import {PortExposuresChunk} from "../chunks/types/PortExposuresChunk"; import {ChunkType} from "../chunks/types/ChunkType"; import {PortDirection} from "./types/PortDirection"; import {PortExposures} from "./types/PortExposures"; import {StructureNodeDef} from "./types/StructureNodeDef"; import {getOwnPortNameFromPortExposuresItemChunk} from "./utils/getOwnPortNameFromPortExposuresItemChunk"; import {getPortDirectionFromPortExposuresItemChunk} from "./utils/getPortDirectionFromPortExposuresItemChunk"; import {portExposuresItemChunkToChildPortRef} from "./portExposuresItemChunkToChildPortRef"; export function portExposuresChunkToExposedPorts( portExposuresChunk: PortExposuresChunk ): Pick, "exposedInputs" | "exposedOutputs"> { const exposedInputs: PortExposures = {}; const exposedOutputs: PortExposures = {}; const {children = []} = portExposuresChunk; for (const chunk of children) { if (chunk.type === ChunkType.PortExposuresItem) { const portName = getOwnPortNameFromPortExposuresItemChunk(chunk); const portDirection = getPortDirectionFromPortExposuresItemChunk(chunk); switch (portDirection) { case PortDirection.input: exposedInputs[portName] = portExposuresItemChunkToChildPortRef(chunk); break; case PortDirection.output: exposedOutputs[portName] = portExposuresItemChunkToChildPortRef(chunk); break; } } } return { exposedInputs, exposedOutputs }; }