@planning-inspectorate/dynamic-forms 3.14.0 → 3.15.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.
Files changed (49) hide show
  1. package/package.json +1 -1
  2. package/src/components/address/question.js +14 -0
  3. package/src/components/address/question.test.js +13 -0
  4. package/src/components/date/question.js +8 -0
  5. package/src/components/date/question.test.js +17 -0
  6. package/src/components/date-period/question.js +15 -0
  7. package/src/components/date-period/question.test.js +20 -0
  8. package/src/components/date-time/question.js +15 -0
  9. package/src/components/date-time/question.test.js +11 -0
  10. package/src/components/multi-field-input/question.js +8 -0
  11. package/src/components/multi-field-input/question.test.js +7 -0
  12. package/src/questions/question.js +11 -0
  13. package/src/questions/question.test.js +7 -0
  14. package/src/validator/address-validator.js +1 -1
  15. package/src/validator/base-validator.js +1 -1
  16. package/src/validator/conditional-required-validator.js +1 -1
  17. package/src/validator/cross-question-validator.README.md +131 -0
  18. package/src/validator/cross-question-validator.js +48 -5
  19. package/src/validator/cross-question-validator.test.js +448 -11
  20. package/src/validator/date-period-validator.js +1 -5
  21. package/src/validator/date-time-validator.js +1 -5
  22. package/src/validator/date-validator.js +1 -5
  23. package/src/validator/required-validator.js +1 -5
  24. package/src/validator/unit-option-entry-validator.js +1 -5
  25. package/types/src/components/address/question.d.ts.map +1 -1
  26. package/types/src/components/date/question.d.ts.map +1 -1
  27. package/types/src/components/date-period/question.d.ts.map +1 -1
  28. package/types/src/components/date-time/question.d.ts.map +1 -1
  29. package/types/src/components/multi-field-input/question.d.ts.map +1 -1
  30. package/types/src/questions/question.d.ts +8 -0
  31. package/types/src/questions/question.d.ts.map +1 -1
  32. package/types/src/validator/address-validator.d.ts +2 -2
  33. package/types/src/validator/address-validator.d.ts.map +1 -1
  34. package/types/src/validator/base-validator.d.ts +4 -2
  35. package/types/src/validator/base-validator.d.ts.map +1 -1
  36. package/types/src/validator/conditional-required-validator.d.ts +2 -2
  37. package/types/src/validator/conditional-required-validator.d.ts.map +1 -1
  38. package/types/src/validator/cross-question-validator.d.ts +11 -4
  39. package/types/src/validator/cross-question-validator.d.ts.map +1 -1
  40. package/types/src/validator/date-period-validator.d.ts +2 -6
  41. package/types/src/validator/date-period-validator.d.ts.map +1 -1
  42. package/types/src/validator/date-time-validator.d.ts +2 -6
  43. package/types/src/validator/date-time-validator.d.ts.map +1 -1
  44. package/types/src/validator/date-validator.d.ts +2 -6
  45. package/types/src/validator/date-validator.d.ts.map +1 -1
  46. package/types/src/validator/required-validator.d.ts +2 -6
  47. package/types/src/validator/required-validator.d.ts.map +1 -1
  48. package/types/src/validator/unit-option-entry-validator.d.ts +2 -6
  49. package/types/src/validator/unit-option-entry-validator.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"question.d.ts","sourceRoot":"","sources":["../../../src/questions/question.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"question.d.ts","sourceRoot":"","sources":["../../../src/questions/question.js"],"names":[],"mappings":"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"}
@@ -37,9 +37,9 @@ export class AddressValidator extends BaseValidator {
37
37
  } | undefined;
38
38
  /**
39
39
  * validates response body using questionObj fieldname
40
- * @param {Question} questionObj
40
+ * @param {import('../questions/question.js').Question} questionObj
41
41
  */
42
- validate(questionObj: Question): import("express-validator").ValidationChain[];
42
+ validate(questionObj: import("../questions/question.js").Question): import("express-validator").ValidationChain[];
43
43
  #private;
44
44
  }
45
45
  export default AddressValidator;
