@dwp/govuk-casa 9.7.0 → 10.0.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 (277) hide show
  1. package/dist/assets/css/casa.css +1 -1
  2. package/dist/assets/css/casa.css.map +1 -1
  3. package/dist/casa.d.ts +81 -41
  4. package/dist/casa.d.ts.map +1 -0
  5. package/dist/casa.js +72 -99
  6. package/dist/core-plugins/edit-snapshot/src/configure.d.ts +1 -0
  7. package/dist/core-plugins/edit-snapshot/src/configure.d.ts.map +1 -0
  8. package/dist/core-plugins/edit-snapshot/src/configure.js +7 -14
  9. package/dist/core-plugins/edit-snapshot/src/index.d.ts +1 -0
  10. package/dist/core-plugins/edit-snapshot/src/index.d.ts.map +1 -0
  11. package/dist/core-plugins/edit-snapshot/src/index.js +3 -9
  12. package/dist/core-plugins/edit-snapshot/src/post-steer-hook.d.ts +2 -1
  13. package/dist/core-plugins/edit-snapshot/src/post-steer-hook.d.ts.map +1 -0
  14. package/dist/core-plugins/edit-snapshot/src/post-steer-hook.js +8 -13
  15. package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.d.ts +2 -1
  16. package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.d.ts.map +1 -0
  17. package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.js +13 -18
  18. package/dist/core-plugins/edit-snapshot/src/utils.d.ts +8 -5
  19. package/dist/core-plugins/edit-snapshot/src/utils.d.ts.map +1 -0
  20. package/dist/core-plugins/edit-snapshot/src/utils.js +37 -19
  21. package/dist/core-plugins/index.d.ts +1 -0
  22. package/dist/core-plugins/index.d.ts.map +1 -0
  23. package/dist/core-plugins/index.js +1 -9
  24. package/dist/lib/CasaTemplateLoader.d.ts +1 -0
  25. package/dist/lib/CasaTemplateLoader.d.ts.map +1 -0
  26. package/dist/lib/CasaTemplateLoader.js +2 -6
  27. package/dist/lib/JourneyContext.d.ts +22 -11
  28. package/dist/lib/JourneyContext.d.ts.map +1 -0
  29. package/dist/lib/JourneyContext.js +40 -45
  30. package/dist/lib/MutableRouter.d.ts +74 -55
  31. package/dist/lib/MutableRouter.d.ts.map +1 -0
  32. package/dist/lib/MutableRouter.js +48 -45
  33. package/dist/lib/NullObject.d.ts +3 -0
  34. package/dist/lib/NullObject.d.ts.map +1 -0
  35. package/dist/lib/NullObject.js +3 -0
  36. package/dist/lib/Plan.d.ts +2 -1
  37. package/dist/lib/Plan.d.ts.map +1 -0
  38. package/dist/lib/Plan.js +44 -62
  39. package/dist/lib/ValidationError.d.ts +2 -1
  40. package/dist/lib/ValidationError.d.ts.map +1 -0
  41. package/dist/lib/ValidationError.js +3 -11
  42. package/dist/lib/ValidatorFactory.d.ts +5 -6
  43. package/dist/lib/ValidatorFactory.d.ts.map +1 -0
  44. package/dist/lib/ValidatorFactory.js +4 -12
  45. package/dist/lib/configuration-ingestor.d.ts +10 -22
  46. package/dist/lib/configuration-ingestor.d.ts.map +1 -0
  47. package/dist/lib/configuration-ingestor.js +61 -143
  48. package/dist/lib/configure.d.ts +2 -1
  49. package/dist/lib/configure.d.ts.map +1 -0
  50. package/dist/lib/configure.js +40 -52
  51. package/dist/lib/constants.d.ts +1 -0
  52. package/dist/lib/constants.d.ts.map +1 -0
  53. package/dist/lib/constants.js +8 -12
  54. package/dist/lib/context-id-generators.d.ts +1 -0
  55. package/dist/lib/context-id-generators.d.ts.map +1 -0
  56. package/dist/lib/context-id-generators.js +4 -9
  57. package/dist/lib/end-session.d.ts +2 -1
  58. package/dist/lib/end-session.d.ts.map +1 -0
  59. package/dist/lib/end-session.js +4 -11
  60. package/dist/lib/field.d.ts +2 -1
  61. package/dist/lib/field.d.ts.map +1 -0
  62. package/dist/lib/field.js +11 -21
  63. package/dist/lib/index.d.ts +1 -0
  64. package/dist/lib/index.d.ts.map +1 -0
  65. package/dist/lib/index.js +13 -65
  66. package/dist/lib/logger.d.ts +25 -2
  67. package/dist/lib/logger.d.ts.map +1 -0
  68. package/dist/lib/logger.js +18 -9
  69. package/dist/lib/mount.d.ts +1 -0
  70. package/dist/lib/mount.d.ts.map +1 -0
  71. package/dist/lib/mount.js +10 -16
  72. package/dist/lib/nunjucks-filters.d.ts +7 -3
  73. package/dist/lib/nunjucks-filters.d.ts.map +1 -0
  74. package/dist/lib/nunjucks-filters.js +58 -71
  75. package/dist/lib/nunjucks.d.ts +2 -2
  76. package/dist/lib/nunjucks.d.ts.map +1 -0
  77. package/dist/lib/nunjucks.js +12 -25
  78. package/dist/lib/utils.d.ts +4 -2
  79. package/dist/lib/utils.d.ts.map +1 -0
  80. package/dist/lib/utils.js +14 -28
  81. package/dist/lib/validators/dateObject.d.ts +1 -0
  82. package/dist/lib/validators/dateObject.d.ts.map +1 -0
  83. package/dist/lib/validators/dateObject.js +14 -21
  84. package/dist/lib/validators/email.d.ts +1 -0
  85. package/dist/lib/validators/email.d.ts.map +1 -0
  86. package/dist/lib/validators/email.js +8 -15
  87. package/dist/lib/validators/inArray.d.ts +1 -0
  88. package/dist/lib/validators/inArray.d.ts.map +1 -0
  89. package/dist/lib/validators/inArray.js +8 -15
  90. package/dist/lib/validators/index.d.ts +1 -0
  91. package/dist/lib/validators/index.d.ts.map +1 -0
  92. package/dist/lib/validators/index.js +21 -27
  93. package/dist/lib/validators/nino.d.ts +1 -0
  94. package/dist/lib/validators/nino.d.ts.map +1 -0
  95. package/dist/lib/validators/nino.js +6 -13
  96. package/dist/lib/validators/postalAddressObject.d.ts +1 -0
  97. package/dist/lib/validators/postalAddressObject.d.ts.map +1 -0
  98. package/dist/lib/validators/postalAddressObject.js +12 -19
  99. package/dist/lib/validators/range.d.ts +1 -0
  100. package/dist/lib/validators/range.d.ts.map +1 -0
  101. package/dist/lib/validators/range.js +6 -13
  102. package/dist/lib/validators/regex.d.ts +1 -0
  103. package/dist/lib/validators/regex.d.ts.map +1 -0
  104. package/dist/lib/validators/regex.js +6 -13
  105. package/dist/lib/validators/required.d.ts +1 -0
  106. package/dist/lib/validators/required.d.ts.map +1 -0
  107. package/dist/lib/validators/required.js +9 -17
  108. package/dist/lib/validators/strlen.d.ts +1 -0
  109. package/dist/lib/validators/strlen.d.ts.map +1 -0
  110. package/dist/lib/validators/strlen.js +6 -13
  111. package/dist/lib/validators/wordCount.d.ts +1 -0
  112. package/dist/lib/validators/wordCount.d.ts.map +1 -0
  113. package/dist/lib/validators/wordCount.js +6 -13
  114. package/dist/lib/waypoint-url.d.ts +3 -2
  115. package/dist/lib/waypoint-url.d.ts.map +1 -0
  116. package/dist/lib/waypoint-url.js +12 -19
  117. package/dist/middleware/body-parser.d.ts +1 -0
  118. package/dist/middleware/body-parser.d.ts.map +1 -0
  119. package/dist/middleware/body-parser.js +4 -9
  120. package/dist/middleware/csrf.d.ts +1 -0
  121. package/dist/middleware/csrf.d.ts.map +1 -0
  122. package/dist/middleware/csrf.js +4 -8
  123. package/dist/middleware/data.d.ts +2 -3
  124. package/dist/middleware/data.d.ts.map +1 -0
  125. package/dist/middleware/data.js +23 -25
  126. package/dist/middleware/gather-fields.d.ts +3 -1
  127. package/dist/middleware/gather-fields.d.ts.map +1 -0
  128. package/dist/middleware/gather-fields.js +13 -14
  129. package/dist/middleware/i18n.d.ts +1 -0
  130. package/dist/middleware/i18n.d.ts.map +1 -0
  131. package/dist/middleware/i18n.js +26 -31
  132. package/dist/middleware/post.d.ts +1 -0
  133. package/dist/middleware/post.d.ts.map +1 -0
  134. package/dist/middleware/post.js +3 -10
  135. package/dist/middleware/pre.d.ts +2 -1
  136. package/dist/middleware/pre.d.ts.map +1 -0
  137. package/dist/middleware/pre.js +6 -12
  138. package/dist/middleware/progress-journey.d.ts +5 -3
  139. package/dist/middleware/progress-journey.d.ts.map +1 -0
  140. package/dist/middleware/progress-journey.js +20 -18
  141. package/dist/middleware/sanitise-fields.d.ts +5 -3
  142. package/dist/middleware/sanitise-fields.d.ts.map +1 -0
  143. package/dist/middleware/sanitise-fields.js +25 -17
  144. package/dist/middleware/serve-first-waypoint.d.ts +1 -0
  145. package/dist/middleware/serve-first-waypoint.d.ts.map +1 -0
  146. package/dist/middleware/serve-first-waypoint.js +3 -6
  147. package/dist/middleware/session.d.ts +15 -0
  148. package/dist/middleware/session.d.ts.map +1 -0
  149. package/dist/middleware/session.js +53 -57
  150. package/dist/middleware/skip-waypoint.d.ts +3 -2
  151. package/dist/middleware/skip-waypoint.d.ts.map +1 -0
  152. package/dist/middleware/skip-waypoint.js +15 -14
  153. package/dist/middleware/steer-journey.d.ts +2 -1
  154. package/dist/middleware/steer-journey.d.ts.map +1 -0
  155. package/dist/middleware/steer-journey.js +7 -13
  156. package/dist/middleware/strip-proxy-path.d.ts +3 -2
  157. package/dist/middleware/strip-proxy-path.d.ts.map +1 -0
  158. package/dist/middleware/strip-proxy-path.js +24 -24
  159. package/dist/middleware/validate-fields.d.ts +7 -4
  160. package/dist/middleware/validate-fields.d.ts.map +1 -0
  161. package/dist/middleware/validate-fields.js +22 -11
  162. package/dist/routes/ancillary.d.ts +1 -0
  163. package/dist/routes/ancillary.d.ts.map +1 -0
  164. package/dist/routes/ancillary.js +3 -10
  165. package/dist/routes/journey.d.ts +7 -2
  166. package/dist/routes/journey.d.ts.map +1 -0
  167. package/dist/routes/journey.js +56 -55
  168. package/dist/routes/static.d.ts +1 -0
  169. package/dist/routes/static.d.ts.map +1 -0
  170. package/dist/routes/static.js +15 -23
  171. package/package.json +20 -26
  172. package/src/casa.js +49 -29
  173. package/src/core-plugins/edit-snapshot/src/post-steer-hook.js +1 -0
  174. package/src/core-plugins/edit-snapshot/src/pre-steer-hook.js +2 -1
  175. package/src/core-plugins/edit-snapshot/src/utils.js +29 -1
  176. package/src/lib/JourneyContext.js +31 -28
  177. package/src/lib/MutableRouter.js +47 -38
  178. package/src/lib/NullObject.js +4 -0
  179. package/src/lib/Plan.js +41 -55
  180. package/src/lib/ValidationError.js +2 -4
  181. package/src/lib/ValidatorFactory.js +3 -5
  182. package/src/lib/configuration-ingestor.js +18 -38
  183. package/src/lib/configure.js +7 -10
  184. package/src/lib/end-session.js +1 -1
  185. package/src/lib/field.js +7 -12
  186. package/src/lib/logger.js +16 -0
  187. package/src/lib/mount.js +1 -1
  188. package/src/lib/nunjucks-filters.js +51 -61
  189. package/src/lib/nunjucks.js +3 -12
  190. package/src/lib/utils.js +2 -1
  191. package/src/lib/validators/dateObject.js +3 -4
  192. package/src/lib/validators/postalAddressObject.js +6 -7
  193. package/src/lib/validators/required.js +1 -3
  194. package/src/lib/waypoint-url.js +15 -19
  195. package/src/middleware/csrf.js +1 -1
  196. package/src/middleware/data.js +13 -13
  197. package/src/middleware/gather-fields.js +8 -2
  198. package/src/middleware/i18n.js +9 -6
  199. package/src/middleware/pre.js +1 -1
  200. package/src/middleware/progress-journey.js +8 -0
  201. package/src/middleware/sanitise-fields.js +17 -2
  202. package/src/middleware/session.js +53 -12
  203. package/src/middleware/skip-waypoint.js +8 -1
  204. package/src/middleware/steer-journey.js +1 -1
  205. package/src/middleware/strip-proxy-path.js +21 -16
  206. package/src/middleware/validate-fields.js +19 -0
  207. package/src/routes/journey.js +18 -8
  208. package/src/routes/static.js +5 -4
  209. package/views/casa/layouts/journey.njk +1 -1
  210. package/views/casa/layouts/main.njk +11 -21
  211. package/dist/casa.js.map +0 -1
  212. package/dist/core-plugins/edit-snapshot/src/configure.js.map +0 -1
  213. package/dist/core-plugins/edit-snapshot/src/index.js.map +0 -1
  214. package/dist/core-plugins/edit-snapshot/src/post-steer-hook.js.map +0 -1
  215. package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.js.map +0 -1
  216. package/dist/core-plugins/edit-snapshot/src/utils.js.map +0 -1
  217. package/dist/core-plugins/index.js.map +0 -1
  218. package/dist/lib/CasaTemplateLoader.js.map +0 -1
  219. package/dist/lib/JourneyContext.js.map +0 -1
  220. package/dist/lib/MutableRouter.js.map +0 -1
  221. package/dist/lib/Plan.js.map +0 -1
  222. package/dist/lib/ValidationError.js.map +0 -1
  223. package/dist/lib/ValidatorFactory.js.map +0 -1
  224. package/dist/lib/configuration-ingestor.js.map +0 -1
  225. package/dist/lib/configure.js.map +0 -1
  226. package/dist/lib/constants.js.map +0 -1
  227. package/dist/lib/context-id-generators.js.map +0 -1
  228. package/dist/lib/dirname.cjs +0 -1
  229. package/dist/lib/dirname.d.cts +0 -2
  230. package/dist/lib/end-session.js.map +0 -1
  231. package/dist/lib/field.js.map +0 -1
  232. package/dist/lib/index.js.map +0 -1
  233. package/dist/lib/logger.js.map +0 -1
  234. package/dist/lib/mount.js.map +0 -1
  235. package/dist/lib/nunjucks-filters.js.map +0 -1
  236. package/dist/lib/nunjucks.js.map +0 -1
  237. package/dist/lib/utils.js.map +0 -1
  238. package/dist/lib/validators/dateObject.js.map +0 -1
  239. package/dist/lib/validators/email.js.map +0 -1
  240. package/dist/lib/validators/inArray.js.map +0 -1
  241. package/dist/lib/validators/index.js.map +0 -1
  242. package/dist/lib/validators/nino.js.map +0 -1
  243. package/dist/lib/validators/postalAddressObject.js.map +0 -1
  244. package/dist/lib/validators/range.js.map +0 -1
  245. package/dist/lib/validators/regex.js.map +0 -1
  246. package/dist/lib/validators/required.js.map +0 -1
  247. package/dist/lib/validators/strlen.js.map +0 -1
  248. package/dist/lib/validators/wordCount.js.map +0 -1
  249. package/dist/lib/waypoint-url.js.map +0 -1
  250. package/dist/middleware/body-parser.js.map +0 -1
  251. package/dist/middleware/csrf.js.map +0 -1
  252. package/dist/middleware/data.js.map +0 -1
  253. package/dist/middleware/dirname.cjs +0 -1
  254. package/dist/middleware/dirname.d.cts +0 -2
  255. package/dist/middleware/gather-fields.js.map +0 -1
  256. package/dist/middleware/i18n.js.map +0 -1
  257. package/dist/middleware/post.js.map +0 -1
  258. package/dist/middleware/pre.js.map +0 -1
  259. package/dist/middleware/progress-journey.js.map +0 -1
  260. package/dist/middleware/sanitise-fields.js.map +0 -1
  261. package/dist/middleware/serve-first-waypoint.js.map +0 -1
  262. package/dist/middleware/session.js.map +0 -1
  263. package/dist/middleware/skip-waypoint.js.map +0 -1
  264. package/dist/middleware/steer-journey.js.map +0 -1
  265. package/dist/middleware/strip-proxy-path.js.map +0 -1
  266. package/dist/middleware/validate-fields.js.map +0 -1
  267. package/dist/mjs/esm-wrapper.js +0 -20
  268. package/dist/mjs/package.json +0 -3
  269. package/dist/package.json +0 -3
  270. package/dist/routes/ancillary.js.map +0 -1
  271. package/dist/routes/dirname.cjs +0 -1
  272. package/dist/routes/dirname.d.cts +0 -2
  273. package/dist/routes/journey.js.map +0 -1
  274. package/dist/routes/static.js.map +0 -1
  275. package/src/lib/dirname.cjs +0 -1
  276. package/src/middleware/dirname.cjs +0 -1
  277. package/src/routes/dirname.cjs +0 -1
