@dwp/govuk-casa 9.7.0 → 10.1.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 (278) 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 +90 -44
  4. package/dist/casa.d.ts.map +1 -0
  5. package/dist/casa.js +85 -101
  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 +79 -55
  31. package/dist/lib/MutableRouter.d.ts.map +1 -0
  32. package/dist/lib/MutableRouter.js +53 -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 +4 -4
  76. package/dist/lib/nunjucks.d.ts.map +1 -0
  77. package/dist/lib/nunjucks.js +14 -26
  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 +4 -2
  133. package/dist/middleware/post.d.ts.map +1 -0
  134. package/dist/middleware/post.js +6 -11
  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 +30 -36
  172. package/src/casa.js +63 -31
  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 +52 -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 +5 -13
  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/post.js +3 -1
  200. package/src/middleware/pre.js +1 -1
  201. package/src/middleware/progress-journey.js +8 -0
  202. package/src/middleware/sanitise-fields.js +17 -2
  203. package/src/middleware/session.js +53 -12
  204. package/src/middleware/skip-waypoint.js +8 -1
  205. package/src/middleware/steer-journey.js +1 -1
  206. package/src/middleware/strip-proxy-path.js +21 -16
  207. package/src/middleware/validate-fields.js +19 -0
  208. package/src/routes/journey.js +18 -8
  209. package/src/routes/static.js +5 -4
  210. package/views/casa/layouts/journey.njk +1 -1
  211. package/views/casa/layouts/main.njk +11 -21
  212. package/dist/casa.js.map +0 -1
  213. package/dist/core-plugins/edit-snapshot/src/configure.js.map +0 -1
  214. package/dist/core-plugins/edit-snapshot/src/index.js.map +0 -1
  215. package/dist/core-plugins/edit-snapshot/src/post-steer-hook.js.map +0 -1
  216. package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.js.map +0 -1
  217. package/dist/core-plugins/edit-snapshot/src/utils.js.map +0 -1
  218. package/dist/core-plugins/index.js.map +0 -1
  219. package/dist/lib/CasaTemplateLoader.js.map +0 -1
  220. package/dist/lib/JourneyContext.js.map +0 -1
  221. package/dist/lib/MutableRouter.js.map +0 -1
  222. package/dist/lib/Plan.js.map +0 -1
  223. package/dist/lib/ValidationError.js.map +0 -1
  224. package/dist/lib/ValidatorFactory.js.map +0 -1
  225. package/dist/lib/configuration-ingestor.js.map +0 -1
  226. package/dist/lib/configure.js.map +0 -1
  227. package/dist/lib/constants.js.map +0 -1
  228. package/dist/lib/context-id-generators.js.map +0 -1
  229. package/dist/lib/dirname.cjs +0 -1
  230. package/dist/lib/dirname.d.cts +0 -2
  231. package/dist/lib/end-session.js.map +0 -1
  232. package/dist/lib/field.js.map +0 -1
  233. package/dist/lib/index.js.map +0 -1
  234. package/dist/lib/logger.js.map +0 -1
  235. package/dist/lib/mount.js.map +0 -1
  236. package/dist/lib/nunjucks-filters.js.map +0 -1
  237. package/dist/lib/nunjucks.js.map +0 -1
  238. package/dist/lib/utils.js.map +0 -1
  239. package/dist/lib/validators/dateObject.js.map +0 -1
  240. package/dist/lib/validators/email.js.map +0 -1
  241. package/dist/lib/validators/inArray.js.map +0 -1
  242. package/dist/lib/validators/index.js.map +0 -1
  243. package/dist/lib/validators/nino.js.map +0 -1
  244. package/dist/lib/validators/postalAddressObject.js.map +0 -1
  245. package/dist/lib/validators/range.js.map +0 -1
  246. package/dist/lib/validators/regex.js.map +0 -1
  247. package/dist/lib/validators/required.js.map +0 -1
  248. package/dist/lib/validators/strlen.js.map +0 -1
  249. package/dist/lib/validators/wordCount.js.map +0 -1
  250. package/dist/lib/waypoint-url.js.map +0 -1
  251. package/dist/middleware/body-parser.js.map +0 -1
  252. package/dist/middleware/csrf.js.map +0 -1
  253. package/dist/middleware/data.js.map +0 -1
  254. package/dist/middleware/dirname.cjs +0 -1
  255. package/dist/middleware/dirname.d.cts +0 -2
  256. package/dist/middleware/gather-fields.js.map +0 -1
  257. package/dist/middleware/i18n.js.map +0 -1
  258. package/dist/middleware/post.js.map +0 -1
  259. package/dist/middleware/pre.js.map +0 -1
  260. package/dist/middleware/progress-journey.js.map +0 -1
  261. package/dist/middleware/sanitise-fields.js.map +0 -1
  262. package/dist/middleware/serve-first-waypoint.js.map +0 -1
  263. package/dist/middleware/session.js.map +0 -1
  264. package/dist/middleware/skip-waypoint.js.map +0 -1
  265. package/dist/middleware/steer-journey.js.map +0 -1
  266. package/dist/middleware/strip-proxy-path.js.map +0 -1
  267. package/dist/middleware/validate-fields.js.map +0 -1
  268. package/dist/mjs/esm-wrapper.js +0 -20
  269. package/dist/mjs/package.json +0 -3
  270. package/dist/package.json +0 -3
  271. package/dist/routes/ancillary.js.map +0 -1
  272. package/dist/routes/dirname.cjs +0 -1
  273. package/dist/routes/dirname.d.cts +0 -2
  274. package/dist/routes/journey.js.map +0 -1
  275. package/dist/routes/static.js.map +0 -1
  276. package/src/lib/dirname.cjs +0 -1
  277. package/src/middleware/dirname.cjs +0 -1
  278. package/src/routes/dirname.cjs +0 -1