@@ -1 +1 @@
1
- {"version":3,"file":"address-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/address-validator.js"],"names":[],"mappings":"AAIO,4EAQN;AAGD,oCAAqC,GAAG,CAAC;AACzC,oCAAqC,CAAC,CAAC;AACvC,oCAAqC,GAAG,CAAC;AACzC,oCAAqC,CAAC,CAAC;AACvC,gCAAiC,GAAG,CAAC;AACrC,gCAAiC,CAAC,CAAC;AACnC,8BAA+B,GAAG,CAAC;AACnC,8BAA+B,CAAC,CAAC;AACjC,gCAAiC,CAAC,CAAC;AACnC,gCAAiC,CAAC,CAAC;AAEnC;;;GAGG;AACH;IACC;;;;OAIG;IACH,mBAFG;QAAqH,cAAc;0BAA5G,OAAO;0BAAgB,OAAO;sBAAY,OAAO;oBAAU,OAAO;sBAAY,OAAO;;KAAwB,EAKtI;IADA;sBAJyB,OAAO;sBAAgB,OAAO;kBAAY,OAAO;gBAAU,OAAO;kBAAY,OAAO;kBAIpE;IAG3C;;;OAGG;IACH,sBAFW,QAAQ,iDAYlB;;CAqGD;;0BA1JyB,qBAAqB"}
1
+ {"version":3,"file":"address-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/address-validator.js"],"names":[],"mappings":"AAIO,4EAQN;AAGD,oCAAqC,GAAG,CAAC;AACzC,oCAAqC,CAAC,CAAC;AACvC,oCAAqC,GAAG,CAAC;AACzC,oCAAqC,CAAC,CAAC;AACvC,gCAAiC,GAAG,CAAC;AACrC,gCAAiC,CAAC,CAAC;AACnC,8BAA+B,GAAG,CAAC;AACnC,8BAA+B,CAAC,CAAC;AACjC,gCAAiC,CAAC,CAAC;AACnC,gCAAiC,CAAC,CAAC;AAEnC;;;GAGG;AACH;IACC;;;;OAIG;IACH,mBAFG;QAAqH,cAAc;0BAA5G,OAAO;0BAAgB,OAAO;sBAAY,OAAO;oBAAU,OAAO;sBAAY,OAAO;;KAAwB,EAKtI;IADA;sBAJyB,OAAO;sBAAgB,OAAO;kBAAY,OAAO;gBAAU,OAAO;kBAAY,OAAO;kBAIpE;IAG3C;;;OAGG;IACH,sBAFW,OAAO,0BAA0B,EAAE,QAAQ,iDAYrD;;CAqGD;;0BA1JyB,qBAAqB"}
@@ -11,11 +11,13 @@ export class BaseValidator {
11
11
  * Validates response body against field validators.
12
12
  * Subclasses must override this method.
13
13
  * @abstract
14
- * @param {import('../questions/question-props.js').QuestionProps} questionObj - The question object containing the fieldName to validate.
14
+ * @param {{fieldName: string}} questionObj - The question object containing the fieldName to validate.
15
15
  * @param {import('../journey/journey-response.js').JourneyResponse} [journeyResponse] - The current journey response (optional).
16
16
  * @returns {import('express-validator').ValidationChain | import('express-validator').ValidationChain[]}
17
17
  */
18
- validate(questionObj: import("../questions/question-props.js").QuestionProps, journeyResponse?: import("../journey/journey-response.js").JourneyResponse): import("express-validator").ValidationChain | import("express-validator").ValidationChain[];
18
+ validate(questionObj: {
19
+ fieldName: string;
20
+ }, journeyResponse?: import("../journey/journey-response.js").JourneyResponse): import("express-validator").ValidationChain | import("express-validator").ValidationChain[];
19
21
  /**
20
22
  * Should the question that this validator is configured with be treated as a required question?
21
23
  *
@@ -1 +1 @@
1
- {"version":3,"file":"base-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/base-validator.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;IACC;;OAEG;IACH,cAFU,MAAM,CAEH;IAQb;;;;;;;OAOG;IAEH,sBALW,OAAO,gCAAgC,EAAE,aAAa,oBACtD,OAAO,gCAAgC,EAAE,eAAe,GACtD,OAAO,mBAAmB,EAAE,eAAe,GAAG,OAAO,mBAAmB,EAAE,eAAe,EAAE,CAKvG;IAED;;;;;OAKG;IACH,sBAEC;CACD"}
1
+ {"version":3,"file":"base-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/base-validator.js"],"names":[],"mappings":"AAAA;;;GAGG;AACH;IACC;;OAEG;IACH,cAFU,MAAM,CAEH;IAQb;;;;;;;OAOG;IAEH,sBALW;QAAC,SAAS,EAAE,MAAM,CAAA;KAAC,oBACnB,OAAO,gCAAgC,EAAE,eAAe,GACtD,OAAO,mBAAmB,EAAE,eAAe,GAAG,OAAO,mBAAmB,EAAE,eAAe,EAAE,CAKvG;IAED;;;;;OAKG;IACH,sBAEC;CACD"}
@@ -13,9 +13,9 @@ export class ConditionalRequiredValidator extends BaseValidator {
13
13
  constructor(errorMessage?: string);
14
14
  /**
15
15
  * validates the response body, checking the questionObj's fieldname
16
- * @param {Question} questionObj
16
+ * @param {import('../questions/options-question.js').OptionsQuestion} questionObj
17
17
  */
18
- validate(questionObj: Question): any;
18
+ validate(questionObj: import("../questions/options-question.js").OptionsQuestion): never[];
19
19
  getConditionalFieldName(questionObj: any, option: any): string;
20
20
  isValueIncluded(questionObj: any, value: any): import("express-validator").ValidationChain;
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conditional-required-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/conditional-required-validator.js"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;;GAGG;AACH;IAMC;;;OAGG;IACH,2BAFW,MAAM,EAQhB;IAED;;;OAGG;IACH,sBAFW,QAAQ,OAclB;IAED,+DAEC;IAED,2FAKC;CACD;;;0BAzDyB,qBAAqB"}
1
+ {"version":3,"file":"conditional-required-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/conditional-required-validator.js"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;;GAGG;AACH;IAMC;;;OAGG;IACH,2BAFW,MAAM,EAQhB;IAED;;;OAGG;IACH,sBAFW,OAAO,kCAAkC,EAAE,eAAe,WAcpE;IAED,+DAEC;IAED,2FAKC;CACD;;;0BAzDyB,qBAAqB"}
@@ -6,14 +6,16 @@ export class CrossQuestionValidator extends BaseValidator {
6
6
  * @param {Object} params
7
7
  * @param {string} params.dependencyFieldName - The field name of the other question to compare against.
8
8
  * @param {((currentAnswer: unknown, dependencyAnswer: unknown) => boolean)| null} params.validationFunction - A function that takes the current question's answer and the other question's answer and returns true if valid, false otherwise.
9
- * @param {boolean} [params.useBodyValues=false] - Whether to use req.body values for validation (default: false). Usually CrossQuestionValidator will be for validating across saved session answers, but if used between multiple fields on one question, it will need to use the body.
9
+ * @param {boolean} [params.useBodyValues=false] - Whether to use req.body values for validation (default: false). Usually CrossQuestionValidator will be for validating across saved JourneyResponse answers, but if used between multiple fields on one question, it will need to use the body.
10
+ * @param {boolean} [params.useBodyValuesForCurrent=false] - Whether to use req.body values for the current question's answer (default: false). This may help with questions where data is not saved to the JourneyResponse on POST (e.g. non-multiple entities questions).
10
11
  * @throws {Error} If validationFunction is not provided or is not a function.
11
12
  * @throws {Error} If dependencyFieldName is not provided
12
13
  */
13
- constructor({ dependencyFieldName, validationFunction, useBodyValues }?: {
14
+ constructor({ dependencyFieldName, validationFunction, useBodyValues, useBodyValuesForCurrent }?: {
14
15
  dependencyFieldName: string;
15
16
  validationFunction: ((currentAnswer: unknown, dependencyAnswer: unknown) => boolean) | null;
16
17
  useBodyValues?: boolean | undefined;
18
+ useBodyValuesForCurrent?: boolean | undefined;
17
19
  });
18
20
  /** @type {string} */
19
21
  dependencyFieldName: string;
@@ -21,13 +23,18 @@ export class CrossQuestionValidator extends BaseValidator {
21
23
  validationFunction: ((currentAnswer: unknown, dependencyAnswer: unknown) => boolean);
22
24
  /** @type {boolean} */
23
25
  useBodyValues: boolean;
26
+ /** @type {boolean} */
27
+ useBodyValuesForCurrent: boolean;
24
28
  /**
25
29
  * Validates response body against individual field validators.
26
- * @param {import('../questions/question-props.js').QuestionProps} questionObj - The question object containing the fieldName to validate.
30
+ * Uses the question's getDataToSave method to extract and format body values when useBodyValuesForCurrent is true,
31
+ * allowing generic handling of any question type without needing to know its internal structure.
32
+ * @param {import('../questions/question.js').Question} questionObj - The question object containing the fieldName to validate.
27
33
  * @param {import('../journey/journey-response.js').JourneyResponse} [journeyResponse={}] - The current journey response, used to access saved answers for validation.
28
34
  * @returns {import('express-validator').ValidationChain[]}
29
35
  */
30
- validate(questionObj: import("../questions/question-props.js").QuestionProps, journeyResponse?: import("../journey/journey-response.js").JourneyResponse): import("express-validator").ValidationChain[];
36
+ validate(questionObj: import("../questions/question.js").Question, journeyResponse?: import("../journey/journey-response.js").JourneyResponse): import("express-validator").ValidationChain[];
37
+ #private;
31
38
  }
32
39
  export default CrossQuestionValidator;
33
40
  import BaseValidator from './base-validator.js';
@@ -1 +1 @@
1
- {"version":3,"file":"cross-question-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/cross-question-validator.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAQC;;;;;;;OAOG;IACH,yEANG;QAAuB,mBAAmB,EAAlC,MAAM;QACyE,kBAAkB,EAAjG,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,GAAE,IAAI;QACrD,aAAa;KACtC,EAgBF;IA5BD,qBAAqB;IACrB,qBADW,MAAM,CACG;IACpB,+EAA+E;IAC/E,oBADW,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,CACxD;IACnB,sBAAsB;IACtB,eADW,OAAO,CACJ;IAyBd;;;;;OAKG;IACH,sBAJW,OAAO,gCAAgC,EAAE,aAAa,oBACtD,OAAO,gCAAgC,EAAE,eAAe,GACtD,OAAO,mBAAmB,EAAE,eAAe,EAAE,CAqBzD;CACD;;0BA/DyB,qBAAqB"}
1
+ {"version":3,"file":"cross-question-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/cross-question-validator.js"],"names":[],"mappings":"AAGA;;GAEG;AACH;IAUC;;;;;;;;OAQG;IACH,kGAPG;QAAuB,mBAAmB,EAAlC,MAAM;QACyE,kBAAkB,EAAjG,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,GAAE,IAAI;QACrD,aAAa;QACb,uBAAuB;KAChD,EAsBF;IArCD,qBAAqB;IACrB,qBADW,MAAM,CACG;IACpB,+EAA+E;IAC/E,oBADW,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO,KAAK,OAAO,CAAC,CACxD;IACnB,sBAAsB;IACtB,eADW,OAAO,CACJ;IACd,sBAAsB;IACtB,yBADW,OAAO,CACM;IA8CxB;;;;;;;OAOG;IACH,sBAJW,OAAO,0BAA0B,EAAE,QAAQ,oBAC3C,OAAO,gCAAgC,EAAE,eAAe,GACtD,OAAO,mBAAmB,EAAE,eAAe,EAAE,CAuCzD;;CACD;;0BA1GyB,qBAAqB"}
@@ -1,6 +1,3 @@
1
- /**
2
- * @typedef {import('../components/date/question.js')} DateQuestion
3
- */
4
1
  /**
5
2
  * @typedef {Object} DateValidationSettings
6
3
  * @property {Boolean} ensureFuture
@@ -34,9 +31,9 @@ export class DatePeriodValidator extends BaseValidator {
34
31
  pastDateErrorMessage: any;
35
32
  /**
36
33
  * validates the response body, checking the values sent for the date are valid
37
- * @param {DateQuestion} questionObj
34
+ * @param {import('../components/date/question.js').DateQuestion} questionObj
38
35
  */
39
- validate(questionObj: DateQuestion): import("express-validator").ValidationChain[];
36
+ validate(questionObj: import("../components/date/question.js").DateQuestion): import("express-validator").ValidationChain[];
40
37
  rulesForNotEmptyInput({ dayInput, monthInput, yearInput }: {
41
38
  dayInput: any;
42
39
  monthInput: any;
@@ -55,7 +52,6 @@ export class DatePeriodValidator extends BaseValidator {
55
52
  #private;
56
53
  }
57
54
  export default DatePeriodValidator;
58
- export type DateQuestion = typeof import("../components/date/question.js");
59
55
  export type DateValidationSettings = {
60
56
  ensureFuture: boolean;
61
57
  ensurePast: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"date-period-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/date-period-validator.js"],"names":[],"mappings":"AAQA;;GAEG;AAEH;;;;GAIG;AAEH;;;GAGG;AACH;IAIC;;;;;OAKG;IACH,wBAJW,MAAM,2BACN,sBAAsB,kBACtB,MAAM,EAgChB;IAvCD,qCAAqC;IACrC,wBADW,sBAAsB,CACV;IAoBtB,uBAAmG;IACnG,uBAAmG;IACnG,yBAAyG;IACzG,wBAAsG;IACtG,4BAAkH;IAClH,2BAA+G;IAC/G,6BACuF;IACvF,6BACuF;IACvF,8BACyF;IACzF,6BACuF;IACvF,4BAAkH;IAClH,0BAA4G;IAK7G;;;OAGG;IACH,sBAFW,YAAY,iDAsBtB;IAED;;;;sDAuCC;IAED;;;;sDAwBC;IAED;;;;sDAuBC;;CA6BD;;;;;;;0BA5MyB,qBAAqB"}
1
+ {"version":3,"file":"date-period-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/date-period-validator.js"],"names":[],"mappings":"AAQA;;;;GAIG;AAEH;;;GAGG;AACH;IAIC;;;;;OAKG;IACH,wBAJW,MAAM,2BACN,sBAAsB,kBACtB,MAAM,EAgChB;IAvCD,qCAAqC;IACrC,wBADW,sBAAsB,CACV;IAoBtB,uBAAmG;IACnG,uBAAmG;IACnG,yBAAyG;IACzG,wBAAsG;IACtG,4BAAkH;IAClH,2BAA+G;IAC/G,6BACuF;IACvF,6BACuF;IACvF,8BACyF;IACzF,6BACuF;IACvF,4BAAkH;IAClH,0BAA4G;IAK7G;;;OAGG;IACH,sBAFW,OAAO,gCAAgC,EAAE,YAAY,iDAsB/D;IAED;;;;sDAuCC;IAED;;;;sDAwBC;IAED;;;;sDAuBC;;CA6BD;;;;;;0BAxMyB,qBAAqB"}
@@ -1,6 +1,3 @@
1
- /**
2
- * @typedef {import('./question.js')} DateTimeQuestion
3
- */
4
1
  /**
5
2
  * enforces a user has entered a valid date
6
3
  * @class
@@ -17,11 +14,10 @@ export class DateTimeValidator extends DateValidator {
17
14
  timeInputLabel: string;
18
15
  /**
19
16
  * validates the response body, checking the values sent for the date are valid
20
- * @param {DateTimeQuestion} questionObj
17
+ * @param {import('../components/date-time/question.js').DateTimeQuestion} questionObj
21
18
  */
22
- validate(questionObj: DateTimeQuestion): import("express-validator").ValidationChain[];
19
+ validate(questionObj: import("../components/date-time/question.js").DateTimeQuestion): import("express-validator").ValidationChain[];
23
20
  }
24
21
  export default DateTimeValidator;
25
- export type DateTimeQuestion = any;
26
22
  import DateValidator from './date-validator.js';
27
23
  //# sourceMappingURL=date-time-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-time-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/date-time-validator.js"],"names":[],"mappings":"AAGA;;GAEG;AAEH;;;GAGG;AACH;IACC;;;;;;OAMG;IACH,4BALW,MAAM,mBACN,MAAM,2BACN,sBAAsB,sBACtB,MAAM,EAahB;IADA,uBAAoC;IAGrC;;;OAGG;IACH,sBAFW,gBAAgB,iDAsC1B;CACD;;;0BAxEyB,qBAAqB"}
1
+ {"version":3,"file":"date-time-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/date-time-validator.js"],"names":[],"mappings":"AAGA;;;GAGG;AACH;IACC;;;;;;OAMG;IACH,4BALW,MAAM,mBACN,MAAM,2BACN,sBAAsB,sBACtB,MAAM,EAahB;IADA,uBAAoC;IAGrC;;;OAGG;IACH,sBAFW,OAAO,qCAAqC,EAAE,gBAAgB,iDAsCxE;CACD;;0BApEyB,qBAAqB"}
@@ -1,6 +1,3 @@
1
- /**
2
- * @typedef {import('../components/date/question.js')} DateQuestion
3
- */
4
1
  /**
5
2
  * @typedef {Object} DateValidationSettings
6
3
  * @property {Boolean} [ensureFuture]
@@ -35,13 +32,12 @@ export class DateValidator extends BaseValidator {
35
32
  pastDateErrorMessage: any;
36
33
  /**
37
34
  * validates the response body, checking the values sent for the date are valid
38
- * @param {DateQuestion} questionObj
35
+ * @param {import('../components/date/question.js').DateQuestion} questionObj
39
36
  */
40
- validate(questionObj: DateQuestion): import("express-validator").ValidationChain[];
37
+ validate(questionObj: import("../components/date/question.js").DateQuestion): import("express-validator").ValidationChain[];
41
38
  #private;
42
39
  }
