UNPKG

@hlang-org/runtime

Version:

A FBP-Inspired language for universal applications.

66 lines 6.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * * ------ ------ * Node ----> Node * ------ ------ * */ const type_1 = require("../type"); const utils_1 = require("../utils"); class PortMap { constructor() { this.mapShape = { [type_1.STREAM_TYPE.I]: {}, [type_1.STREAM_TYPE.O]: {}, }; } get(K) { return this.mapShape[K]; } getIn(key) { // TODO const [type, name] = key.split('.'); return this.mapShape[type][name]; } setIn(key, val) { // TODO const [type, name] = key.split('.'); this.mapShape[type][name] = val; } } class Node { constructor(opts) { this.opts = opts; this.portMap = new PortMap(); this.id = `${type_1.NODE_ID_PREFIX}-${utils_1.uuid.create()}`; this.isRunning = false; this.flow = null; this.identity = type_1.IDENTITY.NODE; Object.keys(type_1.STREAM_TYPE).forEach((k) => { Object.defineProperty(this, k, { get: function () { return (name) => this.portMap.getIn(`${k}.${name}`); }, }); }); } executeOnce(type, ...args) { if (this.isRunning) return; this.isRunning = true; this[`_${type}`](...args); } E() { return this.portMap.getIn(`${type_1.STREAM_TYPE.O}.${type_1.ERROR_PORT_NAME}`); } attach(flow) { this.flow = flow; } attachPort(port) { this.portMap.setIn(`${port.type}.${port.name}`, port); } } exports.default = Node; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0dBTUc7QUFDSCxrQ0FLaUI7QUFHakIsb0NBQWdDO0FBRWhDLE1BQU0sT0FBTztJQUdYO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRztZQUNkLENBQUMsa0JBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLENBQUMsa0JBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1NBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQsR0FBRyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHO1FBQ1AsT0FBTztRQUNQLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRztRQUNaLE9BQU87UUFDUCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBRUQsTUFBcUIsSUFBSTtJQVd2QixZQUFZLElBQUk7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLHFCQUFjLElBQUksWUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFRLENBQUMsSUFBSSxDQUFDO1FBRTlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDN0IsR0FBRyxFQUFFO29CQUNILE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3RELENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSTtRQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUUzQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELENBQUM7UUFDQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsa0JBQVcsQ0FBQyxDQUFDLElBQUksc0JBQWUsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFJO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUEvQ0QsdUJBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogLS0tLS0tICAgICAgIC0tLS0tLVxuICogIE5vZGUgIC0tLS0+ICBOb2RlXG4gKiAtLS0tLS0gICAgICAgLS0tLS0tXG4gKlxuICovXG5pbXBvcnQge1xuICBTVFJFQU1fVFlQRSxcbiAgRVJST1JfUE9SVF9OQU1FLFxuICBOT0RFX0lEX1BSRUZJWCxcbiAgSURFTlRJVFksXG59IGZyb20gJy4uL3R5cGUnO1xuaW1wb3J0IFBvcnQgZnJvbSAnLi4vYmFzZS9wb3J0JztcbmltcG9ydCBGbG93IGZyb20gJy4uL2Jhc2UvZmxvdyc7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBQb3J0TWFwIHtcbiAgbWFwU2hhcGU6IHtba2V5OiBzdHJpbmddOiB7W2tleTogc3RyaW5nXTogUG9ydH19O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMubWFwU2hhcGUgPSB7XG4gICAgICBbU1RSRUFNX1RZUEUuSV06IHt9LFxuICAgICAgW1NUUkVBTV9UWVBFLk9dOiB7fSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0KEspIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTaGFwZVtLXTtcbiAgfVxuXG4gIGdldEluKGtleSkge1xuICAgIC8vIFRPRE9cbiAgICBjb25zdCBbdHlwZSwgbmFtZV0gPSBrZXkuc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gdGhpcy5tYXBTaGFwZVt0eXBlXVtuYW1lXTtcbiAgfVxuXG4gIHNldEluKGtleSwgdmFsKSB7XG4gICAgLy8gVE9ET1xuICAgIGNvbnN0IFt0eXBlLCBuYW1lXSA9IGtleS5zcGxpdCgnLicpO1xuICAgIHRoaXMubWFwU2hhcGVbdHlwZV1bbmFtZV0gPSB2YWw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9kZSB7XG4gIHR5cGU6IFN5bWJvbDtcbiAgaWQ6IHN0cmluZztcbiAgb3B0czoge1trZXk6IHN0cmluZ106IGFueX07XG4gIHBvcnRNYXA6IFBvcnRNYXA7XG4gIGlzUnVubmluZzogYm9vbGVhbjtcbiAgZmxvdzogRmxvdyB8IG51bGw7XG4gIGlkZW50aXR5OiBTeW1ib2w7XG4gIEk6IChuYW1lOiBzdHJpbmcpID0+IFBvcnQ7XG4gIE86IChuYW1lOiBzdHJpbmcpID0+IFBvcnQ7XG5cbiAgY29uc3RydWN0b3Iob3B0cykge1xuICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgdGhpcy5wb3J0TWFwID0gbmV3IFBvcnRNYXAoKTtcbiAgICB0aGlzLmlkID0gYCR7Tk9ERV9JRF9QUkVGSVh9LSR7dXVpZC5jcmVhdGUoKX1gO1xuICAgIHRoaXMuaXNSdW5uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5mbG93ID0gbnVsbDtcbiAgICB0aGlzLmlkZW50aXR5ID0gSURFTlRJVFkuTk9ERTtcblxuICAgIE9iamVjdC5rZXlzKFNUUkVBTV9UWVBFKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgaywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gKG5hbWUpID0+IHRoaXMucG9ydE1hcC5nZXRJbihgJHtrfS4ke25hbWV9YCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGV4ZWN1dGVPbmNlKHR5cGUsIC4uLmFyZ3MpIHtcbiAgICBpZiAodGhpcy5pc1J1bm5pbmcpIHJldHVybjtcblxuICAgIHRoaXMuaXNSdW5uaW5nID0gdHJ1ZTtcblxuICAgIHRoaXNbYF8ke3R5cGV9YF0oLi4uYXJncyk7XG4gIH1cblxuICBFKCk6IFBvcnQge1xuICAgIHJldHVybiB0aGlzLnBvcnRNYXAuZ2V0SW4oYCR7U1RSRUFNX1RZUEUuT30uJHtFUlJPUl9QT1JUX05BTUV9YCk7XG4gIH1cblxuICBhdHRhY2goZmxvdykge1xuICAgIHRoaXMuZmxvdyA9IGZsb3c7XG4gIH1cblxuICBhdHRhY2hQb3J0KHBvcnQpIHtcbiAgICB0aGlzLnBvcnRNYXAuc2V0SW4oYCR7cG9ydC50eXBlfS4ke3BvcnQubmFtZX1gLCBwb3J0KTtcbiAgfVxufVxuIl19