@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
package/dist/lib/Plan.js CHANGED
@@ -1,12 +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 graphlib_1 = require("@dagrejs/graphlib");
7
- const JourneyContext_js_1 = __importDefault(require("./JourneyContext.js"));
8
- const logger_js_1 = __importDefault(require("./logger.js"));
9
- const log = (0, logger_js_1.default)("lib:plan");
1
+ import { Graph } from "@dagrejs/graphlib";
2
+ import JourneyContext from "./JourneyContext.js";
3
+ import NullObject from "./NullObject.js";
4
+ import logger from "./logger.js";
5
+ const log = logger("lib:plan");
10
6
  /**
11
7
  * @typedef {import("../casa").PlanRoute} PlanRoute
12
8
  * @access private
@@ -124,17 +120,23 @@ const makeRouteObject = (dgraph, edge) => {
124
120
  * @access private
125
121
  */
126
122
  const reExitNodeProtocol = /^[a-z]+:\/\//i;
127
- /**
128
- * For storing private properties for each instance
129
- *
130
- * @access private
131
- * @todo Use property private class properties.
132
- */
133
- const priv = new WeakMap();
134
- /** @memberof module:@dwp/govuk-casa */
135
- class Plan {
123
+ /** @memberof module:"@dwp/govuk-casa" */
124
+ export default class Plan {
125
+ /** @type {graphlib.Graph} - This is our directed, multigraph representation */
126
+ #dgraph = new Graph({
127
+ directed: true,
128
+ multigraph: true,
129
+ compound: false,
130
+ });
136
131
  /** @type {string[]} These Waypoints can be skipped */
137
- #skippableWaypoints;
132
+ #skippableWaypoints = [];
133
+ /** @type {{ next: object; previous: object }} */
134
+ #follows = {
135
+ next: {},
136
+ prev: {},
137
+ };
138
+ /** @type {PlanConstructorOptions} */
139
+ #options;
138
140
  /**
139
141
  * Waypoints using the url:// protocol are known as "exit nodes" as they
140
142
  * indicate an exit point to another Plan.
@@ -151,14 +153,8 @@ class Plan {
151
153
  * @param {PlanConstructorOptions} opts Options
152
154
  */
