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.
- package/dist/helpers/workflow.d.ts +47 -1
- package/dist/oro-sdk.cjs.development.js +67 -7
- package/dist/oro-sdk.cjs.development.js.map +1 -1
- package/dist/oro-sdk.cjs.production.min.js +1 -1
- package/dist/oro-sdk.cjs.production.min.js.map +1 -1
- package/dist/oro-sdk.esm.js +67 -7
- package/dist/oro-sdk.esm.js.map +1 -1
- package/package.json +3 -3
- package/src/helpers/workflow.ts +63 -5
package/package.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"version": "3.
|
2
|
+
"version": "3.13.0",
|
3
3
|
"main": "dist/index.js",
|
4
4
|
"typings": "dist/index.d.ts",
|
5
5
|
"files": [
|
@@ -54,8 +54,8 @@
|
|
54
54
|
"form-data": "^4.0.0",
|
55
55
|
"formdata-node": "^4.3.1",
|
56
56
|
"idb-keyval": "^5.0.6",
|
57
|
-
"oro-sdk-apis": "1.
|
57
|
+
"oro-sdk-apis": "1.48.0",
|
58
58
|
"oro-toolbox": "0.0.6",
|
59
59
|
"uuid": "^8.3.2"
|
60
60
|
}
|
61
|
-
}
|
61
|
+
}
|
package/src/helpers/workflow.ts
CHANGED
@@ -179,13 +179,71 @@ async function populateWorkflowField(
|
|
179
179
|
})
|
180
180
|
}
|
181
181
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
182
|
+
/**
|
183
|
+
* Determine if a question is triggered by some answers
|
184
|
+
*
|
185
|
+
* We use the following logical combinations of rules:
|
186
|
+
*
|
187
|
+
* #### Single string
|
188
|
+
*
|
189
|
+
* ```
|
190
|
+
* // Required: rule1
|
191
|
+
* rules: rule1
|
192
|
+
* ```
|
193
|
+
*
|
194
|
+
* #### Array of strings (AND is applied between statements):
|
195
|
+
*
|
196
|
+
* ```
|
197
|
+
* // Required: rule1 AND rule2
|
198
|
+
* rules: [ rule1, rule2 ]
|
199
|
+
* ```
|
200
|
+
*
|
201
|
+
* #### Array of arrays of strings (OR is applied between inner arrays. AND is applied between inner arrays statements)
|
202
|
+
*
|
203
|
+
* ```
|
204
|
+
* // Required: rule1 OR rule2
|
205
|
+
* rules: [
|
206
|
+
* [ rule1 ],
|
207
|
+
* [ rule2 ]
|
208
|
+
* ]
|
209
|
+
*
|
210
|
+
* // Required: rule1 OR (rule2 AND rule3)
|
211
|
+
* rules: [
|
212
|
+
* [ rule1 ],
|
213
|
+
* [ rule2, rule3 ]
|
214
|
+
* ]
|
215
|
+
*
|
216
|
+
* // THIS IS FORBIDDEN
|
217
|
+
* rules: [
|
218
|
+
* rule1, // <-- THIS IS FORBIDDEN. Instead use [ rule1 ]
|
219
|
+
* [ rule2, rule3 ]
|
220
|
+
* ]
|
221
|
+
* ```
|
222
|
+
*
|
223
|
+
* @param triggers the triggering rules
|
224
|
+
* @param answers the answers to check againts triggering rules
|
225
|
+
* @returns `true` if triggers are verified against ansers. Otherwise, returns `false`.
|
226
|
+
* @throws an Error if triggers typing is wrong
|
227
|
+
*/
|
228
|
+
export function isTriggered(triggers: string[][] | string[] | string, answers: string[]): boolean {
|
229
|
+
// is triggers contained in answers
|
230
|
+
if (typeof triggers === 'string') {
|
231
|
+
return answers.includes(triggers)
|
232
|
+
}
|
233
|
+
|
234
|
+
if (Array.isArray(triggers)) {
|
235
|
+
// rule combination kind: rule1 OR (rule2 AND rule3)
|
236
|
+
if (Array.isArray(triggers[0])) {
|
237
|
+
return (triggers as string[][]).some((subSetTriggers) =>
|
238
|
+
subSetTriggers.every((trigger) => answers.includes(trigger))
|
239
|
+
)
|
240
|
+
} else {
|
241
|
+
// rule combination kind: rule1 AND rule2
|
242
|
+
return (triggers as string[]).every((trigger) => answers.includes(trigger))
|
186
243
|
}
|
187
244
|
}
|
188
|
-
|
245
|
+
|
246
|
+
throw Error('[isTriggered] triggers is not typed well')
|
189
247
|
}
|
190
248
|
|
191
249
|
export function flattenSelectedAnswers(answers: SelectedAnswersData) {
|