@@ -1,8 +1,3 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
1
  /**
7
2
  * Test if a value is present in an array.
8
3
  *
@@ -11,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
6
  * If the value itself is an array, all values within that array must be present
12
7
  * in the `source` array in order to pass validation.
13
8
  */
14
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
15
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
16
- const utils_js_1 = require("../utils.js");
9
+ import ValidationError from "../ValidationError.js";
10
+ import ValidatorFactory from "../ValidatorFactory.js";
11
+ import { stringifyInput, isStringable } from "../utils.js";
17
12
  /**
18
13
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
19
14
  * @access private
@@ -34,7 +29,7 @@ const utils_js_1 = require("../utils.js");
34
29
  * @memberof Validators
35
30
  * @augments ValidatorFactory
36
31
  */
37
- class InArray extends ValidatorFactory_js_1.default {
32
+ export default class InArray extends ValidatorFactory {
38
33
  /** @property {string} name Validator name ("inArray") */
39
34
  name = "inArray";
40
35
  validate(value, dataContext = {}) {
@@ -56,13 +51,13 @@ class InArray extends ValidatorFactory_js_1.default {
56
51
  }
57
52
  }
58
53
  }
59
- return valid ? [] : [ValidationError_js_1.default.make({ errorMsg, dataContext })];
54
+ return valid ? [] : [ValidationError.make({ errorMsg, dataContext })];
60
55
  }
