UNPKG

@hlang-org/runtime

Version:

A FBP-Inspired language for universal applications.

28 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const type_1 = require("../type"); const graph_1 = require("./graph"); const build = (G) => { return (_rootNode) => { G.addVertex(new graph_1.Vertex(_rootNode)); const outs = _rootNode.portMap.get(type_1.STREAM_TYPE.O); for (const outPortName in outs) { const outPort = _rootNode.O(outPortName); const peers = outPort.peers; for (let k = 0, len = peers.length; k < len; k++) { const peer = peers[k]; G.addVertex(new graph_1.Vertex(peer.node)); G.addEdge(new graph_1.Edge(_rootNode, peer.node, { src: outPort, dst: peer })); // T <-> T if (G.isCircled(_rootNode, peer.node)) { continue; } if (peer.node.type === type_1.NODE_TYPE.TRANSFORM) { build(G)(peer.node); } } } }; }; exports.default = build; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9idWlsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtDQUE0RDtBQUU1RCxtQ0FBOEM7QUFFOUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUF5QixFQUFFLEVBQUU7SUFDMUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFO1FBQ25CLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxjQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVuQyxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxELEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBRTVCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDakQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV0QixDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksY0FBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksWUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUV2RSxVQUFVO2dCQUNWLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLFNBQVM7Z0JBQ1gsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5PREVfVFlQRSwgU1RSRUFNX1RZUEUsIElQb3J0RGVzYyB9IGZyb20gJy4uL3R5cGUnO1xuaW1wb3J0IE5vZGUgZnJvbSAnLi4vbm9kZSc7XG5pbXBvcnQgR3JhcGgsIHsgVmVydGV4LCBFZGdlIH0gZnJvbSAnLi9ncmFwaCc7XG5cbmNvbnN0IGJ1aWxkID0gKEc6IEdyYXBoPElQb3J0RGVzYywgTm9kZT4pID0+IHtcbiAgcmV0dXJuIChfcm9vdE5vZGUpID0+IHtcbiAgICBHLmFkZFZlcnRleChuZXcgVmVydGV4KF9yb290Tm9kZSkpO1xuXG4gICAgY29uc3Qgb3V0cyA9IF9yb290Tm9kZS5wb3J0TWFwLmdldChTVFJFQU1fVFlQRS5PKTtcblxuICAgIGZvciAoY29uc3Qgb3V0UG9ydE5hbWUgaW4gb3V0cykge1xuICAgICAgY29uc3Qgb3V0UG9ydCA9IF9yb290Tm9kZS5PKG91dFBvcnROYW1lKTtcbiAgICAgIGNvbnN0IHBlZXJzID0gb3V0UG9ydC5wZWVycztcblxuICAgICAgZm9yIChsZXQgayA9IDAsIGxlbiA9IHBlZXJzLmxlbmd0aDsgayA8IGxlbjsgaysrKSB7XG4gICAgICAgIGNvbnN0IHBlZXIgPSBwZWVyc1trXTtcblxuICAgICAgICBHLmFkZFZlcnRleChuZXcgVmVydGV4KHBlZXIubm9kZSkpO1xuICAgICAgICBHLmFkZEVkZ2UobmV3IEVkZ2UoX3Jvb3ROb2RlLCBwZWVyLm5vZGUsIHsgc3JjOiBvdXRQb3J0LCBkc3Q6IHBlZXIgfSkpO1xuXG4gICAgICAgIC8vIFQgPC0+IFRcbiAgICAgICAgaWYgKEcuaXNDaXJjbGVkKF9yb290Tm9kZSwgcGVlci5ub2RlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlZXIubm9kZS50eXBlID09PSBOT0RFX1RZUEUuVFJBTlNGT1JNKSB7XG4gICAgICAgICAgYnVpbGQoRykocGVlci5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGJ1aWxkO1xuIl19