43
40
  export default DateValidator;
44
- export type DateQuestion = typeof import("../components/date/question.js");
45
41
  export type DateValidationSettings = {
46
42
  ensureFuture?: boolean | undefined;
47
43
  ensurePast?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"date-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/date-validator.js"],"names":[],"mappings":"AAOA;;GAEG;AAEH;;;;;GAKG;AAEH;;;GAGG;AACH;IAIC;;;;;OAKG;IACH,wBAJW,MAAM,2BACN,sBAAsB,kBACtB,MAAM,EAiChB;IAxCD,qCAAqC;IACrC,wBADW,sBAAsB,CACV;IAqBtB,uBAAmG;IACnG,uBAAmG;IACnG,yBAAyG;IACzG,wBAAsG;IACtG,4BAAkH;IAClH,2BAA+G;IAC/G,6BACuF;IACvF,6BACuF;IACvF,8BACyF;IACzF,6BACuF;IACvF,4BAAkH;IAClH,0BAA4G;IAS7G;;;OAGG;IACH,sBAFW,YAAY,iDA0HtB;;CA6BD;;;;;;;;0BA1NyB,qBAAqB"}
1
+ {"version":3,"file":"date-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/date-validator.js"],"names":[],"mappings":"AAOA;;;;;GAKG;AAEH;;;GAGG;AACH;IAIC;;;;;OAKG;IACH,wBAJW,MAAM,2BACN,sBAAsB,kBACtB,MAAM,EAiChB;IAxCD,qCAAqC;IACrC,wBADW,sBAAsB,CACV;IAqBtB,uBAAmG;IACnG,uBAAmG;IACnG,yBAAyG;IACzG,wBAAsG;IACtG,4BAAkH;IAClH,2BAA+G;IAC/G,6BACuF;IACvF,6BACuF;IACvF,8BACyF;IACzF,6BACuF;IACvF,4BAAkH;IAClH,0BAA4G;IAS7G;;;OAGG;IACH,sBAFW,OAAO,gCAAgC,EAAE,YAAY,iDA0H/D;;CA6BD;;;;;;;0BAtNyB,qBAAqB"}
@@ -1,6 +1,3 @@
1
- /**
2
- * @typedef {import('../questions/question.js')} Question
3
- */
4
1
  /**
5
2
  * enforces a field is not empty
6
3
  * @class
@@ -13,11 +10,10 @@ export class RequiredValidator extends BaseValidator {
13
10
  constructor(errorMessage?: string);
14
11
  /**
15
12
  * validates the response body, checking the questionObj's fieldname
16
- * @param {Question} questionObj
13
+ * @param {import('../questions/question.js').Question} questionObj
17
14
  */