153
155
  constructor(opts = {}) {
154
- // This is our directed, multigraph representation
155
- const dgraph = new graphlib_1.Graph({
156
- directed: true,
157
- multigraph: true,
158
- compound: false,
159
- });
160
156
  // Gather options
161
- const options = Object.assign(Object.create(null), {
157
+ const options = Object.assign(new NullObject(), {
162
158
  // When true, the validation state of the source node must be `null` (i.e.
163
159
  // no validation errors) before any custom route conditions are evaluated.
164
160
  validateBeforeRouteCondition: true,
@@ -166,15 +162,7 @@ class Plan {
166
162
  arbiter: undefined,
167
163
  }, opts);
168
164
  Object.freeze(options);
169
- priv.set(this, {
170
- dgraph,
171
- follows: {
172
- next: {},
173
- prev: {},
174
- },
175
- options,
176
- });
177
- this.#skippableWaypoints = [];
165
+ this.#options = options;
178
166
  }
179
167
  /**
180
168
  * Retrieve the options set on this Plan.
@@ -182,7 +170,7 @@ class Plan {
182
170
  * @returns {PlanConstructorOptions} Options map
183
171
  */
184
172
  getOptions() {
185
- return priv.get(this).options;
173
+ return this.#options;
186
174
  }
187
175
  /**
188
176
  * Retrieve the list of skippable waypoints.
@@ -217,7 +205,7 @@ class Plan {
217
205
  * @returns {string[]} List of waypoints
218
206
  */
219
207
  getWaypoints() {
220
- return priv.get(this).dgraph.nodes();
208
+ return this.#dgraph.nodes();
221
209
  }
222
210
  /**
223
211
  * Determine if the given waypoint exists in this Plan.
@@ -234,10 +222,9 @@ class Plan {
234
222
  * @returns {PlanRoute[]} Routes
235
223
  */
236
224
  getRoutes() {
237
- const self = priv.get(this);
238
- return self.dgraph
225
+ return this.#dgraph
239
226
  .edges()
240
- .map((edge) => makeRouteObject(self.dgraph, edge));
227
+ .map((edge) => makeRouteObject(this.#dgraph, edge));
241
228
  }
242
229
  /**
243
230
  * Get the condition function for the given parameters.
@@ -248,7 +235,7 @@ class Plan {
248
235
  * @returns {PlanRouteCondition} Route condition function
249
236
  */
250
237
  getRouteCondition(src, tgt, name) {
251
- return priv.get(this).follows[validateRouteName(name)][`${src}/${tgt}`];
238
+ return this.#follows[validateRouteName(name)][`${src}/${tgt}`];
252
239
  }
253
240
  /**
254
241
  * Return all outward routes (out-edges) from the given waypoint, to the
@@ -259,10 +246,9 @@ class Plan {
259
246
  * @returns {PlanRoute[]} Route objects found.
260
247
  */
261
248
  getOutwardRoutes(src, tgt = null) {
262
- const self = priv.get(this);
263
- return self.dgraph
249
+ return this.#dgraph
264
250
  .outEdges(src, tgt)
265
- .map((e) => makeRouteObject(self.dgraph, e));
251
+ .map((e) => makeRouteObject(this.#dgraph, e));
266
252
  }
267
253
  /**
268
254
  * Return all outward routes (out-edges) from the given waypoint, to the
@@ -376,7 +362,6 @@ class Plan {
376
362
  * @throws {Error} If attempting to create a "next" route from an exit node
377
363
  */
378
364
  setNamedRoute(src, tgt, name, follow) {
379
- const self = priv.get(this);
380
365
  // Validate
381
366
  validateWaypointId(src);
382
367
  validateWaypointId(tgt);
@@ -387,14 +372,14 @@ class Plan {
387
372
  // Get routing function name to label edge
388
373
  const conditionName = follow && follow.name;
389
374
  // Warn if we're overwriting an existing edge on the same name
390
- if (self.dgraph.hasEdge(src, tgt, name)) {
375
+ if (this.#dgraph.hasEdge(src, tgt, name)) {
391
376
  log.warn("Setting a route that already exists (%s, %s, %s). Will be overridden", src, tgt, name);
392
377
  }
393
- self.dgraph.setEdge(src, tgt, { conditionName }, name);
378
+ this.#dgraph.setEdge(src, tgt, { conditionName }, name);
394
379
  // Determine which follow function to use
395
380
  let followFunc;
396
381
  if (follow) {
397
- if (!self.options.validateBeforeRouteCondition) {
382
+ if (!this.#options.validateBeforeRouteCondition) {
398
383
  followFunc = follow;
399
384
  }
400
385
  else if (name === "next") {
@@ -418,7 +403,7 @@ class Plan {
418
403
  }
419
404
  // ESLint disabled as `name` has been validated further above
420
405
  /* eslint-disable-next-line security/detect-object-injection */
421
- self.follows[name][`${src}/${tgt}`] = followFunc;
406
+ this.#follows[name][`${src}/${tgt}`] = followFunc;
422
407
  return this;
423
408
  }
424
409
  /**
@@ -471,27 +456,26 @@ class Plan {
471
456
  * @throws {TypeError} When context is not a JourneyContext
472
457
  */
473
458
  traverseRoutes(context, options = {}) {
474
- if (!(context instanceof JourneyContext_js_1.default)) {
459
+ if (!(context instanceof JourneyContext)) {
475
460
  throw new TypeError(`Expected context to be an instance of JourneyContext, got ${typeof context}`);
476
461
  }
477
- const self = priv.get(this);
478
462
  /** @type {PlanTraverseOptions} */
479
- const { startWaypoint = this.getWaypoints()[0], stopCondition = () => false, arbiter = self.options.arbiter, routeName, } = options;
480
- if (!self.dgraph.hasNode(startWaypoint)) {
463
+ const { startWaypoint = this.getWaypoints()[0], stopCondition = () => false, arbiter = this.#options.arbiter, routeName, } = options;
464
+ if (!this.#dgraph.hasNode(startWaypoint)) {
481
465
  throw new ReferenceError(`Plan does not contain waypoint '${startWaypoint}'`);
482
466
  }
483
467
  validateRouteName(routeName);
484
468
  const history = new Map();
485
469
  const traverse = (startWP) => {
486
- let target = self.dgraph.outEdges(startWP).filter((e) => {
470
+ let target = this.#dgraph.outEdges(startWP).filter((e) => {
487
471
  if (e.name !== routeName) {
488
472
  return false;
489
473
  }
490
- const route = makeRouteObject(self.dgraph, e);
474
+ const route = makeRouteObject(this.#dgraph, e);
491
475
  try {
492
476
  // ESLint disabled as `routeName` has been validated further above
493
477
  /* eslint-disable-next-line security/detect-object-injection */
494
- return self.follows[routeName][`${e.v}/${e.w}`](route, context);
478
+ return this.#follows[routeName][`${e.v}/${e.w}`](route, context);
495
479
  }
496
480
  catch (ex) {
497
481
  log.warn('Route follow function threw an exception, "%s" (%s)', ex.message, `${e.v} -> ${e.w}`);
@@ -516,7 +500,7 @@ class Plan {
516
500
  // Convert to routeObject and back to edge object so that only the
517
501
  // routeObject is used in the public API
518
502
  target = arbiter({
519
- targets: target.map((t) => makeRouteObject(self.dgraph, t)),
503
+ targets: target.map((t) => makeRouteObject(this.#dgraph, t)),
520
504
  journeyContext: context,
521
505
  travereOptions: options,
522
506
  });
@@ -532,7 +516,7 @@ class Plan {
532
516
  }
533
517
  }
534
518
  if (target.length === 1) {
535
- const route = makeRouteObject(self.dgraph, target[0]);
519
+ const route = makeRouteObject(this.#dgraph, target[0]);
536
520
  const routeHash = `${route.name}/${route.source}/${route.target}`;
537
521
  if (stopCondition(route)) {
538
522
  return [route];
@@ -553,7 +537,7 @@ class Plan {
553
537
  log.debug("Encountered loop (%s). Stopping traversal.", `${route.source} -> ${route.target}`);
554
538
  }
555
539
  return [
556
- makeRouteObject(self.dgraph, {
540
+ makeRouteObject(this.#dgraph, {
557
541
  v: startWP,
558
542
  w: null,
559
543
  name: routeName,
@@ -570,8 +554,6 @@ class Plan {
570
554
  * @returns {Graph} Graph data structure.
571
555
  */
572
556
  getGraphStructure() {
573
- return priv.get(this).dgraph;
557
+ return this.#dgraph;
574
558
  }
575
559
  }
576
- exports.default = Plan;
577
- //# sourceMappingURL=Plan.js.map
@@ -11,7 +11,7 @@
11
11
  * @access private
12
12
  */
13
13
  /**
14
- * @memberof module:@dwp/govuk-casa
14
+ * @memberof module:"@dwp/govuk-casa"
15
15
  * @class
16
16
  */
17
17
  export default class ValidationError {
@@ -63,3 +63,4 @@ export default class ValidationError {
63
63
  export type ValidateContext = import("../casa").ValidateContext;
64
64
  export type ErrorMessageConfig = import("../casa").ErrorMessageConfig;
65
65
  export type ErrorMessageConfigObject = import("../casa").ErrorMessageConfigObject;
66
+ //# sourceMappingURL=ValidationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../../src/lib/ValidationError.js"],"names":[],"mappings":"AAIA;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AACH;IACE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,uCAPG;QAAiC,QAAQ,EAAjC,kBAAkB;QAEK,WAAW;KAE1C,GAAU,eAAe,CAsC3B;IAED;;;;OAIG;IACH,yBAFW,MAAM,GAAG,wBAAwB,EAsC3C;IAED;;;;;OAKG;IACH,qBAHW,eAAe,GACb,eAAe,CAiC3B;IAzBG,eAAwD;IAgBxD,0BAAiE;IACjE,8BAA0B;IAC1B,iBAAoC;IAItC,8BAA+C;CAIlD;8BA/JY,OAAO,SAAS,EAAE,eAAe;iCAKjC,OAAO,SAAS,EAAE,kBAAkB;uCAKpC,OAAO,SAAS,EAAE,wBAAwB"}
@@ -1,10 +1,4 @@
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 { isPlainObject } = lodash_1.default; // CommonJS
1
+ import isPlainObject from "is-plain-obj";
8
2
  const params = new WeakMap();
9
3
  /**
10
4
  * @typedef {import("../casa").ValidateContext} ValidateContext
@@ -19,10 +13,10 @@ const params = new WeakMap();
19
13
  * @access private
20
14
  */
21
15
  /**
22
- * @memberof module:@dwp/govuk-casa
16
+ * @memberof module:"@dwp/govuk-casa"
23
17
  * @class
24
18
  */
25
- class ValidationError {
19
+ export default class ValidationError {
26
20
  /**
27
21
  * Make a ValidationError instance from a primitive object (or a function that
28
22
  * returns a primitive object) that is specific to the given journey context.
@@ -149,5 +143,3 @@ class ValidationError {
149
143
  return this;
150
144
  }
151
145
  }
152
- exports.default = ValidationError;
153
- //# sourceMappingURL=ValidationError.js.map
@@ -19,11 +19,11 @@
19
19
  * @access private
20
20
  */
21
21
  /**
22
- * @typedef {Object<string, unknown>} ValidatorFactoryOptions
22
+ * @typedef {{ [key: string]: unknown }} ValidatorFactoryOptions
23
23
  * @property {ErrorMessageConfig} errorMsg Error message
24
24
  */
25
25
  /**
26
- * @memberof module:@dwp/govuk-casa
26
+ * @memberof module:"@dwp/govuk-casa"
27
27
  * @class
28
28
  */
29
29
  export default class ValidatorFactory {
@@ -44,9 +44,7 @@ export default class ValidatorFactory {
44
44
  * validator)
45
45
  */
46
46
  constructor(config?: ValidatorFactoryOptions);
47
- config: {
48
- [x: string]: unknown;
49
- };
47
+ config: ValidatorFactoryOptions;
50
48
  /**
51
49
  * Validate the given value.
52
50
  *
@@ -70,5 +68,6 @@ export type ValidationError = import("./index").ValidationError;
70
68
  export type ValidateContext = import("../casa").ValidateContext;
71
69
  export type Validator = import("../casa").Validator;
72
70
  export type ValidatorFactoryOptions = {
73
- [x: string]: unknown;
71
+ [key: string]: unknown;
74
72
  };
73
+ //# sourceMappingURL=ValidatorFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidatorFactory.d.ts","sourceRoot":"","sources":["../../src/lib/ValidatorFactory.js"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AACH;IACE;;;;;;;;OAQG;IACH,qBALW,uBAAuB,GAErB,SAAS,CAmBrB;IAED;;;;;OAKG;IACH,qBAHW,uBAAuB,EAUjC;IADC,gCAAoB;IAMtB;;;;;;;OAOG;IACH,qBALW,GAAG,WACH,eAAe,GACb,eAAe,EAAE,CAK7B;IAED;;;;;OAKG;IACH,qBAHW,GAAG,GACD,GAAG,CAIf;CACF;iCApGY,OAAO,SAAS,EAAE,kBAAkB;6BAKpC,OAAO,SAAS,EAAE,cAAc;8BAKhC,OAAO,SAAS,EAAE,eAAe;8BAKjC,OAAO,SAAS,EAAE,eAAe;wBAKjC,OAAO,SAAS,EAAE,SAAS;sCAK3B;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE"}
@@ -1,10 +1,4 @@
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 { isPlainObject } = lodash_1.default; // CommonJS
1
+ import isPlainObject from "is-plain-obj";
8
2
  /**
9
3
  * @typedef {import("../casa").ErrorMessageConfig} ErrorMessageConfig
10
4
  * @access private
@@ -26,14 +20,14 @@ const { isPlainObject } = lodash_1.default; // CommonJS
26
20
  * @access private
27
21
  */
28
22
  /**
29
- * @typedef {Object<string, unknown>} ValidatorFactoryOptions
23
+ * @typedef {{ [key: string]: unknown }} ValidatorFactoryOptions
30
24
  * @property {ErrorMessageConfig} errorMsg Error message
31
25
  */
32
26
  /**
33
- * @memberof module:@dwp/govuk-casa
27
+ * @memberof module:"@dwp/govuk-casa"
34
28
  * @class
35
29
  */
36
- class ValidatorFactory {
30
+ export default class ValidatorFactory {
37
31
  /**
38
32
  * This is a convenience method that will return a consistently object
39
33
  * structure containing validation and sanitisation methods.
@@ -91,5 +85,3 @@ class ValidatorFactory {
91
85
  return fieldValue;
92
86
  }
93
87
  }
94
- exports.default = ValidatorFactory;
95
- //# sourceMappingURL=ValidatorFactory.js.map
@@ -125,16 +125,6 @@ export function validateSessionStore(store: Function): Function;
125
125
  * @access private
126
126
  */
127
127
  export function validateSessionCookiePath(cookiePath: string, defaultPath?: string): string;
128
- /**
129
- * Validates and sanitises sessions cookie "sameSite" flag. One of: true
130
- * (Strict) false (will not set the flag at all) Strict Lax None
131
- *
132
- * @param {any} cookieSameSite Session cookie "sameSite" flag
133
- * @param {any} defaultFlag Default path if none specified
134
- * @returns {boolean} Cookie path
135
- * @throws {TypeError} When invalid arguments are provided
136
- * @access private
137
- */
138
128
  /**
139
129
  * Validates errorVisibility.
140
130
  *
@@ -146,11 +136,16 @@ export function validateSessionCookiePath(cookiePath: string, defaultPath?: stri
146
136
  */
147
137
  export function validateErrorVisibility(errorVisibility?: string): symbol | Function;
148
138
  /**
149
- * @param {boolean | string} cookieSameSite Cookie SameSite value
150
- * @param {boolean | string} defaultFlag Default value
139
+ * Validates and sanitises sessions cookie "sameSite" flag. One of: true
140
+ * (Strict) false (will not set the flag at all) Strict Lax None
141
+ *
142
+ * @param {CookieSameSite} cookieSameSite Session cookie "sameSite" flag
143
+ * @param {CookieSameSite} defaultFlag Default value
151
144
  * @returns {boolean | string} Validated value
145
+ * @throws {TypeError} When invalid arguments are provided
146
+ * @access private
152
147
  */
153
- export function validateSessionCookieSameSite(cookieSameSite: boolean | string, defaultFlag: boolean | string): boolean | string;
148
+ export function validateSessionCookieSameSite(cookieSameSite: CookieSameSite, defaultFlag: CookieSameSite): boolean | string;
154
149
  /**
155
150
  * @param {PageHook[]} hooks Page hook functions
156
151
  * @returns {PageHook[]} Validated page hooks
@@ -217,15 +212,6 @@ export function validateFormMaxBytes(value: number, defaultValue?: number): numb
217
212
  * @throws {TypeError} If not a function
218
213
  */
219
214
  export function validateContextIdGenerator(generator: ContextIdGenerator): ContextIdGenerator;
220
- /**
221
- * Validates the govuk rebrand feature flag.
222
- *
223
- * @param {boolean} [govukRebrand] Govuk rebrand feature flag
224
- * @returns {boolean | true} Boolean.
225
- * @throws {TypeError} For invalid feagure flag is set.
226
- * @access private
227
- */
228
- export function validateGovukRebrand(govukRebrand?: boolean): boolean | true;
229
215
  /**
230
216
  * Ingest, validate, sanitise and manipulate configuration parameters.
231
217
  *
@@ -243,5 +229,7 @@ export type GlobalHook = import("../casa").GlobalHook;
243
229
  export type IPlugin = import("../casa").IPlugin;
244
230
  export type ContextEventHandler = import("../casa").ContextEventHandler;
245
231
  export type ContextIdGenerator = import("../casa").ContextIdGenerator;
232
+ export type CookieSameSite = true | false | "Lax" | "None" | "Strict" | "auto";
246
233
  import { PageField } from "./field.js";
247
234
  import Plan from "./Plan.js";
235
+ //# sourceMappingURL=configuration-ingestor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-ingestor.d.ts","sourceRoot":"","sources":["../../src/lib/configuration-ingestor.js"],"names":[],"mappings":"AAkEA;;;;;;;;GAQG;AACH,0CANW,MAAM,kBAEJ,MAAM,CASlB;AAED;;;;;;;;GAQG;AACH,sDAeC;AAED;;;;;;;;GAQG;AACH,4DAeC;AAED;;;;;;;;;GASG;AACH,mDAPW,MAAM,oBAEJ,MAAM,CAqBlB;AAED;;;;;;;GAOG;AACH,2CALW,MAAM,GACJ,MAAM,GAAG,SAAS,CAY9B;AAED;;;;;;;;GAQG;AACH,gDANW,MAAM,kBAEJ,MAAM,CAclB;AAED;;;;;;;;GAQG;AACH,mDAeC;AAED;;;;;;;;GAQG;AACH,8CANW,MAAM,GACJ,MAAM,CAYlB;AAED;;;;;;;;GAQG;AACH,yCANW,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;;GAQG;AACH,2CANW,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;;GAQG;AACH,+CANW,OAAO,GACL,MAAM,CAelB;AAED;;;;;;GAMG;AACH,gEAQC;AAED;;;;;;;GAOG;AACH,sDALW,MAAM,gBACN,MAAM,GACJ,MAAM,CAQlB;AAED;;;;;;;;GAQG;AACH,0DANW,MAAM,GAEJ,MAAM,WAAW,CAoB7B;AAED;;;;;;;;;GASG;AACH,8DANW,cAAc,eACd,cAAc,GACZ,OAAO,GAAG,MAAM,CAyB5B;AAcD;;;GAGG;AACH,yCAHW,QAAQ,EAAE,GACR,QAAQ,EAAE,CAYtB;AAeD;;;GAGG;AACH,uCAHW,SAAS,EAAE,GACT,SAAS,EAAE,CAYvB;AAqBD;;;GAGG;AACH,sCAHW,IAAI,EAAE,GACJ,IAAI,EAAE,CAYlB;AAED;;;GAGG;AACH,mCAHW,IAAI,GACF,IAAI,CAYhB;AAiBD;;;GAGG;AACH,2CAHW,UAAU,EAAE,GACV,UAAU,EAAE,CAexB;AAED;;;GAGG;AACH,yCAHW,OAAO,EAAE,GACP,OAAO,EAAE,CAIrB;AAED;;;GAGG;AACH,uCAHW,mBAAmB,EAAE,GACnB,mBAAmB,EAAE,CAIjC;AAED;;;;;;;GAOG;AACH,+DALW,kBAAkB,GAChB,kBAAkB,CAa9B;AAED;;;;;;GAMG;AACH,6CANW,MAAM,iBACN,MAAM,GACJ,MAAM,CAoBlB;AAED;;;;;;GAMG;AACH,4CANW,MAAM,iBACN,MAAM,GACJ,MAAM,CAsBlB;AAED;;;;GAIG;AACH,sDAJW,kBAAkB,GAChB,kBAAkB,CAa9B;AAED;;;;;;;GAOG;AACH,wCALW,oBAAoB,GAClB,MAAM,CAiElB;mCA/qBY,OAAO,SAAS,EAAE,oBAAoB;iCAKtC,OAAO,SAAS,EAAE,kBAAkB;mBAKpC,OAAO,SAAS,EAAE,IAAI;uBAKtB,OAAO,SAAS,EAAE,QAAQ;yBAK1B,OAAO,SAAS,EAAE,UAAU;sBAK5B,OAAO,SAAS,EAAE,OAAO;kCAKzB,OAAO,SAAS,EAAE,mBAAmB;iCAKrC,OAAO,SAAS,EAAE,kBAAkB;6BAKpC,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM;0BAzDpC,YAAY;iBAErB,WAAW"}