@dwp/govuk-casa 8.16.2 → 8.16.4

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 (189) hide show
  1. package/dist/assets/css/casa-ie8.css +1 -1
  2. package/dist/assets/css/casa.css +1 -1
  3. package/dist/casa.d.ts +13 -13
  4. package/dist/casa.js +17 -7
  5. package/dist/casa.js.map +1 -1
  6. package/dist/lib/CasaTemplateLoader.d.ts +1 -1
  7. package/dist/lib/CasaTemplateLoader.js +13 -14
  8. package/dist/lib/CasaTemplateLoader.js.map +1 -1
  9. package/dist/lib/JourneyContext.d.ts +10 -4
  10. package/dist/lib/JourneyContext.js +57 -47
  11. package/dist/lib/JourneyContext.js.map +1 -1
  12. package/dist/lib/MutableRouter.d.ts +1 -1
  13. package/dist/lib/MutableRouter.js +22 -23
  14. package/dist/lib/MutableRouter.js.map +1 -1
  15. package/dist/lib/Plan.d.ts +5 -5
  16. package/dist/lib/Plan.js +49 -36
  17. package/dist/lib/Plan.js.map +1 -1
  18. package/dist/lib/ValidationError.d.ts +1 -1
  19. package/dist/lib/ValidationError.js +9 -9
  20. package/dist/lib/ValidationError.js.map +1 -1
  21. package/dist/lib/ValidatorFactory.js +4 -7
  22. package/dist/lib/ValidatorFactory.js.map +1 -1
  23. package/dist/lib/configuration-ingestor.d.ts +75 -14
  24. package/dist/lib/configuration-ingestor.js +156 -64
  25. package/dist/lib/configuration-ingestor.js.map +1 -1
  26. package/dist/lib/configure.js +11 -10
  27. package/dist/lib/configure.js.map +1 -1
  28. package/dist/lib/constants.js +8 -8
  29. package/dist/lib/context-id-generators.d.ts +1 -1
  30. package/dist/lib/context-id-generators.js +7 -4
  31. package/dist/lib/context-id-generators.js.map +1 -1
  32. package/dist/lib/end-session.js +2 -2
  33. package/dist/lib/field.d.ts +6 -6
  34. package/dist/lib/field.js +15 -21
  35. package/dist/lib/field.js.map +1 -1
  36. package/dist/lib/index.d.ts +13 -13
  37. package/dist/lib/index.js +17 -7
  38. package/dist/lib/index.js.map +1 -1
  39. package/dist/lib/logger.js +7 -7
  40. package/dist/lib/logger.js.map +1 -1
  41. package/dist/lib/mount.js +3 -3
  42. package/dist/lib/mount.js.map +1 -1
  43. package/dist/lib/nunjucks-filters.d.ts +5 -1
  44. package/dist/lib/nunjucks-filters.js +37 -23
  45. package/dist/lib/nunjucks-filters.js.map +1 -1
  46. package/dist/lib/nunjucks.d.ts +2 -2
  47. package/dist/lib/nunjucks.js +6 -7
  48. package/dist/lib/nunjucks.js.map +1 -1
  49. package/dist/lib/utils.js +52 -42
  50. package/dist/lib/utils.js.map +1 -1
  51. package/dist/lib/validators/dateObject.d.ts +3 -3
  52. package/dist/lib/validators/dateObject.js +44 -37
  53. package/dist/lib/validators/dateObject.js.map +1 -1
  54. package/dist/lib/validators/email.d.ts +2 -2
  55. package/dist/lib/validators/email.js +4 -5
  56. package/dist/lib/validators/email.js.map +1 -1
  57. package/dist/lib/validators/inArray.d.ts +2 -2
  58. package/dist/lib/validators/inArray.js +5 -6
  59. package/dist/lib/validators/inArray.js.map +1 -1
  60. package/dist/lib/validators/index.d.ts +10 -10
  61. package/dist/lib/validators/index.js.map +1 -1
  62. package/dist/lib/validators/nino.d.ts +2 -2
  63. package/dist/lib/validators/nino.js +10 -7
  64. package/dist/lib/validators/nino.js.map +1 -1
  65. package/dist/lib/validators/postalAddressObject.d.ts +2 -2
  66. package/dist/lib/validators/postalAddressObject.js +52 -39
  67. package/dist/lib/validators/postalAddressObject.js.map +1 -1
  68. package/dist/lib/validators/range.d.ts +2 -2
  69. package/dist/lib/validators/range.js +6 -7
  70. package/dist/lib/validators/range.js.map +1 -1
  71. package/dist/lib/validators/regex.d.ts +2 -2
  72. package/dist/lib/validators/regex.js +4 -5
  73. package/dist/lib/validators/regex.js.map +1 -1
  74. package/dist/lib/validators/required.d.ts +2 -2
  75. package/dist/lib/validators/required.js +6 -9
  76. package/dist/lib/validators/required.js.map +1 -1
  77. package/dist/lib/validators/strlen.d.ts +2 -2
  78. package/dist/lib/validators/strlen.js +8 -9
  79. package/dist/lib/validators/strlen.js.map +1 -1
  80. package/dist/lib/validators/wordCount.d.ts +2 -2
  81. package/dist/lib/validators/wordCount.js +10 -9
  82. package/dist/lib/validators/wordCount.js.map +1 -1
  83. package/dist/lib/waypoint-url.d.ts +4 -4
  84. package/dist/lib/waypoint-url.js +23 -23
  85. package/dist/lib/waypoint-url.js.map +1 -1
  86. package/dist/middleware/body-parser.d.ts +27 -5
  87. package/dist/middleware/body-parser.js +37 -6
  88. package/dist/middleware/body-parser.js.map +1 -1
  89. package/dist/middleware/csrf.d.ts +3 -0
  90. package/dist/middleware/csrf.js +3 -0
  91. package/dist/middleware/csrf.js.map +1 -1
  92. package/dist/middleware/data.d.ts +22 -5
  93. package/dist/middleware/data.js +37 -7
  94. package/dist/middleware/data.js.map +1 -1
  95. package/dist/middleware/gather-fields.d.ts +1 -1
  96. package/dist/middleware/gather-fields.js +4 -3
  97. package/dist/middleware/gather-fields.js.map +1 -1
  98. package/dist/middleware/i18n.d.ts +11 -2
  99. package/dist/middleware/i18n.js +26 -17
  100. package/dist/middleware/i18n.js.map +1 -1
  101. package/dist/middleware/post.d.ts +3 -1
  102. package/dist/middleware/post.js +35 -18
  103. package/dist/middleware/post.js.map +1 -1
  104. package/dist/middleware/pre.d.ts +1 -1
  105. package/dist/middleware/pre.js +43 -21
  106. package/dist/middleware/pre.js.map +1 -1
  107. package/dist/middleware/progress-journey.d.ts +1 -1
  108. package/dist/middleware/progress-journey.js +5 -5
  109. package/dist/middleware/progress-journey.js.map +1 -1
  110. package/dist/middleware/sanitise-fields.d.ts +2 -2
  111. package/dist/middleware/sanitise-fields.js +13 -11
  112. package/dist/middleware/sanitise-fields.js.map +1 -1
  113. package/dist/middleware/serve-first-waypoint.d.ts +1 -1
  114. package/dist/middleware/serve-first-waypoint.js +6 -4
  115. package/dist/middleware/serve-first-waypoint.js.map +1 -1
  116. package/dist/middleware/session.d.ts +27 -8
  117. package/dist/middleware/session.js +53 -25
  118. package/dist/middleware/session.js.map +1 -1
  119. package/dist/middleware/skip-waypoint.d.ts +1 -1
  120. package/dist/middleware/skip-waypoint.js +3 -3
  121. package/dist/middleware/skip-waypoint.js.map +1 -1
  122. package/dist/middleware/steer-journey.d.ts +1 -1
  123. package/dist/middleware/steer-journey.js +15 -13
  124. package/dist/middleware/steer-journey.js.map +1 -1
  125. package/dist/middleware/strip-proxy-path.d.ts +1 -1
  126. package/dist/middleware/strip-proxy-path.js +3 -3
  127. package/dist/middleware/strip-proxy-path.js.map +1 -1
  128. package/dist/middleware/validate-fields.d.ts +2 -2
  129. package/dist/middleware/validate-fields.js +2 -5
  130. package/dist/middleware/validate-fields.js.map +1 -1
  131. package/dist/routes/ancillary.d.ts +2 -2
  132. package/dist/routes/ancillary.js +3 -3
  133. package/dist/routes/ancillary.js.map +1 -1
  134. package/dist/routes/journey.d.ts +1 -1
  135. package/dist/routes/journey.js +85 -31
  136. package/dist/routes/journey.js.map +1 -1
  137. package/dist/routes/static.d.ts +13 -4
  138. package/dist/routes/static.js +21 -19
  139. package/dist/routes/static.js.map +1 -1
  140. package/package.json +33 -36
  141. package/src/casa.js +13 -13
  142. package/src/lib/CasaTemplateLoader.js +21 -17
  143. package/src/lib/JourneyContext.js +118 -79
  144. package/src/lib/MutableRouter.js +30 -26
  145. package/src/lib/Plan.js +109 -62
  146. package/src/lib/ValidationError.js +13 -10
  147. package/src/lib/ValidatorFactory.js +7 -8
  148. package/src/lib/configuration-ingestor.js +200 -74
  149. package/src/lib/configure.js +31 -30
  150. package/src/lib/constants.js +8 -8
  151. package/src/lib/context-id-generators.js +39 -38
  152. package/src/lib/end-session.js +3 -3
  153. package/src/lib/field.js +48 -32
  154. package/src/lib/index.js +12 -12
  155. package/src/lib/logger.js +9 -9
  156. package/src/lib/mount.js +68 -73
  157. package/src/lib/nunjucks-filters.js +57 -44
  158. package/src/lib/nunjucks.js +20 -16
  159. package/src/lib/utils.js +69 -44
  160. package/src/lib/validators/dateObject.js +57 -48
  161. package/src/lib/validators/email.js +8 -9
  162. package/src/lib/validators/inArray.js +8 -9
  163. package/src/lib/validators/index.js +11 -11
  164. package/src/lib/validators/nino.js +25 -12
  165. package/src/lib/validators/postalAddressObject.js +73 -55
  166. package/src/lib/validators/range.js +9 -11
  167. package/src/lib/validators/regex.js +7 -8
  168. package/src/lib/validators/required.js +13 -14
  169. package/src/lib/validators/strlen.js +11 -12
  170. package/src/lib/validators/wordCount.js +17 -12
  171. package/src/lib/waypoint-url.js +48 -33
  172. package/src/middleware/body-parser.js +44 -10
  173. package/src/middleware/csrf.js +4 -1
  174. package/src/middleware/data.js +62 -25
  175. package/src/middleware/gather-fields.js +8 -8
  176. package/src/middleware/i18n.js +49 -39
  177. package/src/middleware/post.js +47 -21
  178. package/src/middleware/pre.js +59 -35
  179. package/src/middleware/progress-journey.js +32 -18
  180. package/src/middleware/sanitise-fields.js +43 -20
  181. package/src/middleware/serve-first-waypoint.js +12 -10
  182. package/src/middleware/session.js +97 -65
  183. package/src/middleware/skip-waypoint.js +7 -9
  184. package/src/middleware/steer-journey.js +39 -27
  185. package/src/middleware/strip-proxy-path.js +8 -7
  186. package/src/middleware/validate-fields.js +5 -12
  187. package/src/routes/ancillary.js +4 -6
  188. package/src/routes/journey.js +158 -78
  189. package/src/routes/static.js +64 -26