61
56
  sanitise(value) {
62
- const coerce = (val) => (0, utils_js_1.stringifyInput)(val, undefined);
57
+ const coerce = (val) => stringifyInput(val, undefined);
63
58
  // Basic stringable
64
- if ((0, utils_js_1.isStringable)(value)) {
65
- return (0, utils_js_1.stringifyInput)(value);
59
+ if (isStringable(value)) {
60
+ return stringifyInput(value);
66
61
  }
67
62
  // Coerce all elements to Strings.
68
63
  // This only supports one dimensional array, with stringable element.
@@ -73,5 +68,3 @@ class InArray extends ValidatorFactory_js_1.default {
73
68
  return undefined;
74
69
  }
75
70
  }
76
- exports.default = InArray;
77
- //# sourceMappingURL=inArray.js.map
@@ -21,3 +21,4 @@ import required from "./required.js";
21
21
  import strlen from "./strlen.js";
22
22
  import range from "./range.js";
23
23
  import wordCount from "./wordCount.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/index.js"],"names":[],"mappings":";;;;;;;;;;;;;uBAAuB,iBAAiB;kBACtB,YAAY;oBACV,cAAc;iBACjB,WAAW;gCACI,0BAA0B;kBACxC,YAAY;qBACT,eAAe;mBACjB,aAAa;kBACd,YAAY;sBACR,gBAAgB"}