@@ -1,8 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyBody = verifyBody;
4
- exports.default = bodyParserMiddleware;
5
- const express_1 = require("express");
1
+ import { urlencoded as expressBodyParser } from "express";
6
2
  /**
7
3
  * @typedef {import("express").RequestHandler} RequestHandler
8
4
  * @access private
@@ -28,7 +24,7 @@ const rConstructor = /constructor[='"[\]]/i;
28
24
  * @returns {void}
29
25
  * @throws {Error} For invalid bodies
30
26
  */
31
- function verifyBody(req, res, buf, encoding) {
27
+ export function verifyBody(req, res, buf, encoding) {
32
28
  const body = decodeURI(buf.toString(encoding)).replace(/[\s\u200B-\u200D\uFEFF]/g, "");
33
29
  if (rProto.test(body)) {
34
30
  throw new Error("Request body verification failed (__proto__)");
@@ -49,9 +45,9 @@ function verifyBody(req, res, buf, encoding) {
49
45
  * @param {number} opts.formMaxBytes Max bytes that should be read
50
46
  * @returns {RequestHandler[]} Middleware functions
51
47
  */
52
- function bodyParserMiddleware({ formMaxParams, formMaxBytes }) {
48
+ export default function bodyParserMiddleware({ formMaxParams, formMaxBytes }) {
53
49
  return [
54
- (0, express_1.urlencoded)({
50
+ expressBodyParser({
55
51
  extended: true,
56
52
  type: "application/x-www-form-urlencoded",
57
53
  inflate: true,
@@ -61,4 +57,3 @@ function bodyParserMiddleware({ formMaxParams, formMaxBytes }) {
61
57
  }),
62
58
  ];
63
59
  }
64
- //# sourceMappingURL=body-parser.js.map
@@ -13,3 +13,4 @@
13
13
  */
14
14
  export default function csrfMiddleware(): RequestHandler[];
15
15
  export type RequestHandler = import("express").RequestHandler;
16
+ //# sourceMappingURL=csrf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.d.ts","sourceRoot":"","sources":["../../src/middleware/csrf.js"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;;;;;;;GAQG;AACH,0CAFa,cAAc,EAAE,CAgB5B;6BA3BY,OAAO,SAAS,EAAE,cAAc"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = csrfMiddleware;
4
- const csrf_sync_1 = require("csrf-sync");
1
+ import { csrfSync } from "csrf-sync";
5
2
  /**
6
3
  * @typedef {import("express").RequestHandler} RequestHandler
7
4
  * @access private
@@ -15,9 +12,9 @@ const csrf_sync_1 = require("csrf-sync");
15
12
  *
16
13
  * @returns {RequestHandler[]} Middleware functions
17
14
  */
18
- function csrfMiddleware() {
19
- const { csrfSynchronisedProtection } = (0, csrf_sync_1.csrfSync)({
20
- getTokenFromRequest: (req) => req.body._csrf,
15
+ export default function csrfMiddleware() {
16
+ const { csrfSynchronisedProtection } = csrfSync({
17
+ getTokenFromRequest: (req) => req.body?._csrf,
21
18
  });
22
19
  return [
23
20
  csrfSynchronisedProtection,
@@ -30,4 +27,3 @@ function csrfMiddleware() {
30
27
  },
31
28
  ];
32
29
  }
33
- //# sourceMappingURL=csrf.js.map
@@ -9,11 +9,9 @@
9
9
  * @param {Plan} opts.plan CASA Plan
10
10
  * @param {ContextEventHandler[]} opts.events Event handlers
11
11
  * @param {ContextIdGenerator} opts.contextIdGenerator Content ID generator
12
- * @param {boolean} ops.govukRebrand Govuk rebrand feature flag
13
- * @param opts.govukRebrand
14
12
  * @returns {RequestHandler[]} Middleware functions
15
13
  */
16
- export default function dataMiddleware({ plan, events, contextIdGenerator, govukRebrand, }: {
14
+ export default function dataMiddleware({ plan, events, contextIdGenerator }: {
17
15
  plan: Plan;
18
16
  events: ContextEventHandler[];
19
17
  contextIdGenerator: ContextIdGenerator;
@@ -22,3 +20,4 @@ export type RequestHandler = import("express").RequestHandler;
22
20
  export type Plan = import("../casa.js").Plan;
23
21
  export type ContextEventHandler = import("../casa.js").ContextEventHandler;
24
22
  export type ContextIdGenerator = import("../casa.js").ContextIdGenerator;
23
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":"AAwCA;;;;;;;;;;;;GAYG;AACH,6EALG;IAAmB,IAAI,EAAf,IAAI;IACwB,MAAM,EAAlC,mBAAmB,EAAE;IACI,kBAAkB,EAA3C,kBAAkB;CAC1B,GAAU,cAAc,EAAE,CAsG5B;6BApJY,OAAO,SAAS,EAAE,cAAc;mBAKhC,OAAO,YAAY,EAAE,IAAI;kCAKzB,OAAO,YAAY,EAAE,mBAAmB;iCAKxC,OAAO,YAAY,EAAE,kBAAkB"}
@@ -1,12 +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
- exports.default = dataMiddleware;
7
- const JourneyContext_js_1 = __importDefault(require("../lib/JourneyContext.js"));
8
- const utils_js_1 = require("../lib/utils.js");
9
- const waypoint_url_js_1 = __importDefault(require("../lib/waypoint-url.js"));
1
+ import JourneyContext from "../lib/JourneyContext.js";
2
+ import { validateUrlPath } from "../lib/utils.js";
3
+ import waypointUrl from "../lib/waypoint-url.js";
10
4
  /**
11
5
  * @typedef {import("express").RequestHandler} RequestHandler
12
6
  * @access private
@@ -23,12 +17,18 @@ const waypoint_url_js_1 = __importDefault(require("../lib/waypoint-url.js"));
23
17
  * @typedef {import("../casa.js").ContextIdGenerator} ContextIdGenerator
24
18
  * @access private
25
19
  */
20
+ /**
21
+ * Get edit orgin
22
+ *
23
+ * @param {import("express").Request} req Express request
24
+ * @returns {string} Currently set edit origin
25
+ */
26
26
  const editOrigin = (req) => {
27
- if (Object.hasOwn(req.query, "editorigin")) {
28
- return (0, waypoint_url_js_1.default)({ waypoint: req.query.editorigin });
27
+ if (req.query && Object.hasOwn(req.query, "editorigin")) {
28
+ return waypointUrl({ waypoint: req.query.editorigin });
29
29
  }
30
30
  if (req.body && Object.hasOwn(req.body, "editorigin")) {
31
- return (0, waypoint_url_js_1.default)({ waypoint: req.body.editorigin });
31
+ return waypointUrl({ waypoint: req.body.editorigin });
32
32
  }
33
33
  return "";
34
34
  };
@@ -43,11 +43,9 @@ const editOrigin = (req) => {
43
43
  * @param {Plan} opts.plan CASA Plan
44
44
  * @param {ContextEventHandler[]} opts.events Event handlers
45
45
  * @param {ContextIdGenerator} opts.contextIdGenerator Content ID generator
46
- * @param {boolean} ops.govukRebrand Govuk rebrand feature flag
47
- * @param opts.govukRebrand
48
46
  * @returns {RequestHandler[]} Middleware functions
49
47
  */
50
- function dataMiddleware({ plan, events, contextIdGenerator, govukRebrand, }) {
48
+ export default function dataMiddleware({ plan, events, contextIdGenerator }) {
51
49
  return [
52
50
  (req, res, next) => {
53
51
  /* ------------------------------------------------ Request decorations */
@@ -58,25 +56,27 @@ function dataMiddleware({ plan, events, contextIdGenerator, govukRebrand, }) {
58
56
  plan,
59
57
  // Current journey context, loaded from session, specified by
60
58
  // `contextid` request parameter
61
- journeyContext: JourneyContext_js_1.default.extractContextFromRequest(req).addEventListeners(events),
59
+ journeyContext: JourneyContext.extractContextFromRequest(req).addEventListeners(events),
62
60
  // Edit mode
63
- editMode: (Object.hasOwn(req.query, "edit") &&
61
+ editMode: (req.query &&
62
+ Object.hasOwn(req.query, "edit") &&
64
63
  Object.hasOwn(req.query, "editorigin")) ||
65
- (Object.hasOwn(req.body, "edit") &&
64
+ (req.body &&
65
+ Object.hasOwn(req.body, "edit") &&
66
66
  Object.hasOwn(req.body, "editorigin")),
67
67
  editOrigin: editOrigin(req),
68
68
  };
69
69
  // Grab chosen language from session
70
70
  req.casa.journeyContext.nav.language = req.session.language;
71
71
  // Context ID generator
72
- Object.defineProperty(req, JourneyContext_js_1.default.ID_GENERATOR_REQ_KEY, {
72
+ Object.defineProperty(req, JourneyContext.ID_GENERATOR_REQ_KEY, {
73
73
  value: contextIdGenerator,
74
74
  enumerable: false,
75
75
  writable: false,
76
76
  });
77
77
  /* ------------------------------------------------- Template variables */
78
78
  // Capture mount URL that will be used in generating all browser URLs
79
- const mountUrl = (0, utils_js_1.validateUrlPath)(`${req.baseUrl}/`.replace(/\/+/g, "/"));
79
+ const mountUrl = validateUrlPath(`${req.baseUrl}/`.replace(/\/+/g, "/"));
80
80
  // If this CASA app is mounted on a parameterised route, then all of its
81
81
  // static assets (served by `staticRouter`) will, by default, be served
82
82
  // from that dynamic path, for example:
@@ -96,7 +96,7 @@ function dataMiddleware({ plan, events, contextIdGenerator, govukRebrand, }) {
96
96
  // Router, the `baseUrl` is different in each case, so we cannot rely
97
97
  // on it to be consistent. Hence the need for this property, which will
98
98
  // always be the non-parameterised version of the baseUrl.
99
- const staticMountUrl = (0, utils_js_1.validateUrlPath)(`${req.unparameterisedBaseUrl}/`.replace(/\/+/g, "/"));
99
+ const staticMountUrl = validateUrlPath(`${req.unparameterisedBaseUrl}/`.replace(/\/+/g, "/"));
100
100
  // CASA and userland templates
101
101
  res.locals.casa = {
102
102
  mountUrl,
@@ -109,14 +109,13 @@ function dataMiddleware({ plan, events, contextIdGenerator, govukRebrand, }) {
109
109
  // htmlLang = req.language is provided by i18n-http-middleware
110
110
  // assetPath = used for linking to static assets in the govuk-frontend module
111
111
  res.locals.htmlLang = req.language;
112
- const rebrandAssetPath = govukRebrand ? "/rebrand" : "";
113
- res.locals.assetPath = `${staticMountUrl}govuk/assets${rebrandAssetPath}`;
112
+ res.locals.assetPath = `${staticMountUrl}govuk/assets`;
114
113
  // Function for building URLs. This will be curried with the `mountUrl`,
115
114
  // `journeyContext`, `edit` and `editOrigin` for convenience. This means
116
115
  // the template author does not have to be concerned about the current
117
116
  // "state" when generating URLs, but still has the ability to override
118
117
  // these curried defaults if needs be.
119
- res.locals.waypointUrl = (args) => (0, waypoint_url_js_1.default)({
118
+ res.locals.waypointUrl = (args) => waypointUrl({
120
119
  mountUrl,
121
120
  journeyContext: req.casa.journeyContext,
122
121
  edit: req.casa.editMode,
@@ -127,4 +126,3 @@ function dataMiddleware({ plan, events, contextIdGenerator, govukRebrand, }) {
127
126
  },
128
127
  ];
129
128
  }
130
- //# sourceMappingURL=data.js.map
@@ -1,6 +1,8 @@
1
1
  declare function _default({ waypoint, fields }: {
2
2
  waypoint: string;
3
3
  fields?: import("../lib/field").PageField[] | undefined;
4
- }): any[];
4
+ }): RequestHandler[];
5
5
  export default _default;
6
6
  export type PageField = import("../lib/field").PageField;
7
+ export type RequestHandler = import("express").RequestHandler;
8
+ //# sourceMappingURL=gather-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gather-fields.d.ts","sourceRoot":"","sources":["../../src/middleware/gather-fields.js"],"names":[],"mappings":"AA+Be,gDAJZ;IAAoB,QAAQ,EAApB,MAAM;IACY,MAAM;CAChC,GAAU,cAAc,EAAE,CAsC5B;;wBAzDY,OAAO,cAAc,EAAE,SAAS;6BAKhC,OAAO,SAAS,EAAE,cAAc"}
@@ -1,18 +1,18 @@
1
- "use strict";
2
1
  // Gather the field data from `req.body` into the current JourneyContext
3
2
  // - Store in the current session
4
3
  // - Update the user's journey context with the new data
5
4
  // - Remove validation date of JourneyContext so it can re-evaluted
6
- var __importDefault = (this && this.__importDefault) || function (mod) {
7
- return (mod && mod.__esModule) ? mod : { "default": mod };
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const JourneyContext_js_1 = __importDefault(require("../lib/JourneyContext.js"));
11
- const constants_js_1 = require("../lib/constants.js");
5
+ import JourneyContext from "../lib/JourneyContext.js";
6
+ import NullObject from "../lib/NullObject.js";
7
+ import { REQUEST_PHASE_GATHER } from "../lib/constants.js";
12
8
  /**
13
9
  * @typedef {import("../lib/field").PageField} PageField
14
10
  * @access private
15
11
  */
12
+ /**
13
+ * @typedef {import("express").RequestHandler} RequestHandler
14
+ * @access private
15
+ */
16
16
  /**
17
17
  * Gather the field data from `req.body` into the current JourneyContext
18
18
  *
@@ -23,17 +23,17 @@ const constants_js_1 = require("../lib/constants.js");
23
23
  * @param {object} obj Options
24
24
  * @param {string} obj.waypoint Waypoint
25
25
  * @param {PageField[]} [obj.fields] Fields. Default is `[]`
26
- * @returns {Array} Array of middleware
26
+ * @returns {RequestHandler[]} Array of middleware
27
27
  */
28
- exports.default = ({ waypoint, fields = [] }) => [
28
+ export default ({ waypoint, fields = [] }) => [
29
29
  (req, res, next) => {
30
30
  // Store a copy of the journey context before modifying it. This is useful
31
31
  // for any comparison work that may be done in subsequent middleware.
32
- req.casa.archivedJourneyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext, req);
32
+ req.casa.archivedJourneyContext = JourneyContext.fromContext(req.casa.journeyContext, req);
33
33
  // Ignore data for any non-persistent fields
34
34
  // ESLint disabled as `fields`, `i` and `name` are dev-controlled
35
35
  /* eslint-disable security/detect-object-injection */
36
- const persistentBody = Object.create(null);
36
+ const persistentBody = new NullObject();
37
37
  for (let i = 0, l = fields.length; i < l; i++) {
38
38
  if (fields[i].meta.persist &&
39
39
  fields[i].getValue(req.body) !== undefined) {
@@ -46,12 +46,11 @@ exports.default = ({ waypoint, fields = [] }) => [
46
46
  // data is invalid until proven otherwise when the validation step is run.
47
47
  req.casa.journeyContext.setDataForPage(waypoint, persistentBody);
48
48
  req.casa.journeyContext.removeValidationStateForPage(waypoint);
49
- JourneyContext_js_1.default.putContext(req.session, req.casa.journeyContext, {
49
+ JourneyContext.putContext(req.session, req.casa.journeyContext, {
50
50
  userInfo: {
51
- casaRequestPhase: constants_js_1.REQUEST_PHASE_GATHER,
51
+ casaRequestPhase: REQUEST_PHASE_GATHER,
52
52
  },
53
53
  });
54
54
  next();
55
55
  },
56
56
  ];
57
- //# sourceMappingURL=gather-fields.js.map
@@ -13,3 +13,4 @@ export default function i18nMiddleware({ languages, fallbackLng, directories, }:
13
13
  directories?: string[] | undefined;
14
14
  }): RequestHandler[];
15
15
  export type RequestHandler = import("express").RequestHandler;
16
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/middleware/i18n.js"],"names":[],"mappings":"AAyEA;;;;;;;;GAQG;AACH,iFALG;IAAwB,SAAS;IACT,WAAW;IACX,WAAW;CACnC,GAAU,cAAc,EAAE,CA+C5B;6BArHY,OAAO,SAAS,EAAE,cAAc"}
@@ -1,59 +1,55 @@
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
- exports.default = i18nMiddleware;
7
- const i18next_1 = require("i18next");
8
- const i18next_http_middleware_1 = require("i18next-http-middleware");
9
- const node_path_1 = require("node:path");
10
- const node_fs_1 = require("node:fs");
11
- const deepmerge_1 = __importDefault(require("deepmerge"));
12
- const js_yaml_1 = require("js-yaml");
13
- const logger_js_1 = __importDefault(require("../lib/logger.js"));
1
+ import { createInstance } from "i18next";
2
+ import { LanguageDetector, handle } from "i18next-http-middleware";
3
+ import { resolve, basename } from "node:path";
4
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
5
+ import deepmerge from "@fastify/deepmerge";
6
+ import { load as jsYamlLoad } from "js-yaml";
7
+ import logger from "../lib/logger.js";
8
+ import NullObject from "../lib/NullObject.js";
14
9
  /**
15
10
  * @typedef {import("express").RequestHandler} RequestHandler
16
11
  * @access private
17
12
  */
18
- const log = (0, logger_js_1.default)("middleware:i18n");
13
+ const log = logger("middleware:i18n");
14
+ const merge = deepmerge({ onlyDefinedProperties: true });
19
15
  const loadJson = (file) => {
20
16
  // Strip out newlines (this is a legacy feature which we're keeping for
21
17
  // backwards compatibility).
22
18
  /* eslint-disable-next-line security/detect-non-literal-fs-filename */
23
- const json = (0, node_fs_1.readFileSync)(file, "utf8");
19
+ const json = readFileSync(file, "utf8");
24
20
  return JSON.parse(json.replace(/[\r\n]/g, ""));
25
21
  };
26
22
  /* eslint-disable-next-line security/detect-non-literal-fs-filename */
27
- const loadYaml = (file) => (0, js_yaml_1.load)((0, node_fs_1.readFileSync)(file, "utf8"));
23
+ const loadYaml = (file) => jsYamlLoad(readFileSync(file, "utf8"));
28
24
  const extract = (file) => {
29
25
  const ext = /.yaml$/i.test(file) ? ".yaml" : ".json";
30
26
  const data = ext === ".yaml" ? loadYaml(file) : loadJson(file);
31
27
  return {
32
- ns: (0, node_path_1.basename)(file, ext),
28
+ ns: basename(file, ext),
33
29
  data,
34
30
  };
35
31
  };
36
32
  const loadResources = (languages, directories) => {
37
- const store = Object.create(null);
33
+ const store = new NullObject();
38
34
  for (const language of languages) {
39
35
  // ESLint disabled as `store`, `language` and `ns` are all dev-controlled,
40
36
  // and this function is only called once, at boot-time.
41
37
  /* eslint-disable security/detect-object-injection */
42
- store[language] = Object.create(null);
38
+ store[language] = new NullObject();
43
39
  for (const basedir of directories) {
44
- const dir = (0, node_path_1.resolve)(basedir, language);
40
+ const dir = resolve(basedir, language);
45
41
  /* eslint-disable-next-line security/detect-non-literal-fs-filename */
46
- if (!(0, node_fs_1.existsSync)(dir)) {
42
+ if (!existsSync(dir)) {
47
43
  continue;
48
44
  }
49
45
  log.info("Loading %s language from %s ...", language, dir);
50
46
  /* eslint-disable-next-line security/detect-non-literal-fs-filename */
51
- for (const file of (0, node_fs_1.readdirSync)(dir)) {
52
- const { ns, data } = extract((0, node_path_1.resolve)(dir, file));
47
+ for (const file of readdirSync(dir)) {
48
+ const { ns, data } = extract(resolve(dir, file));
53
49
  if (store[language][ns] === undefined) {
54
- store[language][ns] = Object.create(null);
50
+ store[language][ns] = new NullObject();
55
51
  }
56
- store[language][ns] = (0, deepmerge_1.default)(store[language][ns], data);
52
+ store[language][ns] = merge(store[language][ns], data);
57
53
  }
58
54
  }
59
55
  /* eslint-enable security/detect-object-injection */
@@ -69,12 +65,12 @@ const loadResources = (languages, directories) => {
69
65
  * @param {string[]} [opts.directories] Source translations directories
70
66
  * @returns {RequestHandler[]} Middleware functions
71
67
  */
72
- function i18nMiddleware({ languages = ["en", "cy"], fallbackLng = false, directories = [], }) {
68
+ export default function i18nMiddleware({ languages = ["en", "cy"], fallbackLng = false, directories = [], }) {
73
69
  // Load _all_ translations, from all directories into memory.
74
70
  const resources = loadResources(languages, directories);
75
71
  // Configure i18next
76
- const i18nInstance = (0, i18next_1.createInstance)();
77
- i18nInstance.use(i18next_http_middleware_1.LanguageDetector).init({
72
+ const i18nInstance = createInstance();
73
+ i18nInstance.use(LanguageDetector).init({
78
74
  initAsync: false, // because we need synchronous loading
79
75
  supportedLngs: languages,
80
76
  fallbackLng,
@@ -98,12 +94,11 @@ function i18nMiddleware({ languages = ["en", "cy"], fallbackLng = false, directo
98
94
  if (!req.session.language) {
99
95
  req.session.language = languages[0];
100
96
  }
101
- if (req?.query.lang && languages.includes(req.query.lang)) {
97
+ if (req.query?.lang && languages.includes(req.query.lang)) {
102
98
  req.session.language = String(req.query.lang);
103
99
  }
104
100
  next();
105
101
  },
106
- (0, i18next_http_middleware_1.handle)(i18nInstance),
102
+ handle(i18nInstance),
107
103
  ];
108
104
  }
109
- //# sourceMappingURL=i18n.js.map
@@ -1,3 +1,5 @@
1
- /** @returns {RequestHandler[]} Middleware functions */
2
- export default function postMiddleware(): RequestHandler[];
1
+ /** @returns {[RequestHandler, ErrorRequestHandler]} Middleware functions */
2
+ export default function postMiddleware(): [RequestHandler, ErrorRequestHandler];
3
3
  export type RequestHandler = import("express").RequestHandler;
4
+ export type ErrorRequestHandler = import("express").ErrorRequestHandler;
5
+ //# sourceMappingURL=post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/middleware/post.js"],"names":[],"mappings":"AAYA,4EAA4E;AAC5E,0CADc,CAAC,cAAc,EAAE,mBAAmB,CAAC,CA4ElD;6BApFY,OAAO,SAAS,EAAE,cAAc;kCAEhC,OAAO,SAAS,EAAE,mBAAmB"}
@@ -1,18 +1,14 @@
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
- exports.default = postMiddleware;
7
1
  // 2 middleware: one as a fallback 404 handler, one to handle thrown errors
8
- const logger_js_1 = __importDefault(require("../lib/logger.js"));
2
+ import logger from "../lib/logger.js";
9
3
  /**
10
4
  * @typedef {import("express").RequestHandler} RequestHandler
5
+ *
6
+ * @typedef {import("express").ErrorRequestHandler} ErrorRequestHandler
11
7
  * @access private
12
8
  */
13
- const log = (0, logger_js_1.default)("middleware:post");
14
- /** @returns {RequestHandler[]} Middleware functions */
15
- function postMiddleware() {
9
+ const log = logger("middleware:post");
10
+ /** @returns {[RequestHandler, ErrorRequestHandler]} Middleware functions */
11
+ export default function postMiddleware() {
16
12
  return [
17
13
  (req, res) => {
18
14
  res.status(404).render("casa/errors/404.njk");
@@ -74,4 +70,3 @@ function postMiddleware() {
74
70
  },
75
71
  ];
76
72
  }
77
- //# sourceMappingURL=post.js.map
@@ -1,5 +1,6 @@
1
1
  declare function _default({ helmetConfigurator }?: {
2
2
  helmetConfigurator: HelmetConfigurator;
3
- }): Function[];
3
+ }): import("express").RequestHandler[];
4
4
  export default _default;
5
5
  export type HelmetConfigurator = import("../casa").HelmetConfigurator;
6
+ //# sourceMappingURL=pre.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre.d.ts","sourceRoot":"","sources":["../../src/middleware/pre.js"],"names":[],"mappings":"AAqCe,mDAJZ;IAAiC,kBAAkB,EAA3C,kBAAkB;CAE1B,GAAU,OAAO,SAAS,EAAE,cAAc,EAAE,CA4E9C;;iCA3GY,OAAO,SAAS,EAAE,kBAAkB"}
@@ -1,10 +1,5 @@
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 node_crypto_1 = require("node:crypto");
7
- const helmet_1 = __importDefault(require("helmet"));
1
+ import { randomBytes } from "node:crypto";
2
+ import helmet from "helmet";
8
3
  /**
9
4
  * @typedef {import("../casa").HelmetConfigurator} HelmetConfigurator
10
5
  * @access private
@@ -34,9 +29,9 @@ function casaCspNonce(req, res) {
34
29
  * @param {object} opts Options
35
30
  * @param {HelmetConfigurator} opts.helmetConfigurator Function to customise
36
31
  * Helmet configuration
37
- * @returns {Function[]} List of middleware
32
+ * @returns {import("express").RequestHandler[]} List of middleware
38
33
  */
39
- exports.default = ({ helmetConfigurator = (config) => config } = {}) => [
34
+ export default ({ helmetConfigurator = (config) => config } = {}) => [
40
35
  // Only allow certain request methods
41
36
  (req, res, next) => {
42
37
  if (req.method !== "GET" && req.method !== "POST") {
@@ -61,11 +56,11 @@ exports.default = ({ helmetConfigurator = (config) => config } = {}) => [
61
56
  // Generate nonces ready for use in Content-Security-Policy header and
62
57
  // govuk-frontend template. This same none can be used wherever required.
63
58
  (req, res, next) => {
64
- res.locals.cspNonce = (0, node_crypto_1.randomBytes)(16).toString("hex");
59
+ res.locals.cspNonce = randomBytes(16).toString("hex");
65
60
  next();
66
61
  },
67
62
  // Helmet suite of headers
68
- (0, helmet_1.default)(helmetConfigurator({
63
+ helmet(helmetConfigurator({
69
64
  // Allows GA which is typically used, and a known inline script nonce
70
65
  contentSecurityPolicy: {
71
66
  useDefaults: true,
@@ -104,4 +99,3 @@ exports.default = ({ helmetConfigurator = (config) => config } = {}) => [
104
99
  // referrerPolicy: 'no-referrer, same-origin',
105
100
  })),
106
101
  ];
107
- //# sourceMappingURL=pre.js.map
@@ -1,5 +1,7 @@
1
1
  declare function _default({ waypoint, plan }: {
2
- waypoint: any;
3
- plan: any;
4
- }): ((req: any, res: any, next: any) => void)[];
2
+ waypoint: string;
3
+ plan: Plan;
4
+ }): import("express").RequestHandler[];
5
5
  export default _default;
6
+ import Plan from "../lib/Plan.js";
7
+ //# sourceMappingURL=progress-journey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-journey.d.ts","sourceRoot":"","sources":["../../src/middleware/progress-journey.js"],"names":[],"mappings":"AAmCe,8CAJZ;IAAqB,QAAQ,EAArB,MAAM;IACK,IAAI,EAAf,IAAI;CACZ,GAAU,OAAO,SAAS,EAAE,cAAc,EAAE,CAoF9C;;iBAjHgB,gBAAgB"}
@@ -1,21 +1,16 @@
1
- "use strict";
2
1
  // Determine where to take the user next
3
2
  // We assume that the waypoint has been validated prior to reaching this
4
3
  // middleware.
5
- var __importDefault = (this && this.__importDefault) || function (mod) {
6
- return (mod && mod.__esModule) ? mod : { "default": mod };
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- const Plan_js_1 = __importDefault(require("../lib/Plan.js"));
10
- const JourneyContext_js_1 = __importDefault(require("../lib/JourneyContext.js"));
11
- const waypoint_url_js_1 = __importDefault(require("../lib/waypoint-url.js"));
12
- const logger_js_1 = __importDefault(require("../lib/logger.js"));
13
- const constants_js_1 = require("../lib/constants.js");
14
- const log = (0, logger_js_1.default)("middleware:progress-journey");
4
+ import Plan from "../lib/Plan.js";
5
+ import JourneyContext from "../lib/JourneyContext.js";
6
+ import waypointUrl from "../lib/waypoint-url.js";
7
+ import logger from "../lib/logger.js";
8
+ import { REQUEST_PHASE_REDIRECT } from "../lib/constants.js";
9
+ const log = logger("middleware:progress-journey");
15
10
  const saveAndRedirect = (session, journeyContext, url, res, next) => {
16
- JourneyContext_js_1.default.putContext(session, journeyContext, {
11
+ JourneyContext.putContext(session, journeyContext, {
17
12
  userInfo: {
18
- casaRequestPhase: constants_js_1.REQUEST_PHASE_REDIRECT,
13
+ casaRequestPhase: REQUEST_PHASE_REDIRECT,
19
14
  },
20
15
  });
21
16
  session.save((err) => {
@@ -25,7 +20,15 @@ const saveAndRedirect = (session, journeyContext, url, res, next) => {
25
20
  res.redirect(302, url);
26
21
  });
27
22
  };
28
- exports.default = ({ waypoint, plan }) => [
23
+ /**
24
+ * Get "progress journey" middleware for a given waypoint
25
+ *
26
+ * @param {object} opts Options
27
+ * @param {string} opts.waypoint Waypoint
28
+ * @param {Plan} opts.plan CASA Plan
29
+ * @returns {import("express").RequestHandler[]} Middleware functions
30
+ */
31
+ export default ({ waypoint, plan }) => [
29
32
  (req, res, next) => {
30
33
  // Determine the next available waypoint after the current one
31
34
  const traversed = plan.traverse(req.casa.journeyContext);
@@ -51,7 +54,7 @@ exports.default = ({ waypoint, plan }) => [
51
54
  const url = new URL(req.casa.editOrigin, "https://placeholder.test/");
52
55
  url.searchParams.append("edit", "true");
53
56
  url.searchParams.append("editorigin", req.casa.editOrigin);
54
- const redirectUrl = (0, waypoint_url_js_1.default)({ waypoint: url.pathname }) + url.search.toString();
57
+ const redirectUrl = waypointUrl({ waypoint: url.pathname }) + url.search.toString();
55
58
  log.debug(`Edit mode detected; redirecting to ${redirectUrl}`);
56
59
  return saveAndRedirect(req.session, req.casa.journeyContext, redirectUrl, res, next);
57
60
  }
@@ -65,12 +68,12 @@ exports.default = ({ waypoint, plan }) => [
65
68
  // setRoute('a', 'b');
66
69
  // setRoute('b', 'url:///otherapp/')
67
70
  // setRoute('url:////otherapp/', 'c', (r, c) => checkIfOtherAppIsFinished())
68
- if (Plan_js_1.default.isExitNode(nextWaypoint)) {
71
+ if (Plan.isExitNode(nextWaypoint)) {
69
72
  log.trace(`Next waypoint is an exit node; clearing validation state on ${nextWaypoint}`);
70
73
  req.casa.journeyContext.clearValidationErrorsForPage(nextWaypoint);
71
74
  }
72
75
  // Construct the next url
73
- const nextUrl = (0, waypoint_url_js_1.default)({
76
+ const nextUrl = waypointUrl({
74
77
  waypoint: nextWaypoint,
75
78
  mountUrl: `${req.baseUrl}/`,
76
79
  journeyContext: req.casa.journeyContext,
@@ -82,4 +85,3 @@ exports.default = ({ waypoint, plan }) => [
82
85
  return saveAndRedirect(req.session, req.casa.journeyContext, nextUrl, res, next);
83
86
  },
84
87
  ];
85
- //# sourceMappingURL=progress-journey.js.map
@@ -1,5 +1,7 @@
1
1
  declare function _default({ waypoint, fields }: {
2
- waypoint: any;
3
- fields?: never[] | undefined;
4
- }): ((req: any, res: any, next: any) => void)[];
2
+ waypoint: string;
3
+ fields: PageField[];
4
+ }): import("express").RequestHandler[];
5
5
  export default _default;
6
+ export type PageField = import("../casa").PageField;
7
+ //# sourceMappingURL=sanitise-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitise-fields.d.ts","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":"AAgBe,gDAJZ;IAAqB,QAAQ,EAArB,MAAM;IACY,MAAM,EAAxB,SAAS,EAAE;CACnB,GAAU,OAAO,SAAS,EAAE,cAAc,EAAE,CA2E9C;;wBAGY,OAAO,SAAS,EAAE,SAAS"}