@@ -1,12 +1,12 @@
1
- import ExpressJS from 'express';
2
- import { readFileSync } from 'fs';
3
- import { URL } from 'url';
4
- import { resolve } from 'path';
5
- import { createRequire } from 'module';
1
+ import ExpressJS from "express";
2
+ import { readFileSync } from "fs";
3
+ import { URL } from "url";
4
+ import { resolve } from "path";
5
+ import { createRequire } from "module";
6
6
 
7
- import dirname from './dirname.cjs';
8
- import MutableRouter from '../lib/MutableRouter.js';
9
- import { validateUrlPath } from '../lib/utils.js';
7
+ import dirname from "./dirname.cjs";
8
+ import MutableRouter from "../lib/MutableRouter.js";
9
+ import { validateUrlPath } from "../lib/utils.js";
10
10
 
11
11
  const { static: ExpressStatic } = ExpressJS; // CommonJS
12
12
 
@@ -14,7 +14,10 @@ const oneDay = 86400000;
14
14
 
15
15
  /**
16
16
  * @typedef {object} StaticOptions Options to configure static router
17
- * @property {number} [maxAge=3600000] Cache TTL for all assets (optional, default 1 hour)
17
+ * @property {number} [maxAge=3600000] Cache TTL for all assets. Default is
18
+ * `3600000`
19
+ * @property {string} [cacheControl=private] Cache control headers. Default is
20
+ * `private`
18
21
  */