@@ -1,29 +1,23 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const dateObject_js_1 = __importDefault(require("./dateObject.js"));
7
- const email_js_1 = __importDefault(require("./email.js"));
8
- const inArray_js_1 = __importDefault(require("./inArray.js"));
9
- const nino_js_1 = __importDefault(require("./nino.js"));
10
- const postalAddressObject_js_1 = __importDefault(require("./postalAddressObject.js"));
11
- const regex_js_1 = __importDefault(require("./regex.js"));
12
- const required_js_1 = __importDefault(require("./required.js"));
13
- const strlen_js_1 = __importDefault(require("./strlen.js"));
14
- const range_js_1 = __importDefault(require("./range.js"));
15
- const wordCount_js_1 = __importDefault(require("./wordCount.js"));
1
+ import dateObject from "./dateObject.js";
2
+ import email from "./email.js";
3
+ import inArray from "./inArray.js";
4
+ import nino from "./nino.js";
5
+ import postalAddressObject from "./postalAddressObject.js";
6
+ import regex from "./regex.js";
7
+ import required from "./required.js";
8
+ import strlen from "./strlen.js";
9
+ import range from "./range.js";
10
+ import wordCount from "./wordCount.js";
16
11
  /** @namespace Validators */
17
- exports.default = {
18
- dateObject: dateObject_js_1.default,
19
- email: email_js_1.default,
20
- inArray: inArray_js_1.default,
21
- nino: nino_js_1.default,
22
- postalAddressObject: postalAddressObject_js_1.default,
23
- regex: regex_js_1.default,
24
- required: required_js_1.default,
25
- strlen: strlen_js_1.default,
26
- range: range_js_1.default,
27
- wordCount: wordCount_js_1.default,
12
+ export default {
13
+ dateObject,
14
+ email,
15
+ inArray,
16
+ nino,
17
+ postalAddressObject,
18
+ regex,
19
+ required,
20
+ strlen,
21
+ range,
22
+ wordCount,
28
23
  };
29
- //# sourceMappingURL=index.js.map
@@ -38,3 +38,4 @@ export type NinoConfigOptions = {
38
38
  };
39
39
  import ValidatorFactory from "../ValidatorFactory.js";
40
40
  import ValidationError from "../ValidationError.js";
41
+ //# sourceMappingURL=nino.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nino.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/nino.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;;;;;;GAUG;AACH;IACE,aAAc;IAEd,0DA+BC;IAED,yCAKC;CACF;iCAhEY,OAAO,YAAY,EAAE,kBAAkB;;;;;cAMtC,kBAAkB;;;;;qBAClB,OAAO;;6BAXQ,wBAAwB;4BADzB,uBAAuB"}
@@ -1,11 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
7
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
8
- const utils_js_1 = require("../utils.js");
1
+ import ValidationError from "../ValidationError.js";
2
+ import ValidatorFactory from "../ValidatorFactory.js";
3
+ import { stringifyInput } from "../utils.js";
9
4
  /**
10
5
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
11
6
  * @access private
@@ -27,7 +22,7 @@ const utils_js_1 = require("../utils.js");
27
22
  * @memberof Validators
28
23
  * @augments ValidatorFactory
29
24
  */
30
- class Nino extends ValidatorFactory_js_1.default {
25
+ export default class Nino extends ValidatorFactory {
31
26
  name = "nino";
32
27
  validate(value, dataContext = {}) {
33
28
  const { allowWhitespace, errorMsg = {
@@ -44,14 +39,12 @@ class Nino extends ValidatorFactory_js_1.default {
44
39
  ? /\u0020/g
45
40
  : "", "")
46
41
  .match(/^(?!BG|GB|NK|KN|TN|NT|ZZ)[ABCEGHJ-PRSTW-Z][ABCEGHJ-NPRSTW-Z]\d{6}[A-D]$/i);
47
- return valid ? [] : [ValidationError_js_1.default.make({ errorMsg, dataContext })];
42
+ return valid ? [] : [ValidationError.make({ errorMsg, dataContext })];
48
43
  }
49
44
  sanitise(value) {
50
45
  if (value !== undefined) {
51
- return (0, utils_js_1.stringifyInput)(value);
46
+ return stringifyInput(value);
52
47
  }
53
48
  return undefined;
54
49
  }
55
50
  }
56
- exports.default = Nino;
57
- //# sourceMappingURL=nino.js.map
@@ -83,3 +83,4 @@ export type PostalAddressObjectConfigOptions = {
83
83
  };
84
84
  import ValidatorFactory from "../ValidatorFactory.js";
85
85
  import ValidationError from "../ValidationError.js";
86
+ //# sourceMappingURL=postalAddressObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postalAddressObject.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/postalAddressObject.js"],"names":[],"mappings":"AAMA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;;;;;;GAWG;AACH;IACE,aAA6B;IAE7B,0DAiHC;IAED,0BAoBC;CACF;iCA/KY,OAAO,YAAY,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAJvB,wBAAwB;4BADzB,uBAAuB"}
@@ -1,13 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const lodash_1 = __importDefault(require("lodash"));
7
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
8
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
9
- const utils_js_1 = require("../utils.js");
10
- const { isPlainObject } = lodash_1.default; // CommonjS
1
+ import isPlainObject from "is-plain-obj";
2
+ import NullObject from "../NullObject.js";
3
+ import ValidationError from "../ValidationError.js";
4
+ import ValidatorFactory from "../ValidatorFactory.js";
5
+ import { stringifyInput } from "../utils.js";
11
6
  /**
12
7
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
13
8
  * @access private
@@ -43,7 +38,7 @@ const { isPlainObject } = lodash_1.default; // CommonjS
43
38
  * @memberof Validators
44
39
  * @augments ValidatorFactory
45
40
  */
46
- class PostalAddressObject extends ValidatorFactory_js_1.default {
41
+ export default class PostalAddressObject extends ValidatorFactory {
47
42
  name = "postalAddressObject";
48
43
  validate(value, dataContext = {}) {
49
44
  const cfg = {
@@ -88,7 +83,7 @@ class PostalAddressObject extends ValidatorFactory_js_1.default {
88
83
  }
89
84
  : err;
90
85
  // Work out required/optional parts based on config
91
- const reqF = Object.create(null);
86
+ const reqF = new NullObject();
92
87
  const reqC = cfg.requiredFields;
93
88
  reqF.address1 = reqC.indexOf("address1") > -1;
94
89
  reqF.address2 = reqC.indexOf("address2") > -1;
@@ -128,7 +123,7 @@ class PostalAddressObject extends ValidatorFactory_js_1.default {
128
123
  const condExceedStrlen = attr[2] > 0 && hasContent && String(value[k]).length > attr[2];
129
124
  if (condMissingOrRegexMismatch || condExceedStrlen) {
130
125
  valid = false;
131
- errorMsgs.push(Object.assign(Object.create(null), objectifyError(attr[3]), {
126
+ errorMsgs.push(Object.assign(new NullObject(), objectifyError(attr[3]), {
132
127
  fieldKeySuffix: `[${k}]`,
133
128
  }));
134
129
  }
@@ -140,13 +135,13 @@ class PostalAddressObject extends ValidatorFactory_js_1.default {
140
135
  errorMsgs.push(cfg.errorMsg);
141
136
  }
142
137
  // Build ValidationErrorGroup
143
- const errorGroup = errorMsgs.map((err) => ValidationError_js_1.default.make({ errorMsg: err, dataContext }));
138
+ const errorGroup = errorMsgs.map((err) => ValidationError.make({ errorMsg: err, dataContext }));
144
139
  return valid ? [] : [...errorGroup];
145
140
  }
146
141
  sanitise(value) {
147
142
  // Only objects are supported
148
143
  if (!isPlainObject(value)) {
149
- return Object.create(null);
144
+ return new NullObject();
150
145
  }
151
146
  // Prune unrecognised attributes, and coerce to Strings
152
147
  const validKeys = [
@@ -158,9 +153,7 @@ class PostalAddressObject extends ValidatorFactory_js_1.default {
158
153
  ];
159
154
  const pruned = Object.fromEntries(Object.entries(value)
160
155
  .filter(([k]) => validKeys.includes(k))
161
- .map(([k, v]) => [k, (0, utils_js_1.stringifyInput)(v)]));
162
- return Object.assign(Object.create(null), pruned);
156
+ .map(([k, v]) => [k, stringifyInput(v)]));
157
+ return Object.assign(new NullObject(), pruned);
163
158
  }
164
159
  }
165
- exports.default = PostalAddressObject;
166
- //# sourceMappingURL=postalAddressObject.js.map
@@ -47,3 +47,4 @@ export type RangeConfigOptions = {
47
47
  };
48
48
  import ValidatorFactory from "../ValidatorFactory.js";
49
49
  import ValidationError from "../ValidationError.js";
50
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/range.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH;IACE,aAAe;IAEf,+DA4BC;IAED,yCASC;CACF;iCAjEY,OAAO,YAAY,EAAE,kBAAkB;;;;;;iBAMtC,kBAAkB;;;;;iBAElB,kBAAkB;;;;SAElB,MAAM;;;;SACN,MAAM;;6BAhBS,wBAAwB;4BACzB,uBAAuB"}
@@ -1,11 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
7
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
8
- const utils_js_1 = require("../utils.js");
1
+ import ValidatorFactory from "../ValidatorFactory.js";
2
+ import ValidationError from "../ValidationError.js";
3
+ import { coerceInputToInteger } from "../utils.js";
9
4
  /**
10
5
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
11
6
  * @access private
@@ -27,7 +22,7 @@ const utils_js_1 = require("../utils.js");
27
22
  * @memberof Validators
28
23
  * @augments ValidatorFactory
29
24
  */
30
- class Range extends ValidatorFactory_js_1.default {
25
+ export default class Range extends ValidatorFactory {
31
26
  name = "range";
32
27
  validate(inputValue, dataContext = {}) {
33
28
  const { errorMsgMax = {
@@ -47,7 +42,7 @@ class Range extends ValidatorFactory_js_1.default {
47
42
  valid = false;
48
43
  errorMsg = errorMsgMin;
49
44
  }
50
- return valid ? [] : [ValidationError_js_1.default.make({ errorMsg, dataContext })];
45
+ return valid ? [] : [ValidationError.make({ errorMsg, dataContext })];
51
46
  }
52
47
  sanitise(value) {
53
48
  // treat an empty string as undefined
@@ -55,10 +50,8 @@ class Range extends ValidatorFactory_js_1.default {
55
50
  if (value !== "" && value !== undefined) {
56
51
  // add to custom validator docs to ensure not to return a falsy value as
57
52
  // it doesn't show on screen
58
- return (0, utils_js_1.coerceInputToInteger)(value)?.toString();
53
+ return coerceInputToInteger(value)?.toString();
59
54
  }
60
55
  return undefined;
61
56
  }
62
57
  }
63
- exports.default = Range;
64
- //# sourceMappingURL=range.js.map
@@ -38,3 +38,4 @@ export type RegexConfigOptions = {
38
38
  };
39
39
  import ValidatorFactory from "../ValidatorFactory.js";
40
40
  import ValidationError from "../ValidationError.js";
41
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/regex.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;GAKG;AAEH;;;;;;;GAOG;AACH;IACE,aAAe;IAEf,8DAWC;IAED,yCAKC;CACF;iCAzCY,OAAO,YAAY,EAAE,kBAAkB;;;;;cAMtC,kBAAkB;;;;aAClB,MAAM;;;;YACN,OAAO;;6BAbQ,wBAAwB;4BACzB,uBAAuB"}
@@ -1,11 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
7
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
8
- const utils_js_1 = require("../utils.js");
1
+ import ValidatorFactory from "../ValidatorFactory.js";
2
+ import ValidationError from "../ValidationError.js";
3
+ import { stringifyInput } from "../utils.js";
9
4
  /**
10
5
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
11
6
  * @access private
@@ -24,7 +19,7 @@ const utils_js_1 = require("../utils.js");
24
19
  * @memberof Validators
25
20
  * @augments ValidatorFactory
26
21
  */
27
- class Regex extends ValidatorFactory_js_1.default {
22
+ export default class Regex extends ValidatorFactory {
28
23
  name = "regex";
29
24
  validate(value = "", dataContext = {}) {
30
25
  const invert = this.config.invert || false;
@@ -34,14 +29,12 @@ class Regex extends ValidatorFactory_js_1.default {
34
29
  inline: "validation:rule.regex.inline",
35
30
  summary: "validation:rule.regex.summary",
36
31
  };
37
- return valid ? [] : [ValidationError_js_1.default.make({ errorMsg, dataContext })];
32
+ return valid ? [] : [ValidationError.make({ errorMsg, dataContext })];
38
33
  }
39
34
  sanitise(value) {
40
35
  if (value !== undefined) {
41
- return (0, utils_js_1.stringifyInput)(value);
36
+ return stringifyInput(value);
42
37
  }
43
38
  return undefined;
44
39
  }
45
40
  }
46
- exports.default = Regex;
47
- //# sourceMappingURL=regex.js.map
@@ -33,3 +33,4 @@ export type RequiredConfigOptions = {
33
33
  };
34
34
  import ValidatorFactory from "../ValidatorFactory.js";
35
35
  import ValidationError from "../ValidationError.js";
36
+ //# sourceMappingURL=required.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"required.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/required.js"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH;IACE,aAAkB;IAElB,0DAaC;IAED;;kBAyBC;CACF;iCAhEY,OAAO,YAAY,EAAE,kBAAkB;;;;;cAMtC,kBAAkB;;6BAVH,wBAAwB;4BACzB,uBAAuB"}
@@ -1,13 +1,7 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const lodash_1 = __importDefault(require("lodash"));
7
- const utils_js_1 = require("../utils.js");
8
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
9
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
10
- const { isPlainObject } = lodash_1.default; // CommonJS
1
+ import isPlainObject from "is-plain-obj";
2
+ import { isEmpty, isStringable, stringifyInput } from "../utils.js";
3
+ import ValidatorFactory from "../ValidatorFactory.js";
4
+ import ValidationError from "../ValidationError.js";
11
5
  /**
12
6
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
13
7
  * @access private
@@ -27,24 +21,24 @@ const { isPlainObject } = lodash_1.default; // CommonJS
27
21
  * @memberof Validators
28
22
  * @augments ValidatorFactory
29
23
  */
30
- class Required extends ValidatorFactory_js_1.default {
24
+ export default class Required extends ValidatorFactory {
31
25
  name = "required";
32
26
  validate(value, dataContext = {}) {
33
27
  const { errorMsg = {
34
28
  inline: "validation:rule.required.inline",
35
29
  summary: "validation:rule.required.summary",
36
30
  }, } = this.config;
37
- if (!(0, utils_js_1.isEmpty)(value)) {
31
+ if (!isEmpty(value)) {
38
32
  return [];
39
33
  }
40
- return [ValidationError_js_1.default.make({ errorMsg, dataContext })];
34
+ return [ValidationError.make({ errorMsg, dataContext })];
41
35
  }
42
36
  sanitise(value) {
43
37
  const coerce = (val) => {
44
- const s = (0, utils_js_1.stringifyInput)(val, undefined);
38
+ const s = stringifyInput(val, undefined);
45
39
  return s === undefined ? undefined : s.replace(/^\s+$/, "");
46
40
  };
47
- if ((0, utils_js_1.isStringable)(value)) {
41
+ if (isStringable(value)) {
48
42
  return coerce(value);
49
43
  }
50
44
  // Coerce all elements to Strings.
@@ -60,5 +54,3 @@ class Required extends ValidatorFactory_js_1.default {
60
54
  return undefined;
61
55
  }
62
56
  }
63
- exports.default = Required;
64
- //# sourceMappingURL=required.js.map
@@ -47,3 +47,4 @@ export type StrlenConfigOptions = {
47
47
  };
48
48
  import ValidatorFactory from "../ValidatorFactory.js";
49
49
  import ValidationError from "../ValidationError.js";
50
+ //# sourceMappingURL=strlen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strlen.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/strlen.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH;IACE,aAAgB;IAEhB,mEA4BC;IAED,yCAKC;CACF;iCA7DY,OAAO,YAAY,EAAE,kBAAkB;;;;;;iBAMtC,kBAAkB;;;;;iBAElB,kBAAkB;;;;SAElB,MAAM;;;;SACN,MAAM;;6BAhBS,wBAAwB;4BACzB,uBAAuB"}
@@ -1,11 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
7
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
8
- const utils_js_1 = require("../utils.js");
1
+ import ValidatorFactory from "../ValidatorFactory.js";
2
+ import ValidationError from "../ValidationError.js";
3
+ import { stringifyInput } from "../utils.js";
9
4
  /**
10
5
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
11
6
  * @access private
@@ -27,7 +22,7 @@ const utils_js_1 = require("../utils.js");
27
22
  * @memberof Validators
28
23
  * @augments ValidatorFactory
29
24
  */
30
- class Strlen extends ValidatorFactory_js_1.default {
25
+ export default class Strlen extends ValidatorFactory {
31
26
  name = "strlen";
32
27
  validate(inputValue = "", dataContext = {}) {
33
28
  const { errorMsgMax = {
@@ -47,14 +42,12 @@ class Strlen extends ValidatorFactory_js_1.default {
47
42
  valid = false;
48
43
  errorMsg = errorMsgMin;
49
44
  }
50
- return valid ? [] : [ValidationError_js_1.default.make({ errorMsg, dataContext })];
45
+ return valid ? [] : [ValidationError.make({ errorMsg, dataContext })];
51
46
  }
52
47
  sanitise(value) {
53
48
  if (value !== undefined) {
54
- return (0, utils_js_1.stringifyInput)(value);
49
+ return stringifyInput(value);
55
50
  }
56
51
  return undefined;
57
52
  }
58
53
  }
59
- exports.default = Strlen;
60
- //# sourceMappingURL=strlen.js.map
@@ -48,3 +48,4 @@ export type WordcountConfigOptions = {
48
48
  };
49
49
  import ValidatorFactory from "../ValidatorFactory.js";
50
50
  import ValidationError from "../ValidationError.js";
51
+ //# sourceMappingURL=wordCount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wordCount.d.ts","sourceRoot":"","sources":["../../../src/lib/validators/wordCount.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;;;;;;GAQG;AAEH;;;;;;;GAOG;AACH;IACE,aAAmB;IAEnB,uBAEC;IAED,mEAkCC;IAED,yCAKC;CACF;iCAvEY,OAAO,YAAY,EAAE,kBAAkB;;;;;;iBAMtC,kBAAkB;;;;;iBAElB,kBAAkB;;;;SAElB,MAAM;;;;SACN,MAAM;;6BAhBS,wBAAwB;4BACzB,uBAAuB"}
@@ -1,11 +1,6 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const ValidatorFactory_js_1 = __importDefault(require("../ValidatorFactory.js"));
7
- const ValidationError_js_1 = __importDefault(require("../ValidationError.js"));
8
- const utils_js_1 = require("../utils.js");
1
+ import ValidatorFactory from "../ValidatorFactory.js";
2
+ import ValidationError from "../ValidationError.js";
3
+ import { stringifyInput } from "../utils.js";
9
4
  /**
10
5
  * @typedef {import("../../casa").ErrorMessageConfig} ErrorMessageConfig
11
6
  * @access private
@@ -27,7 +22,7 @@ const utils_js_1 = require("../utils.js");
27
22
  * @memberof Validators
28
23
  * @augments ValidatorFactory
29
24
  */
30
- class WordCount extends ValidatorFactory_js_1.default {
25
+ export default class WordCount extends ValidatorFactory {
31
26
  name = "wordCount";
32
27
  count(input) {
33
28
  return (input.match(/\S+/g) || []).length;
@@ -52,14 +47,12 @@ class WordCount extends ValidatorFactory_js_1.default {
52
47
  valid = false;
53
48
  errorMsg = errorMsgMin;
54
49
  }
55
- return valid ? [] : [ValidationError_js_1.default.make({ errorMsg, dataContext })];
50
+ return valid ? [] : [ValidationError.make({ errorMsg, dataContext })];
56
51
  }
57
52
  sanitise(value) {
58
53
  if (value !== undefined) {
59
- return (0, utils_js_1.stringifyInput)(value);
54
+ return stringifyInput(value);
60
55
  }
61
56
  return undefined;
62
57
  }
63
58
  }
64
- exports.default = WordCount;
65
- //# sourceMappingURL=wordCount.js.map
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Generate a URL pointing at a particular waypoint.
3
3
  *
4
- * @memberof module:@dwp/govuk-casa
4
+ * @memberof module:"@dwp/govuk-casa"
5
5
  * @example
6
6
  * // generates: /path/details?edit&editorigin=%2Fsomewhere%2Felse
7
7
  * waypointUrl({
@@ -25,10 +25,11 @@
25
25
  export default function waypointUrl({ waypoint, mountUrl, journeyContext, edit, editOrigin, skipTo, routeName, }?: {
26
26
  waypoint?: string | undefined;
27
27
  mountUrl?: string | undefined;
28
- journeyContext?: import("./JourneyContext").default | undefined;
28
+ journeyContext?: import("./JourneyContext.js").default | undefined;
29
29
  edit?: boolean | undefined;
30
30
  editOrigin?: string | undefined;
31
31
  skipTo?: boolean | undefined;
32
32
  routeName?: string | undefined;
33
33
  }): string;
34
34
  export type JourneyContext = import("./index").JourneyContext;
35
+ //# sourceMappingURL=waypoint-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waypoint-url.d.ts","sourceRoot":"","sources":["../../src/lib/waypoint-url.js"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,mHAVG;IAAqB,QAAQ;IACR,QAAQ;IACA,cAAc;IACrB,IAAI;IACL,UAAU;IACT,MAAM;IACP,SAAS;CAE9B,GAAU,MAAM,CAuElB;6BAvIY,OAAO,SAAS,EAAE,cAAc"}
@@ -1,10 +1,8 @@
1
- "use strict";
1
+ import NullObject from "./NullObject.js";
2
2
  /**
3
3
  * @typedef {import("./index").JourneyContext} JourneyContext
4
4
  * @access private
5
5
  */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.default = waypointUrl;
8
6
  /** @access private */
9
7
  const reUrlProtocolExtract = /^url:\/\/(.+)$/i;
10
8
  /**
@@ -14,7 +12,7 @@ const reUrlProtocolExtract = /^url:\/\/(.+)$/i;
14
12
  * @returns {string} Sanitised waypoint
15
13
  * @access private
16
14
  */
17
- const sanitiseWaypoint = (w) => w.replace(/[^/a-z0-9_-]/gi, "").replace(/\/+/g, "/");
15
+ const sanitiseWaypoint = (w) => w.replace(/[^/a-z0-9_-]+/gi, "").replace(/\/+/g, "/");
18
16
  /**
19
17
  * Sanitise a waypoint string, with allowed URL parameters: contextid =
20
18
  * JourneyContext ID
@@ -24,26 +22,22 @@ const sanitiseWaypoint = (w) => w.replace(/[^/a-z0-9_-]/gi, "").replace(/\/+/g,
24
22
  * @access private
25
23
  */
26
24
  const sanitiseWaypointWithAllowedParams = (w) => {
27
- // Extract URL params
28
- const parts = w.split("?");
29
- if (parts.length !== 2) {
25
+ const queryIndex = w.indexOf("?");
26
+ if (queryIndex === -1 || queryIndex !== w.lastIndexOf("?")) {
30
27
  return sanitiseWaypoint(w);
31
28
  }
32
- const [waypoint, rawParams] = parts;
33
- const urlSearchParams = new URLSearchParams(rawParams);
34
- // Strip all but those parameters allowed
35
- const validatedUrlSearchParams = new URLSearchParams();
36
- for (const pk of ["contextid"]) {
37
- if (urlSearchParams.has(pk)) {
38
- validatedUrlSearchParams.set(pk, urlSearchParams.get(pk));
39
- }
29
+ const waypoint = w.substring(0, queryIndex);
30
+ const urlSearchParams = new URLSearchParams(w.substring(queryIndex + 1));
31
+ let query = "";
32
+ if (urlSearchParams.has("contextid")) {
33
+ query += `?contextid=${encodeURIComponent(urlSearchParams.get("contextid"))}`;
40
34
  }
41
- return `${sanitiseWaypoint(waypoint)}?${validatedUrlSearchParams.toString()}`.replace(/\?$/, "");
35
+ return `${sanitiseWaypoint(waypoint)}${query}`;
42
36
  };
43
37
  /**
44
38
  * Generate a URL pointing at a particular waypoint.
45
39
  *
46
- * @memberof module:@dwp/govuk-casa
40
+ * @memberof module:"@dwp/govuk-casa"
47
41
  * @example
48
42
  * // generates: /path/details?edit&editorigin=%2Fsomewhere%2Felse
49
43
  * waypointUrl({
@@ -64,7 +58,7 @@ const sanitiseWaypointWithAllowedParams = (w) => {
64
58
  * `next`
65
59
  * @returns {string} URL
66
60
  */
67
- function waypointUrl({ waypoint = "", mountUrl = "/", journeyContext, edit = false, editOrigin, skipTo, routeName = "next", } = Object.create(null)) {
61
+ export default function waypointUrl({ waypoint = "", mountUrl = "/", journeyContext, edit = false, editOrigin, skipTo, routeName = "next", } = new NullObject()) {
68
62
  const url = new URL("https://placeholder.test");
69
63
  // Handle url:// protocol
70
64
  // - This will generate a link to the root handler "_" for the given mount path
@@ -106,4 +100,3 @@ function waypointUrl({ waypoint = "", mountUrl = "/", journeyContext, edit = fal
106
100
  }
107
101
  return `${sanitiseWaypoint(url.pathname)}${url.search}`;
108
102
  }
109
- //# sourceMappingURL=waypoint-url.js.map
@@ -25,3 +25,4 @@ export default function bodyParserMiddleware({ formMaxParams, formMaxBytes }: {
25
25
  export type RequestHandler = import("express").RequestHandler;
26
26
  export type Request = import("express").Request;
27
27
  export type Response = import("express").Response;
28
+ //# sourceMappingURL=body-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-parser.d.ts","sourceRoot":"","sources":["../../src/middleware/body-parser.js"],"names":[],"mappings":"AAqBA;;;;;;;;;GASG;AACH,gCAPW,OAAO,OACP,QAAQ,OACR,MAAM,YACN,MAAM,GACJ,IAAI,CAiBhB;AAED;;;;;;;;GAQG;AACH,8EALG;IAAqB,aAAa,EAA1B,MAAM;IAEO,YAAY,EAAzB,MAAM;CACd,GAAU,cAAc,EAAE,CAa5B;6BAhEY,OAAO,SAAS,EAAE,cAAc;sBAKhC,OAAO,SAAS,EAAE,OAAO;uBAKzB,OAAO,SAAS,EAAE,QAAQ"}