@aacigroup/aaci_shared 5.0.4 → 5.2.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/README.md +29 -0
- package/dist/questionTypes.d.ts +2 -0
- package/dist/questionTypes.d.ts.map +1 -0
- package/dist/questionTypes.js +2 -0
- package/dist/questionTypes.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/addressValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/addressValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/addressValidator.js +41 -0
- package/dist/types/questionTypes/answerValidators/addressValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/booleanValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/booleanValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/booleanValidator.js +11 -0
- package/dist/types/questionTypes/answerValidators/booleanValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/currencyValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/currencyValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/currencyValidator.js +44 -0
- package/dist/types/questionTypes/answerValidators/currencyValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/dateValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/dateValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/dateValidator.js +34 -0
- package/dist/types/questionTypes/answerValidators/dateValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/datetimeValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/datetimeValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/datetimeValidator.js +33 -0
- package/dist/types/questionTypes/answerValidators/datetimeValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/emailValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/emailValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/emailValidator.js +41 -0
- package/dist/types/questionTypes/answerValidators/emailValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/fileValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/fileValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/fileValidator.js +46 -0
- package/dist/types/questionTypes/answerValidators/fileValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/imageValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/imageValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/imageValidator.js +63 -0
- package/dist/types/questionTypes/answerValidators/imageValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/index.d.ts +23 -0
- package/dist/types/questionTypes/answerValidators/index.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/index.js +73 -0
- package/dist/types/questionTypes/answerValidators/index.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/multiselectValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/multiselectValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/multiselectValidator.js +50 -0
- package/dist/types/questionTypes/answerValidators/multiselectValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/numberValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/numberValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/numberValidator.js +50 -0
- package/dist/types/questionTypes/answerValidators/numberValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/phoneValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/phoneValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/phoneValidator.js +18 -0
- package/dist/types/questionTypes/answerValidators/phoneValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/ratingValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/ratingValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/ratingValidator.js +31 -0
- package/dist/types/questionTypes/answerValidators/ratingValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/selectValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/selectValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/selectValidator.js +31 -0
- package/dist/types/questionTypes/answerValidators/selectValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/textValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/textValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/textValidator.js +44 -0
- package/dist/types/questionTypes/answerValidators/textValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/textareaValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/textareaValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/textareaValidator.js +40 -0
- package/dist/types/questionTypes/answerValidators/textareaValidator.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/types.d.ts +9 -0
- package/dist/types/questionTypes/answerValidators/types.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/types.js +6 -0
- package/dist/types/questionTypes/answerValidators/types.js.map +1 -0
- package/dist/types/questionTypes/answerValidators/yearValidator.d.ts +4 -0
- package/dist/types/questionTypes/answerValidators/yearValidator.d.ts.map +1 -0
- package/dist/types/questionTypes/answerValidators/yearValidator.js +39 -0
- package/dist/types/questionTypes/answerValidators/yearValidator.js.map +1 -0
- package/dist/types/questionTypes/conditionHelpers.d.ts +26 -0
- package/dist/types/questionTypes/conditionHelpers.d.ts.map +1 -0
- package/dist/types/questionTypes/conditionHelpers.js +398 -0
- package/dist/types/questionTypes/conditionHelpers.js.map +1 -0
- package/dist/types/questionTypes/conditions.d.ts +33 -0
- package/dist/types/questionTypes/conditions.d.ts.map +1 -0
- package/dist/types/questionTypes/conditions.js +102 -0
- package/dist/types/questionTypes/conditions.js.map +1 -0
- package/dist/types/questionTypes/defaults.d.ts +19 -0
- package/dist/types/questionTypes/defaults.d.ts.map +1 -0
- package/dist/types/questionTypes/defaults.js +100 -0
- package/dist/types/questionTypes/defaults.js.map +1 -0
- package/dist/types/questionTypes/helpers.d.ts +89 -0
- package/dist/types/questionTypes/helpers.d.ts.map +1 -0
- package/dist/types/questionTypes/helpers.js +356 -0
- package/dist/types/questionTypes/helpers.js.map +1 -0
- package/dist/types/questionTypes/index.d.ts +10 -0
- package/dist/types/questionTypes/index.d.ts.map +1 -0
- package/dist/types/questionTypes/index.js +10 -0
- package/dist/types/questionTypes/index.js.map +1 -0
- package/dist/types/questionTypes/session.d.ts +112 -0
- package/dist/types/questionTypes/session.d.ts.map +1 -0
- package/dist/types/questionTypes/session.js +2 -0
- package/dist/types/questionTypes/session.js.map +1 -0
- package/dist/types/questionTypes/template.d.ts +28 -0
- package/dist/types/questionTypes/template.d.ts.map +1 -0
- package/dist/types/questionTypes/template.js +2 -0
- package/dist/types/questionTypes/template.js.map +1 -0
- package/dist/types/questionTypes/types.d.ts +146 -0
- package/dist/types/questionTypes/types.d.ts.map +1 -0
- package/dist/types/questionTypes/types.js +171 -0
- package/dist/types/questionTypes/types.js.map +1 -0
- package/dist/types/questionTypes/validators.d.ts +27 -0
- package/dist/types/questionTypes/validators.d.ts.map +1 -0
- package/dist/types/questionTypes/validators.js +233 -0
- package/dist/types/questionTypes/validators.js.map +1 -0
- package/dist/types/questionTypes/writers.d.ts +10 -0
- package/dist/types/questionTypes/writers.d.ts.map +1 -0
- package/dist/types/questionTypes/writers.js +70 -0
- package/dist/types/questionTypes/writers.js.map +1 -0
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/validation.d.ts +10 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +1 -0
- package/dist/validation.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiselectValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/multiselectValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAEvE,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAgElB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getSelectOptions, getAllowOther } from '../helpers';
|
|
2
|
+
import { isOtherAnswerValue } from '../types';
|
|
3
|
+
import { validResult, invalidResult } from './types';
|
|
4
|
+
export function validateMultiselectAnswer(question, answer) {
|
|
5
|
+
if (answer === null || answer === undefined) {
|
|
6
|
+
return validResult();
|
|
7
|
+
}
|
|
8
|
+
if (!Array.isArray(answer)) {
|
|
9
|
+
return invalidResult('Invalid selection');
|
|
10
|
+
}
|
|
11
|
+
if (answer.length === 0) {
|
|
12
|
+
return validResult();
|
|
13
|
+
}
|
|
14
|
+
const opts = (question.options || {});
|
|
15
|
+
const data = (question.data || {});
|
|
16
|
+
const minSelections = typeof opts.min_selections === 'number' ? opts.min_selections :
|
|
17
|
+
typeof data.min_selections === 'number' ? data.min_selections : undefined;
|
|
18
|
+
const maxSelections = typeof opts.max_selections === 'number' ? opts.max_selections :
|
|
19
|
+
typeof data.max_selections === 'number' ? data.max_selections : undefined;
|
|
20
|
+
const allowOther = getAllowOther(question);
|
|
21
|
+
if (minSelections !== undefined && answer.length < minSelections) {
|
|
22
|
+
return invalidResult(`Select at least ${minSelections} option${minSelections > 1 ? 's' : ''}`);
|
|
23
|
+
}
|
|
24
|
+
if (maxSelections !== undefined && answer.length > maxSelections) {
|
|
25
|
+
return invalidResult(`Select no more than ${maxSelections} option${maxSelections > 1 ? 's' : ''}`);
|
|
26
|
+
}
|
|
27
|
+
const options = getSelectOptions(question);
|
|
28
|
+
const validValues = options.map(opt => opt.value);
|
|
29
|
+
for (const item of answer) {
|
|
30
|
+
if (isOtherAnswerValue(item)) {
|
|
31
|
+
if (!allowOther) {
|
|
32
|
+
return invalidResult('Custom answers are not allowed');
|
|
33
|
+
}
|
|
34
|
+
if (!item.text.trim()) {
|
|
35
|
+
return invalidResult('Please enter your custom answer');
|
|
36
|
+
}
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (typeof item !== 'string') {
|
|
40
|
+
return invalidResult('Invalid selection');
|
|
41
|
+
}
|
|
42
|
+
if (!validValues.includes(item)) {
|
|
43
|
+
if (!allowOther) {
|
|
44
|
+
return invalidResult('Contains invalid option');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return validResult();
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=multiselectValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiselectValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/multiselectValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/numberValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAYvE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAqDlB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getNumberConstraints, getAllowedValues, getDecimalPlaces } from '../helpers';
|
|
2
|
+
import { validResult, invalidResult } from './types';
|
|
3
|
+
function countDecimalPlaces(num) {
|
|
4
|
+
const str = num.toString();
|
|
5
|
+
const decimalIndex = str.indexOf('.');
|
|
6
|
+
if (decimalIndex === -1)
|
|
7
|
+
return 0;
|
|
8
|
+
return str.length - decimalIndex - 1;
|
|
9
|
+
}
|
|
10
|
+
export function validateNumberAnswer(question, answer) {
|
|
11
|
+
if (answer === null || answer === undefined || answer === '') {
|
|
12
|
+
return validResult();
|
|
13
|
+
}
|
|
14
|
+
if (typeof answer !== 'number' || isNaN(answer)) {
|
|
15
|
+
return invalidResult('Must be a valid number');
|
|
16
|
+
}
|
|
17
|
+
const constraints = getNumberConstraints(question);
|
|
18
|
+
const { min, max, step } = constraints;
|
|
19
|
+
const allowedValues = getAllowedValues(question);
|
|
20
|
+
if (allowedValues.length > 0) {
|
|
21
|
+
if (!allowedValues.includes(answer)) {
|
|
22
|
+
return invalidResult(`Must be one of: ${allowedValues.join(', ')}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const decimalPlaces = getDecimalPlaces(question);
|
|
26
|
+
if (decimalPlaces !== undefined && decimalPlaces >= 0) {
|
|
27
|
+
const actualDecimals = countDecimalPlaces(answer);
|
|
28
|
+
if (actualDecimals > decimalPlaces) {
|
|
29
|
+
if (decimalPlaces === 0) {
|
|
30
|
+
return invalidResult('Must be a whole number');
|
|
31
|
+
}
|
|
32
|
+
return invalidResult(`Must have at most ${decimalPlaces} decimal place${decimalPlaces !== 1 ? 's' : ''}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (min !== undefined && answer < min) {
|
|
36
|
+
return invalidResult(`Must be at least ${min.toLocaleString()}`);
|
|
37
|
+
}
|
|
38
|
+
if (max !== undefined && answer > max) {
|
|
39
|
+
return invalidResult(`Must be no more than ${max.toLocaleString()}`);
|
|
40
|
+
}
|
|
41
|
+
if (step !== undefined && step > 0) {
|
|
42
|
+
const baseValue = min !== null && min !== void 0 ? min : 0;
|
|
43
|
+
const diff = answer - baseValue;
|
|
44
|
+
if (Math.abs(diff % step) > 0.0001) {
|
|
45
|
+
return invalidResult(`Must be in increments of ${step}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return validResult();
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=numberValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numberValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/numberValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAKvE,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,YAAY,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAA8B,EAC9B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAGD,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;IAGvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,aAAa,CAAC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAGD,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,cAAc,GAAG,aAAa,EAAE,CAAC;YACnC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,aAAa,CAAC,wBAAwB,CAAC,CAAC;YACjD,CAAC;YACD,OAAO,aAAa,CAAC,qBAAqB,aAAa,iBAAiB,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,oBAAoB,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,wBAAwB,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAGD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACnC,OAAO,aAAa,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phoneValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/phoneValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAEvE,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,oBAAoB,EAC/B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAwBlB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { validResult, invalidResult } from './types';
|
|
2
|
+
export function validatePhoneAnswer(_question, answer) {
|
|
3
|
+
if (answer === null || answer === undefined || answer === '') {
|
|
4
|
+
return validResult();
|
|
5
|
+
}
|
|
6
|
+
if (typeof answer !== 'string') {
|
|
7
|
+
return invalidResult('Invalid phone number');
|
|
8
|
+
}
|
|
9
|
+
const digitsOnly = answer.replace(/\D/g, '');
|
|
10
|
+
if (digitsOnly.length < 10) {
|
|
11
|
+
return invalidResult('Phone number is too short');
|
|
12
|
+
}
|
|
13
|
+
if (digitsOnly.length > 15) {
|
|
14
|
+
return invalidResult('Phone number is too long');
|
|
15
|
+
}
|
|
16
|
+
return validResult();
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=phoneValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phoneValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/phoneValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,UAAU,mBAAmB,CACjC,SAA+B,EAC/B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IAGD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAG7C,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC,0BAA0B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ratingValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/ratingValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAEvE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAuClB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { validResult, invalidResult } from './types';
|
|
2
|
+
export function validateRatingAnswer(question, answer) {
|
|
3
|
+
if (answer === null || answer === undefined) {
|
|
4
|
+
return validResult();
|
|
5
|
+
}
|
|
6
|
+
if (typeof answer !== 'number' || isNaN(answer)) {
|
|
7
|
+
return invalidResult('Invalid rating');
|
|
8
|
+
}
|
|
9
|
+
const data = (question.data || {});
|
|
10
|
+
const opts = (question.options || {});
|
|
11
|
+
const minRating = typeof opts.min_rating === 'number' ? opts.min_rating :
|
|
12
|
+
typeof data.min_rating === 'number' ? data.min_rating : 1;
|
|
13
|
+
const maxRating = typeof opts.max_rating === 'number' ? opts.max_rating :
|
|
14
|
+
typeof data.max_rating === 'number' ? data.max_rating : 5;
|
|
15
|
+
const step = typeof opts.step === 'number' ? opts.step :
|
|
16
|
+
typeof data.step === 'number' ? data.step : 1;
|
|
17
|
+
if (answer < minRating) {
|
|
18
|
+
return invalidResult(`Rating must be at least ${minRating}`);
|
|
19
|
+
}
|
|
20
|
+
if (answer > maxRating) {
|
|
21
|
+
return invalidResult(`Rating must be no more than ${maxRating}`);
|
|
22
|
+
}
|
|
23
|
+
if (step > 0) {
|
|
24
|
+
const diff = answer - minRating;
|
|
25
|
+
if (Math.abs(diff % step) > 0.0001) {
|
|
26
|
+
return invalidResult(`Rating must be in increments of ${step}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return validResult();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=ratingValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ratingValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/ratingValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,UAAU,oBAAoB,CAClC,QAA8B,EAC9B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAGD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IAEjE,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,2BAA2B,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;QACvB,OAAO,aAAa,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAGD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,MAAM,EAAE,CAAC;YACnC,OAAO,aAAa,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/selectValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAEvE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAoClB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getSelectOptions, getAllowOther } from '../helpers';
|
|
2
|
+
import { isOtherAnswerValue } from '../types';
|
|
3
|
+
import { validResult, invalidResult } from './types';
|
|
4
|
+
export function validateSelectAnswer(question, answer) {
|
|
5
|
+
if (answer === null || answer === undefined || answer === '') {
|
|
6
|
+
return validResult();
|
|
7
|
+
}
|
|
8
|
+
const allowOther = getAllowOther(question);
|
|
9
|
+
const options = getSelectOptions(question);
|
|
10
|
+
const validValues = options.map(opt => opt.value);
|
|
11
|
+
if (isOtherAnswerValue(answer)) {
|
|
12
|
+
if (!allowOther) {
|
|
13
|
+
return invalidResult('Custom answers are not allowed');
|
|
14
|
+
}
|
|
15
|
+
if (!answer.text.trim()) {
|
|
16
|
+
return invalidResult('Please enter your answer');
|
|
17
|
+
}
|
|
18
|
+
return validResult();
|
|
19
|
+
}
|
|
20
|
+
if (typeof answer !== 'string') {
|
|
21
|
+
return invalidResult('Invalid selection');
|
|
22
|
+
}
|
|
23
|
+
if (!validValues.includes(answer)) {
|
|
24
|
+
if (allowOther) {
|
|
25
|
+
return validResult();
|
|
26
|
+
}
|
|
27
|
+
return invalidResult('Please select a valid option');
|
|
28
|
+
}
|
|
29
|
+
return validResult();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=selectValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/selectValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,UAAU,oBAAoB,CAClC,QAA8B,EAC9B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAGlD,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,aAAa,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC,0BAA0B,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC5C,CAAC;IAGD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,IAAI,UAAU,EAAE,CAAC;YAEf,OAAO,WAAW,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,aAAa,CAAC,8BAA8B,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/textValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAEvE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAqDlB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { validResult, invalidResult } from './types';
|
|
2
|
+
export function validateTextAnswer(question, answer) {
|
|
3
|
+
if (answer === null || answer === undefined || answer === '') {
|
|
4
|
+
return validResult();
|
|
5
|
+
}
|
|
6
|
+
if (typeof answer !== 'string') {
|
|
7
|
+
return invalidResult('Answer must be text');
|
|
8
|
+
}
|
|
9
|
+
const data = (question.data || {});
|
|
10
|
+
const opts = (question.options || {});
|
|
11
|
+
const minLength = typeof data.min_length === 'number'
|
|
12
|
+
? data.min_length
|
|
13
|
+
: typeof opts.min_length === 'number'
|
|
14
|
+
? opts.min_length
|
|
15
|
+
: undefined;
|
|
16
|
+
const maxLength = typeof data.max_length === 'number'
|
|
17
|
+
? data.max_length
|
|
18
|
+
: typeof opts.max_length === 'number'
|
|
19
|
+
? opts.max_length
|
|
20
|
+
: undefined;
|
|
21
|
+
const pattern = typeof data.pattern === 'string'
|
|
22
|
+
? data.pattern
|
|
23
|
+
: typeof opts.pattern === 'string'
|
|
24
|
+
? opts.pattern
|
|
25
|
+
: undefined;
|
|
26
|
+
if (minLength !== undefined && answer.length < minLength) {
|
|
27
|
+
return invalidResult(`Must be at least ${minLength} characters`);
|
|
28
|
+
}
|
|
29
|
+
if (maxLength !== undefined && answer.length > maxLength) {
|
|
30
|
+
return invalidResult(`Must be no more than ${maxLength} characters`);
|
|
31
|
+
}
|
|
32
|
+
if (pattern) {
|
|
33
|
+
try {
|
|
34
|
+
const regex = new RegExp(pattern);
|
|
35
|
+
if (!regex.test(answer)) {
|
|
36
|
+
return invalidResult('Invalid format');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return validResult();
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=textValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/textValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,UAAU,kBAAkB,CAChC,QAA8B,EAC9B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IAEjE,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACjC,CAAC,CAAC,IAAI,CAAC,UAAU;QACjB,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACjC,CAAC,CAAC,IAAI,CAAC,UAAU;QACjB,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,OAAO,GACX,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAC9B,CAAC,CAAC,IAAI,CAAC,OAAO;QACd,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,SAAS,CAAC;IAElB,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC,oBAAoB,SAAS,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC,wBAAwB,SAAS,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxB,OAAO,aAAa,CAAC,gBAAgB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACH,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textareaValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/textareaValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAEvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CAiDlB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { validResult, invalidResult } from './types';
|
|
2
|
+
export function validateTextareaAnswer(question, answer) {
|
|
3
|
+
if (answer === null || answer === undefined || answer === '') {
|
|
4
|
+
return validResult();
|
|
5
|
+
}
|
|
6
|
+
if (typeof answer !== 'string') {
|
|
7
|
+
return invalidResult('Answer must be text');
|
|
8
|
+
}
|
|
9
|
+
const data = (question.data || {});
|
|
10
|
+
const opts = (question.options || {});
|
|
11
|
+
const minLength = typeof data.min_length === 'number'
|
|
12
|
+
? data.min_length
|
|
13
|
+
: typeof opts.min_length === 'number'
|
|
14
|
+
? opts.min_length
|
|
15
|
+
: undefined;
|
|
16
|
+
const maxLength = typeof data.max_length === 'number'
|
|
17
|
+
? data.max_length
|
|
18
|
+
: typeof opts.max_length === 'number'
|
|
19
|
+
? opts.max_length
|
|
20
|
+
: undefined;
|
|
21
|
+
const maxLines = typeof data.max_lines === 'number'
|
|
22
|
+
? data.max_lines
|
|
23
|
+
: typeof opts.max_lines === 'number'
|
|
24
|
+
? opts.max_lines
|
|
25
|
+
: undefined;
|
|
26
|
+
if (minLength !== undefined && answer.length < minLength) {
|
|
27
|
+
return invalidResult(`Must be at least ${minLength} characters`);
|
|
28
|
+
}
|
|
29
|
+
if (maxLength !== undefined && answer.length > maxLength) {
|
|
30
|
+
return invalidResult(`Must be no more than ${maxLength} characters`);
|
|
31
|
+
}
|
|
32
|
+
if (maxLines !== undefined) {
|
|
33
|
+
const lineCount = answer.split('\n').length;
|
|
34
|
+
if (lineCount > maxLines) {
|
|
35
|
+
return invalidResult(`Must be no more than ${maxLines} lines`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return validResult();
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=textareaValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textareaValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/textareaValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,UAAU,sBAAsB,CACpC,QAA8B,EAC9B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9C,CAAC;IAGD,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IAC9D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IAEjE,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACjC,CAAC,CAAC,IAAI,CAAC,UAAU;QACjB,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,SAAS,GACb,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACjC,CAAC,CAAC,IAAI,CAAC,UAAU;QACjB,CAAC,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;YACnC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,SAAS,CAAC;IAClB,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;QAChC,CAAC,CAAC,IAAI,CAAC,SAAS;QAChB,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;YAClC,CAAC,CAAC,IAAI,CAAC,SAAS;YAChB,CAAC,CAAC,SAAS,CAAC;IAElB,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC,oBAAoB,SAAS,aAAa,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,aAAa,CAAC,wBAAwB,SAAS,aAAa,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAC5C,IAAI,SAAS,GAAG,QAAQ,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,wBAAwB,QAAQ,QAAQ,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { QuoteSessionQuestion } from '../session';
|
|
2
|
+
export interface ValidationResult {
|
|
3
|
+
valid: boolean;
|
|
4
|
+
error?: string;
|
|
5
|
+
}
|
|
6
|
+
export type AnswerValidator = (question: QuoteSessionQuestion, answer: unknown) => ValidationResult;
|
|
7
|
+
export declare const validResult: () => ValidationResult;
|
|
8
|
+
export declare const invalidResult: (error: string) => ValidationResult;
|
|
9
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKlD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,MAAM,eAAe,GAAG,CAC5B,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,KACZ,gBAAgB,CAAC;AAKtB,eAAO,MAAM,WAAW,QAAO,gBAAqC,CAAC;AAKrE,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,gBAG5C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/types.ts"],"names":[],"mappings":"AAyBA,MAAM,CAAC,MAAM,WAAW,GAAG,GAAqB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAKrE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAoB,EAAE,CAAC,CAAC;IACjE,KAAK,EAAE,KAAK;IACZ,KAAK;CACN,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yearValidator.d.ts","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/yearValidator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAA8B,MAAM,SAAS,CAAC;AAyBvE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,OAAO,GACd,gBAAgB,CA4BlB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { validResult, invalidResult } from './types';
|
|
2
|
+
function getYearConstraints(question) {
|
|
3
|
+
const result = {};
|
|
4
|
+
if (question.options && typeof question.options === 'object' && !Array.isArray(question.options)) {
|
|
5
|
+
const opts = question.options;
|
|
6
|
+
if (typeof opts.min === 'number')
|
|
7
|
+
result.min = opts.min;
|
|
8
|
+
if (typeof opts.max === 'number')
|
|
9
|
+
result.max = opts.max;
|
|
10
|
+
}
|
|
11
|
+
if (question.data && typeof question.data === 'object') {
|
|
12
|
+
const data = question.data;
|
|
13
|
+
if (result.min === undefined && typeof data.min === 'number')
|
|
14
|
+
result.min = data.min;
|
|
15
|
+
if (result.max === undefined && typeof data.max === 'number')
|
|
16
|
+
result.max = data.max;
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
export function validateYearAnswer(question, answer) {
|
|
21
|
+
if (answer === null || answer === undefined || answer === '') {
|
|
22
|
+
return validResult();
|
|
23
|
+
}
|
|
24
|
+
if (typeof answer !== 'number' || isNaN(answer)) {
|
|
25
|
+
return invalidResult('Must be a valid year');
|
|
26
|
+
}
|
|
27
|
+
if (!Number.isInteger(answer)) {
|
|
28
|
+
return invalidResult('Year must be a whole number');
|
|
29
|
+
}
|
|
30
|
+
const { min, max } = getYearConstraints(question);
|
|
31
|
+
if (min !== undefined && answer < min) {
|
|
32
|
+
return invalidResult(`Year must be ${min} or later`);
|
|
33
|
+
}
|
|
34
|
+
if (max !== undefined && answer > max) {
|
|
35
|
+
return invalidResult(`Year must be ${max} or earlier`);
|
|
36
|
+
}
|
|
37
|
+
return validResult();
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=yearValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yearValidator.js","sourceRoot":"","sources":["../../../../src/types/questionTypes/answerValidators/yearValidator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAKvE,SAAS,kBAAkB,CAAC,QAA8B;IACxD,MAAM,MAAM,GAAmC,EAAE,CAAC;IAGlD,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAkC,CAAC;QACzD,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACxD,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAC1D,CAAC;IAGD,IAAI,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA+B,CAAC;QACtD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACtF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,QAA8B,EAC9B,MAAe;IAGf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC7D,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC/C,CAAC;IAGD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACtD,CAAC;IAGD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAElD,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,gBAAgB,GAAG,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Condition, ConditionRule, ConditionOperator, VisibilityConditions } from './conditions';
|
|
2
|
+
import { QuoteSessionQuestion, CategoryConfig, CategoriesConfig } from './session';
|
|
3
|
+
export type AnswerMap = Map<string, unknown>;
|
|
4
|
+
export type QuestionLookup = Map<string, QuoteSessionQuestion>;
|
|
5
|
+
export declare function evaluateCategoryVisibility(conditions: VisibilityConditions | undefined | null, answers: AnswerMap, questions: QuoteSessionQuestion[]): boolean;
|
|
6
|
+
export declare function evaluateCondition(condition: Condition, answers: AnswerMap, questionLookup: QuestionLookup): boolean;
|
|
7
|
+
export declare function evaluateRule(rule: ConditionRule, answers: AnswerMap, questionLookup: QuestionLookup): boolean;
|
|
8
|
+
export declare function compareValue(actual: unknown, operator: ConditionOperator, expected?: unknown): boolean;
|
|
9
|
+
export interface ConditionValidationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
errors: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare function validateCategoryConditions(conditions: VisibilityConditions, categoryLabel: string, categoryEntityType: string, allQuestions: QuoteSessionQuestion[], allCategories: Record<string, CategoryConfig>): ConditionValidationResult;
|
|
14
|
+
export declare function extractQuestionReferences(condition: Condition): ConditionRule[];
|
|
15
|
+
export declare function getAvailableTriggerQuestions(categoryLabel: string, categoryEntityType: string, allQuestions: QuoteSessionQuestion[]): QuoteSessionQuestion[];
|
|
16
|
+
export declare function createEqualsCondition(questionId: string, value: unknown): ConditionRule;
|
|
17
|
+
export declare function createAndCondition(conditions: Condition[]): Condition;
|
|
18
|
+
export declare function createOrCondition(conditions: Condition[]): Condition;
|
|
19
|
+
export declare function createNotCondition(condition: Condition): Condition;
|
|
20
|
+
export declare function conditionToString(condition: Condition, questions: QuoteSessionQuestion[]): string;
|
|
21
|
+
export declare function convertConditionToCode(condition: Condition, questions: QuoteSessionQuestion[]): Condition;
|
|
22
|
+
export declare function convertConditionToId(condition: Condition, codeToIdMap: Map<string, string>): Condition;
|
|
23
|
+
export declare function normalizeCategoriesForTemplate(categoriesConfig: CategoriesConfig | undefined): CategoriesConfig | undefined;
|
|
24
|
+
export declare function convertCategoriesConfigToCode(categoriesConfig: CategoriesConfig | undefined, questions: QuoteSessionQuestion[]): CategoriesConfig | undefined;
|
|
25
|
+
export declare function convertCategoriesConfigToId(categoriesConfig: CategoriesConfig | undefined, codeToIdMap: Map<string, string>): CategoriesConfig | undefined;
|
|
26
|
+
//# sourceMappingURL=conditionHelpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conditionHelpers.d.ts","sourceRoot":"","sources":["../../../src/types/questionTypes/conditionHelpers.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EAKrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAMnF,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAG7C,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;AAW/D,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,oBAAoB,GAAG,SAAS,GAAG,IAAI,EACnD,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,oBAAoB,EAAE,GAChC,OAAO,CAUT;AAKD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAwBT;AAKD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,SAAS,EAClB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAKT;AAoCD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CA8CT;AAuFD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAYD,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,oBAAoB,EAChC,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,oBAAoB,EAAE,EACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAC5C,yBAAyB,CA+B3B;AAKD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,GAAG,aAAa,EAAE,CAkB/E;AAsCD,wBAAgB,4BAA4B,CAC1C,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,oBAAoB,EAAE,GACnC,oBAAoB,EAAE,CAiBxB;AAOD,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,GACb,aAAa,CAMf;AAKD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAKrE;AAKD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAKpE;AAKD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAElE;AAKD,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,oBAAoB,EAAE,GAChC,MAAM,CAwBR;AA4BD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,oBAAoB,EAAE,GAChC,SAAS,CA6BX;AAQD,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,SAAS,CA4BX;AAUD,wBAAgB,8BAA8B,CAC5C,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,GAC7C,gBAAgB,GAAG,SAAS,CA8B9B;AAOD,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,SAAS,EAAE,oBAAoB,EAAE,GAChC,gBAAgB,GAAG,SAAS,CAkC9B;AAOD,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,EAC9C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,gBAAgB,GAAG,SAAS,CAkC9B"}
|