UNPKG

@hlang-org/runtime

Version:

A FBP-Inspired language for universal applications.

49 lines 6.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const run = (G) => { return (sortedNodes, flow) => { const adjList = G.adjList; const edges = (id) => { return adjList.getRow(id); }; const pipe = (edge) => { const { src: _src, dst: _dst } = edge; const _cacheKey = `${_src.id}@${_dst.id}`; // 相同的边不能重复订阅 if (flow.cache.has(_cacheKey)) return; _src.receive((msg) => { _dst.send(msg); }); flow.cache.set(_cacheKey, edge); }; const pipeWithEdges = (_pipe) => (_edges) => { for (const [_k, edge] of _edges) { _pipe(edge); } }; const _p = pipeWithEdges(pipe); // W sortedNodes.w.forEach((node) => { node.attach(flow); const executeOnce = node.executeOnce.bind(node, 'write', node.I); executeOnce(); }); // T sortedNodes.t.forEach((node) => { node.attach(flow); _p(edges(node.id)); const executeOnce = node.executeOnce.bind(node, 'transform', node.I, node.O); executeOnce(); }); // R sortedNodes.r.forEach((node) => { node.attach(flow); _p(edges(node.id)); const executeOnce = node.executeOnce.bind(node, 'read', node.O); executeOnce(); }); }; }; exports.default = run; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvcnVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBV0EsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUF5QixFQUFFLEVBQUU7SUFDeEMsT0FBTyxDQUFDLFdBQTJCLEVBQUUsSUFBVSxFQUFFLEVBQUU7UUFDakQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUUxQixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ25CLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BCLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUUxQyxhQUFhO1lBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7Z0JBQUUsT0FBTztZQUV0QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBOEIsRUFBRSxFQUFFO1lBQ2xFLEtBQUssTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLE1BQU0sRUFBRSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixJQUFJO1FBQ0osV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRWxCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWpFLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSTtRQUNKLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVsQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQTJCLENBQUMsQ0FBQztZQUU3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDdkMsSUFBSSxFQUNKLFdBQVcsRUFDWCxJQUFJLENBQUMsQ0FBQyxFQUNOLElBQUksQ0FBQyxDQUFDLENBQ1AsQ0FBQztZQUVGLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSTtRQUNKLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVsQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQTJCLENBQUMsQ0FBQztZQUU3QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVoRSxXQUFXLEVBQUUsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGtCQUFlLEdBQUcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb3J0RGVzYyAgfSBmcm9tICcuLi90eXBlJztcbmltcG9ydCBHcmFwaCBmcm9tICcuL2dyYXBoJztcbmltcG9ydCBOb2RlIGZyb20gJy4uL25vZGUnO1xuaW1wb3J0IEZsb3cgZnJvbSAnLi4vYmFzZS9mbG93JztcblxuZXhwb3J0IGludGVyZmFjZSBJU29ydGVkTm9kZU1hcCB7XG4gIHI6IE5vZGVbXTtcbiAgdzogTm9kZVtdO1xuICB0OiBOb2RlW107XG59XG5cbmNvbnN0IHJ1biA9IChHOiBHcmFwaDxJUG9ydERlc2MsIE5vZGU+KSA9PiB7XG4gIHJldHVybiAoc29ydGVkTm9kZXM6IElTb3J0ZWROb2RlTWFwLCBmbG93OiBGbG93KSA9PiB7XG4gICAgY29uc3QgYWRqTGlzdCA9IEcuYWRqTGlzdDtcblxuICAgIGNvbnN0IGVkZ2VzID0gKGlkKSA9PiB7XG4gICAgICByZXR1cm4gYWRqTGlzdC5nZXRSb3coaWQpO1xuICAgIH07XG5cbiAgICBjb25zdCBwaXBlID0gKGVkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHsgc3JjOiBfc3JjLCBkc3Q6IF9kc3QgfSA9IGVkZ2U7XG4gICAgICBjb25zdCBfY2FjaGVLZXkgPSBgJHtfc3JjLmlkfUAke19kc3QuaWR9YDtcblxuICAgICAgLy8g55u45ZCM55qE6L655LiN6IO96YeN5aSN6K6i6ZiFXG4gICAgICBpZiAoZmxvdy5jYWNoZS5oYXMoX2NhY2hlS2V5KSkgcmV0dXJuO1xuXG4gICAgICBfc3JjLnJlY2VpdmUoKG1zZykgPT4ge1xuICAgICAgICBfZHN0LnNlbmQobXNnKTtcbiAgICAgIH0pO1xuXG4gICAgICBmbG93LmNhY2hlLnNldChfY2FjaGVLZXksIGVkZ2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBwaXBlV2l0aEVkZ2VzID0gKF9waXBlKSA9PiAoX2VkZ2VzOiBNYXA8c3RyaW5nLCBJUG9ydERlc2M+KSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IFtfaywgZWRnZV0gb2YgX2VkZ2VzKSB7XG4gICAgICAgIF9waXBlKGVkZ2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBfcCA9IHBpcGVXaXRoRWRnZXMocGlwZSk7XG5cbiAgICAvLyBXXG4gICAgc29ydGVkTm9kZXMudy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBub2RlLmF0dGFjaChmbG93KTtcblxuICAgICAgY29uc3QgZXhlY3V0ZU9uY2UgPSBub2RlLmV4ZWN1dGVPbmNlLmJpbmQobm9kZSwgJ3dyaXRlJywgbm9kZS5JKTtcblxuICAgICAgZXhlY3V0ZU9uY2UoKTtcbiAgICB9KTtcblxuICAgIC8vIFRcbiAgICBzb3J0ZWROb2Rlcy50LmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgIG5vZGUuYXR0YWNoKGZsb3cpO1xuXG4gICAgICBfcChlZGdlcyhub2RlLmlkKSBhcyBNYXA8c3RyaW5nLCBJUG9ydERlc2M+KTtcblxuICAgICAgY29uc3QgZXhlY3V0ZU9uY2UgPSBub2RlLmV4ZWN1dGVPbmNlLmJpbmQoXG4gICAgICAgIG5vZGUsXG4gICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICBub2RlLkksXG4gICAgICAgIG5vZGUuTyxcbiAgICAgICk7XG5cbiAgICAgIGV4ZWN1dGVPbmNlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBSXG4gICAgc29ydGVkTm9kZXMuci5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBub2RlLmF0dGFjaChmbG93KTtcblxuICAgICAgX3AoZWRnZXMobm9kZS5pZCkgYXMgTWFwPHN0cmluZywgSVBvcnREZXNjPik7XG5cbiAgICAgIGNvbnN0IGV4ZWN1dGVPbmNlID0gbm9kZS5leGVjdXRlT25jZS5iaW5kKG5vZGUsICdyZWFkJywgbm9kZS5PKTtcblxuICAgICAgZXhlY3V0ZU9uY2UoKTtcbiAgICB9KTtcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJ1bjtcbiJdfQ==