@dwp/govuk-casa 8.11.1 → 8.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +1 -1
  2. package/dist/casa.d.ts +29 -1
  3. package/dist/casa.js +24 -1
  4. package/dist/casa.js.map +1 -1
  5. package/dist/lib/JourneyContext.d.ts +32 -6
  6. package/dist/lib/JourneyContext.js +70 -11
  7. package/dist/lib/JourneyContext.js.map +1 -1
  8. package/dist/lib/configuration-ingestor.d.ts +11 -1
  9. package/dist/lib/configuration-ingestor.js +61 -1
  10. package/dist/lib/configuration-ingestor.js.map +1 -1
  11. package/dist/lib/configure.js +6 -2
  12. package/dist/lib/configure.js.map +1 -1
  13. package/dist/lib/constants.d.ts +2 -0
  14. package/dist/lib/constants.js +3 -1
  15. package/dist/lib/constants.js.map +1 -1
  16. package/dist/lib/context-id-generators.d.ts +27 -0
  17. package/dist/lib/context-id-generators.js +54 -0
  18. package/dist/lib/context-id-generators.js.map +1 -0
  19. package/dist/middleware/data.d.ts +2 -1
  20. package/dist/middleware/data.js +7 -1
  21. package/dist/middleware/data.js.map +1 -1
  22. package/dist/middleware/gather-fields.js +1 -1
  23. package/dist/middleware/gather-fields.js.map +1 -1
  24. package/dist/middleware/sanitise-fields.js +1 -1
  25. package/dist/middleware/sanitise-fields.js.map +1 -1
  26. package/dist/mjs/esm-wrapper.js +1 -0
  27. package/dist/routes/journey.d.ts +1 -1
  28. package/dist/routes/journey.js +35 -10
  29. package/dist/routes/journey.js.map +1 -1
  30. package/package.json +1 -2
  31. package/src/casa.js +27 -0
  32. package/src/lib/JourneyContext.js +79 -11
  33. package/src/lib/configuration-ingestor.js +42 -0
  34. package/src/lib/configure.js +7 -0
  35. package/src/lib/constants.js +2 -0
  36. package/src/lib/context-id-generators.js +71 -0
  37. package/src/middleware/data.js +8 -0
  38. package/src/middleware/gather-fields.js +4 -1
  39. package/src/middleware/sanitise-fields.js +1 -1
  40. package/src/routes/journey.js +36 -9
@@ -21,6 +21,7 @@ const i18n_js_1 = __importDefault(require("../middleware/i18n.js"));
21
21
  const data_js_1 = __importDefault(require("../middleware/data.js"));
22
22
  const body_parser_js_1 = __importDefault(require("../middleware/body-parser.js"));
23
23
  const csrf_js_1 = __importDefault(require("../middleware/csrf.js"));
