@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.
- package/dist/assets/css/casa.css +1 -1
- package/dist/assets/css/casa.css.map +1 -1
- package/dist/casa.d.ts +90 -44
- package/dist/casa.d.ts.map +1 -0
- package/dist/casa.js +85 -101
- package/dist/core-plugins/edit-snapshot/src/configure.d.ts +1 -0
- package/dist/core-plugins/edit-snapshot/src/configure.d.ts.map +1 -0
- package/dist/core-plugins/edit-snapshot/src/configure.js +7 -14
- package/dist/core-plugins/edit-snapshot/src/index.d.ts +1 -0
- package/dist/core-plugins/edit-snapshot/src/index.d.ts.map +1 -0
- package/dist/core-plugins/edit-snapshot/src/index.js +3 -9
- package/dist/core-plugins/edit-snapshot/src/post-steer-hook.d.ts +2 -1
- package/dist/core-plugins/edit-snapshot/src/post-steer-hook.d.ts.map +1 -0
- package/dist/core-plugins/edit-snapshot/src/post-steer-hook.js +8 -13
- package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.d.ts +2 -1
- package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.d.ts.map +1 -0
- package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.js +13 -18
- package/dist/core-plugins/edit-snapshot/src/utils.d.ts +8 -5
- package/dist/core-plugins/edit-snapshot/src/utils.d.ts.map +1 -0
- package/dist/core-plugins/edit-snapshot/src/utils.js +37 -19
- package/dist/core-plugins/index.d.ts +1 -0
- package/dist/core-plugins/index.d.ts.map +1 -0
- package/dist/core-plugins/index.js +1 -9
- package/dist/lib/CasaTemplateLoader.d.ts +1 -0
- package/dist/lib/CasaTemplateLoader.d.ts.map +1 -0
- package/dist/lib/CasaTemplateLoader.js +2 -6
- package/dist/lib/JourneyContext.d.ts +22 -11
- package/dist/lib/JourneyContext.d.ts.map +1 -0
- package/dist/lib/JourneyContext.js +40 -45
- package/dist/lib/MutableRouter.d.ts +79 -55
- package/dist/lib/MutableRouter.d.ts.map +1 -0
- package/dist/lib/MutableRouter.js +53 -45
- package/dist/lib/NullObject.d.ts +3 -0
- package/dist/lib/NullObject.d.ts.map +1 -0
- package/dist/lib/NullObject.js +3 -0
- package/dist/lib/Plan.d.ts +2 -1
- package/dist/lib/Plan.d.ts.map +1 -0
- package/dist/lib/Plan.js +44 -62
- package/dist/lib/ValidationError.d.ts +2 -1
- package/dist/lib/ValidationError.d.ts.map +1 -0
- package/dist/lib/ValidationError.js +3 -11
- package/dist/lib/ValidatorFactory.d.ts +5 -6
- package/dist/lib/ValidatorFactory.d.ts.map +1 -0
- package/dist/lib/ValidatorFactory.js +4 -12
- package/dist/lib/configuration-ingestor.d.ts +10 -22
- package/dist/lib/configuration-ingestor.d.ts.map +1 -0
- package/dist/lib/configuration-ingestor.js +61 -143
- package/dist/lib/configure.d.ts +2 -1
- package/dist/lib/configure.d.ts.map +1 -0
- package/dist/lib/configure.js +40 -52
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +8 -12
- package/dist/lib/context-id-generators.d.ts +1 -0
- package/dist/lib/context-id-generators.d.ts.map +1 -0
- package/dist/lib/context-id-generators.js +4 -9
- package/dist/lib/end-session.d.ts +2 -1
- package/dist/lib/end-session.d.ts.map +1 -0
- package/dist/lib/end-session.js +4 -11
- package/dist/lib/field.d.ts +2 -1
- package/dist/lib/field.d.ts.map +1 -0
- package/dist/lib/field.js +11 -21
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +13 -65
- package/dist/lib/logger.d.ts +25 -2
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +18 -9
- package/dist/lib/mount.d.ts +1 -0
- package/dist/lib/mount.d.ts.map +1 -0
- package/dist/lib/mount.js +10 -16
- package/dist/lib/nunjucks-filters.d.ts +7 -3
- package/dist/lib/nunjucks-filters.d.ts.map +1 -0
- package/dist/lib/nunjucks-filters.js +58 -71
- package/dist/lib/nunjucks.d.ts +4 -4
- package/dist/lib/nunjucks.d.ts.map +1 -0
- package/dist/lib/nunjucks.js +14 -26
- package/dist/lib/utils.d.ts +4 -2
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +14 -28
- package/dist/lib/validators/dateObject.d.ts +1 -0
- package/dist/lib/validators/dateObject.d.ts.map +1 -0
- package/dist/lib/validators/dateObject.js +14 -21
- package/dist/lib/validators/email.d.ts +1 -0
- package/dist/lib/validators/email.d.ts.map +1 -0
- package/dist/lib/validators/email.js +8 -15
- package/dist/lib/validators/inArray.d.ts +1 -0
- package/dist/lib/validators/inArray.d.ts.map +1 -0
- package/dist/lib/validators/inArray.js +8 -15
- package/dist/lib/validators/index.d.ts +1 -0
- package/dist/lib/validators/index.d.ts.map +1 -0
- package/dist/lib/validators/index.js +21 -27
- package/dist/lib/validators/nino.d.ts +1 -0
- package/dist/lib/validators/nino.d.ts.map +1 -0
- package/dist/lib/validators/nino.js +6 -13
- package/dist/lib/validators/postalAddressObject.d.ts +1 -0
- package/dist/lib/validators/postalAddressObject.d.ts.map +1 -0
- package/dist/lib/validators/postalAddressObject.js +12 -19
- package/dist/lib/validators/range.d.ts +1 -0
- package/dist/lib/validators/range.d.ts.map +1 -0
- package/dist/lib/validators/range.js +6 -13
- package/dist/lib/validators/regex.d.ts +1 -0
- package/dist/lib/validators/regex.d.ts.map +1 -0
- package/dist/lib/validators/regex.js +6 -13
- package/dist/lib/validators/required.d.ts +1 -0
- package/dist/lib/validators/required.d.ts.map +1 -0
- package/dist/lib/validators/required.js +9 -17
- package/dist/lib/validators/strlen.d.ts +1 -0
- package/dist/lib/validators/strlen.d.ts.map +1 -0
- package/dist/lib/validators/strlen.js +6 -13
- package/dist/lib/validators/wordCount.d.ts +1 -0
- package/dist/lib/validators/wordCount.d.ts.map +1 -0
- package/dist/lib/validators/wordCount.js +6 -13
- package/dist/lib/waypoint-url.d.ts +3 -2
- package/dist/lib/waypoint-url.d.ts.map +1 -0
- package/dist/lib/waypoint-url.js +12 -19
- package/dist/middleware/body-parser.d.ts +1 -0
- package/dist/middleware/body-parser.d.ts.map +1 -0
- package/dist/middleware/body-parser.js +4 -9
- package/dist/middleware/csrf.d.ts +1 -0
- package/dist/middleware/csrf.d.ts.map +1 -0
- package/dist/middleware/csrf.js +4 -8
- package/dist/middleware/data.d.ts +2 -3
- package/dist/middleware/data.d.ts.map +1 -0
- package/dist/middleware/data.js +23 -25
- package/dist/middleware/gather-fields.d.ts +3 -1
- package/dist/middleware/gather-fields.d.ts.map +1 -0
- package/dist/middleware/gather-fields.js +13 -14
- package/dist/middleware/i18n.d.ts +1 -0
- package/dist/middleware/i18n.d.ts.map +1 -0
- package/dist/middleware/i18n.js +26 -31
- package/dist/middleware/post.d.ts +4 -2
- package/dist/middleware/post.d.ts.map +1 -0
- package/dist/middleware/post.js +6 -11
- package/dist/middleware/pre.d.ts +2 -1
- package/dist/middleware/pre.d.ts.map +1 -0
- package/dist/middleware/pre.js +6 -12
- package/dist/middleware/progress-journey.d.ts +5 -3
- package/dist/middleware/progress-journey.d.ts.map +1 -0
- package/dist/middleware/progress-journey.js +20 -18
- package/dist/middleware/sanitise-fields.d.ts +5 -3
- package/dist/middleware/sanitise-fields.d.ts.map +1 -0
- package/dist/middleware/sanitise-fields.js +25 -17
- package/dist/middleware/serve-first-waypoint.d.ts +1 -0
- package/dist/middleware/serve-first-waypoint.d.ts.map +1 -0
- package/dist/middleware/serve-first-waypoint.js +3 -6
- package/dist/middleware/session.d.ts +15 -0
- package/dist/middleware/session.d.ts.map +1 -0
- package/dist/middleware/session.js +53 -57
- package/dist/middleware/skip-waypoint.d.ts +3 -2
- package/dist/middleware/skip-waypoint.d.ts.map +1 -0
- package/dist/middleware/skip-waypoint.js +15 -14
- package/dist/middleware/steer-journey.d.ts +2 -1
- package/dist/middleware/steer-journey.d.ts.map +1 -0
- package/dist/middleware/steer-journey.js +7 -13
- package/dist/middleware/strip-proxy-path.d.ts +3 -2
- package/dist/middleware/strip-proxy-path.d.ts.map +1 -0
- package/dist/middleware/strip-proxy-path.js +24 -24
- package/dist/middleware/validate-fields.d.ts +7 -4
- package/dist/middleware/validate-fields.d.ts.map +1 -0
- package/dist/middleware/validate-fields.js +22 -11
- package/dist/routes/ancillary.d.ts +1 -0
- package/dist/routes/ancillary.d.ts.map +1 -0
- package/dist/routes/ancillary.js +3 -10
- package/dist/routes/journey.d.ts +7 -2
- package/dist/routes/journey.d.ts.map +1 -0
- package/dist/routes/journey.js +56 -55
- package/dist/routes/static.d.ts +1 -0
- package/dist/routes/static.d.ts.map +1 -0
- package/dist/routes/static.js +15 -23
- package/package.json +30 -36
- package/src/casa.js +63 -31
- package/src/core-plugins/edit-snapshot/src/post-steer-hook.js +1 -0
- package/src/core-plugins/edit-snapshot/src/pre-steer-hook.js +2 -1
- package/src/core-plugins/edit-snapshot/src/utils.js +29 -1
- package/src/lib/JourneyContext.js +31 -28
- package/src/lib/MutableRouter.js +52 -38
- package/src/lib/NullObject.js +4 -0
- package/src/lib/Plan.js +41 -55
- package/src/lib/ValidationError.js +2 -4
- package/src/lib/ValidatorFactory.js +3 -5
- package/src/lib/configuration-ingestor.js +18 -38
- package/src/lib/configure.js +7 -10
- package/src/lib/end-session.js +1 -1
- package/src/lib/field.js +7 -12
- package/src/lib/logger.js +16 -0
- package/src/lib/mount.js +1 -1
- package/src/lib/nunjucks-filters.js +51 -61
- package/src/lib/nunjucks.js +5 -13
- package/src/lib/utils.js +2 -1
- package/src/lib/validators/dateObject.js +3 -4
- package/src/lib/validators/postalAddressObject.js +6 -7
- package/src/lib/validators/required.js +1 -3
- package/src/lib/waypoint-url.js +15 -19
- package/src/middleware/csrf.js +1 -1
- package/src/middleware/data.js +13 -13
- package/src/middleware/gather-fields.js +8 -2
- package/src/middleware/i18n.js +9 -6
- package/src/middleware/post.js +3 -1
- package/src/middleware/pre.js +1 -1
- package/src/middleware/progress-journey.js +8 -0
- package/src/middleware/sanitise-fields.js +17 -2
- package/src/middleware/session.js +53 -12
- package/src/middleware/skip-waypoint.js +8 -1
- package/src/middleware/steer-journey.js +1 -1
- package/src/middleware/strip-proxy-path.js +21 -16
- package/src/middleware/validate-fields.js +19 -0
- package/src/routes/journey.js +18 -8
- package/src/routes/static.js +5 -4
- package/views/casa/layouts/journey.njk +1 -1
- package/views/casa/layouts/main.njk +11 -21
- package/dist/casa.js.map +0 -1
- package/dist/core-plugins/edit-snapshot/src/configure.js.map +0 -1
- package/dist/core-plugins/edit-snapshot/src/index.js.map +0 -1
- package/dist/core-plugins/edit-snapshot/src/post-steer-hook.js.map +0 -1
- package/dist/core-plugins/edit-snapshot/src/pre-steer-hook.js.map +0 -1
- package/dist/core-plugins/edit-snapshot/src/utils.js.map +0 -1
- package/dist/core-plugins/index.js.map +0 -1
- package/dist/lib/CasaTemplateLoader.js.map +0 -1
- package/dist/lib/JourneyContext.js.map +0 -1
- package/dist/lib/MutableRouter.js.map +0 -1
- package/dist/lib/Plan.js.map +0 -1
- package/dist/lib/ValidationError.js.map +0 -1
- package/dist/lib/ValidatorFactory.js.map +0 -1
- package/dist/lib/configuration-ingestor.js.map +0 -1
- package/dist/lib/configure.js.map +0 -1
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/context-id-generators.js.map +0 -1
- package/dist/lib/dirname.cjs +0 -1
- package/dist/lib/dirname.d.cts +0 -2
- package/dist/lib/end-session.js.map +0 -1
- package/dist/lib/field.js.map +0 -1
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/mount.js.map +0 -1
- package/dist/lib/nunjucks-filters.js.map +0 -1
- package/dist/lib/nunjucks.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/dist/lib/validators/dateObject.js.map +0 -1
- package/dist/lib/validators/email.js.map +0 -1
- package/dist/lib/validators/inArray.js.map +0 -1
- package/dist/lib/validators/index.js.map +0 -1
- package/dist/lib/validators/nino.js.map +0 -1
- package/dist/lib/validators/postalAddressObject.js.map +0 -1
- package/dist/lib/validators/range.js.map +0 -1
- package/dist/lib/validators/regex.js.map +0 -1
- package/dist/lib/validators/required.js.map +0 -1
- package/dist/lib/validators/strlen.js.map +0 -1
- package/dist/lib/validators/wordCount.js.map +0 -1
- package/dist/lib/waypoint-url.js.map +0 -1
- package/dist/middleware/body-parser.js.map +0 -1
- package/dist/middleware/csrf.js.map +0 -1
- package/dist/middleware/data.js.map +0 -1
- package/dist/middleware/dirname.cjs +0 -1
- package/dist/middleware/dirname.d.cts +0 -2
- package/dist/middleware/gather-fields.js.map +0 -1
- package/dist/middleware/i18n.js.map +0 -1
- package/dist/middleware/post.js.map +0 -1
- package/dist/middleware/pre.js.map +0 -1
- package/dist/middleware/progress-journey.js.map +0 -1
- package/dist/middleware/sanitise-fields.js.map +0 -1
- package/dist/middleware/serve-first-waypoint.js.map +0 -1
- package/dist/middleware/session.js.map +0 -1
- package/dist/middleware/skip-waypoint.js.map +0 -1
- package/dist/middleware/steer-journey.js.map +0 -1
- package/dist/middleware/strip-proxy-path.js.map +0 -1
- package/dist/middleware/validate-fields.js.map +0 -1
- package/dist/mjs/esm-wrapper.js +0 -20
- package/dist/mjs/package.json +0 -3
- package/dist/package.json +0 -3
- package/dist/routes/ancillary.js.map +0 -1
- package/dist/routes/dirname.cjs +0 -1
- package/dist/routes/dirname.d.cts +0 -2
- package/dist/routes/journey.js.map +0 -1
- package/dist/routes/static.js.map +0 -1
- package/src/lib/dirname.cjs +0 -1
- package/src/middleware/dirname.cjs +0 -1
- package/src/routes/dirname.cjs +0 -1
package/dist/lib/Plan.js
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
238
|
-
return self.dgraph
|
|
225
|
+
return this.#dgraph
|
|
239
226
|
.edges()
|
|
240
|
-
.map((edge) => makeRouteObject(
|
|
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
|
|
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
|
-
|
|
263
|
-
return self.dgraph
|
|
249
|
+
return this.#dgraph
|
|
264
250
|
.outEdges(src, tgt)
|
|
265
|
-
.map((e) => makeRouteObject(
|
|
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 (
|
|
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
|
-
|
|
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 (!
|
|
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
|
-
|
|
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
|
|
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 =
|
|
480
|
-
if (!
|
|
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 =
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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 {
|
|
22
|
+
* @typedef {{ [key: string]: unknown }} ValidatorFactoryOptions
|
|
23
23
|
* @property {ErrorMessageConfig} errorMsg Error message
|
|
24
24
|
*/
|
|
25
25
|
/**
|
|
26
|
-
* @memberof module
|
|
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
|
-
[
|
|
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
|
-
|
|
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 {
|
|
23
|
+
* @typedef {{ [key: string]: unknown }} ValidatorFactoryOptions
|
|
30
24
|
* @property {ErrorMessageConfig} errorMsg Error message
|
|
31
25
|
*/
|
|
32
26
|
/**
|
|
33
|
-
* @memberof module
|
|
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
|
-
*
|
|
150
|
-
*
|
|
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:
|
|
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"}
|