UNPKG

@gmetrixr/rjson

Version:
100 lines (99 loc) 4.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isRuleValid = void 0; const __1 = require("../.."); const R_1 = require("../../R"); const RuleAction_1 = require("./RuleAction"); const RuleEvent_1 = require("./RuleEvent"); function isRuleValid(rule) { const ruleF = __1.r.record(rule); const whenEvents = ruleF.getRecords(R_1.RT.when_event); const thenActions = ruleF.getRecords(R_1.RT.then_action); // wI and tI should never be true const wI = whenEvents.findIndex((w) => w.props.event === ""); const tI = thenActions.findIndex((t) => t.props.action === ""); if (wI !== -1 || tI !== -1) return false; if (whenEvents.length === 0 || thenActions.length === 0) { return false; } for (const w of whenEvents) { switch (w.props.event) { case RuleEvent_1.RuleEvent.on_hover: case RuleEvent_1.RuleEvent.on_duration_match: case RuleEvent_1.RuleEvent.on_timermatch: case RuleEvent_1.RuleEvent.on_set_eq: case RuleEvent_1.RuleEvent.on_set_gt: case RuleEvent_1.RuleEvent.on_set_gte: case RuleEvent_1.RuleEvent.on_set_lt: case RuleEvent_1.RuleEvent.on_match: case RuleEvent_1.RuleEvent.on_set_lte: case RuleEvent_1.RuleEvent.on_is_in_list: case RuleEvent_1.RuleEvent.on_is_not_in_list: { const properties = w.props.properties; if ((properties === null || properties === void 0 ? void 0 : properties[0]) === undefined) { return false; } break; } case RuleEvent_1.RuleEvent.on_set_between: { const properties = w.props.properties; if ((properties === null || properties === void 0 ? void 0 : properties[0]) === undefined || (properties === null || properties === void 0 ? void 0 : properties[1]) === undefined) { return false; } break; } } } for (const ta of thenActions) { switch (ta.props.action) { case RuleAction_1.RuleAction.set_to_string: case RuleAction_1.RuleAction.set_to_number: case RuleAction_1.RuleAction.set_to_formula: case RuleAction_1.RuleAction.load_project: case RuleAction_1.RuleAction.call_api: case RuleAction_1.RuleAction.copy_to_clipboard: case RuleAction_1.RuleAction.play_seek: case RuleAction_1.RuleAction.talk: case RuleAction_1.RuleAction.change_scene: { const properties = ta.props.properties; if ((properties === null || properties === void 0 ? void 0 : properties[0]) === undefined) { return false; } break; } case RuleAction_1.RuleAction.award_score: case RuleAction_1.RuleAction.set_scorm_score: case RuleAction_1.RuleAction.set_scorm_score_max: case RuleAction_1.RuleAction.set_scorm_score_min: case RuleAction_1.RuleAction.volume: case RuleAction_1.RuleAction.timer_seek: case RuleAction_1.RuleAction.point_to: { const properties = ta.props.properties; if ((properties === null || properties === void 0 ? void 0 : properties[0]) === undefined) { return false; } break; } case RuleAction_1.RuleAction.gltf_preset_start_all: case RuleAction_1.RuleAction.add_number: { const properties = ta.props.properties; if ((properties === null || properties === void 0 ? void 0 : properties[0]) === undefined) { return false; } break; } case RuleAction_1.RuleAction.gltf_preset_start: case RuleAction_1.RuleAction.gltf_preset_stop: case RuleAction_1.RuleAction.open_url: { const properties = ta.props.properties; if ((properties === null || properties === void 0 ? void 0 : properties[0]) === undefined || (properties === null || properties === void 0 ? void 0 : properties[1]) === undefined) { return false; } break; } } } return true; } exports.isRuleValid = isRuleValid;