@dwp/govuk-casa 8.15.0 → 9.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/README.md +9 -9
- package/dist/assets/css/casa.css +2 -1
- package/dist/assets/css/casa.css.map +1 -0
- package/dist/casa.d.ts +122 -99
- package/dist/casa.js +120 -88
- package/dist/casa.js.map +1 -1
- package/dist/lib/CasaTemplateLoader.d.ts +4 -4
- package/dist/lib/CasaTemplateLoader.js +16 -16
- package/dist/lib/CasaTemplateLoader.js.map +1 -1
- package/dist/lib/JourneyContext.d.ts +38 -40
- package/dist/lib/JourneyContext.js +89 -75
- package/dist/lib/JourneyContext.js.map +1 -1
- package/dist/lib/MutableRouter.d.ts +40 -41
- package/dist/lib/MutableRouter.js +64 -71
- package/dist/lib/MutableRouter.js.map +1 -1
- package/dist/lib/Plan.d.ts +29 -26
- package/dist/lib/Plan.js +85 -71
- package/dist/lib/Plan.js.map +1 -1
- package/dist/lib/ValidationError.d.ts +16 -15
- package/dist/lib/ValidationError.js +21 -20
- package/dist/lib/ValidationError.js.map +1 -1
- package/dist/lib/ValidatorFactory.d.ts +15 -13
- package/dist/lib/ValidatorFactory.js +14 -12
- package/dist/lib/ValidatorFactory.js.map +1 -1
- package/dist/lib/configuration-ingestor.d.ts +37 -40
- package/dist/lib/configuration-ingestor.js +93 -93
- package/dist/lib/configuration-ingestor.js.map +1 -1
- package/dist/lib/configure.d.ts +6 -6
- package/dist/lib/configure.js +14 -12
- package/dist/lib/configure.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -3
- package/dist/lib/constants.js +9 -11
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/context-id-generators.d.ts +3 -5
- package/dist/lib/context-id-generators.js +7 -6
- package/dist/lib/context-id-generators.js.map +1 -1
- package/dist/lib/end-session.d.ts +4 -4
- package/dist/lib/end-session.js +5 -5
- package/dist/lib/field.d.ts +24 -29
- package/dist/lib/field.js +41 -70
- package/dist/lib/field.js.map +1 -1
- package/dist/lib/index.d.ts +13 -13
- package/dist/lib/logger.d.ts +7 -6
- package/dist/lib/logger.js +7 -7
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/mount.d.ts +5 -5
- package/dist/lib/mount.js +12 -17
- package/dist/lib/mount.js.map +1 -1
- package/dist/lib/nunjucks-filters.d.ts +10 -12
- package/dist/lib/nunjucks-filters.js +35 -35
- package/dist/lib/nunjucks-filters.js.map +1 -1
- package/dist/lib/nunjucks.d.ts +7 -5
- package/dist/lib/nunjucks.js +10 -8
- package/dist/lib/nunjucks.js.map +1 -1
- package/dist/lib/utils.d.ts +19 -19
- package/dist/lib/utils.js +62 -55
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/validators/dateObject.d.ts +29 -22
- package/dist/lib/validators/dateObject.js +58 -49
- package/dist/lib/validators/dateObject.js.map +1 -1
- package/dist/lib/validators/email.d.ts +4 -4
- package/dist/lib/validators/email.js +4 -4
- package/dist/lib/validators/inArray.d.ts +4 -4
- package/dist/lib/validators/inArray.js +7 -8
- package/dist/lib/validators/inArray.js.map +1 -1
- package/dist/lib/validators/index.d.ts +10 -10
- package/dist/lib/validators/index.js +1 -3
- package/dist/lib/validators/index.js.map +1 -1
- package/dist/lib/validators/nino.d.ts +9 -8
- package/dist/lib/validators/nino.js +14 -10
- package/dist/lib/validators/nino.js.map +1 -1
- package/dist/lib/validators/postalAddressObject.d.ts +37 -24
- package/dist/lib/validators/postalAddressObject.js +65 -46
- package/dist/lib/validators/postalAddressObject.js.map +1 -1
- package/dist/lib/validators/range.d.ts +12 -8
- package/dist/lib/validators/range.js +11 -9
- package/dist/lib/validators/range.js.map +1 -1
- package/dist/lib/validators/regex.d.ts +4 -4
- package/dist/lib/validators/regex.js +5 -5
- package/dist/lib/validators/required.d.ts +6 -6
- package/dist/lib/validators/required.js +9 -11
- package/dist/lib/validators/required.js.map +1 -1
- package/dist/lib/validators/strlen.d.ts +12 -8
- package/dist/lib/validators/strlen.js +13 -11
- package/dist/lib/validators/strlen.js.map +1 -1
- package/dist/lib/validators/wordCount.d.ts +12 -8
- package/dist/lib/validators/wordCount.js +15 -11
- package/dist/lib/validators/wordCount.js.map +1 -1
- package/dist/lib/waypoint-url.d.ts +16 -13
- package/dist/lib/waypoint-url.js +39 -36
- package/dist/lib/waypoint-url.js.map +1 -1
- package/dist/middleware/body-parser.d.ts +1 -1
- package/dist/middleware/body-parser.js +6 -6
- package/dist/middleware/body-parser.js.map +1 -1
- package/dist/middleware/data.d.ts +1 -1
- package/dist/middleware/data.js +8 -7
- package/dist/middleware/data.js.map +1 -1
- package/dist/middleware/gather-fields.d.ts +2 -2
- package/dist/middleware/gather-fields.js +6 -4
- package/dist/middleware/gather-fields.js.map +1 -1
- package/dist/middleware/i18n.js +13 -15
- package/dist/middleware/i18n.js.map +1 -1
- package/dist/middleware/post.js +30 -18
- package/dist/middleware/post.js.map +1 -1
- package/dist/middleware/pre.d.ts +2 -2
- package/dist/middleware/pre.js +46 -26
- package/dist/middleware/pre.js.map +1 -1
- package/dist/middleware/progress-journey.d.ts +1 -1
- package/dist/middleware/progress-journey.js +5 -5
- package/dist/middleware/progress-journey.js.map +1 -1
- package/dist/middleware/sanitise-fields.d.ts +1 -1
- package/dist/middleware/sanitise-fields.js +13 -11
- package/dist/middleware/sanitise-fields.js.map +1 -1
- package/dist/middleware/serve-first-waypoint.d.ts +3 -3
- package/dist/middleware/serve-first-waypoint.js +8 -6
- package/dist/middleware/serve-first-waypoint.js.map +1 -1
- package/dist/middleware/session.js +14 -11
- package/dist/middleware/session.js.map +1 -1
- package/dist/middleware/skip-waypoint.d.ts +1 -1
- package/dist/middleware/skip-waypoint.js +3 -3
- package/dist/middleware/skip-waypoint.js.map +1 -1
- package/dist/middleware/steer-journey.d.ts +1 -1
- package/dist/middleware/steer-journey.js +16 -14
- package/dist/middleware/steer-journey.js.map +1 -1
- package/dist/middleware/strip-proxy-path.d.ts +1 -1
- package/dist/middleware/strip-proxy-path.js +3 -3
- package/dist/middleware/strip-proxy-path.js.map +1 -1
- package/dist/middleware/validate-fields.d.ts +1 -1
- package/dist/middleware/validate-fields.js +2 -5
- package/dist/middleware/validate-fields.js.map +1 -1
- package/dist/routes/ancillary.d.ts +3 -3
- package/dist/routes/ancillary.js +4 -4
- package/dist/routes/ancillary.js.map +1 -1
- package/dist/routes/journey.d.ts +2 -2
- package/dist/routes/journey.js +91 -39
- package/dist/routes/journey.js.map +1 -1
- package/dist/routes/static.d.ts +7 -5
- package/dist/routes/static.js +20 -20
- package/dist/routes/static.js.map +1 -1
- package/package.json +17 -16
- package/src/casa.js +134 -102
- package/src/lib/CasaTemplateLoader.js +24 -19
- package/src/lib/JourneyContext.js +147 -107
- package/src/lib/MutableRouter.js +72 -74
- package/src/lib/Plan.js +145 -97
- package/src/lib/ValidationError.js +25 -21
- package/src/lib/ValidatorFactory.js +17 -13
- package/src/lib/configuration-ingestor.js +147 -110
- package/src/lib/configure.js +34 -32
- package/src/lib/constants.js +9 -11
- package/src/lib/context-id-generators.js +40 -43
- package/src/lib/end-session.js +6 -6
- package/src/lib/field.js +74 -78
- package/src/lib/index.js +12 -12
- package/src/lib/logger.js +9 -9
- package/src/lib/mount.js +70 -80
- package/src/lib/nunjucks-filters.js +56 -59
- package/src/lib/nunjucks.js +23 -18
- package/src/lib/utils.js +78 -57
- package/src/lib/validators/dateObject.js +71 -60
- package/src/lib/validators/email.js +8 -8
- package/src/lib/validators/inArray.js +10 -11
- package/src/lib/validators/index.js +12 -14
- package/src/lib/validators/nino.js +29 -15
- package/src/lib/validators/postalAddressObject.js +87 -63
- package/src/lib/validators/range.js +14 -12
- package/src/lib/validators/regex.js +8 -8
- package/src/lib/validators/required.js +16 -16
- package/src/lib/validators/strlen.js +16 -14
- package/src/lib/validators/wordCount.js +22 -14
- package/src/lib/waypoint-url.js +64 -46
- package/src/middleware/body-parser.js +10 -10
- package/src/middleware/csrf.js +1 -1
- package/src/middleware/data.js +28 -24
- package/src/middleware/gather-fields.js +10 -9
- package/src/middleware/i18n.js +35 -37
- package/src/middleware/post.js +41 -21
- package/src/middleware/pre.js +62 -40
- package/src/middleware/progress-journey.js +32 -18
- package/src/middleware/sanitise-fields.js +43 -20
- package/src/middleware/serve-first-waypoint.js +14 -12
- package/src/middleware/session.js +74 -61
- package/src/middleware/skip-waypoint.js +7 -9
- package/src/middleware/steer-journey.js +40 -28
- package/src/middleware/strip-proxy-path.js +8 -7
- package/src/middleware/validate-fields.js +5 -12
- package/src/routes/ancillary.js +5 -7
- package/src/routes/journey.js +159 -85
- package/src/routes/static.js +62 -30
- package/views/casa/components/character-count/README.md +2 -2
- package/views/casa/components/checkboxes/README.md +6 -6
- package/views/casa/components/date-input/README.md +7 -7
- package/views/casa/components/input/README.md +2 -2
- package/views/casa/components/journey-form/README.md +33 -14
- package/views/casa/components/postal-address-object/README.md +4 -4
- package/views/casa/components/radios/README.md +6 -6
- package/views/casa/components/select/README.md +6 -6
- package/views/casa/components/textarea/README.md +2 -2
- package/views/casa/partials/scripts.njk +5 -3
- package/views/casa/partials/styles.njk +1 -4
- package/dist/assets/css/casa-ie8.css +0 -1
package/dist/lib/Plan.js
CHANGED
|
@@ -18,81 +18,83 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
const graphlib_1 = require("@dagrejs/graphlib");
|
|
19
19
|
const JourneyContext_js_1 = __importDefault(require("./JourneyContext.js"));
|
|
20
20
|
const logger_js_1 = __importDefault(require("./logger.js"));
|
|
21
|
-
const log = (0, logger_js_1.default)(
|
|
21
|
+
const log = (0, logger_js_1.default)("lib:plan");
|
|
22
22
|
/**
|
|
23
|
+
* @typedef {import("../casa").PlanRoute} PlanRoute
|
|
23
24
|
* @access private
|
|
24
|
-
* @typedef {import('../casa').PlanRoute} PlanRoute
|
|
25
25
|
*/
|
|
26
26
|
/**
|
|
27
|
+
* @typedef {import("../casa").PlanRouteCondition} PlanRouteCondition
|
|
27
28
|
* @access private
|
|
28
|
-
* @typedef {import('../casa').PlanRouteCondition} PlanRouteCondition
|
|
29
29
|
*/
|
|
30
30
|
/**
|
|
31
|
+
* @typedef {import("../casa").PlanTraverseOptions} PlanTraverseOptions
|
|
31
32
|
* @access private
|
|
32
|
-
* @typedef {import('../casa').PlanTraverseOptions} PlanTraverseOptions
|
|
33
33
|
*/
|
|
34
34
|
/**
|
|
35
|
+
* @typedef {import("../casa").PlanArbiter} PlanArbiter
|
|
35
36
|
* @access private
|
|
36
|
-
* @typedef {import('../casa').PlanArbiter} PlanArbiter
|
|
37
37
|
*/
|
|
38
38
|
/**
|
|
39
39
|
* @typedef {object} PlanConstructorOptions
|
|
40
|
-
* @property {boolean} [validateBeforeRouteCondition=true] Check page validity
|
|
41
|
-
*
|
|
40
|
+
* @property {boolean} [validateBeforeRouteCondition=true] Check page validity
|
|
41
|
+
* before conditions. Default is `true`
|
|
42
|
+
* @property {string | PlanArbiter} [arbiter=undefined] Arbitration mechanism.
|
|
43
|
+
* Default is `undefined`
|
|
42
44
|
*/
|
|
43
45
|
/**
|
|
44
46
|
* Will check if the source waypoint has specifically passed validation, i.e
|
|
45
47
|
* there is a "null" validation entry for the route source.
|
|
46
48
|
*
|
|
47
|
-
* @access private
|
|
48
49
|
* @type {PlanRouteCondition}
|
|
50
|
+
* @access private
|
|
49
51
|
*/
|
|
50
52
|
function defaultNextFollow(r, context) {
|
|
51
53
|
const { validation: v = {} } = context.toObject();
|
|
52
|
-
return Object.prototype.hasOwnProperty.call(v, r.source) && v[r.source] === null;
|
|
54
|
+
return (Object.prototype.hasOwnProperty.call(v, r.source) && v[r.source] === null);
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
57
|
* Will check if the target waypoint (the one we're moving back to) has
|
|
56
58
|
* specifically passed validation.
|
|
57
59
|
*
|
|
58
|
-
* @access private
|
|
59
60
|
* @type {PlanRouteCondition}
|
|
61
|
+
* @access private
|
|
60
62
|
*/
|
|
61
63
|
function defaultPrevFollow(r, context) {
|
|
62
64
|
const { validation: v = {} } = context.toObject();
|
|
63
|
-
return Object.prototype.hasOwnProperty.call(v, r.target) && v[r.target] === null;
|
|
65
|
+
return (Object.prototype.hasOwnProperty.call(v, r.target) && v[r.target] === null);
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
68
|
* Validate a given waypoint ID.
|
|
67
69
|
*
|
|
68
|
-
* @access private
|
|
69
70
|
* @param {string} val Waypoint ID
|
|
70
71
|
* @returns {void}
|
|
71
72
|
* @throws {TypeError} If waypoint ID is not a string
|
|
72
73
|
* @throws {SyntaxError} If waypoint ID is incorrectly formatted
|
|
74
|
+
* @access private
|
|
73
75
|
*/
|
|
74
76
|
function validateWaypointId(val) {
|
|
75
|
-
if (typeof val !==
|
|
77
|
+
if (typeof val !== "string") {
|
|
76
78
|
throw new TypeError(`Expected waypoint id to be a string, got ${typeof val}`);
|
|
77
79
|
}
|
|
78
|
-
if (val.substr(0, 6) ===
|
|
79
|
-
throw new SyntaxError(
|
|
80
|
+
if (val.substr(0, 6) === "url://" && !val.endsWith("/")) {
|
|
81
|
+
throw new SyntaxError("url:// waypoints must include a trailing /");
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
84
|
/**
|
|
83
85
|
* Validate a given route name.
|
|
84
86
|
*
|
|
85
|
-
* @access private
|
|
86
87
|
* @param {string} val Route name
|
|
87
88
|
* @returns {string} The route name
|
|
88
89
|
* @throws {TypeError} If route name is not a string
|
|
89
90
|
* @throws {ReferenceError} If route name is neither "next" or "prev"
|
|
91
|
+
* @access private
|
|
90
92
|
*/
|
|
91
93
|
function validateRouteName(val) {
|
|
92
|
-
if (typeof val !==
|
|
94
|
+
if (typeof val !== "string") {
|
|
93
95
|
throw new TypeError(`Expected route name to be a string, got ${typeof val}`);
|
|
94
96
|
}
|
|
95
|
-
else if (![
|
|
97
|
+
else if (!["next", "prev"].includes(val)) {
|
|
96
98
|
throw new ReferenceError(`Expected route name to be one of next or prev. Got ${val}`);
|
|
97
99
|
}
|
|
98
100
|
return val;
|
|
@@ -100,10 +102,10 @@ function validateRouteName(val) {
|
|
|
100
102
|
/**
|
|
101
103
|
* Validate a given route condition.
|
|
102
104
|
*
|
|
103
|
-
* @access private
|
|
104
105
|
* @param {PlanRouteCondition} val The condition function
|
|
105
106
|
* @returns {void}
|
|
106
107
|
* @throws {TypeError} If condition is not a string
|
|
108
|
+
* @access private
|
|
107
109
|
*/
|
|
108
110
|
function validateRouteCondition(val) {
|
|
109
111
|
if (!(val instanceof Function)) {
|
|
@@ -111,14 +113,14 @@ function validateRouteCondition(val) {
|
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
/**
|
|
114
|
-
* Creates a user friendly route structure from a given graph edge which will
|
|
115
|
-
*
|
|
116
|
+
* Creates a user friendly route structure from a given graph edge which will be
|
|
117
|
+
* used in userland. This is the object that will be passed into follow
|
|
116
118
|
* functions too as the "route" parameter.
|
|
117
119
|
*
|
|
118
|
-
* @access private
|
|
119
120
|
* @param {object} dgraph Directed graph instance.
|
|
120
121
|
* @param {object} edge Graph edge object.
|
|
121
122
|
* @returns {PlanRoute} Route.
|
|
123
|
+
* @access private
|
|
122
124
|
*/
|
|
123
125
|
const makeRouteObject = (dgraph, edge) => {
|
|
124
126
|
const label = dgraph.edge(edge) || {};
|
|
@@ -143,9 +145,7 @@ const reExitNodeProtocol = /^[a-z]+:\/\//i;
|
|
|
143
145
|
* @todo Use property private class properties.
|
|
144
146
|
*/
|
|
145
147
|
const priv = new WeakMap();
|
|
146
|
-
/**
|
|
147
|
-
* @memberof module:@dwp/govuk-casa
|
|
148
|
-
*/
|
|
148
|
+
/** @memberof module:@dwp/govuk-casa */
|
|
149
149
|
class Plan {
|
|
150
150
|
/**
|
|
151
151
|
* Waypoints using the url:// protocol are known as "exit nodes" as they
|
|
@@ -163,9 +163,7 @@ class Plan {
|
|
|
163
163
|
* @param {PlanConstructorOptions} opts Options
|
|
164
164
|
*/
|
|
165
165
|
constructor(opts = {}) {
|
|
166
|
-
/**
|
|
167
|
-
* @type {string[]} These waypoints can be skipped
|
|
168
|
-
*/
|
|
166
|
+
/** @type {string[]} These Waypoints can be skipped */
|
|
169
167
|
_Plan_skippableWaypoints.set(this, void 0);
|
|
170
168
|
// This is our directed, multigraph representation
|
|
171
169
|
const dgraph = new graphlib_1.Graph({
|
|
@@ -211,7 +209,7 @@ class Plan {
|
|
|
211
209
|
/**
|
|
212
210
|
* Add one or more skippable waypoints.
|
|
213
211
|
*
|
|
214
|
-
* @param
|
|
212
|
+
* @param {...string} waypoints Waypoints
|
|
215
213
|
* @returns {Plan} Chain
|
|
216
214
|
*/
|
|
217
215
|
addSkippables(...waypoints) {
|
|
@@ -251,7 +249,9 @@ class Plan {
|
|
|
251
249
|
*/
|
|
252
250
|
getRoutes() {
|
|
253
251
|
const self = priv.get(this);
|
|
254
|
-
return self.dgraph
|
|
252
|
+
return self.dgraph
|
|
253
|
+
.edges()
|
|
254
|
+
.map((edge) => makeRouteObject(self.dgraph, edge));
|
|
255
255
|
}
|
|
256
256
|
/**
|
|
257
257
|
* Get the condition function for the given parameters.
|
|
@@ -274,7 +274,9 @@ class Plan {
|
|
|
274
274
|
*/
|
|
275
275
|
getOutwardRoutes(src, tgt = null) {
|
|
276
276
|
const self = priv.get(this);
|
|
277
|
-
return self.dgraph
|
|
277
|
+
return self.dgraph
|
|
278
|
+
.outEdges(src, tgt)
|
|
279
|
+
.map((e) => makeRouteObject(self.dgraph, e));
|
|
278
280
|
}
|
|
279
281
|
/**
|
|
280
282
|
* Return all outward routes (out-edges) from the given waypoint, to the
|
|
@@ -285,13 +287,13 @@ class Plan {
|
|
|
285
287
|
* @returns {PlanRoute[]} Route objects found.
|
|
286
288
|
*/
|
|
287
289
|
getPrevOutwardRoutes(src, tgt = null) {
|
|
288
|
-
return this.getOutwardRoutes(src, tgt).filter((r) => r.name ===
|
|
290
|
+
return this.getOutwardRoutes(src, tgt).filter((r) => r.name === "prev");
|
|
289
291
|
}
|
|
290
292
|
/**
|
|
291
293
|
* Add a sequence of waypoints that will follow on from each other, with no
|
|
292
294
|
* routing logic between them.
|
|
293
295
|
*
|
|
294
|
-
* @param
|
|
296
|
+
* @param {...string} waypoints Waypoints to add
|
|
295
297
|
* @returns {void}
|
|
296
298
|
*/
|
|
297
299
|
addSequence(...waypoints) {
|
|
@@ -311,7 +313,7 @@ class Plan {
|
|
|
311
313
|
* @returns {Plan} Chain
|
|
312
314
|
*/
|
|
313
315
|
setNextRoute(src, tgt, follow) {
|
|
314
|
-
return this.setNamedRoute(src, tgt,
|
|
316
|
+
return this.setNamedRoute(src, tgt, "next", follow);
|
|
315
317
|
}
|
|
316
318
|
/**
|
|
317
319
|
* Create a new directed route between two waypoints, labelled as "prev".
|
|
@@ -322,7 +324,7 @@ class Plan {
|
|
|
322
324
|
* @returns {Plan} Chain
|
|
323
325
|
*/
|
|
324
326
|
setPrevRoute(src, tgt, follow) {
|
|
325
|
-
return this.setNamedRoute(src, tgt,
|
|
327
|
+
return this.setNamedRoute(src, tgt, "prev", follow);
|
|
326
328
|
}
|
|
327
329
|
/**
|
|
328
330
|
* Adds both a "next" and "prev" route between the two waypoints.
|
|
@@ -332,8 +334,8 @@ class Plan {
|
|
|
332
334
|
* condition must be true, and so to reverse the direction we also need that
|
|
333
335
|
* same condition to be true.
|
|
334
336
|
*
|
|
335
|
-
* However, if the condition function uses the `source`/`target` property
|
|
336
|
-
*
|
|
337
|
+
* However, if the condition function uses the `source`/`target` property of
|
|
338
|
+
* the route in some way, then we must reverse these before passing to the
|
|
337
339
|
* condition on the "prev" route because `source` in the condition will almost
|
|
338
340
|
* certainly be referring to the source of the "next" route.
|
|
339
341
|
*
|
|
@@ -347,34 +349,39 @@ class Plan {
|
|
|
347
349
|
* @returns {Plan} Chain
|
|
348
350
|
*/
|
|
349
351
|
setRoute(src, tgt, followNext = undefined, followPrev = undefined) {
|
|
350
|
-
this.setNamedRoute(src, tgt,
|
|
352
|
+
this.setNamedRoute(src, tgt, "next", followNext);
|
|
351
353
|
let followPrevious = followPrev;
|
|
352
354
|
if (followPrevious === undefined) {
|
|
353
|
-
followPrevious =
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
355
|
+
followPrevious =
|
|
356
|
+
followNext === undefined
|
|
357
|
+
? undefined
|
|
358
|
+
: (r, c) => {
|
|
359
|
+
const invertedRoute = Object.assign(Object.assign({}, r), { source: r.target, target: r.source });
|
|
360
|
+
return followNext(invertedRoute, c);
|
|
361
|
+
};
|
|
357
362
|
}
|
|
358
|
-
this.setNamedRoute(tgt, src,
|
|
363
|
+
this.setNamedRoute(tgt, src, "prev", followPrevious);
|
|
359
364
|
return this;
|
|
360
365
|
}
|
|
361
366
|
/**
|
|
362
367
|
* Create a named route between two waypoints, and give that route a function
|
|
363
368
|
* that determine whether it should be followed during traversal operations.
|
|
364
|
-
* Note that the source waypoint must be in a successful validation state
|
|
365
|
-
*
|
|
369
|
+
* Note that the source waypoint must be in a successful validation state to
|
|
370
|
+
* be considered for traversal, regardless of what the custom function
|
|
366
371
|
* determines.
|
|
367
372
|
*
|
|
368
373
|
* You may also define routes that take the user to any generic URL within the
|
|
369
|
-
* same domain by using the `url://` protocol. These are considered
|
|
370
|
-
*
|
|
374
|
+
* same domain by using the `url://` protocol. These are considered "exit
|
|
375
|
+
* nodes".
|
|
371
376
|
*
|
|
372
|
-
*
|
|
377
|
+
* SetNamedRoute("my-waypoint", "url:///some/absolute/url");
|
|
373
378
|
*
|
|
374
379
|
* @param {string} src Source waypoint.
|
|
375
380
|
* @param {string} tgt Target waypoint.
|
|
376
|
-
* @param {string} name Name of the route (must be unique for this waypoint
|
|
377
|
-
*
|
|
381
|
+
* @param {string} name Name of the route (must be unique for this waypoint
|
|
382
|
+
* pairing).
|
|
383
|
+
* @param {PlanRouteCondition} follow Test function to determine if route can
|
|
384
|
+
* be followed.
|
|
378
385
|
* @returns {Plan} Chain
|
|
379
386
|
* @throws {Error} If attempting to create a "next" route from an exit node
|
|
380
387
|
*/
|
|
@@ -391,7 +398,7 @@ class Plan {
|
|
|
391
398
|
const conditionName = follow && follow.name;
|
|
392
399
|
// Warn if we're overwriting an existing edge on the same name
|
|
393
400
|
if (self.dgraph.hasEdge(src, tgt, name)) {
|
|
394
|
-
log.warn(
|
|
401
|
+
log.warn("Setting a route that already exists (%s, %s, %s). Will be overridden", src, tgt, name);
|
|
395
402
|
}
|
|
396
403
|
self.dgraph.setEdge(src, tgt, { conditionName }, name);
|
|
397
404
|
// Determine which follow function to use
|
|
@@ -400,20 +407,20 @@ class Plan {
|
|
|
400
407
|
if (!self.options.validateBeforeRouteCondition) {
|
|
401
408
|
followFunc = follow;
|
|
402
409
|
}
|
|
403
|
-
else if (name ===
|
|
410
|
+
else if (name === "next") {
|
|
404
411
|
// Retain the original function name of route condition
|
|
405
412
|
followFunc = {
|
|
406
|
-
[follow.name]: (r, c) =>
|
|
413
|
+
[follow.name]: (r, c) => defaultNextFollow(r, c) && follow(r, c),
|
|
407
414
|
}[follow.name];
|
|
408
415
|
}
|
|
409
416
|
else {
|
|
410
417
|
// Retain the original function name of route condition
|
|
411
418
|
followFunc = {
|
|
412
|
-
[follow.name]: (r, c) =>
|
|
419
|
+
[follow.name]: (r, c) => defaultPrevFollow(r, c) && follow(r, c),
|
|
413
420
|
}[follow.name];
|
|
414
421
|
}
|
|
415
422
|
}
|
|
416
|
-
else if (name ===
|
|
423
|
+
else if (name === "next") {
|
|
417
424
|
followFunc = defaultNextFollow;
|
|
418
425
|
}
|
|
419
426
|
else {
|
|
@@ -425,8 +432,8 @@ class Plan {
|
|
|
425
432
|
return this;
|
|
426
433
|
}
|
|
427
434
|
/**
|
|
428
|
-
* This is a convenience method for traversing all "next" routes, and
|
|
429
|
-
* the IDs of all waypoints visited along the way.
|
|
435
|
+
* This is a convenience method for traversing all "next" routes, and
|
|
436
|
+
* returning the IDs of all waypoints visited along the way.
|
|
430
437
|
*
|
|
431
438
|
* @param {JourneyContext} context Journey Context
|
|
432
439
|
* @param {PlanTraverseOptions} options Options
|
|
@@ -444,7 +451,7 @@ class Plan {
|
|
|
444
451
|
* @returns {PlanRoute[]} List of traversed waypoints
|
|
445
452
|
*/
|
|
446
453
|
traverseNextRoutes(context, options = {}) {
|
|
447
|
-
return this.traverseRoutes(context, Object.assign(Object.assign({}, options), { routeName:
|
|
454
|
+
return this.traverseRoutes(context, Object.assign(Object.assign({}, options), { routeName: "next" }));
|
|
448
455
|
}
|
|
449
456
|
/**
|
|
450
457
|
* Traverse the Plan by following all "prev" routes, and returning the IDs of
|
|
@@ -455,14 +462,15 @@ class Plan {
|
|
|
455
462
|
* @returns {PlanRoute[]} List of traversed waypoints
|
|
456
463
|
*/
|
|
457
464
|
traversePrevRoutes(context, options = {}) {
|
|
458
|
-
return this.traverseRoutes(context, Object.assign(Object.assign({}, options), { routeName:
|
|
465
|
+
return this.traverseRoutes(context, Object.assign(Object.assign({}, options), { routeName: "prev" }));
|
|
459
466
|
}
|
|
460
467
|
/**
|
|
461
468
|
* Traverse through the plan from a particular starting waypoint. This is a
|
|
462
469
|
* non-exhaustive Graph Exploration.
|
|
463
470
|
*
|
|
464
|
-
* The last route in the list will contain the source of the last waypoint
|
|
465
|
-
* can be reached, i.e. The waypoint that has no further satisfiable
|
|
471
|
+
* The last route in the list will contain the source of the last waypoint
|
|
472
|
+
* that can be reached, i.e. The waypoint that has no further satisfiable
|
|
473
|
+
* out-edges.
|
|
466
474
|
*
|
|
467
475
|
* If a cyclical set of routes are encountered, traversal will stop after
|
|
468
476
|
* reaching the first repeated waypoint.
|
|
@@ -478,7 +486,7 @@ class Plan {
|
|
|
478
486
|
}
|
|
479
487
|
const self = priv.get(this);
|
|
480
488
|
/** @type {PlanTraverseOptions} */
|
|
481
|
-
const { startWaypoint = this.getWaypoints()[0], stopCondition = () =>
|
|
489
|
+
const { startWaypoint = this.getWaypoints()[0], stopCondition = () => false, arbiter = self.options.arbiter, routeName, } = options;
|
|
482
490
|
if (!self.dgraph.hasNode(startWaypoint)) {
|
|
483
491
|
throw new ReferenceError(`Plan does not contain waypoint '${startWaypoint}'`);
|
|
484
492
|
}
|
|
@@ -503,9 +511,9 @@ class Plan {
|
|
|
503
511
|
// When there's more than one candidate route to take, we need help to choose
|
|
504
512
|
if (target.length > 1) {
|
|
505
513
|
const satisfied = target.map((t) => `${t.v} -> ${t.w}`);
|
|
506
|
-
log.debug(`Multiple routes were satisfied for "${routeName}" from "${startWP}" (${satisfied.join(
|
|
507
|
-
if (arbiter ===
|
|
508
|
-
log.debug(
|
|
514
|
+
log.debug(`Multiple routes were satisfied for "${routeName}" from "${startWP}" (${satisfied.join(" / ")}). Deciding how to resolve ...`);
|
|
515
|
+
if (arbiter === "auto") {
|
|
516
|
+
log.debug("Using automatic arbitration process");
|
|
509
517
|
const targetNames = target.map(({ w }) => w);
|
|
510
518
|
const forwardTraversal = this.traverseNextRoutes(context, {
|
|
511
519
|
stopCondition: ({ source }) => targetNames.includes(source),
|
|
@@ -514,7 +522,7 @@ class Plan {
|
|
|
514
522
|
target = target.filter((t) => t.w === resolved.source);
|
|
515
523
|
}
|
|
516
524
|
else if (arbiter instanceof Function) {
|
|
517
|
-
log.debug(
|
|
525
|
+
log.debug("Using custom arbitration process");
|
|
518
526
|
// Convert to routeObject and back to edge object so that only the
|
|
519
527
|
// routeObject is used in the public API
|
|
520
528
|
target = arbiter({
|
|
@@ -522,10 +530,14 @@ class Plan {
|
|
|
522
530
|
journeyContext: context,
|
|
523
531
|
travereOptions: options,
|
|
524
532
|
});
|
|
525
|
-
target = target.map((r) => ({
|
|
533
|
+
target = target.map((r) => ({
|
|
534
|
+
v: r.source,
|
|
535
|
+
w: r.target,
|
|
536
|
+
name: r.name,
|
|
537
|
+
}));
|
|
526
538
|
}
|
|
527
539
|
else {
|
|
528
|
-
log.warn(
|
|
540
|
+
log.warn("Unable to arbitrate");
|
|
529
541
|
target = [];
|
|
530
542
|
}
|
|
531
543
|
}
|
|
@@ -548,14 +560,16 @@ class Plan {
|
|
|
548
560
|
}
|
|
549
561
|
return results;
|
|
550
562
|
}
|
|
551
|
-
log.debug(
|
|
563
|
+
log.debug("Encountered loop (%s). Stopping traversal.", `${route.source} -> ${route.target}`);
|
|
552
564
|
}
|
|
553
|
-
return [
|
|
565
|
+
return [
|
|
566
|
+
makeRouteObject(self.dgraph, {
|
|
554
567
|
v: startWP,
|
|
555
568
|
w: null,
|
|
556
569
|
name: routeName,
|
|
557
570
|
label: {},
|
|
558
|
-
})
|
|
571
|
+
}),
|
|
572
|
+
];
|
|
559
573
|
};
|
|
560
574
|
return traverse(startWaypoint);
|
|
561
575
|
}
|
package/dist/lib/Plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plan.js","sourceRoot":"","sources":["../../src/lib/Plan.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Plan.js","sourceRoot":"","sources":["../../src/lib/Plan.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAA0C;AAC1C,4EAAiD;AACjD,4DAAiC;AAEjC,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,UAAU,CAAC,CAAC;AAE/B;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,CAAC,EAAE,OAAO;IACnC,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAClD,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAC1E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,CAAC,EAAE,OAAO;IACnC,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAClD,OAAO,CACL,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAC1E,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,GAAG;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CACjB,4CAA4C,OAAO,GAAG,EAAE,CACzD,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,WAAW,CAAC,4CAA4C,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,GAAG;IAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CACjB,2CAA2C,OAAO,GAAG,EAAE,CACxD,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,cAAc,CACtB,sDAAsD,GAAG,EAAE,CAC5D,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,GAAG;IACjC,IAAI,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,SAAS,CACjB,kDAAkD,OAAO,GAAG,EAAE,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,CAAC;QACd,MAAM,EAAE,IAAI,CAAC,CAAC;QACd,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,aAAa;QACb,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;AAE3B,uCAAuC;AACvC,MAAqB,IAAI;IAIvB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI;QACpB,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,YAAY,IAAI,GAAG,EAAE;QAnBrB,sDAAsD;QACtD,2CAAoB;QAmBlB,kDAAkD;QAClD,MAAM,MAAM,GAAG,IAAI,gBAAK,CAAC;YACvB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,iBAAiB;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EACnB;YACE,0EAA0E;YAC1E,0EAA0E;YAC1E,4BAA4B,EAAE,IAAI;YAElC,wBAAwB;YACxB,OAAO,EAAE,SAAS;SACnB,EACD,IAAI,CACL,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YACb,MAAM;YACN,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,EAAE;aACT;YACD,OAAO;SACR,CAAC,CAAC;QAEH,uBAAA,IAAI,4BAAuB,EAAE,MAAA,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,OAAO,uBAAA,IAAI,gCAAoB,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,GAAG,SAAS;QACxB,uBAAA,IAAI,4BAAuB,CAAC,GAAG,uBAAA,IAAI,gCAAoB,EAAE,GAAG,SAAS,CAAC,MAAA,CAAC;QACvE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,QAAQ;QAClB,OAAO,uBAAA,IAAI,gCAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAC,QAAQ;QACvB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM;aACf,KAAK,EAAE;aACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,MAAM;aACf,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,SAAS;QACtB,4EAA4E;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,uCAAuC;YACvC,+DAA+D;YAC/D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,GAAG,SAAS,EAAE,UAAU,GAAG,SAAS;QAC/D,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAEjD,IAAI,cAAc,GAAG,UAAU,CAAC;QAChC,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,cAAc;gBACZ,UAAU,KAAK,SAAS;oBACtB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;wBACP,MAAM,aAAa,mCACd,CAAC,KACJ,MAAM,EAAE,CAAC,CAAC,MAAM,EAChB,MAAM,EAAE,CAAC,CAAC,MAAM,GACjB,CAAC;wBACF,OAAO,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;oBACtC,CAAC,CAAC;QACV,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE5B,WAAW;QACX,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACxB,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,0CAA0C;QAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC;QAE5C,8DAA8D;QAC9D,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CACN,sEAAsE,EACtE,GAAG,EACH,GAAG,EACH,IAAI,CACL,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAAC;QAEvD,yCAAyC;QACzC,IAAI,UAAU,CAAC;QACf,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC;gBAC/C,UAAU,GAAG,MAAM,CAAC;YACtB,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,uDAAuD;gBACvD,UAAU,GAAG;oBACX,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;iBACjE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,uDAAuD;gBACvD,UAAU,GAAG;oBACX,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;iBACjE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,UAAU,GAAG,iBAAiB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,iBAAiB,CAAC;QACjC,CAAC;QAED,6DAA6D;QAC7D,+DAA+D;QAC/D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC;QAEjD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE;QAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,kCAAO,OAAO,KAAE,SAAS,EAAE,MAAM,IAAG,CAAC;IACzE,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,kCAAO,OAAO,KAAE,SAAS,EAAE,MAAM,IAAG,CAAC;IACzE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE;QAClC,IAAI,CAAC,CAAC,OAAO,YAAY,2BAAc,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,SAAS,CACjB,6DAA6D,OAAO,OAAO,EAAE,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE5B,kCAAkC;QAClC,MAAM,EACJ,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EACtC,aAAa,GAAG,GAAG,EAAE,CAAC,KAAK,EAC3B,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAC9B,SAAS,GACV,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,cAAc,CACtB,mCAAmC,aAAa,GAAG,CACpD,CAAC;QACJ,CAAC;QAED,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAE1B,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,KAAK,CAAC;gBACf,CAAC;gBACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9C,IAAI,CAAC;oBACH,kEAAkE;oBAClE,+DAA+D;oBAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAClE,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACZ,GAAG,CAAC,IAAI,CACN,qDAAqD,EACrD,EAAE,CAAC,OAAO,EACV,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CACnB,CAAC;oBACF,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,6EAA6E;YAC7E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACxD,GAAG,CAAC,KAAK,CACP,uCAAuC,SAAS,WAAW,OAAO,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAC9H,CAAC;gBAEF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;oBACvB,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBACjD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;wBACxD,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;qBAC5D,CAAC,CAAC;oBACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC;oBACxC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACzD,CAAC;qBAAM,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;oBACvC,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBAC9C,kEAAkE;oBAClE,wCAAwC;oBACxC,MAAM,GAAG,OAAO,CAAC;wBACf,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;wBAC3D,cAAc,EAAE,OAAO;wBACvB,cAAc,EAAE,OAAO;qBACxB,CAAC,CAAC;oBACH,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM;wBACX,CAAC,EAAE,CAAC,CAAC,MAAM;wBACX,IAAI,EAAE,CAAC,CAAC,IAAI;qBACb,CAAC,CAAC,CAAC;gBACN,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;oBAChC,MAAM,GAAG,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAElE,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;oBACnC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;oBACzC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;oBAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;wBACnC,uCAAuC;wBACvC,+DAA+D;wBAC/D,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAChC,CAAC;oBAED,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,GAAG,CAAC,KAAK,CACP,4CAA4C,EAC5C,GAAG,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,EAAE,CACrC,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC3B,CAAC,EAAE,OAAO;oBACV,CAAC,EAAE,IAAI;oBACP,IAAI,EAAE,SAAS;oBACf,KAAK,EAAE,EAAE;iBACV,CAAC;aACH,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;;kBA7foB,IAAI"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @typedef {import("../casa").ValidateContext} ValidateContext
|
|
2
3
|
* @access private
|
|
3
|
-
* @typedef {import('../casa').ValidateContext} ValidateContext
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
+
* @typedef {import("../casa").ErrorMessageConfig} ErrorMessageConfig
|
|
6
7
|
* @access private
|
|
7
|
-
* @typedef {import('../casa').ErrorMessageConfig} ErrorMessageConfig
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
+
* @typedef {import("../casa").ErrorMessageConfigObject} ErrorMessageConfigObject
|
|
10
11
|
* @access private
|
|
11
|
-
* @typedef {import('../casa').ErrorMessageConfigObject} ErrorMessageConfigObject
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
14
|
-
* @class
|
|
15
14
|
* @memberof module:@dwp/govuk-casa
|
|
15
|
+
* @class
|
|
16
16
|
*/
|
|
17
17
|
export default class ValidationError {
|
|
18
18
|
/**
|
|
@@ -21,18 +21,19 @@ export default class ValidationError {
|
|
|
21
21
|
* <br/><br/>
|
|
22
22
|
*
|
|
23
23
|
* In the case of `errorMsg` being a function, this will be called at runtime,
|
|
24
|
-
* at the point that errors are generated within the `validate()`,
|
|
25
|
-
*
|
|
26
|
-
* <br/><br/>
|
|
24
|
+
* at the point that errors are generated within the `validate()`, methods,
|
|
25
|
+
* and will be passed the `dataContext`. <br/><br/>
|
|
27
26
|
*
|
|
28
27
|
* `dataContext` is an object containing the same data passed to all
|
|
29
|
-
* validators' `validate()` methods. In the case of `errorMsg` being
|
|
30
|
-
*
|
|
28
|
+
* validators' `validate()` methods. In the case of `errorMsg` being a
|
|
29
|
+
* function, this data is passed to that function in order to help resolve to
|
|
31
30
|
* an error message config object.
|
|
32
31
|
*
|
|
33
32
|
* @param {object} args Arguments
|
|
34
|
-
* @param {ErrorMessageConfig} args.errorMsg Error message config to seed
|
|
35
|
-
*
|
|
33
|
+
* @param {ErrorMessageConfig} args.errorMsg Error message config to seed
|
|
34
|
+
* ValidationError
|
|
35
|
+
* @param {ValidateContext} [args.dataContext={}] Data for error msg function.
|
|
36
|
+
* Default is `{}`
|
|
36
37
|
* @returns {ValidationError} Error instance
|
|
37
38
|
* @throws {TypeError} If errorMsg is not in a valid type
|
|
38
39
|
*/
|
|
@@ -43,7 +44,7 @@ export default class ValidationError {
|
|
|
43
44
|
/**
|
|
44
45
|
* Create a ValidationError.
|
|
45
46
|
*
|
|
46
|
-
* @param {string|ErrorMessageConfigObject} errorParam Error configuration
|
|
47
|
+
* @param {string | ErrorMessageConfigObject} errorParam Error configuration
|
|
47
48
|
*/
|
|
48
49
|
constructor(errorParam?: string | ErrorMessageConfigObject);
|
|
49
50
|
/**
|
|
@@ -59,6 +60,6 @@ export default class ValidationError {
|
|
|
59
60
|
focusSuffix: any;
|
|
60
61
|
validator: string | undefined;
|
|
61
62
|
}
|
|
62
|
-
export type ValidateContext = import(
|
|
63
|
-
export type ErrorMessageConfig = import(
|
|
64
|
-
export type ErrorMessageConfigObject = import(
|
|
63
|
+
export type ValidateContext = import("../casa").ValidateContext;
|
|
64
|
+
export type ErrorMessageConfig = import("../casa").ErrorMessageConfig;
|
|
65
|
+
export type ErrorMessageConfigObject = import("../casa").ErrorMessageConfigObject;
|
|
@@ -7,20 +7,20 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
7
7
|
const { isPlainObject } = lodash_1.default; // CommonJS
|
|
8
8
|
const params = new WeakMap();
|
|
9
9
|
/**
|
|
10
|
+
* @typedef {import("../casa").ValidateContext} ValidateContext
|
|
10
11
|
* @access private
|
|
11
|
-
* @typedef {import('../casa').ValidateContext} ValidateContext
|
|
12
12
|
*/
|
|
13
13
|
/**
|
|
14
|
+
* @typedef {import("../casa").ErrorMessageConfig} ErrorMessageConfig
|
|
14
15
|
* @access private
|
|
15
|
-
* @typedef {import('../casa').ErrorMessageConfig} ErrorMessageConfig
|
|
16
16
|
*/
|
|
17
17
|
/**
|
|
18
|
+
* @typedef {import("../casa").ErrorMessageConfigObject} ErrorMessageConfigObject
|
|
18
19
|
* @access private
|
|
19
|
-
* @typedef {import('../casa').ErrorMessageConfigObject} ErrorMessageConfigObject
|
|
20
20
|
*/
|
|
21
21
|
/**
|
|
22
|
-
* @class
|
|
23
22
|
* @memberof module:@dwp/govuk-casa
|
|
23
|
+
* @class
|
|
24
24
|
*/
|
|
25
25
|
class ValidationError {
|
|
26
26
|
/**
|
|
@@ -29,24 +29,25 @@ class ValidationError {
|
|
|
29
29
|
* <br/><br/>
|
|
30
30
|
*
|
|
31
31
|
* In the case of `errorMsg` being a function, this will be called at runtime,
|
|
32
|
-
* at the point that errors are generated within the `validate()`,
|
|
33
|
-
*
|
|
34
|
-
* <br/><br/>
|
|
32
|
+
* at the point that errors are generated within the `validate()`, methods,
|
|
33
|
+
* and will be passed the `dataContext`. <br/><br/>
|
|
35
34
|
*
|
|
36
35
|
* `dataContext` is an object containing the same data passed to all
|
|
37
|
-
* validators' `validate()` methods. In the case of `errorMsg` being
|
|
38
|
-
*
|
|
36
|
+
* validators' `validate()` methods. In the case of `errorMsg` being a
|
|
37
|
+
* function, this data is passed to that function in order to help resolve to
|
|
39
38
|
* an error message config object.
|
|
40
39
|
*
|
|
41
40
|
* @param {object} args Arguments
|
|
42
|
-
* @param {ErrorMessageConfig} args.errorMsg Error message config to seed
|
|
43
|
-
*
|
|
41
|
+
* @param {ErrorMessageConfig} args.errorMsg Error message config to seed
|
|
42
|
+
* ValidationError
|
|
43
|
+
* @param {ValidateContext} [args.dataContext={}] Data for error msg function.
|
|
44
|
+
* Default is `{}`
|
|
44
45
|
* @returns {ValidationError} Error instance
|
|
45
46
|
* @throws {TypeError} If errorMsg is not in a valid type
|
|
46
47
|
*/
|
|
47
48
|
static make({ errorMsg, dataContext = {} }) {
|
|
48
49
|
// Convert strings to the most basic object primitive
|
|
49
|
-
if (typeof errorMsg ===
|
|
50
|
+
if (typeof errorMsg === "string") {
|
|
50
51
|
return new ValidationError({
|
|
51
52
|
summary: errorMsg,
|
|
52
53
|
inline: errorMsg,
|
|
@@ -60,7 +61,7 @@ class ValidationError {
|
|
|
60
61
|
}
|
|
61
62
|
// Use the user-defined function to generate an error primitive for the
|
|
62
63
|
// given context
|
|
63
|
-
if (typeof errorMsg ===
|
|
64
|
+
if (typeof errorMsg === "function") {
|
|
64
65
|
return new ValidationError(errorMsg.call(null, Object.assign({}, dataContext)));
|
|
65
66
|
}
|
|
66
67
|
// Core Error
|
|
@@ -72,18 +73,18 @@ class ValidationError {
|
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
75
|
// Unsupported
|
|
75
|
-
throw new TypeError(
|
|
76
|
+
throw new TypeError("errorMsg must be a string, Error, primitive object or function that generates a primitive object");
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
78
79
|
* Create a ValidationError.
|
|
79
80
|
*
|
|
80
|
-
* @param {string|ErrorMessageConfigObject} errorParam Error configuration
|
|
81
|
+
* @param {string | ErrorMessageConfigObject} errorParam Error configuration
|
|
81
82
|
*/
|
|
82
83
|
constructor(errorParam = {}) {
|
|
83
|
-
if (!isPlainObject(errorParam) && typeof errorParam !==
|
|
84
|
-
throw new TypeError(
|
|
84
|
+
if (!isPlainObject(errorParam) && typeof errorParam !== "string") {
|
|
85
|
+
throw new TypeError("Constructor requires a string or object");
|
|
85
86
|
}
|
|
86
|
-
const error = typeof errorParam ===
|
|
87
|
+
const error = typeof errorParam === "string" ? { summary: errorParam } : errorParam;
|
|
87
88
|
// Store parameters for later use in applying contexts
|
|
88
89
|
const originals = {
|
|
89
90
|
summary: error.summary,
|
|
@@ -123,7 +124,7 @@ class ValidationError {
|
|
|
123
124
|
// Get original constructor parameters
|
|
124
125
|
const originals = params.get(this);
|
|
125
126
|
// Expand variables
|
|
126
|
-
if (typeof originals.variables ===
|
|
127
|
+
if (typeof originals.variables === "function") {
|
|
127
128
|
this.variables = originals.variables.call(this, context);
|
|
128
129
|
}
|
|
129
130
|
// Set field name
|
|
@@ -139,7 +140,7 @@ class ValidationError {
|
|
|
139
140
|
: [originals.focusSuffix];
|
|
140
141
|
fieldHref += focusSuffix[0];
|
|
141
142
|
}
|
|
142
|
-
this.field = context.fieldName + (originals.fieldKeySuffix ||
|
|
143
|
+
this.field = context.fieldName + (originals.fieldKeySuffix || "");
|
|
143
144
|
this.fieldHref = fieldHref;
|
|
144
145
|
this.focusSuffix = focusSuffix || [];
|
|
145
146
|
}
|