18
- validate(questionObj: Question): import("express-validator").ValidationChain;
15
+ validate(questionObj: import("../questions/question.js").Question): import("express-validator").ValidationChain;
19
16
  }
20
17
  export default RequiredValidator;
21
- export type Question = typeof import("../questions/question.js");
22
18
  import BaseValidator from './base-validator.js';
23
19
  //# sourceMappingURL=required-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"required-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/required-validator.js"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH;IAMC;;;OAGG;IACH,2BAFW,MAAM,EAQhB;IAED;;;OAGG;IACH,sBAFW,QAAQ,+CAIlB;CAKD;;;0BAvCyB,qBAAqB"}
1
+ {"version":3,"file":"required-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/required-validator.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH;IAMC;;;OAGG;IACH,2BAFW,MAAM,EAQhB;IAED;;;OAGG;IACH,sBAFW,OAAO,0BAA0B,EAAE,QAAQ,+CAIrD;CAKD;;0BAnCyB,qBAAqB"}
@@ -1,6 +1,3 @@
1
- /**
2
- * @typedef {import('../questions/question.js')} Question
3
- */
4
1
  /**
5
2
  * enforces a field is not empty when condition is satisfied
6
3
  * @class
@@ -30,12 +27,11 @@ export class UnitOptionEntryValidator extends BaseValidator {
30
27
  regexMessage: string;
31
28
  /**
32
29
  * validates the response body, checking the questionObj's fieldname
33
- * @param {Question} questionObj
30
+ * @param {import('../components/unit-option-entry/question.js').UnitOptionEntryQuestion} questionObj
34
31
  */