24
+ const constants_js_1 = require("./constants.js");
24
25
  /**
25
26
  * @access private
26
27
  * @typedef {import('../casa').ConfigurationOptions} ConfigurationOptions
@@ -49,7 +50,7 @@ function configure(config = {}) {
49
50
  });
50
51
  // Extract config
51
52
  const ingestedConfig = (0, configuration_ingestor_js_1.default)(config);
52
- const { mountUrl, views = [], session = {
53
+ const { mountUrl, errorVisibility = constants_js_1.CONFIG_ERROR_VISIBILITY_ONSUBMIT, views = [], session = {
53
54
  secret: 'secret',
54
55
  name: 'casasession',
55
56
  secure: false,
@@ -60,7 +61,7 @@ function configure(config = {}) {
60
61
  }, pages = [], plan = null, hooks = [], plugins = [], events = [], i18n = {
61
62
  dirs: [],
62
63
  locales: ['en', 'cy'],
63
- }, helmetConfigurator = undefined, formMaxParams, formMaxBytes, } = ingestedConfig;
64
+ }, helmetConfigurator = undefined, formMaxParams, formMaxBytes, contextIdGenerator, } = ingestedConfig;
64
65
  // Prepare all page hooks so they are prefixed with the `journey.` scope.
65
66
  pages.forEach((page) => {
66
67
  var _a;
@@ -104,6 +105,7 @@ function configure(config = {}) {
104
105
  const dataMiddleware = (0, data_js_1.default)({
105
106
  plan,
106
107
  events,
108
+ contextIdGenerator,
107
109
  });
108
110
  // Prepare form middleware and its constituent parts
109
111
  // These are used for any forms, including waypoint page forms.
@@ -119,11 +121,13 @@ function configure(config = {}) {
119
121
  sessionTtl: session.ttl,
120
122
  });
121
123
  // Setup waypoint router, which includes routes for every defined waypoint
124
+ const globalErrorVisibility = errorVisibility;
122
125
  const journeyRouter = (0, journey_js_1.default)({
123
126
  globalHooks: hooks,
124
127
  pages,
125
128
  plan,
126
129
  csrfMiddleware,
130
+ globalErrorVisibility,
127
131
  });
128
132
  // Create the mounting function
129
133
  const mount = (0, mount_js_1.default)({
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/lib/configure.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/lib/configure.js"],"names":[],"mappings":"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"}
@@ -7,3 +7,5 @@ export const REQUEST_PHASE_GATHER: unique symbol;
7
7
  export const REQUEST_PHASE_VALIDATE: unique symbol;
8
8
  export const REQUEST_PHASE_REDIRECT: unique symbol;
9
9
  export const REQUEST_PHASE_RENDER: unique symbol;
10
+ export const CONFIG_ERROR_VISIBILITY_ONSUBMIT: unique symbol;
11
+ export const CONFIG_ERROR_VISIBILITY_ALWAYS: unique symbol;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.REQUEST_PHASE_RENDER = exports.REQUEST_PHASE_REDIRECT = exports.REQUEST_PHASE_VALIDATE = exports.REQUEST_PHASE_GATHER = exports.REQUEST_PHASE_SANITISE = exports.REQUEST_PHASE_STEER = void 0;
3
+ exports.CONFIG_ERROR_VISIBILITY_ALWAYS = exports.CONFIG_ERROR_VISIBILITY_ONSUBMIT = exports.REQUEST_PHASE_RENDER = exports.REQUEST_PHASE_REDIRECT = exports.REQUEST_PHASE_VALIDATE = exports.REQUEST_PHASE_GATHER = exports.REQUEST_PHASE_SANITISE = exports.REQUEST_PHASE_STEER = void 0;
4
4
  /**
5
5
  * General-purpose references to the different request lifecycle phases.
6
6
  */
@@ -10,4 +10,6 @@ exports.REQUEST_PHASE_GATHER = Symbol('gather');
10
10
  exports.REQUEST_PHASE_VALIDATE = Symbol('validate');
11
11
  exports.REQUEST_PHASE_REDIRECT = Symbol('redirect');
12
12
  exports.REQUEST_PHASE_RENDER = Symbol('render');
