oro-sdk 3.12.0 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -978,6 +978,53 @@ function _getImagesFromIndexDb() {
978
978
  function populateWorkflowField(_x6, _x7) {
979
979
  return _populateWorkflowField.apply(this, arguments);
980
980
  }
981
+ /**
982
+ * Determine if a question is triggered by some answers
983
+ *
984
+ * We use the following logical combinations of rules:
985
+ *
986
+ * #### Single string
987
+ *
988
+ * ```
989
+ * // Required: rule1
990
+ * rules: rule1
991
+ * ```
992
+ *
993
+ * #### Array of strings (AND is applied between statements):
994
+ *
995
+ * ```
996
+ * // Required: rule1 AND rule2
997
+ * rules: [ rule1, rule2 ]
998
+ * ```
999
+ *
1000
+ * #### Array of arrays of strings (OR is applied between inner arrays. AND is applied between inner arrays statements)
1001
+ *
1002
+ * ```
1003
+ * // Required: rule1 OR rule2
1004
+ * rules: [
1005
+ * [ rule1 ],
1006
+ * [ rule2 ]
1007
+ * ]
1008
+ *
1009
+ * // Required: rule1 OR (rule2 AND rule3)
1010
+ * rules: [
1011
+ * [ rule1 ],
1012
+ * [ rule2, rule3 ]
1013
+ * ]
1014
+ *
1015
+ * // THIS IS FORBIDDEN
1016
+ * rules: [
1017
+ * rule1, // <-- THIS IS FORBIDDEN. Instead use [ rule1 ]
1018
+ * [ rule2, rule3 ]
1019
+ * ]
1020
+ * ```
1021
+ *
1022
+ * @param triggers the triggering rules
1023
+ * @param answers the answers to check againts triggering rules
1024
+ * @returns `true` if triggers are verified against ansers. Otherwise, returns `false`.
1025
+ * @throws an Error if triggers typing is wrong
1026
+ */
1027
+
981
1028
 
982
1029
  function _populateWorkflowField() {
983
1030
  _populateWorkflowField = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(question, answerValue) {
@@ -1056,21 +1103,34 @@ function _populateWorkflowField() {
1056
1103
  }
1057
1104
 
1058
1105
  function isTriggered(triggers, answers) {
1059
- for (var _iterator = _createForOfIteratorHelperLoose(triggers), _step; !(_step = _iterator()).done;) {
1060
- var trigger = _step.value;
1106
+ // is triggers contained in answers
1107
+ if (typeof triggers === 'string') {
1108
+ return answers.includes(triggers);
1109
+ }
1061
1110
 
1062
- if (!answers.includes(trigger)) {
1063
- return false;
1111
+ if (Array.isArray(triggers)) {
1112
+ // rule combination kind: rule1 OR (rule2 AND rule3)
1113
+ if (Array.isArray(triggers[0])) {
1114
+ return triggers.some(function (subSetTriggers) {
1115
+ return subSetTriggers.every(function (trigger) {
1116
+ return answers.includes(trigger);
1117
+ });
1118
+ });
1119
+ } else {
1120
+ // rule combination kind: rule1 AND rule2
1121
+ return triggers.every(function (trigger) {
1122
+ return answers.includes(trigger);
1123
+ });
1064
1124
  }
1065
1125
  }
1066
1126
 
1067
- return true;
1127
+ throw Error('[isTriggered] triggers is not typed well');
1068
1128
  }
1069
1129
  function flattenSelectedAnswers(answers) {
1070
1130
  var linearAnswers = [];
1071
1131
 
1072
- for (var _iterator2 = _createForOfIteratorHelperLoose(answers), _step2; !(_step2 = _iterator2()).done;) {
1073
- var answer = _step2.value;
1132
+ for (var _iterator = _createForOfIteratorHelperLoose(answers), _step; !(_step = _iterator()).done;) {
1133
+ var answer = _step.value;
1074
1134
  linearAnswers.push.apply(linearAnswers, Object.values(answer));
1075
1135
  }
1076
1136