@hlang-org/runtime
Version:
A FBP-Inspired language for universal applications.
66 lines • 6.63 kB
JavaScript
;
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