35
- validate(questionObj: Question): any;
32
+ validate(questionObj: import("../components/unit-option-entry/question.js").UnitOptionEntryQuestion): never[];
36
33
  isValueIncluded(questionObj: any, value: any): import("express-validator").ValidationChain;
37
34
  }
38
35
  export default UnitOptionEntryValidator;
39
- export type Question = typeof import("../questions/question.js");
40
36
  import BaseValidator from './base-validator.js';
41
37
  //# sourceMappingURL=unit-option-entry-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unit-option-entry-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/unit-option-entry-validator.js"],"names":[],"mappings":"AAKA;;GAEG;AAEH;;;GAGG;AACH;IACC;;;;;;;;OAQG;IAEH,oEARG;QAAwB,YAAY;QACZ,IAAI;QACJ,GAAG;QACH,GAAG;QACJ,KAAK;QACJ,YAAY;KAAC,EAWvC;IALA,aAA2B;IAC3B,wBAAc;IACd,wBAAc;IACd,WAAkB;IAClB,qBAA0D;IAG3D;;;OAGG;IACH,sBAFW,QAAQ,OA4ClB;IAED,2FAKC;CACD;;;0BAtFyB,qBAAqB"}
1
+ {"version":3,"file":"unit-option-entry-validator.d.ts","sourceRoot":"","sources":["../../../src/validator/unit-option-entry-validator.js"],"names":[],"mappings":"AAKA;;;GAGG;AACH;IACC;;;;;;;;OAQG;IAEH,oEARG;QAAwB,YAAY;QACZ,IAAI;QACJ,GAAG;QACH,GAAG;QACJ,KAAK;QACJ,YAAY;KAAC,EAWvC;IALA,aAA2B;IAC3B,wBAAc;IACd,wBAAc;IACd,WAAkB;IAClB,qBAA0D;IAG3D;;;OAGG;IACH,sBAFW,OAAO,6CAA6C,EAAE,uBAAuB,WA4CvF;IAED,2FAKC;CACD;;0BAlFyB,qBAAqB"}