@hlang-org/runtime
Version:
A FBP-Inspired language for universal applications.
33 lines • 3.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const graph_1 = require("../core/graph");
const run_1 = require("../core/run");
const build_1 = require("../core/build");
const sort_1 = require("../utils/sort");
const type_1 = require("../type");
const Runner = (node, flow) => {
const graph = new graph_1.default(true);
return {
run: function () {
// step 1: build graph with root-node
(0, build_1.default)(graph)(node);
// step 2: run graph with sorted nodes
(0, run_1.default)(graph)((0, sort_1.default)(graph), flow);
},
};
};
class Flow {
constructor(opts = {}) {
this.opts = opts;
this.cache = new Map();
}
run(rootNode) {
if (rootNode.type !== type_1.NODE_TYPE.READABLE) {
throw new Error('Flow must run with a READABLE node.');
}
const runner = Runner(rootNode, this);
runner.run();
}
}
exports.default = Flow;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iYXNlL2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBa0M7QUFDbEMscUNBQThCO0FBQzlCLHlDQUFrQztBQUNsQyx3Q0FBaUM7QUFDakMsa0NBQStDO0FBRy9DLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO0lBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBSyxDQUFrQixJQUFJLENBQUMsQ0FBQztJQUUvQyxPQUFPO1FBQ0wsR0FBRyxFQUFFO1lBQ0gscUNBQXFDO1lBQ3JDLElBQUEsZUFBSyxFQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLHNDQUFzQztZQUN0QyxJQUFBLGFBQUcsRUFBQyxLQUFLLENBQUMsQ0FBQyxJQUFBLGNBQUksRUFBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQXFCLElBQUk7SUFJdkIsWUFBWSxJQUFJLEdBQUcsRUFBRTtRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELEdBQUcsQ0FBQyxRQUFRO1FBQ1YsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLGdCQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7Q0FDRjtBQWpCRCx1QkFpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR3JhcGggZnJvbSAnLi4vY29yZS9ncmFwaCc7XG5pbXBvcnQgcnVuIGZyb20gJy4uL2NvcmUvcnVuJztcbmltcG9ydCBidWlsZCBmcm9tICcuLi9jb3JlL2J1aWxkJztcbmltcG9ydCBzb3J0IGZyb20gJy4uL3V0aWxzL3NvcnQnO1xuaW1wb3J0IHsgSVBvcnREZXNjLCBOT0RFX1RZUEUgfSBmcm9tICcuLi90eXBlJztcbmltcG9ydCBOb2RlIGZyb20gJy4uL25vZGUnO1xuXG5jb25zdCBSdW5uZXIgPSAobm9kZSwgZmxvdykgPT4ge1xuICBjb25zdCBncmFwaCA9IG5ldyBHcmFwaDxJUG9ydERlc2MsIE5vZGU+KHRydWUpO1xuXG4gIHJldHVybiB7XG4gICAgcnVuOiBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdGVwIDE6IGJ1aWxkIGdyYXBoIHdpdGggcm9vdC1ub2RlXG4gICAgICBidWlsZChncmFwaCkobm9kZSk7XG4gICAgICAvLyBzdGVwIDI6IHJ1biBncmFwaCB3aXRoIHNvcnRlZCBub2Rlc1xuICAgICAgcnVuKGdyYXBoKShzb3J0KGdyYXBoKSwgZmxvdyk7XG4gICAgfSxcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZsb3cge1xuICBvcHRzOiB7W2tleTogc3RyaW5nXTphbnl9O1xuICBjYWNoZTogTWFwPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICB0aGlzLm9wdHMgPSBvcHRzO1xuICAgIHRoaXMuY2FjaGUgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBydW4ocm9vdE5vZGUpIHtcbiAgICBpZiAocm9vdE5vZGUudHlwZSAhPT0gTk9ERV9UWVBFLlJFQURBQkxFKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Zsb3cgbXVzdCBydW4gd2l0aCBhIFJFQURBQkxFIG5vZGUuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVubmVyID0gUnVubmVyKHJvb3ROb2RlLCB0aGlzKTtcbiAgICBydW5uZXIucnVuKCk7XG4gIH1cbn1cbiJdfQ==