@defra/forms-model 3.0.10 → 3.0.11

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 (237) hide show
  1. package/dist/browser/components/component-types.js +201 -219
  2. package/dist/browser/components/component-types.js.map +1 -1
  3. package/dist/browser/components/conditional-component-types.js +9 -27
  4. package/dist/browser/components/conditional-component-types.js.map +1 -1
  5. package/dist/browser/components/enums.js +27 -45
  6. package/dist/browser/components/enums.js.map +1 -1
  7. package/dist/browser/components/index.js +3 -35
  8. package/dist/browser/components/index.js.map +1 -1
  9. package/dist/browser/components/types.js +1 -15
  10. package/dist/browser/conditions/condition-abstract.js +42 -60
  11. package/dist/browser/conditions/condition-abstract.js.map +1 -1
  12. package/dist/browser/conditions/condition-field.js +23 -41
  13. package/dist/browser/conditions/condition-field.js.map +1 -1
  14. package/dist/browser/conditions/condition-group-def.js +23 -42
  15. package/dist/browser/conditions/condition-group-def.js.map +1 -1
  16. package/dist/browser/conditions/condition-group.js +43 -61
  17. package/dist/browser/conditions/condition-group.js.map +1 -1
  18. package/dist/browser/conditions/condition-model.js +185 -196
  19. package/dist/browser/conditions/condition-model.js.map +1 -1
  20. package/dist/browser/conditions/condition-operators.js +103 -124
  21. package/dist/browser/conditions/condition-operators.js.map +1 -1
  22. package/dist/browser/conditions/condition-ref.js +29 -47
  23. package/dist/browser/conditions/condition-ref.js.map +1 -1
  24. package/dist/browser/conditions/condition-value-abstract.js +19 -37
  25. package/dist/browser/conditions/condition-value-abstract.js.map +1 -1
  26. package/dist/browser/conditions/condition-value-registration.js +15 -34
  27. package/dist/browser/conditions/condition-value-registration.js.map +1 -1
  28. package/dist/browser/conditions/condition-values.js +98 -118
  29. package/dist/browser/conditions/condition-values.js.map +1 -1
  30. package/dist/browser/conditions/condition.js +36 -51
  31. package/dist/browser/conditions/condition.js.map +1 -1
  32. package/dist/browser/conditions/enums.js +5 -23
  33. package/dist/browser/conditions/enums.js.map +1 -1
  34. package/dist/browser/conditions/helpers.js +6 -25
  35. package/dist/browser/conditions/helpers.js.map +1 -1
  36. package/dist/browser/conditions/index.js +10 -143
  37. package/dist/browser/conditions/index.js.map +1 -1
  38. package/dist/browser/conditions/inline-condition-model.js +372 -394
  39. package/dist/browser/conditions/inline-condition-model.js.map +1 -1
  40. package/dist/browser/conditions/inline-condition-operators.js +103 -124
  41. package/dist/browser/conditions/inline-condition-operators.js.map +1 -1
  42. package/dist/browser/conditions/inline-condition-values.js +123 -145
  43. package/dist/browser/conditions/inline-condition-values.js.map +1 -1
  44. package/dist/browser/conditions/types.js +1 -15
  45. package/dist/browser/conditions/types.js.map +1 -1
  46. package/dist/browser/data-model/conditions-wrapper.js +27 -45
  47. package/dist/browser/data-model/conditions-wrapper.js.map +1 -1
  48. package/dist/browser/data-model/enums.js +6 -24
  49. package/dist/browser/data-model/enums.js.map +1 -1
  50. package/dist/browser/data-model/index.js +3 -35
  51. package/dist/browser/data-model/index.js.map +1 -1
  52. package/dist/browser/data-model/input-wrapper.js +28 -46
  53. package/dist/browser/data-model/input-wrapper.js.map +1 -1
  54. package/dist/browser/data-model/types.js +7 -25
  55. package/dist/browser/data-model/types.js.map +1 -1
  56. package/dist/browser/form/form-configuration.js +16 -35
  57. package/dist/browser/form/form-configuration.js.map +1 -1
  58. package/dist/browser/form/index.js +1 -23
  59. package/dist/browser/form/index.js.map +1 -1
  60. package/dist/browser/index.js +8 -97
  61. package/dist/browser/index.js.map +1 -1
  62. package/dist/browser/migration/index.js +1 -23
  63. package/dist/browser/migration/index.js.map +1 -1
  64. package/dist/browser/migration/migration.0-2.js +42 -60
  65. package/dist/browser/migration/migration.0-2.js.map +1 -1
  66. package/dist/browser/migration/migration.1-2.js +83 -99
  67. package/dist/browser/migration/migration.1-2.js.map +1 -1
  68. package/dist/browser/migration/types.js +1 -15
  69. package/dist/browser/migration/whichMigrations.js +20 -36
  70. package/dist/browser/migration/whichMigrations.js.map +1 -1
  71. package/dist/browser/schema/index.js +1 -29
  72. package/dist/browser/schema/index.js.map +1 -1
  73. package/dist/browser/schema/schema.js +231 -249
  74. package/dist/browser/schema/schema.js.map +1 -1
  75. package/dist/browser/utils/helpers.js +22 -43
  76. package/dist/browser/utils/helpers.js.map +1 -1
  77. package/dist/browser/utils/logger.js +24 -43
  78. package/dist/browser/utils/logger.js.map +1 -1
  79. package/dist/module/components/component-types.js +1 -5
  80. package/dist/module/components/component-types.js.map +1 -1
  81. package/dist/module/components/conditional-component-types.js +1 -5
  82. package/dist/module/components/conditional-component-types.js.map +1 -1
  83. package/dist/module/components/enums.js +1 -5
  84. package/dist/module/components/enums.js.map +1 -1
  85. package/dist/module/components/index.js +3 -24
  86. package/dist/module/components/index.js.map +1 -1
  87. package/dist/module/components/types.js +1 -1
  88. package/dist/module/conditions/condition-abstract.js +3 -8
  89. package/dist/module/conditions/condition-abstract.js.map +1 -1
  90. package/dist/module/conditions/condition-field.js +3 -8
  91. package/dist/module/conditions/condition-field.js.map +1 -1
  92. package/dist/module/conditions/condition-group-def.js +1 -6
  93. package/dist/module/conditions/condition-group-def.js.map +1 -1
  94. package/dist/module/conditions/condition-group.js +4 -9
  95. package/dist/module/conditions/condition-group.js.map +1 -1
  96. package/dist/module/conditions/condition-model.js +20 -25
  97. package/dist/module/conditions/condition-model.js.map +1 -1
  98. package/dist/module/conditions/condition-operators.js +15 -23
  99. package/dist/module/conditions/condition-operators.js.map +1 -1
  100. package/dist/module/conditions/condition-ref.js +2 -7
  101. package/dist/module/conditions/condition-ref.js.map +1 -1
  102. package/dist/module/conditions/condition-value-abstract.js +3 -8
  103. package/dist/module/conditions/condition-value-abstract.js.map +1 -1
  104. package/dist/module/conditions/condition-value-registration.js +1 -6
  105. package/dist/module/conditions/condition-value-registration.js.map +1 -1
  106. package/dist/module/conditions/condition-values.js +12 -20
  107. package/dist/module/conditions/condition-values.js.map +1 -1
  108. package/dist/module/conditions/condition.js +9 -14
  109. package/dist/module/conditions/condition.js.map +1 -1
  110. package/dist/module/conditions/enums.js +1 -5
  111. package/dist/module/conditions/enums.js.map +1 -1
  112. package/dist/module/conditions/helpers.js +2 -7
  113. package/dist/module/conditions/helpers.js.map +1 -1
  114. package/dist/module/conditions/index.js +10 -139
  115. package/dist/module/conditions/index.js.map +1 -1
  116. package/dist/module/conditions/inline-condition-model.js +15 -26
  117. package/dist/module/conditions/inline-condition-model.js.map +1 -1
  118. package/dist/module/conditions/inline-condition-operators.js +15 -23
  119. package/dist/module/conditions/inline-condition-operators.js.map +1 -1
  120. package/dist/module/conditions/inline-condition-values.js +9 -17
  121. package/dist/module/conditions/inline-condition-values.js.map +1 -1
  122. package/dist/module/conditions/types.js +1 -1
  123. package/dist/module/conditions/types.js.map +1 -1
  124. package/dist/module/data-model/conditions-wrapper.js +3 -8
  125. package/dist/module/data-model/conditions-wrapper.js.map +1 -1
  126. package/dist/module/data-model/enums.js +1 -5
  127. package/dist/module/data-model/enums.js.map +1 -1
  128. package/dist/module/data-model/index.js +3 -24
  129. package/dist/module/data-model/index.js.map +1 -1
  130. package/dist/module/data-model/input-wrapper.js +3 -8
  131. package/dist/module/data-model/input-wrapper.js.map +1 -1
  132. package/dist/module/data-model/types.js +1 -5
  133. package/dist/module/data-model/types.js.map +1 -1
  134. package/dist/module/form/form-configuration.js +1 -6
  135. package/dist/module/form/form-configuration.js.map +1 -1
  136. package/dist/module/form/index.js +1 -10
  137. package/dist/module/form/index.js.map +1 -1
  138. package/dist/module/index.js +8 -91
  139. package/dist/module/index.js.map +1 -1
  140. package/dist/module/migration/index.js +1 -10
  141. package/dist/module/migration/index.js.map +1 -1
  142. package/dist/module/migration/migration.0-2.js +1 -5
  143. package/dist/module/migration/migration.0-2.js.map +1 -1
  144. package/dist/module/migration/migration.1-2.js +3 -6
  145. package/dist/module/migration/migration.1-2.js.map +1 -1
  146. package/dist/module/migration/types.js +1 -1
  147. package/dist/module/migration/whichMigrations.js +5 -9
  148. package/dist/module/migration/whichMigrations.js.map +1 -1
  149. package/dist/module/schema/index.js +1 -16
  150. package/dist/module/schema/index.js.map +1 -1
  151. package/dist/module/schema/schema.js +163 -167
  152. package/dist/module/schema/schema.js.map +1 -1
  153. package/dist/module/utils/helpers.js +5 -13
  154. package/dist/module/utils/helpers.js.map +1 -1
  155. package/dist/module/utils/logger.js +1 -6
  156. package/dist/module/utils/logger.js.map +1 -1
  157. package/dist/types/components/component-types.d.ts +1 -1
  158. package/dist/types/components/component-types.d.ts.map +1 -1
  159. package/dist/types/components/conditional-component-types.d.ts +1 -1
  160. package/dist/types/components/conditional-component-types.d.ts.map +1 -1
  161. package/dist/types/components/index.d.ts +3 -3
  162. package/dist/types/components/index.d.ts.map +1 -1
  163. package/dist/types/conditions/condition-abstract.d.ts +1 -1
  164. package/dist/types/conditions/condition-abstract.d.ts.map +1 -1
  165. package/dist/types/conditions/condition-field.d.ts +1 -1
  166. package/dist/types/conditions/condition-field.d.ts.map +1 -1
  167. package/dist/types/conditions/condition-group-def.d.ts +2 -2
  168. package/dist/types/conditions/condition-group-def.d.ts.map +1 -1
  169. package/dist/types/conditions/condition-group.d.ts +2 -2
  170. package/dist/types/conditions/condition-group.d.ts.map +1 -1
  171. package/dist/types/conditions/condition-model.d.ts +5 -5
  172. package/dist/types/conditions/condition-model.d.ts.map +1 -1
  173. package/dist/types/conditions/condition-operators.d.ts +2 -2
  174. package/dist/types/conditions/condition-operators.d.ts.map +1 -1
  175. package/dist/types/conditions/condition-ref.d.ts +2 -2
  176. package/dist/types/conditions/condition-ref.d.ts.map +1 -1
  177. package/dist/types/conditions/condition-value-abstract.d.ts +1 -1
  178. package/dist/types/conditions/condition-value-abstract.d.ts.map +1 -1
  179. package/dist/types/conditions/condition-values.d.ts +3 -3
  180. package/dist/types/conditions/condition-values.d.ts.map +1 -1
  181. package/dist/types/conditions/condition.d.ts +4 -4
  182. package/dist/types/conditions/condition.d.ts.map +1 -1
  183. package/dist/types/conditions/index.d.ts +10 -10
  184. package/dist/types/conditions/index.d.ts.map +1 -1
  185. package/dist/types/conditions/types.d.ts +3 -3
  186. package/dist/types/conditions/types.d.ts.map +1 -1
  187. package/dist/types/data-model/conditions-wrapper.d.ts +1 -1
  188. package/dist/types/data-model/conditions-wrapper.d.ts.map +1 -1
  189. package/dist/types/data-model/index.d.ts +3 -3
  190. package/dist/types/data-model/index.d.ts.map +1 -1
  191. package/dist/types/data-model/input-wrapper.d.ts +2 -2
  192. package/dist/types/data-model/input-wrapper.d.ts.map +1 -1
  193. package/dist/types/data-model/types.d.ts +3 -3
  194. package/dist/types/data-model/types.d.ts.map +1 -1
  195. package/dist/types/form/index.d.ts +1 -1
  196. package/dist/types/form/index.d.ts.map +1 -1
  197. package/dist/types/index.d.ts +11 -11
  198. package/dist/types/index.d.ts.map +1 -1
  199. package/dist/types/migration/index.d.ts +1 -1
  200. package/dist/types/migration/index.d.ts.map +1 -1
  201. package/dist/types/migration/migration.0-2.d.ts +1 -1
  202. package/dist/types/migration/migration.0-2.d.ts.map +1 -1
  203. package/dist/types/migration/migration.1-2.d.ts +1 -1
  204. package/dist/types/migration/migration.1-2.d.ts.map +1 -1
  205. package/dist/types/migration/whichMigrations.d.ts +1 -1
  206. package/dist/types/migration/whichMigrations.d.ts.map +1 -1
  207. package/dist/types/schema/index.d.ts +1 -1
  208. package/dist/types/schema/index.d.ts.map +1 -1
  209. package/package.json +2 -1
  210. package/src/components/component-types.ts +1 -1
  211. package/src/components/conditional-component-types.ts +1 -1
  212. package/src/components/index.ts +3 -3
  213. package/src/conditions/condition-abstract.ts +1 -1
  214. package/src/conditions/condition-field.ts +2 -2
  215. package/src/conditions/condition-group-def.ts +1 -1
  216. package/src/conditions/condition-group.ts +3 -3
  217. package/src/conditions/condition-model.ts +9 -9
  218. package/src/conditions/condition-operators.ts +6 -3
  219. package/src/conditions/condition-ref.ts +2 -2
  220. package/src/conditions/condition-value-abstract.ts +1 -1
  221. package/src/conditions/condition-values.ts +3 -3
  222. package/src/conditions/condition.ts +6 -6
  223. package/src/conditions/index.ts +10 -10
  224. package/src/conditions/inline-condition-model.ts +3 -3
  225. package/src/conditions/inline-condition-operators.ts +1 -1
  226. package/src/conditions/types.ts +3 -3
  227. package/src/data-model/conditions-wrapper.ts +2 -2
  228. package/src/data-model/index.ts +3 -3
  229. package/src/data-model/input-wrapper.ts +3 -3
  230. package/src/data-model/types.ts +3 -3
  231. package/src/form/index.ts +1 -1
  232. package/src/index.ts +11 -11
  233. package/src/migration/index.ts +1 -1
  234. package/src/migration/migration.0-2.ts +1 -1
  235. package/src/migration/migration.1-2.ts +2 -2
  236. package/src/migration/whichMigrations.ts +3 -3
  237. package/src/schema/index.ts +1 -1
