UNPKG

@chix/flow

Version:
53 lines 1.99 kB
"use strict"; 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