13
+ exports.CONFIG_ERROR_VISIBILITY_ONSUBMIT = Symbol('onsubmit');
14
+ exports.CONFIG_ERROR_VISIBILITY_ALWAYS = Symbol('always');
13
15
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.js"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.js"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,QAAA,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC5C,QAAA,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxC,QAAA,gCAAgC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACtD,QAAA,8BAA8B,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ export type ContextIdGenerator = import('../casa.js').ContextIdGenerator;
2
+ /**
3
+ * @typedef {import('../casa.js').ContextIdGenerator} ContextIdGenerator
4
+ */
5
+ /**
6
+ * Creates an instance of a UUID generator.
7
+ *
8
+ * @returns {ContextIdGenerator} Generator function
9
+ */
10
+ export function uuid(): ContextIdGenerator;
11
+ /**
12
+ * Returns a generator that returns the next incremental integer in a sequence.
13
+ *
14
+ * This generator does not take into account the removal of any contexts from
15
+ * session that were previously assigned a sequential ID. This means that IDs
16
+ * will be re-used when they are freed up.
17
+ *
18
+ * @returns {ContextIdGenerator} Generator function
19
+ */
20
+ export function sequentialInteger(): ContextIdGenerator;
21
+ export function shortGuid({ length, prefix, pool, }?: {
22
+ length?: number | undefined;
23
+ prefix?: string | undefined;
24
+ pool?: string | undefined;
25
+ }): ({ reservedIds }: {
26
+ reservedIds: any;
27
+ }) => string;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shortGuid = exports.sequentialInteger = exports.uuid = void 0;
4
+ /* eslint-disable import/no-cycle */
5
+ const node_crypto_1 = require("node:crypto");
6
+ /**
7
+ * @typedef {import('../casa.js').ContextIdGenerator} ContextIdGenerator
8
+ */
9
+ /**
10
+ * Creates an instance of a UUID generator.
11
+ *
12
+ * @returns {ContextIdGenerator} Generator function
13
+ */
14
+ const uuid = () => () => (0, node_crypto_1.randomUUID)();
15
+ exports.uuid = uuid;
16
+ /**
17
+ * Returns a generator that returns the next incremental integer in a sequence.
18
+ *
19
+ * This generator does not take into account the removal of any contexts from
20
+ * session that were previously assigned a sequential ID. This means that IDs
21
+ * will be re-used when they are freed up.
22
+ *
23
+ * @returns {ContextIdGenerator} Generator function
24
+ */
25
+ const sequentialInteger = () => ({ reservedIds }) => {
26
+ const contextIds = Array.from(reservedIds).sort();
27
+ if (!contextIds.length) {
28
+ return '1';
29
+ }
30
+ // Find the first numeric ID that we can increment
31
+ let lastInSequence;
32
+ do {
33
+ lastInSequence = Number.parseInt(contextIds.pop(), 10);
34
+ } while (contextIds.length && Number.isNaN(lastInSequence));
35
+ return String(!Number.isNaN(lastInSequence) ? lastInSequence + 1 : 1);
36
+ };
37
+ exports.sequentialInteger = sequentialInteger;
38
+ const shortGuid = ({ length = 5, prefix = '', pool = 'abcdefhkmnprtwxy346789', } = {}) => ({ reservedIds }) => {
39
+ // Ambiguous characters excluded
40
+ const poolSize = pool.length;
41
+ const maxAttempts = 10;
42
+ let attempts = maxAttempts;
43
+ let id;
44
+ do {
45
+ id = Array(length).fill(0).map(() => pool.charAt(Math.floor(Math.random() * poolSize))).join('');
46
+ attempts--;
47
+ } while (attempts > 0 && reservedIds.includes(id));
48
+ if (attempts === 0) {
49
+ throw new Error(`Failed to generate GUID after ${maxAttempts} iterations`);
50
+ }
51
+ return `${prefix}${id}`;
52
+ };
53
+ exports.shortGuid = shortGuid;
54
+ //# sourceMappingURL=context-id-generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-id-generators.js","sourceRoot":"","sources":["../../src/lib/context-id-generators.js"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,6CAAyC;AAEzC;;GAEG;AAEH;;;;GAIG;AACH,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE,CAAC;AAuDpC,oBAAI;AArDN;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;QACtB,OAAO,GAAG,CAAC;KACZ;IAED,kDAAkD;IAClD,IAAI,cAAc,CAAC;IACnB,GAAG;QACD,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;KACxD,QAAQ,UAAU,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;IAE5D,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AA+BA,8CAAiB;AA7BnB,MAAM,SAAS,GAAG,CAAC,EACjB,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,EAAE,EACX,IAAI,GAAG,wBAAwB,GAChC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAC7B,gCAAgC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAE7B,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,IAAI,QAAQ,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,CAAC;IAEP,GAAG;QACD,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjG,QAAQ,EAAE,CAAC;KACZ,QAAQ,QAAQ,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;IAEnD,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,iCAAiC,WAAW,aAAa,CAAC,CAAC;KAC5E;IAED,OAAO,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC;AAC1B,CAAC,CAAA;AAQC,8BAAS"}
@@ -1,4 +1,5 @@
1
- export default function dataMiddleware({ plan, events, }: {
1
+ export default function dataMiddleware({ plan, events, contextIdGenerator, }: {
2
2
  plan: any;
3
3
  events: any;
4
+ contextIdGenerator: any;
4
5
  }): ((req: any, res: any, next: any) => void)[];
@@ -19,7 +19,7 @@ const editOrigin = (req) => {
19
19
  }
20
20
  return '';
21
21
  };
22
- function dataMiddleware({ plan, events, }) {
22
+ function dataMiddleware({ plan, events, contextIdGenerator, }) {
23
23
  return [
24
24
  (req, res, next) => {
25
25
  /* ------------------------------------------------ Request decorations */
@@ -34,6 +34,12 @@ function dataMiddleware({ plan, events, }) {
34
34
  editMode: (has(req === null || req === void 0 ? void 0 : req.query, 'edit') && has(req === null || req === void 0 ? void 0 : req.query, 'editorigin')) || (has(req === null || req === void 0 ? void 0 : req.body, 'edit') && has(req === null || req === void 0 ? void 0 : req.body, 'editorigin')), editOrigin: editOrigin(req) });
35
35
  // Grab chosen language from session
36
36
  req.casa.journeyContext.nav.language = req.session.language;
37
+ // Context ID generator
38
+ Object.defineProperty(req, JourneyContext_js_1.default.ID_GENERATOR_REQ_KEY, {
39
+ value: contextIdGenerator,
40
+ enumerable: false,
41
+ writable: false,
42
+ });
37
43
  /* ------------------------------------------------- Template variables */
38
44
  // Capture mount URL that will be used in generating all browser URLs
39
45
  const mountUrl = (0, utils_js_1.validateUrlPath)(`${req.baseUrl}/`.replace(/\/+/g, '/'));
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/middleware/data.js"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ exports.default = ({ waypoint, fields = [], }) => [
28
28
  (req, res, next) => {
29
29
  // Store a copy of the journey context before modifying it. This is useful
30
30
  // for any comparison work that may be done in subsequent middleware.
31
- req.casa.archivedJourneyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext);
31
+ req.casa.archivedJourneyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext, req);
32
32
  // Ignore data for any non-persistent fields
33
33
  // ESLint disabled as `fields`, `i` and `name` are dev-controlled
34
34
  /* eslint-disable security/detect-object-injection */
@@ -1 +1 @@
1
- {"version":3,"file":"gather-fields.js","sourceRoot":"","sources":["../../src/middleware/gather-fields.js"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,iCAAiC;AACjC,wDAAwD;AACxD,mEAAmE;;;;;AAEnE,iFAAsD;AACtD,sDAA2D;AAE3D;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,kBAAe,CAAC,EACd,QAAQ,EACR,MAAM,GAAG,EAAE,GACZ,EAAE,EAAE,CAAC;IACJ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,0EAA0E;QAC1E,qEAAqE;QACrE,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,2BAAc,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEtF,4CAA4C;QAC5C,iEAAiE;QACjE,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACxE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC/D;SACF;QACD,oDAAoD;QAEpD,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC/D,2BAAc,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE;gBACR,gBAAgB,EAAE,mCAAoB;aACvC;SACF,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"gather-fields.js","sourceRoot":"","sources":["../../src/middleware/gather-fields.js"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,iCAAiC;AACjC,wDAAwD;AACxD,mEAAmE;;;;;AAEnE,iFAAsD;AACtD,sDAA2D;AAE3D;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,kBAAe,CAAC,EACd,QAAQ,EACR,MAAM,GAAG,EAAE,GACZ,EAAE,EAAE,CAAC;IACJ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACjB,0EAA0E;QAC1E,qEAAqE;QACrE,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,2BAAc,CAAC,WAAW,CAC1D,GAAG,CAAC,IAAI,CAAC,cAAc,EACvB,GAAG,CACJ,CAAC;QAEF,4CAA4C;QAC5C,iEAAiE;QACjE,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACxE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC/D;SACF;QACD,oDAAoD;QAEpD,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAC/D,2BAAc,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;YAC9D,QAAQ,EAAE;gBACR,gBAAgB,EAAE,mCAAoB;aACvC;SACF,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAC"}
@@ -29,7 +29,7 @@ exports.default = ({ waypoint, fields = [], }) => {
29
29
  }
30
30
  }
31
31
  /* eslint-enable security/detect-object-injection */
32
- const journeyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext);
32
+ const journeyContext = JourneyContext_js_1.default.fromContext(req.casa.journeyContext, req);
33
33
  journeyContext.setDataForPage(waypoint, prunedBody);
34
34
  // Second, prune any fields that do not pass the validation conditional,
35
35
  // and process those that do.
@@ -1 +1 @@
1
- {"version":3,"file":"sanitise-fields.js","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sanitise-fields.js","sourceRoot":"","sources":["../../src/middleware/sanitise-fields.js"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export const { ValidationError } = casa;
10
10
  export const { ValidatorFactory } = casa;
11
11
  export const { configure } = casa;
12
12
  export const { constants } = casa;
13
+ export const { contextIdGenerators } = casa;
13
14
  export const { endSession } = casa;
14
15
  export const { field } = casa;
15
16
  export const { nunjucksFilters } = casa;
@@ -6,7 +6,7 @@
6
6
  * @param {JourneyRouterOptions} opts Options
7
7
  * @returns {MutableRouter} Router
8
8
  */
9
- export default function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, }: JourneyRouterOptions): MutableRouter;
9
+ export default function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVisibility, }: JourneyRouterOptions): MutableRouter;
10
10
  /**
11
11
  * Options to configure static router
12
12
  */
@@ -14,6 +14,7 @@ const progress_journey_js_1 = __importDefault(require("../middleware/progress-jo
14
14
  const waypoint_url_js_1 = __importDefault(require("../lib/waypoint-url.js"));
15
15
  const logger_js_1 = __importDefault(require("../lib/logger.js"));
16
16
  const utils_js_1 = require("../lib/utils.js");
17
+ const constants_js_1 = require("../lib/constants.js");
17
18
  const log = (0, logger_js_1.default)('routes:journey');
18
19
  /**
19
20
  * @access private
@@ -48,6 +49,25 @@ const renderMiddlewareFactory = (view, contextFactory) => [
48
49
  });
49
50
  },
50
51
  ];
52
+ /**
53
+ * generate page validation error
54
+ *
55
+ * @param {object} errors object of page validation error
56
+ * @param {object} req casa request object
57
+ * @returns {object[]} array of error objects
58
+ */
59
+ const generateGovukErrors = (errors, req) => Object.values(errors || {}).map(([error]) => ({
60
+ text: req.t(error.summary, error.variables),
61
+ href: error.fieldHref,
62
+ }));
63
+ /**
64
+ * handle errorVisibility flag and function and return boolean
65
+ *
66
+ * @param {symbol | Function} errorVisibility errorVisibility config option
67
+ * @param {object} req casa request object
68
+ * @returns {boolean} true if errorVisibility is "always" or function condition true
69
+ */
70
+ const resolveErrorVisibility = (req, errorVisibility) => (typeof errorVisibility === 'function' ? errorVisibility({ req }) : errorVisibility === constants_js_1.CONFIG_ERROR_VISIBILITY_ALWAYS);
51
71
  /**
52
72
  * Create an instance of the router for all waypoints visited during a Journey
53
73
  * through the Plan.
@@ -56,7 +76,7 @@ const renderMiddlewareFactory = (view, contextFactory) => [
56
76
  * @param {JourneyRouterOptions} opts Options
57
77
  * @returns {MutableRouter} Router
58
78
  */
59
- function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, }) {
79
+ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, globalErrorVisibility, }) {
60
80
  // Router
61
81
  const router = new MutableRouter_js_1.default();
62
82
  // Special "_" route which handles redirecting the user between sub-apps
@@ -102,7 +122,7 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, }) {
102
122
  ...csrfMiddleware,
103
123
  ];
