import {map} from "@cranq/object-utils"; import {StructureNodeDef} from "../parser/definition/types/StructureNodeDef"; import {compileChildNodeProps} from "./compileChildNodeProps"; import {compileDictionary} from "./utils/compileDectionary"; export function compileStructureNodeDef( factoryId: string, structureNodeDef: StructureNodeDef ): string { const { childNodesProps, connections, exposedInputs, exposedOutputs, inputNames, outputNames, spreadInputNames, spreadOutputNames } = structureNodeDef; return `const ${factoryId} = (params) => createStructureNode({ "childNodesProps": ${compileDictionary( map(childNodesProps, compileChildNodeProps))}, "connections": ${JSON.stringify(connections, null, 2)}, "exposedInputs": ${JSON.stringify(exposedInputs, null, 2)}, "exposedOutputs": ${JSON.stringify(exposedOutputs, null, 2)}, "inputNames": ${JSON.stringify(inputNames)}, "outputNames": ${JSON.stringify(outputNames)}, "spreadInputNames": ${JSON.stringify(spreadInputNames)}, "spreadOutputNames": ${JSON.stringify(spreadOutputNames)} }, library, params);`; }