@dwp/govuk-casa 9.3.3 → 9.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/css/casa.css +1 -1
- package/dist/assets/css/casa.css.map +1 -1
- package/dist/lib/CasaTemplateLoader.js +22 -28
- package/dist/lib/CasaTemplateLoader.js.map +1 -1
- package/dist/lib/JourneyContext.js +86 -112
- package/dist/lib/JourneyContext.js.map +1 -1
- package/dist/lib/MutableRouter.js +71 -80
- package/dist/lib/MutableRouter.js.map +1 -1
- package/dist/lib/Plan.js +15 -26
- package/dist/lib/Plan.js.map +1 -1
- package/dist/lib/ValidationError.js +3 -3
- package/dist/lib/ValidationError.js.map +1 -1
- package/dist/lib/configuration-ingestor.js +21 -10
- package/dist/lib/configuration-ingestor.js.map +1 -1
- package/dist/lib/configure.js +18 -17
- package/dist/lib/configure.js.map +1 -1
- package/dist/lib/end-session.js +5 -5
- package/dist/lib/end-session.js.map +1 -1
- package/dist/lib/field.js +56 -65
- package/dist/lib/field.js.map +1 -1
- package/dist/lib/nunjucks-filters.js +6 -6
- package/dist/lib/nunjucks-filters.js.map +1 -1
- package/dist/lib/nunjucks.js +3 -3
- package/dist/lib/nunjucks.js.map +1 -1
- package/dist/lib/utils.js +6 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/validators/dateObject.js +23 -14
- package/dist/lib/validators/dateObject.js.map +1 -1
- package/dist/lib/validators/email.js +2 -5
- package/dist/lib/validators/email.js.map +1 -1
- package/dist/lib/validators/inArray.js +2 -5
- package/dist/lib/validators/inArray.js.map +1 -1
- package/dist/lib/validators/nino.js +1 -4
- package/dist/lib/validators/nino.js.map +1 -1
- package/dist/lib/validators/postalAddressObject.js +26 -19
- package/dist/lib/validators/postalAddressObject.js.map +1 -1
- package/dist/lib/validators/range.js +2 -6
- package/dist/lib/validators/range.js.map +1 -1
- package/dist/lib/validators/regex.js +1 -4
- package/dist/lib/validators/regex.js.map +1 -1
- package/dist/lib/validators/required.js +1 -4
- package/dist/lib/validators/required.js.map +1 -1
- package/dist/lib/validators/strlen.js +1 -4
- package/dist/lib/validators/strlen.js.map +1 -1
- package/dist/lib/validators/wordCount.js +1 -4
- package/dist/lib/validators/wordCount.js.map +1 -1
- package/dist/middleware/csrf.js +4 -2
- package/dist/middleware/csrf.js.map +1 -1
- package/dist/middleware/data.js +17 -10
- package/dist/middleware/data.js.map +1 -1
- package/dist/middleware/i18n.d.ts +1 -1
- package/dist/middleware/i18n.js +16 -16
- package/dist/middleware/i18n.js.map +1 -1
- package/dist/middleware/post.js +9 -7
- package/dist/middleware/post.js.map +1 -1
- package/dist/middleware/pre.js +2 -2
- package/dist/middleware/pre.js.map +1 -1
- package/dist/middleware/sanitise-fields.d.ts +1 -1
- package/dist/middleware/sanitise-fields.js +1 -2
- package/dist/middleware/sanitise-fields.js.map +1 -1
- package/dist/middleware/session.js +11 -6
- package/dist/middleware/session.js.map +1 -1
- package/dist/middleware/strip-proxy-path.js +1 -2
- 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 +1 -2
- package/dist/middleware/validate-fields.js.map +1 -1
- package/dist/routes/journey.js +15 -11
- package/dist/routes/journey.js.map +1 -1
- package/dist/routes/static.js +8 -9
- package/dist/routes/static.js.map +1 -1
- package/package.json +23 -22
- package/src/lib/JourneyContext.js +22 -19
- package/src/lib/MutableRouter.js +2 -2
- package/src/lib/Plan.js +2 -8
- package/src/lib/ValidationError.js +2 -2
- package/src/lib/configuration-ingestor.js +21 -12
- package/src/lib/configure.js +14 -11
- package/src/lib/end-session.js +5 -5
- package/src/lib/nunjucks-filters.js +6 -6
- package/src/lib/nunjucks.js +2 -2
- package/src/lib/validators/dateObject.js +5 -5
- package/src/lib/validators/postalAddressObject.js +8 -10
- package/src/middleware/data.js +4 -7
- package/src/middleware/i18n.js +9 -9
- package/src/middleware/pre.js +1 -1
- package/src/middleware/sanitise-fields.js +1 -2
- package/src/routes/journey.js +2 -2
- package/src/routes/static.js +4 -4
package/dist/middleware/data.js
CHANGED
|
@@ -6,16 +6,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
};
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.default = dataMiddleware;
|
|
9
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
10
9
|
const JourneyContext_js_1 = __importDefault(require("../lib/JourneyContext.js"));
|
|
11
10
|
const utils_js_1 = require("../lib/utils.js");
|
|
12
11
|
const waypoint_url_js_1 = __importDefault(require("../lib/waypoint-url.js"));
|
|
13
|
-
const { has } = lodash_1.default;
|
|
14
12
|
const editOrigin = (req) => {
|
|
15
|
-
if (
|
|
13
|
+
if (Object.hasOwn(req.query, "editorigin")) {
|
|
16
14
|
return (0, waypoint_url_js_1.default)({ waypoint: req.query.editorigin });
|
|
17
15
|
}
|
|
18
|
-
if (
|
|
16
|
+
if (req.body && Object.hasOwn(req.body, "editorigin")) {
|
|
19
17
|
return (0, waypoint_url_js_1.default)({ waypoint: req.body.editorigin });
|
|
20
18
|
}
|
|
21
19
|
return "";
|
|
@@ -25,15 +23,18 @@ function dataMiddleware({ plan, events, contextIdGenerator }) {
|
|
|
25
23
|
(req, res, next) => {
|
|
26
24
|
/* ------------------------------------------------ Request decorations */
|
|
27
25
|
// CASA
|
|
28
|
-
req.casa =
|
|
26
|
+
req.casa = {
|
|
27
|
+
...req?.casa,
|
|
29
28
|
// The plan
|
|
30
|
-
plan,
|
|
29
|
+
plan,
|
|
31
30
|
// Current journey context, loaded from session, specified by
|
|
32
31
|
// `contextid` request parameter
|
|
33
|
-
journeyContext: JourneyContext_js_1.default.extractContextFromRequest(req).addEventListeners(events),
|
|
32
|
+
journeyContext: JourneyContext_js_1.default.extractContextFromRequest(req).addEventListeners(events),
|
|
34
33
|
// Edit mode
|
|
35
|
-
editMode: (
|
|
36
|
-
(
|
|
34
|
+
editMode: (Object.hasOwn(req.query, "edit") && Object.hasOwn(req.query, "editorigin")) ||
|
|
35
|
+
(Object.hasOwn(req.body, "edit") && Object.hasOwn(req.body, "editorigin")),
|
|
36
|
+
editOrigin: editOrigin(req),
|
|
37
|
+
};
|
|
37
38
|
// Grab chosen language from session
|
|
38
39
|
req.casa.journeyContext.nav.language = req.session.language;
|
|
39
40
|
// Context ID generator
|
|
@@ -83,7 +84,13 @@ function dataMiddleware({ plan, events, contextIdGenerator }) {
|
|
|
83
84
|
// the template author does not have to be concerned about the current
|
|
84
85
|
// "state" when generating URLs, but still has the ability to override
|
|
85
86
|
// these curried defaults if needs be.
|
|
86
|
-
res.locals.waypointUrl = (args) => (0, waypoint_url_js_1.default)(
|
|
87
|
+
res.locals.waypointUrl = (args) => (0, waypoint_url_js_1.default)({
|
|
88
|
+
mountUrl,
|
|
89
|
+
journeyContext: req.casa.journeyContext,
|
|
90
|
+
edit: req.casa.editMode,
|
|
91
|
+
editOrigin: req.casa.editOrigin,
|
|
92
|
+
...args,
|
|
93
|
+
});
|
|
87
94
|
next();
|
|
88
95
|
},
|
|
89
96
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,gFAAgF;;;;;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,gFAAgF;;;;;AAgBhF,iCAgGC;AA9GD,iFAAsD;AACtD,8CAAkD;AAClD,6EAAiD;AAEjD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,EAAE;IACzB,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAA,yBAAW,EAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;QACtD,OAAO,IAAA,yBAAW,EAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,SAAwB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACzE,OAAO;QACL,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACjB,0EAA0E;YAE1E,OAAO;YACP,GAAG,CAAC,IAAI,GAAG;gBACT,GAAG,GAAG,EAAE,IAAI;gBAEZ,WAAW;gBACX,IAAI;gBAEJ,6DAA6D;gBAC7D,gCAAgC;gBAChC,cAAc,EACZ,2BAAc,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAC7D,MAAM,CACP;gBAEH,YAAY;gBACZ,QAAQ,EACN,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;oBAC5E,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBAC5E,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC;aAC5B,CAAC;YAEF,oCAAoC;YACpC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YAE5D,uBAAuB;YACvB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,2BAAc,CAAC,oBAAoB,EAAE;gBAC9D,KAAK,EAAE,kBAAkB;gBACzB,UAAU,EAAE,KAAK;gBACjB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YAEH,0EAA0E;YAE1E,qEAAqE;YACrE,MAAM,QAAQ,GAAG,IAAA,0BAAe,EAAC,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;YAEzE,wEAAwE;YACxE,uEAAuE;YACvE,uCAAuC;YACvC,+DAA+D;YAC/D,uDAAuD;YACvD,mCAAmC;YACnC,EAAE;YACF,yEAAyE;YACzE,sEAAsE;YACtE,0EAA0E;YAC1E,6BAA6B;YAC7B,qEAAqE;YACrE,wCAAwC;YACxC,yBAAyB;YACzB,EAAE;YACF,wEAAwE;YACxE,qEAAqE;YACrE,uEAAuE;YACvE,0DAA0D;YAC1D,MAAM,cAAc,GAAG,IAAA,0BAAe,EACpC,GAAG,GAAG,CAAC,sBAAsB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACtD,CAAC;YAEF,8BAA8B;YAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG;gBAChB,QAAQ;gBACR,cAAc;gBACd,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;gBAC3B,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;aAChC,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;YAEjC,kCAAkC;YAClC,gEAAgE;YAChE,+EAA+E;YAC/E,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YACnC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,cAAc,cAAc,CAAC;YAEvD,wEAAwE;YACxE,wEAAwE;YACxE,sEAAsE;YACtE,sEAAsE;YACtE,sCAAsC;YACtC,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,EAAE,EAAE,CAChC,IAAA,yBAAW,EAAC;gBACV,QAAQ;gBACR,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc;gBACvC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU;gBAC/B,GAAG,IAAI;aACR,CAAC,CAAC;YAEL,IAAI,EAAE,CAAC;QACT,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/middleware/i18n.js
CHANGED
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.default = i18nMiddleware;
|
|
7
7
|
const i18next_1 = require("i18next");
|
|
8
8
|
const i18next_http_middleware_1 = require("i18next-http-middleware");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const node_fs_1 = require("node:fs");
|
|
11
11
|
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
12
12
|
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
13
13
|
const logger_js_1 = __importDefault(require("../lib/logger.js"));
|
|
@@ -16,44 +16,44 @@ const loadJson = (file) => {
|
|
|
16
16
|
// Strip out newlines (this is a legacy feature which we're keeping for
|
|
17
17
|
// backwards compatibility).
|
|
18
18
|
/* eslint-disable-next-line security/detect-non-literal-fs-filename */
|
|
19
|
-
const json = (0,
|
|
19
|
+
const json = (0, node_fs_1.readFileSync)(file, "utf8");
|
|
20
20
|
return JSON.parse(json.replace(/[\r\n]/g, ""));
|
|
21
21
|
};
|
|
22
22
|
/* eslint-disable-next-line security/detect-non-literal-fs-filename */
|
|
23
|
-
const loadYaml = (file) => js_yaml_1.default.load((0,
|
|
23
|
+
const loadYaml = (file) => js_yaml_1.default.load((0, node_fs_1.readFileSync)(file, "utf8"));
|
|
24
24
|
const extract = (file) => {
|
|
25
25
|
const ext = /.yaml$/i.test(file) ? ".yaml" : ".json";
|
|
26
26
|
const data = ext === ".yaml" ? loadYaml(file) : loadJson(file);
|
|
27
27
|
return {
|
|
28
|
-
ns: (0,
|
|
28
|
+
ns: (0, node_path_1.basename)(file, ext),
|
|
29
29
|
data,
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
const loadResources = (languages, directories) => {
|
|
33
33
|
const store = Object.create(null);
|
|
34
|
-
|
|
34
|
+
for (const language of languages) {
|
|
35
35
|
// ESLint disabled as `store`, `language` and `ns` are all dev-controlled,
|
|
36
36
|
// and this function is only called once, at boot-time.
|
|
37
37
|
/* eslint-disable security/detect-object-injection */
|
|
38
38
|
store[language] = Object.create(null);
|
|
39
|
-
|
|
40
|
-
const dir = (0,
|
|
39
|
+
for (const basedir of directories) {
|
|
40
|
+
const dir = (0, node_path_1.resolve)(basedir, language);
|
|
41
41
|
/* eslint-disable-next-line security/detect-non-literal-fs-filename */
|
|
42
|
-
if (!(0,
|
|
43
|
-
|
|
42
|
+
if (!(0, node_fs_1.existsSync)(dir)) {
|
|
43
|
+
continue;
|
|
44
44
|
}
|
|
45
45
|
log.info("Loading %s language from %s ...", language, dir);
|
|
46
46
|
/* eslint-disable-next-line security/detect-non-literal-fs-filename */
|
|
47
|
-
(0,
|
|
48
|
-
const { ns, data } = extract((0,
|
|
47
|
+
for (const file of (0, node_fs_1.readdirSync)(dir)) {
|
|
48
|
+
const { ns, data } = extract((0, node_path_1.resolve)(dir, file));
|
|
49
49
|
if (store[language][ns] === undefined) {
|
|
50
50
|
store[language][ns] = Object.create(null);
|
|
51
51
|
}
|
|
52
52
|
store[language][ns] = (0, deepmerge_1.default)(store[language][ns], data);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
55
|
/* eslint-enable security/detect-object-injection */
|
|
56
|
-
}
|
|
56
|
+
}
|
|
57
57
|
return store;
|
|
58
58
|
};
|
|
59
59
|
function i18nMiddleware({ languages = ["en", "cy"], directories = [], }) {
|
|
@@ -84,7 +84,7 @@ function i18nMiddleware({ languages = ["en", "cy"], directories = [], }) {
|
|
|
84
84
|
/* eslint-disable-next-line prefer-destructuring */
|
|
85
85
|
req.session.language = languages[0];
|
|
86
86
|
}
|
|
87
|
-
if (
|
|
87
|
+
if (req?.query.lang && languages.includes(req.query.lang)) {
|
|
88
88
|
req.session.language = String(req.query.lang);
|
|
89
89
|
}
|
|
90
90
|
next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/middleware/i18n.js"],"names":[],"mappings":";;;;;AAiEA,iCA0CC;AA3GD,qCAAyC;AACzC,qEAAmE;AACnE
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/middleware/i18n.js"],"names":[],"mappings":"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"}
|
package/dist/middleware/post.js
CHANGED
|
@@ -14,32 +14,34 @@ function postMiddleware() {
|
|
|
14
14
|
},
|
|
15
15
|
/* eslint-disable-next-line no-unused-vars */
|
|
16
16
|
(err, req, res, next) => {
|
|
17
|
-
var _a;
|
|
18
17
|
// In some cases, an error may have been thrown before the template assets
|
|
19
18
|
// have had a chance to initialise. So we use a hardcoded template in
|
|
20
19
|
// these cases to ensure the user sees an appropriate message.
|
|
21
20
|
let TEMPLATE = "casa/errors/500.njk";
|
|
22
21
|
if (!res.locals.t) {
|
|
23
22
|
res.locals.t = () => "";
|
|
24
|
-
res.locals.casa =
|
|
23
|
+
res.locals.casa = {
|
|
24
|
+
...res.locals?.casa,
|
|
25
|
+
mountUrl: `${req.baseUrl}/`,
|
|
26
|
+
};
|
|
25
27
|
TEMPLATE = "casa/errors/static.njk";
|
|
26
28
|
}
|
|
27
29
|
// CSRF token is invalid in some way
|
|
28
|
-
if (
|
|
30
|
+
if (err?.code === "EBADCSRFTOKEN") {
|
|
29
31
|
log.info("CSRF validation has failed. This may be caused by the user submitting a stale form from a previous session [EBADCSRFTOKEN]");
|
|
30
32
|
return res
|
|
31
33
|
.status(403)
|
|
32
34
|
.render(TEMPLATE, { errorCode: "bad_csrf_token", error: err });
|
|
33
35
|
}
|
|
34
36
|
// Body parsing verification check failed
|
|
35
|
-
if (
|
|
37
|
+
if (err?.type === "entity.verify.failed") {
|
|
36
38
|
log.info("Body parser verification has failed. This has been caused by the user submitting a payload containing invalid data [entity.verify.failed]");
|
|
37
39
|
return res
|
|
38
40
|
.status(403)
|
|
39
41
|
.render(TEMPLATE, { errorCode: "invalid_payload", error: err });
|
|
40
42
|
}
|
|
41
43
|
// Too many parameters submitted
|
|
42
|
-
if (
|
|
44
|
+
if (err?.type === "parameters.too.many") {
|
|
43
45
|
log.info("The request contains more parameters than is currently allowed [parameters.too.many]");
|
|
44
46
|
return res.status(413).render(TEMPLATE, {
|
|
45
47
|
errorCode: "parameter_limit_exceeded",
|
|
@@ -47,14 +49,14 @@ function postMiddleware() {
|
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
// Overall payload too large
|
|
50
|
-
if (
|
|
52
|
+
if (err?.type === "entity.too.large") {
|
|
51
53
|
log.info(`The request payload is too large. Received ${err.length}b with a maximum of ${err.limit}b [parameters.too.many]`);
|
|
52
54
|
return res
|
|
53
55
|
.status(413)
|
|
54
56
|
.render(TEMPLATE, { errorCode: "payload_size_exceeded", error: err });
|
|
55
57
|
}
|
|
56
58
|
// Unaccept request method
|
|
57
|
-
if (
|
|
59
|
+
if (err?.code === "unaccepted_request_method") {
|
|
58
60
|
log.info(err.message);
|
|
59
61
|
return res.status(400).render(TEMPLATE, {
|
|
60
62
|
errorCode: "unaccepted_request_method",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/middleware/post.js"],"names":[],"mappings":";;;;;AAKA,iCA2EC;AAhFD,2EAA2E;AAC3E,iEAAsC;AAEtC,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,iBAAiB,CAAC,CAAC;AAEtC,SAAwB,cAAc;IACpC,OAAO;QACL,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;QACD,6CAA6C;QAC7C,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/middleware/post.js"],"names":[],"mappings":"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"}
|
package/dist/middleware/pre.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
7
|
const helmet_1 = __importDefault(require("helmet"));
|
|
8
8
|
/**
|
|
9
9
|
* @typedef {import("../casa").HelmetConfigurator} HelmetConfigurator
|
|
@@ -62,7 +62,7 @@ exports.default = ({ helmetConfigurator = (config) => config } = {}) => [
|
|
|
62
62
|
// Generate nonces ready for use in Content-Security-Policy header and
|
|
63
63
|
// govuk-frontend template. This same none can be used wherever required.
|
|
64
64
|
(req, res, next) => {
|
|
65
|
-
res.locals.cspNonce = (0,
|
|
65
|
+
res.locals.cspNonce = (0, node_crypto_1.randomBytes)(16).toString("hex");
|
|
66
66
|
next();
|
|
67
67
|
},
|
|
68
68
|
// Helmet suite of headers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre.js","sourceRoot":"","sources":["../../src/middleware/pre.js"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"pre.js","sourceRoot":"","sources":["../../src/middleware/pre.js"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
6
6
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
10
9
|
const field_js_1 = __importDefault(require("../lib/field.js"));
|
|
11
10
|
const JourneyContext_js_1 = __importDefault(require("../lib/JourneyContext.js"));
|
|
12
11
|
exports.default = ({ waypoint, fields = [] }) => {
|
|
@@ -24,7 +23,7 @@ exports.default = ({ waypoint, fields = [] }) => {
|
|
|
24
23
|
/* eslint-disable security/detect-object-injection */
|
|
25
24
|
const prunedBody = Object.create(null);
|
|
26
25
|
for (let i = 0, l = fields.length; i < l; i++) {
|
|
27
|
-
if (
|
|
26
|
+
if (Object.hasOwn(req.body, fields[i].name) &&
|
|
28
27
|
req.body[fields[i].name] !== undefined) {
|
|
29
28
|
prunedBody[fields[i].name] = req.body[fields[i].name];
|
|
30
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitise-fields.js","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,0CAA0C;AAC1C,qEAAqE;;;;;AAErE
|
|
1
|
+
{"version":3,"file":"sanitise-fields.js","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,6 @@ const logger_js_1 = __importDefault(require("../lib/logger.js"));
|
|
|
35
35
|
const utils_js_1 = require("../lib/utils.js");
|
|
36
36
|
const log = (0, logger_js_1.default)("middleware:session");
|
|
37
37
|
const sessionExpiryMiddleware = (ttl, getCookie, touchCookie, removeCookie) => (req, res, next) => {
|
|
38
|
-
var _a;
|
|
39
38
|
const lastModified = getCookie(req);
|
|
40
39
|
const age = Math.floor(Date.now() * 0.001) - lastModified;
|
|
41
40
|
if (lastModified === 0) {
|
|
@@ -64,7 +63,7 @@ const sessionExpiryMiddleware = (ttl, getCookie, touchCookie, removeCookie) => (
|
|
|
64
63
|
// Cookie has become stale and server session will have been removed;
|
|
65
64
|
// redirect to session-timeout
|
|
66
65
|
log.info("Session has timed out within grace period. Destroying session and redirecting to timeout page.");
|
|
67
|
-
const language =
|
|
66
|
+
const language = req.session.language ?? "en";
|
|
68
67
|
req.session.destroy((err) => {
|
|
69
68
|
if (err) {
|
|
70
69
|
next(err);
|
|
@@ -103,13 +102,16 @@ function sessionMiddleware({ cookieParserMiddleware, secret, name, secure, ttl,
|
|
|
103
102
|
}
|
|
104
103
|
const ttlGrace = 1800; // user will see session-timeout if session expires within 30mins
|
|
105
104
|
const touchCookieName = `${name}.t`;
|
|
106
|
-
const touchCookieOptions =
|
|
105
|
+
const touchCookieOptions = {
|
|
106
|
+
...commonCookieOptions,
|
|
107
|
+
maxAge: (ttl + ttlGrace) * 1000,
|
|
108
|
+
signed: true,
|
|
109
|
+
};
|
|
107
110
|
const getCookie = (req) => {
|
|
108
|
-
var _a;
|
|
109
111
|
// Disabled eslint as `touchCookieName` is a constant, known value
|
|
110
112
|
const lastModified = Date.parse(
|
|
111
113
|
/* eslint-disable-next-line security/detect-object-injection */
|
|
112
|
-
String(
|
|
114
|
+
String(req.signedCookies[touchCookieName] ?? "1970-01-01T00:00:00+0000"));
|
|
113
115
|
return Number.isNaN(lastModified) ? 0 : Math.floor(lastModified * 0.001);
|
|
114
116
|
};
|
|
115
117
|
const touchCookie = (res) => {
|
|
@@ -128,7 +130,10 @@ function sessionMiddleware({ cookieParserMiddleware, secret, name, secure, ttl,
|
|
|
128
130
|
name,
|
|
129
131
|
saveUninitialized: false,
|
|
130
132
|
resave: false,
|
|
131
|
-
cookie:
|
|
133
|
+
cookie: {
|
|
134
|
+
...commonCookieOptions,
|
|
135
|
+
maxAge: null,
|
|
136
|
+
},
|
|
132
137
|
store,
|
|
133
138
|
}),
|
|
134
139
|
cookieParserMiddleware,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwEA,oCAqEC;AA7ID,wEAAwE;AACxE,uEAAuE;AACvE,8BAA8B;AAC9B,mEAA8D;AAC9D,iEAAsC;AACtC,8CAAkD;AAElD,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,oBAAoB,CAAC,CAAC;AAEzC,MAAM,uBAAuB,GAC3B,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/middleware/session.js"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,8 @@ exports.default = ({ mountUrl = "/" }) => [
|
|
|
25
25
|
// TODO:
|
|
26
26
|
// We _may_ have to start tracking the various prefix in order to differentiate
|
|
27
27
|
// between a proxy prefix, and a parent app's path.
|
|
28
|
-
var _a;
|
|
29
28
|
// Assume everything before `mountUrl` is the proxy path prefix and remove it
|
|
30
|
-
req.originalBaseUrl =
|
|
29
|
+
req.originalBaseUrl = req.originalBaseUrl ?? req.baseUrl;
|
|
31
30
|
req.baseUrl = mountUrl.replace(/\/$/, "");
|
|
32
31
|
// If the app has been mounted directly on the specific `mountUrl`, then
|
|
33
32
|
// there's nothing we need to do and can let this request pass-through.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strip-proxy-path.js","sourceRoot":"","sources":["../../src/middleware/strip-proxy-path.js"],"names":[],"mappings":";AAAA,2DAA2D;AAC3D,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AACtE,iEAAiE;AACjE,EAAE;AACF,wEAAwE;AACxE,gEAAgE;AAChE,sEAAsE;AACtE,4CAA4C;AAC5C,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,EAAE;AACF,oDAAoD;;;;;AAEpD,iEAAsC;AAEtC,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,kCAAkC,CAAC,CAAC;AAEvD,kBAAe,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,QAAQ;QACR,+EAA+E;QAC/E,mDAAmD
|
|
1
|
+
{"version":3,"file":"strip-proxy-path.js","sourceRoot":"","sources":["../../src/middleware/strip-proxy-path.js"],"names":[],"mappings":";AAAA,2DAA2D;AAC3D,EAAE;AACF,uEAAuE;AACvE,sEAAsE;AACtE,iEAAiE;AACjE,EAAE;AACF,wEAAwE;AACxE,gEAAgE;AAChE,sEAAsE;AACtE,4CAA4C;AAC5C,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,EAAE;AACF,oDAAoD;;;;;AAEpD,iEAAsC;AAEtC,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,kCAAkC,CAAC,CAAC;AAEvD,kBAAe,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,QAAQ;QACR,+EAA+E;QAC/E,mDAAmD;QAEnD,6EAA6E;QAC7E,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,OAAO,CAAC;QACzD,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE1C,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,GAAG,CAAC,2BAA2B,EAAE,CAAC;YAC3C,OAAO,GAAG,CAAC,2BAA2B,CAAC;YACvC,IAAI,EAAE,CAAC;QACT,CAAC;aAAM,CAAC;YACN,4DAA4D;YAC5D,wEAAwE;YACxE,mEAAmE;YACnE,uDAAuD;YACvD,GAAG,CAAC,KAAK,CAAC,2CAA2C,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACxE,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CACvC,IAAI,MAAM,CAAC,QAAQ,QAAQ,EAAE,CAAC,EAC9B,QAAQ,CACT,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,0CAA0C,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACvE,sDAAsD;YAEtD,qEAAqE;YACrE,2DAA2D;YAC3D,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC;YACvC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -23,7 +23,6 @@ const updateContext = ({ waypoint, errors = null, journeyContext, session, }) =>
|
|
|
23
23
|
};
|
|
24
24
|
exports.default = ({ waypoint, fields = [], plan }) => [
|
|
25
25
|
(req, res, next) => {
|
|
26
|
-
var _a, _b;
|
|
27
26
|
const mountUrl = `${req.baseUrl}/`;
|
|
28
27
|
// Run validators for every field to build up a complete list of errors
|
|
29
28
|
// currently associated with this waypoint.
|
|
@@ -33,7 +32,7 @@ exports.default = ({ waypoint, fields = [], plan }) => [
|
|
|
33
32
|
// Dynamic object keys are only used on known entities (fields, waypoint)
|
|
34
33
|
const field = fields[i];
|
|
35
34
|
const fieldName = field.name;
|
|
36
|
-
const fieldValue =
|
|
35
|
+
const fieldValue = req.casa.journeyContext.data?.[waypoint]?.[fieldName];
|
|
37
36
|
// (type = ValidateContext)
|
|
38
37
|
const context = {
|
|
39
38
|
fieldName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-fields.js","sourceRoot":"","sources":["../../src/middleware/validate-fields.js"],"names":[],"mappings":";;;;;AAAA,oDAAoD;AACpD,iFAAsD;AACtD,sDAA6D;AAE7D,MAAM,aAAa,GAAG,CAAC,EACrB,QAAQ,EACR,MAAM,GAAG,IAAI,EACb,cAAc,EACd,OAAO,GACR,EAAE,EAAE;IACH,uBAAuB;IACvB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,cAAc,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,kBAAkB;IAClB,2BAAc,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE;QACjD,QAAQ,EAAE;YACR,gBAAgB,EAAE,qCAAsB;SACzC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"validate-fields.js","sourceRoot":"","sources":["../../src/middleware/validate-fields.js"],"names":[],"mappings":";;;;;AAAA,oDAAoD;AACpD,iFAAsD;AACtD,sDAA6D;AAE7D,MAAM,aAAa,GAAG,CAAC,EACrB,QAAQ,EACR,MAAM,GAAG,IAAI,EACb,cAAc,EACd,OAAO,GACR,EAAE,EAAE;IACH,uBAAuB;IACvB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,cAAc,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,kBAAkB;IAClB,2BAAc,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE;QACjD,QAAQ,EAAE;YACR,gBAAgB,EAAE,qCAAsB;SACzC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC;QAEnC,uEAAuE;QACvE,2CAA2C;QAC3C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,qDAAqD;YACrD,yEAAyE;YACzE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;YAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;YAEzE,2BAA2B;YAC3B,MAAM,OAAO,GAAG;gBACd,SAAS;gBACT,UAAU;gBACV,QAAQ;gBACR,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc;aACxC,CAAC;YACF,oDAAoD;YAEpD,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,mCAAmC;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,aAAa,CAAC;gBACZ,QAAQ;gBACR,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,QAAQ;gBACR,IAAI;gBACJ,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc;aACxC,CAAC,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,0EAA0E;QAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC;QAC3D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;QAED,qDAAqD;QACrD,aAAa,CAAC;YACZ,MAAM;YACN,QAAQ;YACR,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ;YACR,IAAI;YACJ,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc;SACxC,CAAC,CAAC;QAEH,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;CACF,CAAC"}
|
package/dist/routes/journey.js
CHANGED
|
@@ -38,9 +38,14 @@ const log = (0, logger_js_1.default)("routes:journey");
|
|
|
38
38
|
*/
|
|
39
39
|
const renderMiddlewareFactory = (view, contextFactory) => [
|
|
40
40
|
(req, res, next) => {
|
|
41
|
-
res.render(view,
|
|
41
|
+
res.render(view, {
|
|
42
42
|
// Common template variables for both GET and POST requests
|
|
43
|
-
inEditMode: req.casa.editMode,
|
|
43
|
+
inEditMode: req.casa.editMode,
|
|
44
|
+
editOriginUrl: req.casa.editOrigin,
|
|
45
|
+
editCancelUrl: generateEditCancelUrl(req.casa.editOrigin, req.casa.waypoint),
|
|
46
|
+
activeContextId: req.casa.journeyContext.identity.id,
|
|
47
|
+
...contextFactory(req),
|
|
48
|
+
}, (err, templateString) => {
|
|
44
49
|
if (err) {
|
|
45
50
|
next(err);
|
|
46
51
|
}
|
|
@@ -91,10 +96,9 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVi
|
|
|
91
96
|
// Special "_" route which handles redirecting the user between sub-apps
|
|
92
97
|
// /app1/_/?refmount=app2&route=prev
|
|
93
98
|
router.all("/_", (req, res) => {
|
|
94
|
-
var _a, _b;
|
|
95
99
|
const mountUrl = `${req.baseUrl}/`;
|
|
96
|
-
const refmount =
|
|
97
|
-
const route =
|
|
100
|
+
const refmount = req.query?.refmount;
|
|
101
|
+
const route = req.query?.route;
|
|
98
102
|
log.trace(`App root ${mountUrl}: refmount = ${refmount}, route = ${route}`);
|
|
99
103
|
let redirectTo;
|
|
100
104
|
const fallback = (0, waypoint_url_js_1.default)({
|
|
@@ -142,7 +146,7 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVi
|
|
|
142
146
|
});
|
|
143
147
|
// Create GET / POST routes for each page
|
|
144
148
|
const commonMiddleware = [...csrfMiddleware];
|
|
145
|
-
|
|
149
|
+
for (const page of pages) {
|
|
146
150
|
const { waypoint, view, hooks: pageHooks = [], fields, errorVisibility, } = page;
|
|
147
151
|
const waypointPath = `/${waypoint}`;
|
|
148
152
|
let commonWaypointMiddleware = [
|
|
@@ -169,11 +173,11 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVi
|
|
|
169
173
|
...globalHooks,
|
|
170
174
|
...pageHooks,
|
|
171
175
|
]), renderMiddlewareFactory(view, (req) => {
|
|
172
|
-
var _a;
|
|
173
176
|
const displayErrors = resolveErrorVisibility(req, globalErrorVisibility) ||
|
|
174
177
|
resolveErrorVisibility(req, errorVisibility);
|
|
175
178
|
const errors = displayErrors &&
|
|
176
|
-
(
|
|
179
|
+
(req.casa.journeyContext.getValidationErrorsForPageByField(waypoint) ??
|
|
180
|
+
Object.create(null));
|
|
177
181
|
const govukErrors = displayErrors && generateGovukErrors(errors, req);
|
|
178
182
|
return {
|
|
179
183
|
formUrl: (0, waypoint_url_js_1.default)({ mountUrl: `${req.baseUrl}/`, waypoint }),
|
|
@@ -219,8 +223,8 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVi
|
|
|
219
223
|
...globalHooks,
|
|
220
224
|
...pageHooks,
|
|
221
225
|
]), renderMiddlewareFactory(view, (req) => {
|
|
222
|
-
|
|
223
|
-
|
|
226
|
+
const errors = req.casa.journeyContext.getValidationErrorsForPageByField(waypoint) ??
|
|
227
|
+
Object.create(null);
|
|
224
228
|
// This is a convenience for the template. The `govukErrorSummary` macro
|
|
225
229
|
// requires the errors be in a particular format, so here we provide our
|
|
226
230
|
// errors in that format.
|
|
@@ -236,7 +240,7 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVi
|
|
|
236
240
|
formErrorsGovukArray: govukErrors.length ? govukErrors : null,
|
|
237
241
|
};
|
|
238
242
|
}));
|
|
239
|
-
}
|
|
243
|
+
}
|
|
240
244
|
return router;
|
|
241
245
|
}
|
|
242
246
|
//# sourceMappingURL=journey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey.js","sourceRoot":"","sources":["../../src/routes/journey.js"],"names":[],"mappings":";;;;;AAqGA,gCAgOC;AArUD,iDAAiD;AACjD,+EAAoD;AACpD,sFAA2E;AAC3E,sFAA2E;AAC3E,0FAA+E;AAC/E,sFAA2E;AAC3E,0FAA+E;AAC/E,4FAAiF;AACjF,6EAAiD;AACjD,iEAAsC;AACtC,8CAAyD;AACzD,sDAAqE;AAErE,MAAM,GAAG,GAAG,IAAA,mBAAM,EAAC,gBAAgB,CAAC,CAAC;AAErC;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;GAMG;AAEH,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC;IACxD,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,GAAG,CAAC,MAAM,CACR,IAAI;
|
|
1
|
+
{"version":3,"file":"journey.js","sourceRoot":"","sources":["../../src/routes/journey.js"],"names":[],"mappings":"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"}
|