19
22
 
20
23
  /**
@@ -26,22 +29,25 @@ const oneDay = 86400000;
26
29
  */
27
30
  export default function staticRouter({
28
31
  maxAge = 3600000,
32
+ cacheControl = "private",
29
33
  } = {}) {
30
34
  const router = new MutableRouter();
31
35
 
32
36
  const notFoundHandler = (req, res, next) => {
33
37
  // Fall through to a general purpose error handler
34
- next(new Error('404'));
38
+ next(new Error("404"));
35
39
  };
36
40
 
37
41
  const setHeaders = (req, res, next) => {
38
- res.set('cache-control', 'public');
39
- res.set('pragma', 'cache');
40
- res.set('expires', new Date(Date.now() + oneDay).toUTCString());
41
- const { pathname } = new URL(req?.originalUrl ?? '', 'https://placeholder.test/');
42
- if (pathname.substr(-4) === '.css') {
42
+ res.set("cache-control", cacheControl);
43
+ res.set("expires", new Date(Date.now() + maxAge).toUTCString());
44
+ const { pathname } = new URL(
45
+ req?.originalUrl ?? "",
46
+ "https://placeholder.test/",
47
+ );
48
+ if (pathname.substr(-4) === ".css") {
43
49
  // Just needed for our in-memory CSS assets
44
- res.set('content-type', 'text/css');
50
+ res.set("content-type", "text/css");
45
51
  }
46
52
  next();
47
53
  };
@@ -59,22 +65,54 @@ export default function staticRouter({
59
65
  // must be replaced with the dynamic `mountUrl` to ensure govuk-frontend
60
66
  // assets are served from the correct location.
61
67
  /* eslint-disable security/detect-non-literal-fs-filename */
62
- const casaCss = readFileSync(resolve(dirname, '../../dist/assets/css/casa.css'), { encoding: 'utf8' });
63
- const casaCssIe8 = readFileSync(resolve(dirname, '../../dist/assets/css/casa-ie8.css'), { encoding: 'utf8' });
68
+ const casaCss = readFileSync(
69
+ resolve(dirname, "../../dist/assets/css/casa.css"),
70
+ { encoding: "utf8" },
71
+ );
72
+ const casaCssIe8 = readFileSync(
73
+ resolve(dirname, "../../dist/assets/css/casa-ie8.css"),
74
+ { encoding: "utf8" },
75
+ );
64
76
  /* eslint-enable security/detect-non-literal-fs-filename */
65
77
 
66
78
  // The static middleware will only server GET/HEAD requests, so we can mount
67
79
  // the middleware using `use()` rather than resorting to `get()`
68
- const govukFrontendDirectory = resolve(createRequire(dirname).resolve('govuk-frontend'), '../../');
80
+ const govukFrontendDirectory = resolve(
81
+ createRequire(dirname).resolve("govuk-frontend"),
82
+ "../../",
83
+ );
69
84
 
70
- router.use('/govuk/assets/js/all.js', ExpressStatic(`${govukFrontendDirectory}/govuk/all.js`, staticConfig));
71
- router.use('/govuk/assets/js/all.js.map', ExpressStatic(`${govukFrontendDirectory}/govuk/all.js.map`, staticConfig));
72
- router.use('/govuk/assets', ExpressStatic(`${govukFrontendDirectory}/govuk/assets`, staticConfig));
73
- router.use('/govuk/assets', notFoundHandler);
85
+ router.use(
86
+ "/govuk/assets/js/all.js",
87
+ ExpressStatic(`${govukFrontendDirectory}/govuk/all.js`, staticConfig),
88
+ );
89
+ router.use(
90
+ "/govuk/assets/js/all.js.map",
91
+ ExpressStatic(`${govukFrontendDirectory}/govuk/all.js.map`, staticConfig),
92
+ );
93
+ router.use(
94
+ "/govuk/assets",
95
+ ExpressStatic(`${govukFrontendDirectory}/govuk/assets`, staticConfig),
96
+ );
97
+ router.use("/govuk/assets", notFoundHandler);
74
98
 
75
- router.get('/casa/assets/css/casa.css', setHeaders, (req, res) => res.send(casaCss.replace(/~~~CASA_MOUNT_URL~~~/g, validateUrlPath(`${req.baseUrl}/`))));
76
- router.get('/casa/assets/css/casa-ie8.css', setHeaders, (req, res) => res.send(casaCssIe8.replace(/~~~CASA_MOUNT_URL~~~/g, validateUrlPath(`${req.baseUrl}/`))));
77
- router.use('/casa/assets', notFoundHandler);
99
+ router.get("/casa/assets/css/casa.css", setHeaders, (req, res) =>
100
+ res.send(
101
+ casaCss.replace(
102
+ /~~~CASA_MOUNT_URL~~~/g,
103
+ validateUrlPath(`${req.baseUrl}/`),
104
+ ),
105
+ ),
106
+ );
107
+ router.get("/casa/assets/css/casa-ie8.css", setHeaders, (req, res) =>
108
+ res.send(
109
+ casaCssIe8.replace(
110
+ /~~~CASA_MOUNT_URL~~~/g,
111
+ validateUrlPath(`${req.baseUrl}/`),
112
+ ),
113
+ ),
114
+ );
115
+ router.use("/casa/assets", notFoundHandler);
78
116
 
79
117
  return router;
80
118
  }