104
124
  pages.forEach((page) => {
105
- const { waypoint, view, hooks: pageHooks = [], fields } = page;
125
+ const { waypoint, view, hooks: pageHooks = [], fields, errorVisibility } = page;
106
126
  const waypointPath = `/${waypoint}`;
107
127
  let commonWaypointMiddleware = [
108
128
  (req, res, next) => {
@@ -118,10 +138,18 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, }) {
118
138
  ...(0, skip_waypoint_js_1.default)({ waypoint }),
119
139
  ];
120
140
  }
121
- router.get(waypointPath, ...commonMiddleware, ...commonWaypointMiddleware, ...(0, utils_js_1.resolveMiddlewareHooks)('journey.presteer', waypointPath, [...globalHooks, ...pageHooks]), ...(0, steer_journey_js_1.default)({ waypoint, plan }), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.poststeer', waypointPath, [...globalHooks, ...pageHooks]), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.prerender', waypointPath, [...globalHooks, ...pageHooks]), renderMiddlewareFactory(view, (req) => ({
122
- formUrl: (0, waypoint_url_js_1.default)({ mountUrl: `${req.baseUrl}/`, waypoint }),
123
- formData: req.casa.journeyContext.getDataForPage(waypoint),
124
- })));
141
+ router.get(waypointPath, ...commonMiddleware, ...commonWaypointMiddleware, ...(0, utils_js_1.resolveMiddlewareHooks)('journey.presteer', waypointPath, [...globalHooks, ...pageHooks]), ...(0, steer_journey_js_1.default)({ waypoint, plan }), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.poststeer', waypointPath, [...globalHooks, ...pageHooks]), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.prerender', waypointPath, [...globalHooks, ...pageHooks]), renderMiddlewareFactory(view, (req) => {
142
+ var _a;
143
+ const displayErrors = resolveErrorVisibility(req, globalErrorVisibility) || resolveErrorVisibility(req, errorVisibility);
144
+ const errors = displayErrors && ((_a = req.casa.journeyContext.getValidationErrorsForPageByField(waypoint)) !== null && _a !== void 0 ? _a : Object.create(null));
145
+ const govukErrors = displayErrors && generateGovukErrors(errors, req);
146
+ return ({
147
+ formUrl: (0, waypoint_url_js_1.default)({ mountUrl: `${req.baseUrl}/`, waypoint }),
148
+ formData: req.casa.journeyContext.getDataForPage(waypoint),
149
+ formErrors: (Object.keys(errors).length && displayErrors) ? errors : null,
150
+ formErrorsGovukArray: (govukErrors.length && displayErrors) ? govukErrors : null,
151
+ });
152
+ }));
125
153
  router.post(waypointPath, ...commonMiddleware, ...commonWaypointMiddleware, ...(0, utils_js_1.resolveMiddlewareHooks)('journey.presteer', waypointPath, [...globalHooks, ...pageHooks]), ...(0, steer_journey_js_1.default)({ waypoint, plan }), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.poststeer', waypointPath, [...globalHooks, ...pageHooks]), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.presanitise', waypointPath, [...globalHooks, ...pageHooks]), ...(0, sanitise_fields_js_1.default)({ waypoint, fields }), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.postsanitise', waypointPath, [...globalHooks, ...pageHooks]), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.pregather', waypointPath, [...globalHooks, ...pageHooks]), ...(0, gather_fields_js_1.default)({ waypoint, fields }), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.postgather', waypointPath, [...globalHooks, ...pageHooks]), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.prevalidate', waypointPath, [...globalHooks, ...pageHooks]), ...(0, validate_fields_js_1.default)({ waypoint, fields, plan }), ...(0, utils_js_1.resolveMiddlewareHooks)('journey.postvalidate', waypointPath, [...globalHooks, ...pageHooks]),
