@chix/flow
Version:
53 lines • 1.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var packet_1 = require("../../packet");
var port_1 = require("../port");
var checkProperties_1 = require("./checkProperties");
function check(node, schema, port, input, context, persist) {
var ret;
if (!input.hasOwnProperty(port)) {
ret = port_1.Port.NOT_FILLED;
if (persist && persist.hasOwnProperty(port)) {
input[port] = persist[port].clone(node);
ret = port_1.Port.PERSISTED_SET;
}
else if (context && context.hasOwnProperty(port)) {
input[port] = context[port].clone(node);
ret = port_1.Port.CONTEXT_SET;
}
else if (schema[port].hasOwnProperty('default')) {
input[port] = packet_1.Packet.create(schema[port].default, node.getPortType('input', port)).setOwner(node);
ret = port_1.Port.DEFAULT_SET;
}
else if (schema[port].required === false) {
input[port] = packet_1.Packet.create(undefined, node.getPortType('input', port)).setOwner(node);
ret = port_1.Port.NOT_REQUIRED;
}
if (schema[port].properties) {
var init = void 0;
var obj = {};
if (!input[port]) {
init = true;
input[port] = packet_1.Packet.create(obj, 'object').setOwner(node);
}
else {
obj = input[port].read(node) || {};
}
checkProperties_1.checkProperties(node, schema[port], obj, port);
if (!Object.keys(obj).length && init) {
delete input[port];
ret = port_1.Port.NOT_FILLED;
}
else {
ret = port_1.Port.FILLED;
}
}
if (!ret) {
throw Error('Could not determine port state.');
}
return ret;
}
return port_1.Port.FILLED;
}
exports.check = check;
//# sourceMappingURL=check.js.map