@@ -1,255 +1,237 @@
1
- (function (global, factory) {
2
- if (typeof define === "function" && define.amd) {
3
- define(["exports", "joi"], factory);
4
- } else if (typeof exports !== "undefined") {
5
- factory(exports, require("joi"));
6
- } else {
7
- var mod = {
8
- exports: {}
9
- };
10
- factory(mod.exports, global.joi);
11
- global.schema = mod.exports;
12
- }
13
- })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _joi) {
14
- "use strict";
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ import joi from 'joi';
15
7
 
16
- _exports.__esModule = true;
17
- _exports.componentSchema = _exports.Schema = _exports.CURRENT_VERSION = void 0;
18
- _joi = _interopRequireDefault(_joi);
19
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
24
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
25
- /**
26
- * If an optional key is added, CURRENT_VERSION does not need to be incremented.
27
- * Only breaking changes will require an increment, as well as a migration script.
28
- */
29
- const CURRENT_VERSION = _exports.CURRENT_VERSION = 2;
30
- const sectionsSchema = _joi.default.object().keys({
31
- name: _joi.default.string().required(),
32
- title: _joi.default.string().required(),
33
- hideTitle: _joi.default.boolean().default(false)
34
- });
35
- const conditionFieldSchema = _joi.default.object().keys({
36
- name: _joi.default.string().required(),
37
- type: _joi.default.string().required(),
38
- display: _joi.default.string().required()
39
- });
40
- const conditionValueSchema = _joi.default.object().keys({
41
- type: _joi.default.string().required(),
42
- value: _joi.default.string().required(),
43
- display: _joi.default.string().required()
44
- });
45
- const relativeTimeValueSchema = _joi.default.object().keys({
46
- type: _joi.default.string().required(),
47
- timePeriod: _joi.default.string().required(),
48
- timeUnit: _joi.default.string().required(),
49
- direction: _joi.default.string().required(),
50
- timeOnly: _joi.default.boolean().required()
51
- });
52
- const conditionRefSchema = _joi.default.object().keys({
53
- conditionName: _joi.default.string().required(),
54
- conditionDisplayName: _joi.default.string().required(),
55
- coordinator: _joi.default.string().optional()
56
- });
57
- const conditionSchema = _joi.default.object().keys({
58
- field: conditionFieldSchema,
59
- operator: _joi.default.string().required(),
60
- value: _joi.default.alternatives().try(conditionValueSchema, relativeTimeValueSchema),
61
- coordinator: _joi.default.string().optional()
62
- });
63
- const conditionGroupSchema = _joi.default.object().keys({
64
- conditions: _joi.default.array().items(_joi.default.alternatives().try(conditionSchema, conditionRefSchema, _joi.default.any() /** Should be a joi.link('#conditionGroupSchema') */))
65
- });
66
- const conditionsModelSchema = _joi.default.object().keys({
67
- name: _joi.default.string().required(),
68
- conditions: _joi.default.array().items(_joi.default.alternatives().try(conditionSchema, conditionRefSchema, conditionGroupSchema))
69
- });
70
- const conditionsSchema = _joi.default.object().keys({
71
- name: _joi.default.string().required(),
72
- displayName: _joi.default.string(),
73
- value: _joi.default.alternatives().try(_joi.default.string(), conditionsModelSchema).required()
74
- });
75
- const localisedString = _joi.default.alternatives().try(_joi.default.object({
76
- a: _joi.default.any()
77
- }).unknown(), _joi.default.string().allow(''));
78
- const componentSchema = _exports.componentSchema = _joi.default.object().keys({
79
- type: _joi.default.string().required(),
80
- name: _joi.default.string(),
81
- title: localisedString,
82
- hint: localisedString.optional(),
83
- options: _joi.default.object().default({}),
84
- schema: _joi.default.object({
85
- min: _joi.default.number(),
86
- max: _joi.default.number()
87
- }).unknown(true).default({}),
88
- list: _joi.default.string().optional()
89
- }).unknown(true);
90
- const nextSchema = _joi.default.object().keys({
91
- path: _joi.default.string().required(),
92
- condition: _joi.default.string().allow('').optional(),
93
- redirect: _joi.default.string().uri().optional()
94
- });
8
+ /**
9
+ * If an optional key is added, CURRENT_VERSION does not need to be incremented.
10
+ * Only breaking changes will require an increment, as well as a migration script.
11
+ */
12
+ export const CURRENT_VERSION = 2;
13
+ const sectionsSchema = joi.object().keys({
14
+ name: joi.string().required(),
15
+ title: joi.string().required(),
16
+ hideTitle: joi.boolean().default(false)
17
+ });
18
+ const conditionFieldSchema = joi.object().keys({
19
+ name: joi.string().required(),
20
+ type: joi.string().required(),
21
+ display: joi.string().required()
22
+ });
23
+ const conditionValueSchema = joi.object().keys({
24
+ type: joi.string().required(),
25
+ value: joi.string().required(),
26
+ display: joi.string().required()
27
+ });
28
+ const relativeTimeValueSchema = joi.object().keys({
29
+ type: joi.string().required(),
30
+ timePeriod: joi.string().required(),
31
+ timeUnit: joi.string().required(),
32
+ direction: joi.string().required(),
33
+ timeOnly: joi.boolean().required()
34
+ });
35
+ const conditionRefSchema = joi.object().keys({
36
+ conditionName: joi.string().required(),
37
+ conditionDisplayName: joi.string().required(),
38
+ coordinator: joi.string().optional()
39
+ });
40
+ const conditionSchema = joi.object().keys({
41
+ field: conditionFieldSchema,
42
+ operator: joi.string().required(),
43
+ value: joi.alternatives().try(conditionValueSchema, relativeTimeValueSchema),
44
+ coordinator: joi.string().optional()
45
+ });
46
+ const conditionGroupSchema = joi.object().keys({
47
+ conditions: joi.array().items(joi.alternatives().try(conditionSchema, conditionRefSchema, joi.any() /** Should be a joi.link('#conditionGroupSchema') */))
48
+ });
49
+ const conditionsModelSchema = joi.object().keys({
50
+ name: joi.string().required(),
51
+ conditions: joi.array().items(joi.alternatives().try(conditionSchema, conditionRefSchema, conditionGroupSchema))
52
+ });
53
+ const conditionsSchema = joi.object().keys({
54
+ name: joi.string().required(),
55
+ displayName: joi.string(),
56
+ value: joi.alternatives().try(joi.string(), conditionsModelSchema).required()
57
+ });
58
+ const localisedString = joi.alternatives().try(joi.object({
59
+ a: joi.any()
60
+ }).unknown(), joi.string().allow(''));
61
+ export const componentSchema = joi.object().keys({
62
+ type: joi.string().required(),
63
+ name: joi.string(),
64
+ title: localisedString,
65
+ hint: localisedString.optional(),
66
+ options: joi.object().default({}),
67
+ schema: joi.object({
68
+ min: joi.number(),
69
+ max: joi.number()
70
+ }).unknown(true).default({}),
71
+ list: joi.string().optional()
72
+ }).unknown(true);
73
+ const nextSchema = joi.object().keys({
74
+ path: joi.string().required(),
75
+ condition: joi.string().allow('').optional(),
76
+ redirect: joi.string().uri().optional()
77
+ });
95
78
 
96
- /**
97
- * `/status` is a special route for providing a user's application status.
98
- * It should not be configured via the designer.
99
- */
100
- const pageSchema = _joi.default.object().keys({
101
- path: _joi.default.string().required().disallow('/status'),
102
- title: localisedString,
103
- section: _joi.default.string(),
104
- controller: _joi.default.string(),
105
- components: _joi.default.array().items(componentSchema),
106
- next: _joi.default.array().items(nextSchema),
107
- repeatField: _joi.default.string().optional(),
108
- options: _joi.default.object().optional(),
109
- backLinkFallback: _joi.default.string().optional()
110
- });
111
- const toggleableString = _joi.default.alternatives().try(_joi.default.boolean(), _joi.default.string());
112
- const confirmationPageSchema = _joi.default.object({
113
- customText: _joi.default.object({
114
- title: _joi.default.string().default('Application complete'),
115
- paymentSkipped: toggleableString.default('Someone will be in touch to make a payment.'),
116
- nextSteps: toggleableString.default('You will receive an email with details with the next steps.')
117
- }).default(),
118
- components: _joi.default.array().items(componentSchema)
119
- });
120
- const paymentSkippedWarningPage = _joi.default.object({
121
- customText: _joi.default.object({
122
- title: _joi.default.string().default('Pay for your application').optional(),
123
- caption: _joi.default.string().default('Payment').optional(),
124
- body: _joi.default.string().default('').optional()
125
- })
126
- });
127
- const specialPagesSchema = _joi.default.object().keys({
128
- confirmationPage: confirmationPageSchema.optional(),
129
- paymentSkippedWarningPage: paymentSkippedWarningPage.optional()
130
- });
131
- const listItemSchema = _joi.default.object().keys({
132
- text: localisedString,
133
- value: _joi.default.alternatives().try(_joi.default.number(), _joi.default.string()),
134
- description: localisedString.optional(),
135
- conditional: _joi.default.object().keys({
136
- components: _joi.default.array().required().items(componentSchema.unknown(true)).unique('name')
137
- }).allow(null).optional(),
138
- condition: _joi.default.string().allow(null, '').optional()
139
- });
140
- const listSchema = _joi.default.object().keys({
141
- name: _joi.default.string().required(),
142
- title: localisedString,
143
- type: _joi.default.string().required().valid('string', 'number'),
144
- items: _joi.default.array().items(listItemSchema)
145
- });
146
- const feeSchema = _joi.default.object().keys({
147
- description: _joi.default.string().required(),
148
- amount: _joi.default.number().required(),
149
- multiplier: _joi.default.string().optional(),
150
- condition: _joi.default.string().optional(),
151
- prefix: _joi.default.string().optional()
152
- });
153
- const multiApiKeySchema = _joi.default.object({
154
- test: _joi.default.string().optional(),
155
- production: _joi.default.string().optional()
156
- });
157
- const replyToConfigurationSchema = _joi.default.object({
158
- emailReplyToId: _joi.default.string(),
159
- condition: _joi.default.string().allow('').optional()
160
- });
161
- const notifySchema = _joi.default.object().keys({
162
- apiKey: [_joi.default.string().allow('').optional(), multiApiKeySchema],
163
- templateId: _joi.default.string(),
164
- emailField: _joi.default.string(),
165
- personalisation: _joi.default.array().items(_joi.default.string()),
166
- personalisationFieldCustomisation: _joi.default.object().pattern(/./, _joi.default.array().items(_joi.default.string())).optional(),
167
- addReferencesToPersonalisation: _joi.default.boolean().optional(),
168
- emailReplyToIdConfiguration: _joi.default.array().items(replyToConfigurationSchema)
169
- });
170
- const emailSchema = _joi.default.object().keys({
171
- emailAddress: _joi.default.string()
172
- });
173
- const webhookSchema = _joi.default.object().keys({
174
- url: _joi.default.string(),
175
- allowRetry: _joi.default.boolean().default(true)
176
- });
177
- const outputSchema = _joi.default.object().keys({
178
- name: _joi.default.string(),
179
- title: _joi.default.string().optional(),
180
- type: _joi.default.string().allow('notify', 'email', 'webhook', 'sheets'),
181
- outputConfiguration: _joi.default.alternatives().try(notifySchema, emailSchema, webhookSchema)
182
- });
183
- const feedbackSchema = _joi.default.object().keys({
184
- feedbackForm: _joi.default.boolean().default(false),
185
- url: _joi.default.when('feedbackForm', {
186
- is: _joi.default.boolean().valid(false),
187
- then: _joi.default.string().optional().allow('')
188
- }),
189
- emailAddress: _joi.default.string().email({
190
- tlds: {
191
- allow: false
192
- }
193
- }).optional()
194
- });
195
- const phaseBannerSchema = _joi.default.object().keys({
196
- phase: _joi.default.string().valid('alpha', 'beta')
197
- });
198
- const feeOptionSchema = _joi.default.object().keys({
199
- payApiKey: [_joi.default.string().allow('').optional(), multiApiKeySchema],
200
- paymentReferenceFormat: [_joi.default.string().optional()],
201
- payReturnUrl: _joi.default.string().optional(),
202
- allowSubmissionWithoutPayment: _joi.default.boolean().optional().default(true),
203
- maxAttempts: _joi.default.number().optional().default(3),
204
- customPayErrorMessage: _joi.default.string().optional(),
205
- showPaymentSkippedWarningPage: _joi.default.when('allowSubmissionWithoutPayment', {
206
- is: true,
207
- then: _joi.default.boolean().valid(true, false).default(false),
208
- otherwise: _joi.default.boolean().valid(false).default(false)
209
- })
210
- }).default(({
211
- payApiKey,
79
+ /**
80
+ * `/status` is a special route for providing a user's application status.
81
+ * It should not be configured via the designer.
82
+ */
83
+ const pageSchema = joi.object().keys({
84
+ path: joi.string().required().disallow('/status'),
85
+ title: localisedString,
86
+ section: joi.string(),
87
+ controller: joi.string(),
88
+ components: joi.array().items(componentSchema),
89
+ next: joi.array().items(nextSchema),
90
+ repeatField: joi.string().optional(),
91
+ options: joi.object().optional(),
92
+ backLinkFallback: joi.string().optional()
93
+ });
94
+ const toggleableString = joi.alternatives().try(joi.boolean(), joi.string());
95
+ const confirmationPageSchema = joi.object({
96
+ customText: joi.object({
97
+ title: joi.string().default('Application complete'),
98
+ paymentSkipped: toggleableString.default('Someone will be in touch to make a payment.'),
99
+ nextSteps: toggleableString.default('You will receive an email with details with the next steps.')
100
+ }).default(),
101
+ components: joi.array().items(componentSchema)
102
+ });
103
+ const paymentSkippedWarningPage = joi.object({
104
+ customText: joi.object({
105
+ title: joi.string().default('Pay for your application').optional(),
106
+ caption: joi.string().default('Payment').optional(),
107
+ body: joi.string().default('').optional()
108
+ })
109
+ });
110
+ const specialPagesSchema = joi.object().keys({
111
+ confirmationPage: confirmationPageSchema.optional(),
112
+ paymentSkippedWarningPage: paymentSkippedWarningPage.optional()
113
+ });
114
+ const listItemSchema = joi.object().keys({
115
+ text: localisedString,
116
+ value: joi.alternatives().try(joi.number(), joi.string()),
117
+ description: localisedString.optional(),
118
+ conditional: joi.object().keys({
119
+ components: joi.array().required().items(componentSchema.unknown(true)).unique('name')
120
+ }).allow(null).optional(),
121
+ condition: joi.string().allow(null, '').optional()
122
+ });
123
+ const listSchema = joi.object().keys({
124
+ name: joi.string().required(),
125
+ title: localisedString,
126
+ type: joi.string().required().valid('string', 'number'),
127
+ items: joi.array().items(listItemSchema)
128
+ });
129
+ const feeSchema = joi.object().keys({
130
+ description: joi.string().required(),
131
+ amount: joi.number().required(),
132
+ multiplier: joi.string().optional(),
133
+ condition: joi.string().optional(),
134
+ prefix: joi.string().optional()
135
+ });
136
+ const multiApiKeySchema = joi.object({
137
+ test: joi.string().optional(),
138
+ production: joi.string().optional()
139
+ });
140
+ const replyToConfigurationSchema = joi.object({
141
+ emailReplyToId: joi.string(),
142
+ condition: joi.string().allow('').optional()
143
+ });
144
+ const notifySchema = joi.object().keys({
145
+ apiKey: [joi.string().allow('').optional(), multiApiKeySchema],
146
+ templateId: joi.string(),
147
+ emailField: joi.string(),
148
+ personalisation: joi.array().items(joi.string()),
149
+ personalisationFieldCustomisation: joi.object().pattern(/./, joi.array().items(joi.string())).optional(),
150
+ addReferencesToPersonalisation: joi.boolean().optional(),
151
+ emailReplyToIdConfiguration: joi.array().items(replyToConfigurationSchema)
152
+ });
153
+ const emailSchema = joi.object().keys({
154
+ emailAddress: joi.string()
155
+ });
156
+ const webhookSchema = joi.object().keys({
157
+ url: joi.string(),
158
+ allowRetry: joi.boolean().default(true)
159
+ });
160
+ const outputSchema = joi.object().keys({
161
+ name: joi.string(),
162
+ title: joi.string().optional(),
163
+ type: joi.string().allow('notify', 'email', 'webhook', 'sheets'),
164
+ outputConfiguration: joi.alternatives().try(notifySchema, emailSchema, webhookSchema)
165
+ });
166
+ const feedbackSchema = joi.object().keys({
167
+ feedbackForm: joi.boolean().default(false),
168
+ url: joi.when('feedbackForm', {
169
+ is: joi.boolean().valid(false),
170
+ then: joi.string().optional().allow('')
171
+ }),
172
+ emailAddress: joi.string().email({
173
+ tlds: {
174
+ allow: false
175
+ }
176
+ }).optional()
177
+ });
178
+ const phaseBannerSchema = joi.object().keys({
179
+ phase: joi.string().valid('alpha', 'beta')
180
+ });
181
+ const feeOptionSchema = joi.object().keys({
182
+ payApiKey: [joi.string().allow('').optional(), multiApiKeySchema],
183
+ paymentReferenceFormat: [joi.string().optional()],
184
+ payReturnUrl: joi.string().optional(),
185
+ allowSubmissionWithoutPayment: joi.boolean().optional().default(true),
186
+ maxAttempts: joi.number().optional().default(3),
187
+ customPayErrorMessage: joi.string().optional(),
188
+ showPaymentSkippedWarningPage: joi.when('allowSubmissionWithoutPayment', {
189
+ is: true,
190
+ then: joi.boolean().valid(true, false).default(false),
191
+ otherwise: joi.boolean().valid(false).default(false)
192
+ })
193
+ }).default(({
194
+ payApiKey,
195
+ paymentReferenceFormat
196
+ }) => {
197
+ return _objectSpread(_objectSpread({}, payApiKey && {
198
+ payApiKey
199
+ }), paymentReferenceFormat && {
212
200
  paymentReferenceFormat
213
- }) => {
214
- return _objectSpread(_objectSpread({}, payApiKey && {
215
- payApiKey
216
- }), paymentReferenceFormat && {
217
- paymentReferenceFormat
218
- });
219
- });
220
- const Schema = _exports.Schema = _joi.default.object().required().keys({
221
- name: localisedString.optional(),
222
- feedback: feedbackSchema,
223
- startPage: _joi.default.string().required(),
224
- pages: _joi.default.array().required().items(pageSchema).unique('path'),
225
- sections: _joi.default.array().items(sectionsSchema).unique('name').required(),
226
- conditions: _joi.default.array().items(conditionsSchema).unique('name'),
227
- lists: _joi.default.array().items(listSchema).unique('name'),
228
- fees: _joi.default.array().items(feeSchema).optional(),
229
- paymentReferenceFormat: _joi.default.string().optional(),
230
- metadata: _joi.default.object({
231
- a: _joi.default.any()
232
- }).unknown().optional(),
233
- declaration: _joi.default.string().allow('').optional(),
234
- outputs: _joi.default.array().items(outputSchema),
235
- payApiKey: [_joi.default.string().allow('').optional(), multiApiKeySchema],
236
- skipSummary: _joi.default.boolean().default(false),
237
- version: _joi.default.number().default(CURRENT_VERSION),
238
- phaseBanner: phaseBannerSchema,
239
- specialPages: specialPagesSchema.optional(),
240
- feeOptions: feeOptionSchema
241
201
  });
242
-
243
- /**
244
- * Schema versions:
245
- * Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.
246
- * 1 - Relevant components (radio, checkbox, select, autocomplete) now contain
247
- * options as 'values' rather than referencing a data list
248
- * 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.
249
- * TODO:- merge fees and paymentReferenceFormat
250
- * 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.
251
- * if feeOptions are empty, it will pull values from the top level keys.
252
- * WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.
253
- **/
254
202
  });
203
+ export const Schema = joi.object().required().keys({
204
+ name: localisedString.optional(),
205
+ feedback: feedbackSchema,
206
+ startPage: joi.string().required(),
207
+ pages: joi.array().required().items(pageSchema).unique('path'),
208
+ sections: joi.array().items(sectionsSchema).unique('name').required(),
209
+ conditions: joi.array().items(conditionsSchema).unique('name'),
210
+ lists: joi.array().items(listSchema).unique('name'),
211
+ fees: joi.array().items(feeSchema).optional(),
212
+ paymentReferenceFormat: joi.string().optional(),
213
+ metadata: joi.object({
214
+ a: joi.any()
215
+ }).unknown().optional(),
216
+ declaration: joi.string().allow('').optional(),
217
+ outputs: joi.array().items(outputSchema),
218
+ payApiKey: [joi.string().allow('').optional(), multiApiKeySchema],
219
+ skipSummary: joi.boolean().default(false),
220
+ version: joi.number().default(CURRENT_VERSION),
221
+ phaseBanner: phaseBannerSchema,
222
+ specialPages: specialPagesSchema.optional(),
223
+ feeOptions: feeOptionSchema
224
+ });
225
+
226
+ /**
227
+ * Schema versions:
228
+ * Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.
229
+ * 1 - Relevant components (radio, checkbox, select, autocomplete) now contain
230
+ * options as 'values' rather than referencing a data list
231
+ * 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.
232
+ * TODO:- merge fees and paymentReferenceFormat
233
+ * 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.
234
+ * if feeOptions are empty, it will pull values from the top level keys.
235
+ * WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.
236
+ **/
255
237
  //# sourceMappingURL=schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":["CURRENT_VERSION","_exports","sectionsSchema","joi","object","keys","name","string","required","title","hideTitle","boolean","default","conditionFieldSchema","type","display","conditionValueSchema","value","relativeTimeValueSchema","timePeriod","timeUnit","direction","timeOnly","conditionRefSchema","conditionName","conditionDisplayName","coordinator","optional","conditionSchema","field","operator","alternatives","try","conditionGroupSchema","conditions","array","items","any","conditionsModelSchema","conditionsSchema","displayName","localisedString","a","unknown","allow","componentSchema","hint","options","schema","min","number","max","list","nextSchema","path","condition","redirect","uri","pageSchema","disallow","section","controller","components","next","repeatField","backLinkFallback","toggleableString","confirmationPageSchema","customText","paymentSkipped","nextSteps","paymentSkippedWarningPage","caption","body","specialPagesSchema","confirmationPage","listItemSchema","text","description","conditional","unique","listSchema","valid","feeSchema","amount","multiplier","prefix","multiApiKeySchema","test","production","replyToConfigurationSchema","emailReplyToId","notifySchema","apiKey","templateId","emailField","personalisation","personalisationFieldCustomisation","pattern","addReferencesToPersonalisation","emailReplyToIdConfiguration","emailSchema","emailAddress","webhookSchema","url","allowRetry","outputSchema","outputConfiguration","feedbackSchema","feedbackForm","when","is","then","email","tlds","phaseBannerSchema","phase","feeOptionSchema","payApiKey","paymentReferenceFormat","payReturnUrl","allowSubmissionWithoutPayment","maxAttempts","customPayErrorMessage","showPaymentSkippedWarningPage","otherwise","_objectSpread","Schema","feedback","startPage","pages","sections","lists","fees","metadata","declaration","outputs","skipSummary","version","phaseBanner","specialPages","feeOptions"],"sources":["../../../src/schema/schema.ts"],"sourcesContent":["import joi from 'joi'\n\n/**\n * If an optional key is added, CURRENT_VERSION does not need to be incremented.\n * Only breaking changes will require an increment, as well as a migration script.\n */\nexport const CURRENT_VERSION = 2\nconst sectionsSchema = joi.object().keys({\n name: joi.string().required(),\n title: joi.string().required(),\n hideTitle: joi.boolean().default(false)\n})\n\nconst conditionFieldSchema = joi.object().keys({\n name: joi.string().required(),\n type: joi.string().required(),\n display: joi.string().required()\n})\n\nconst conditionValueSchema = joi.object().keys({\n type: joi.string().required(),\n value: joi.string().required(),\n display: joi.string().required()\n})\n\nconst relativeTimeValueSchema = joi.object().keys({\n type: joi.string().required(),\n timePeriod: joi.string().required(),\n timeUnit: joi.string().required(),\n direction: joi.string().required(),\n timeOnly: joi.boolean().required()\n})\n\nconst conditionRefSchema = joi.object().keys({\n conditionName: joi.string().required(),\n conditionDisplayName: joi.string().required(),\n coordinator: joi.string().optional()\n})\n\nconst conditionSchema = joi.object().keys({\n field: conditionFieldSchema,\n operator: joi.string().required(),\n value: joi.alternatives().try(conditionValueSchema, relativeTimeValueSchema),\n coordinator: joi.string().optional()\n})\n\nconst conditionGroupSchema = joi.object().keys({\n conditions: joi\n .array()\n .items(\n joi\n .alternatives()\n .try(\n conditionSchema,\n conditionRefSchema,\n joi.any() /** Should be a joi.link('#conditionGroupSchema') */\n )\n )\n})\n\nconst conditionsModelSchema = joi.object().keys({\n name: joi.string().required(),\n conditions: joi\n .array()\n .items(\n joi\n .alternatives()\n .try(conditionSchema, conditionRefSchema, conditionGroupSchema)\n )\n})\n\nconst conditionsSchema = joi.object().keys({\n name: joi.string().required(),\n displayName: joi.string(),\n value: joi.alternatives().try(joi.string(), conditionsModelSchema).required()\n})\n\nconst localisedString = joi\n .alternatives()\n .try(joi.object({ a: joi.any() }).unknown(), joi.string().allow(''))\n\nexport const componentSchema = joi\n .object()\n .keys({\n type: joi.string().required(),\n name: joi.string(),\n title: localisedString,\n hint: localisedString.optional(),\n options: joi.object().default({}),\n schema: joi\n .object({ min: joi.number(), max: joi.number() })\n .unknown(true)\n .default({}),\n list: joi.string().optional()\n })\n .unknown(true)\n\nconst nextSchema = joi.object().keys({\n path: joi.string().required(),\n condition: joi.string().allow('').optional(),\n redirect: joi.string().uri().optional()\n})\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nconst pageSchema = joi.object().keys({\n path: joi.string().required().disallow('/status'),\n title: localisedString,\n section: joi.string(),\n controller: joi.string(),\n components: joi.array().items(componentSchema),\n next: joi.array().items(nextSchema),\n repeatField: joi.string().optional(),\n options: joi.object().optional(),\n backLinkFallback: joi.string().optional()\n})\n\nconst toggleableString = joi.alternatives().try(joi.boolean(), joi.string())\n\nconst confirmationPageSchema = joi.object({\n customText: joi\n .object({\n title: joi.string().default('Application complete'),\n paymentSkipped: toggleableString.default(\n 'Someone will be in touch to make a payment.'\n ),\n nextSteps: toggleableString.default(\n 'You will receive an email with details with the next steps.'\n )\n })\n .default(),\n components: joi.array().items(componentSchema)\n})\n\nconst paymentSkippedWarningPage = joi.object({\n customText: joi.object({\n title: joi.string().default('Pay for your application').optional(),\n caption: joi.string().default('Payment').optional(),\n body: joi.string().default('').optional()\n })\n})\n\nconst specialPagesSchema = joi.object().keys({\n confirmationPage: confirmationPageSchema.optional(),\n paymentSkippedWarningPage: paymentSkippedWarningPage.optional()\n})\n\nconst listItemSchema = joi.object().keys({\n text: localisedString,\n value: joi.alternatives().try(joi.number(), joi.string()),\n description: localisedString.optional(),\n conditional: joi\n .object()\n .keys({\n components: joi\n .array()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n })\n .allow(null)\n .optional(),\n condition: joi.string().allow(null, '').optional()\n})\n\nconst listSchema = joi.object().keys({\n name: joi.string().required(),\n title: localisedString,\n type: joi.string().required().valid('string', 'number'),\n items: joi.array().items(listItemSchema)\n})\n\nconst feeSchema = joi.object().keys({\n description: joi.string().required(),\n amount: joi.number().required(),\n multiplier: joi.string().optional(),\n condition: joi.string().optional(),\n prefix: joi.string().optional()\n})\n\nconst multiApiKeySchema = joi.object({\n test: joi.string().optional(),\n production: joi.string().optional()\n})\n\nconst replyToConfigurationSchema = joi.object({\n emailReplyToId: joi.string(),\n condition: joi.string().allow('').optional()\n})\n\nconst notifySchema = joi.object().keys({\n apiKey: [joi.string().allow('').optional(), multiApiKeySchema],\n templateId: joi.string(),\n emailField: joi.string(),\n personalisation: joi.array().items(joi.string()),\n personalisationFieldCustomisation: joi\n .object()\n .pattern(/./, joi.array().items(joi.string()))\n .optional(),\n addReferencesToPersonalisation: joi.boolean().optional(),\n emailReplyToIdConfiguration: joi.array().items(replyToConfigurationSchema)\n})\n\nconst emailSchema = joi.object().keys({\n emailAddress: joi.string()\n})\n\nconst webhookSchema = joi.object().keys({\n url: joi.string(),\n allowRetry: joi.boolean().default(true)\n})\n\nconst outputSchema = joi.object().keys({\n name: joi.string(),\n title: joi.string().optional(),\n type: joi.string().allow('notify', 'email', 'webhook', 'sheets'),\n outputConfiguration: joi\n .alternatives()\n .try(notifySchema, emailSchema, webhookSchema)\n})\n\nconst feedbackSchema = joi.object().keys({\n feedbackForm: joi.boolean().default(false),\n url: joi.when('feedbackForm', {\n is: joi.boolean().valid(false),\n then: joi.string().optional().allow('')\n }),\n emailAddress: joi\n .string()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n})\n\nconst phaseBannerSchema = joi.object().keys({\n phase: joi.string().valid('alpha', 'beta')\n})\n\nconst feeOptionSchema = joi\n .object()\n .keys({\n payApiKey: [joi.string().allow('').optional(), multiApiKeySchema],\n paymentReferenceFormat: [joi.string().optional()],\n payReturnUrl: joi.string().optional(),\n allowSubmissionWithoutPayment: joi.boolean().optional().default(true),\n maxAttempts: joi.number().optional().default(3),\n customPayErrorMessage: joi.string().optional(),\n showPaymentSkippedWarningPage: joi.when('allowSubmissionWithoutPayment', {\n is: true,\n then: joi.boolean().valid(true, false).default(false),\n otherwise: joi.boolean().valid(false).default(false)\n })\n })\n .default(({ payApiKey, paymentReferenceFormat }) => {\n return {\n ...(payApiKey && { payApiKey }),\n ...(paymentReferenceFormat && { paymentReferenceFormat })\n }\n })\n\nexport const Schema = joi\n .object()\n .required()\n .keys({\n name: localisedString.optional(),\n feedback: feedbackSchema,\n startPage: joi.string().required(),\n pages: joi.array().required().items(pageSchema).unique('path'),\n sections: joi.array().items(sectionsSchema).unique('name').required(),\n conditions: joi.array().items(conditionsSchema).unique('name'),\n lists: joi.array().items(listSchema).unique('name'),\n fees: joi.array().items(feeSchema).optional(),\n paymentReferenceFormat: joi.string().optional(),\n metadata: joi.object({ a: joi.any() }).unknown().optional(),\n declaration: joi.string().allow('').optional(),\n outputs: joi.array().items(outputSchema),\n payApiKey: [joi.string().allow('').optional(), multiApiKeySchema],\n skipSummary: joi.boolean().default(false),\n version: joi.number().default(CURRENT_VERSION),\n phaseBanner: phaseBannerSchema,\n specialPages: specialPagesSchema.optional(),\n feeOptions: feeOptionSchema\n })\n\n/**\n * Schema versions:\n * Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.\n * 1 - Relevant components (radio, checkbox, select, autocomplete) now contain\n * options as 'values' rather than referencing a data list\n * 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.\n * TODO:- merge fees and paymentReferenceFormat\n * 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.\n * if feeOptions are empty, it will pull values from the top level keys.\n * WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.\n **/\n"],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","names":["joi","CURRENT_VERSION","sectionsSchema","object","keys","name","string","required","title","hideTitle","boolean","default","conditionFieldSchema","type","display","conditionValueSchema","value","relativeTimeValueSchema","timePeriod","timeUnit","direction","timeOnly","conditionRefSchema","conditionName","conditionDisplayName","coordinator","optional","conditionSchema","field","operator","alternatives","try","conditionGroupSchema","conditions","array","items","any","conditionsModelSchema","conditionsSchema","displayName","localisedString","a","unknown","allow","componentSchema","hint","options","schema","min","number","max","list","nextSchema","path","condition","redirect","uri","pageSchema","disallow","section","controller","components","next","repeatField","backLinkFallback","toggleableString","confirmationPageSchema","customText","paymentSkipped","nextSteps","paymentSkippedWarningPage","caption","body","specialPagesSchema","confirmationPage","listItemSchema","text","description","conditional","unique","listSchema","valid","feeSchema","amount","multiplier","prefix","multiApiKeySchema","test","production","replyToConfigurationSchema","emailReplyToId","notifySchema","apiKey","templateId","emailField","personalisation","personalisationFieldCustomisation","pattern","addReferencesToPersonalisation","emailReplyToIdConfiguration","emailSchema","emailAddress","webhookSchema","url","allowRetry","outputSchema","outputConfiguration","feedbackSchema","feedbackForm","when","is","then","email","tlds","phaseBannerSchema","phase","feeOptionSchema","payApiKey","paymentReferenceFormat","payReturnUrl","allowSubmissionWithoutPayment","maxAttempts","customPayErrorMessage","showPaymentSkippedWarningPage","otherwise","_objectSpread","Schema","feedback","startPage","pages","sections","lists","fees","metadata","declaration","outputs","skipSummary","version","phaseBanner","specialPages","feeOptions"],"sources":["../../../src/schema/schema.ts"],"sourcesContent":["import joi from 'joi'\n\n/**\n * If an optional key is added, CURRENT_VERSION does not need to be incremented.\n * Only breaking changes will require an increment, as well as a migration script.\n */\nexport const CURRENT_VERSION = 2\nconst sectionsSchema = joi.object().keys({\n name: joi.string().required(),\n title: joi.string().required(),\n hideTitle: joi.boolean().default(false)\n})\n\nconst conditionFieldSchema = joi.object().keys({\n name: joi.string().required(),\n type: joi.string().required(),\n display: joi.string().required()\n})\n\nconst conditionValueSchema = joi.object().keys({\n type: joi.string().required(),\n value: joi.string().required(),\n display: joi.string().required()\n})\n\nconst relativeTimeValueSchema = joi.object().keys({\n type: joi.string().required(),\n timePeriod: joi.string().required(),\n timeUnit: joi.string().required(),\n direction: joi.string().required(),\n timeOnly: joi.boolean().required()\n})\n\nconst conditionRefSchema = joi.object().keys({\n conditionName: joi.string().required(),\n conditionDisplayName: joi.string().required(),\n coordinator: joi.string().optional()\n})\n\nconst conditionSchema = joi.object().keys({\n field: conditionFieldSchema,\n operator: joi.string().required(),\n value: joi.alternatives().try(conditionValueSchema, relativeTimeValueSchema),\n coordinator: joi.string().optional()\n})\n\nconst conditionGroupSchema = joi.object().keys({\n conditions: joi\n .array()\n .items(\n joi\n .alternatives()\n .try(\n conditionSchema,\n conditionRefSchema,\n joi.any() /** Should be a joi.link('#conditionGroupSchema') */\n )\n )\n})\n\nconst conditionsModelSchema = joi.object().keys({\n name: joi.string().required(),\n conditions: joi\n .array()\n .items(\n joi\n .alternatives()\n .try(conditionSchema, conditionRefSchema, conditionGroupSchema)\n )\n})\n\nconst conditionsSchema = joi.object().keys({\n name: joi.string().required(),\n displayName: joi.string(),\n value: joi.alternatives().try(joi.string(), conditionsModelSchema).required()\n})\n\nconst localisedString = joi\n .alternatives()\n .try(joi.object({ a: joi.any() }).unknown(), joi.string().allow(''))\n\nexport const componentSchema = joi\n .object()\n .keys({\n type: joi.string().required(),\n name: joi.string(),\n title: localisedString,\n hint: localisedString.optional(),\n options: joi.object().default({}),\n schema: joi\n .object({ min: joi.number(), max: joi.number() })\n .unknown(true)\n .default({}),\n list: joi.string().optional()\n })\n .unknown(true)\n\nconst nextSchema = joi.object().keys({\n path: joi.string().required(),\n condition: joi.string().allow('').optional(),\n redirect: joi.string().uri().optional()\n})\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nconst pageSchema = joi.object().keys({\n path: joi.string().required().disallow('/status'),\n title: localisedString,\n section: joi.string(),\n controller: joi.string(),\n components: joi.array().items(componentSchema),\n next: joi.array().items(nextSchema),\n repeatField: joi.string().optional(),\n options: joi.object().optional(),\n backLinkFallback: joi.string().optional()\n})\n\nconst toggleableString = joi.alternatives().try(joi.boolean(), joi.string())\n\nconst confirmationPageSchema = joi.object({\n customText: joi\n .object({\n title: joi.string().default('Application complete'),\n paymentSkipped: toggleableString.default(\n 'Someone will be in touch to make a payment.'\n ),\n nextSteps: toggleableString.default(\n 'You will receive an email with details with the next steps.'\n )\n })\n .default(),\n components: joi.array().items(componentSchema)\n})\n\nconst paymentSkippedWarningPage = joi.object({\n customText: joi.object({\n title: joi.string().default('Pay for your application').optional(),\n caption: joi.string().default('Payment').optional(),\n body: joi.string().default('').optional()\n })\n})\n\nconst specialPagesSchema = joi.object().keys({\n confirmationPage: confirmationPageSchema.optional(),\n paymentSkippedWarningPage: paymentSkippedWarningPage.optional()\n})\n\nconst listItemSchema = joi.object().keys({\n text: localisedString,\n value: joi.alternatives().try(joi.number(), joi.string()),\n description: localisedString.optional(),\n conditional: joi\n .object()\n .keys({\n components: joi\n .array()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n })\n .allow(null)\n .optional(),\n condition: joi.string().allow(null, '').optional()\n})\n\nconst listSchema = joi.object().keys({\n name: joi.string().required(),\n title: localisedString,\n type: joi.string().required().valid('string', 'number'),\n items: joi.array().items(listItemSchema)\n})\n\nconst feeSchema = joi.object().keys({\n description: joi.string().required(),\n amount: joi.number().required(),\n multiplier: joi.string().optional(),\n condition: joi.string().optional(),\n prefix: joi.string().optional()\n})\n\nconst multiApiKeySchema = joi.object({\n test: joi.string().optional(),\n production: joi.string().optional()\n})\n\nconst replyToConfigurationSchema = joi.object({\n emailReplyToId: joi.string(),\n condition: joi.string().allow('').optional()\n})\n\nconst notifySchema = joi.object().keys({\n apiKey: [joi.string().allow('').optional(), multiApiKeySchema],\n templateId: joi.string(),\n emailField: joi.string(),\n personalisation: joi.array().items(joi.string()),\n personalisationFieldCustomisation: joi\n .object()\n .pattern(/./, joi.array().items(joi.string()))\n .optional(),\n addReferencesToPersonalisation: joi.boolean().optional(),\n emailReplyToIdConfiguration: joi.array().items(replyToConfigurationSchema)\n})\n\nconst emailSchema = joi.object().keys({\n emailAddress: joi.string()\n})\n\nconst webhookSchema = joi.object().keys({\n url: joi.string(),\n allowRetry: joi.boolean().default(true)\n})\n\nconst outputSchema = joi.object().keys({\n name: joi.string(),\n title: joi.string().optional(),\n type: joi.string().allow('notify', 'email', 'webhook', 'sheets'),\n outputConfiguration: joi\n .alternatives()\n .try(notifySchema, emailSchema, webhookSchema)\n})\n\nconst feedbackSchema = joi.object().keys({\n feedbackForm: joi.boolean().default(false),\n url: joi.when('feedbackForm', {\n is: joi.boolean().valid(false),\n then: joi.string().optional().allow('')\n }),\n emailAddress: joi\n .string()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n})\n\nconst phaseBannerSchema = joi.object().keys({\n phase: joi.string().valid('alpha', 'beta')\n})\n\nconst feeOptionSchema = joi\n .object()\n .keys({\n payApiKey: [joi.string().allow('').optional(), multiApiKeySchema],\n paymentReferenceFormat: [joi.string().optional()],\n payReturnUrl: joi.string().optional(),\n allowSubmissionWithoutPayment: joi.boolean().optional().default(true),\n maxAttempts: joi.number().optional().default(3),\n customPayErrorMessage: joi.string().optional(),\n showPaymentSkippedWarningPage: joi.when('allowSubmissionWithoutPayment', {\n is: true,\n then: joi.boolean().valid(true, false).default(false),\n otherwise: joi.boolean().valid(false).default(false)\n })\n })\n .default(({ payApiKey, paymentReferenceFormat }) => {\n return {\n ...(payApiKey && { payApiKey }),\n ...(paymentReferenceFormat && { paymentReferenceFormat })\n }\n })\n\nexport const Schema = joi\n .object()\n .required()\n .keys({\n name: localisedString.optional(),\n feedback: feedbackSchema,\n startPage: joi.string().required(),\n pages: joi.array().required().items(pageSchema).unique('path'),\n sections: joi.array().items(sectionsSchema).unique('name').required(),\n conditions: joi.array().items(conditionsSchema).unique('name'),\n lists: joi.array().items(listSchema).unique('name'),\n fees: joi.array().items(feeSchema).optional(),\n paymentReferenceFormat: joi.string().optional(),\n metadata: joi.object({ a: joi.any() }).unknown().optional(),\n declaration: joi.string().allow('').optional(),\n outputs: joi.array().items(outputSchema),\n payApiKey: [joi.string().allow('').optional(), multiApiKeySchema],\n skipSummary: joi.boolean().default(false),\n version: joi.number().default(CURRENT_VERSION),\n phaseBanner: phaseBannerSchema,\n specialPages: specialPagesSchema.optional(),\n feeOptions: feeOptionSchema\n })\n\n/**\n * Schema versions:\n * Undefined / 0 - initial version as at 28/8/20. Conditions may be in object structure or string form.\n * 1 - Relevant components (radio, checkbox, select, autocomplete) now contain\n * options as 'values' rather than referencing a data list\n * 2 - Reverse v1. Values populating radio, checkboxes, select, autocomplete are defined in Lists only.\n * TODO:- merge fees and paymentReferenceFormat\n * 2 - 2023-05-04 `feeOptions` has been introduced. paymentReferenceFormat and payApiKey can be configured in top level or feeOptions. feeOptions will take precedent.\n * if feeOptions are empty, it will pull values from the top level keys.\n * WARN: Fee/GOV.UK pay configurations (apart from fees) should no longer be stored in the top level, always within feeOptions.\n **/\n"],"mappings":"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"}