126
154
  // If there were validation errors, jump out of this route and into the
127
155
  // next, where the errors will be rendered
@@ -136,10 +164,7 @@ function journeyRouter({ globalHooks, pages, plan, csrfMiddleware, }) {
136
164
  // first one is shown.
137
165
  // Disabling security/detect-object-injection rule because both `errors`
138
166
  // and the `k` property are known entities
139
- const govukErrors = Object.keys(errors).map((k) => ({
140
- text: req.t(errors[k][0].summary, errors[k][0].variables),
141
- href: errors[k][0].fieldHref, /* eslint-disable-line security/detect-object-injection */
142
- }));
167
+ const govukErrors = generateGovukErrors(errors, req);
143
168
  return {
144
169
  formUrl: (0, waypoint_url_js_1.default)({ mountUrl: `${req.baseUrl}/`, waypoint }),
145
170
  formData: req.body,
@@ -1 +1 @@
1
- {"version":3,"file":"journey.js","sourceRoot":"","sources":["../../src/routes/journey.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journey.js","sourceRoot":"","sources":["../../src/routes/journey.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dwp/govuk-casa",
3
- "version": "8.11.1",
3
+ "version": "8.13.0",
4
4
  "description": "A framework for building GOVUK Collect-And-Submit-Applications",
5
5
  "repository": {
6
6
  "type": "git",
@@ -65,7 +65,6 @@
65
65
  "luxon": "3.3.0",
66
66
  "nunjucks": "3.2.4",
67
67
  "path-to-regexp": "6.2.1",
68
- "uuid": "9.0.0",
69
68
  "validator": "13.9.0"
70
69
  },
71
70
  "devDependencies": {
package/src/casa.js CHANGED
@@ -11,6 +11,7 @@ import waypointUrl from './lib/waypoint-url.js';
11
11
  import endSession from './lib/end-session.js';
12
12
  import * as nunjucksFilters from './lib/nunjucks-filters.js';
13
13
  import * as constants from './lib/constants.js';
14
+ import * as contextIdGenerators from './lib/context-id-generators.js';
14
15
 
15
16
  /** @module @dwp/govuk-casa */
16
17
  export {
@@ -32,6 +33,9 @@ export {
32
33
 
33
34
  // Constants
34
35
  constants,
36
+
37
+ // Context ID generators
38
+ contextIdGenerators,
35
39
  };
36
40
 
37
41
  /* ----------------------------------------------------------------- Typedefs */
@@ -160,6 +164,8 @@ export {
160
164
  * @property {HelmetConfigurator} [helmetConfigurator] Helmet configuration manipulator function
161
165
  * @property {number} [formMaxParams=25] Max number of form parameters to ingest
162
166
  * @property {number|string} [formMaxBytes="50KB"] Max total form payload size to ingest
167
+ * @property {ContextIdGenerator} [contextIdGenerator] Custom context ID generator
168
+ * @property {symbol|Function} [errorVisibility] option to keep page errors active on GET request
163
169
  */
164
170
 
165
171
  /**
@@ -330,3 +336,24 @@ export {
330
336
  * @property {any} [nav] Navigation meta
331
337
  * @property {any} [identity] Identity meta
332
338
  */
339
+
340
+ /**
341
+ * @typedef ContextIdGeneratorParams
342
+ * @property {object} args Arguments
343
+ * @property {import('express').Request} args.req Request
344
+ * @property {[string]} args.reservedIds List of IDs already in use in session or request
345
+ */
346
+
347
+ /**
348
+ * Generates a GUID for use as a journey context ID. This ID must not clash with
349
+ * any other context IDs in the given session.
350
+ *
351
+ * The resulting ID must match these criteria:
352
+ * - A string
353
+ * - Between 1 and 64 characters
354
+ * - Contain only the characters a-z, 0-9, -
355
+ *
356
+ * @callback ContextIdGenerator
357
+ * @param {ContextIdGeneratorParams} params Parameters
358
+ * @returns {string} A newly generated GUID
359
+ */