@dwp/govuk-casa 9.0.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 +1 -1
- package/dist/assets/css/casa.css.map +1 -1
- package/dist/casa.d.ts +122 -95
- package/dist/casa.js +119 -86
- 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 +81 -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 +20 -18
- package/dist/lib/field.js +35 -48
- 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 +11 -10
- 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 -27
- 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 -19
- package/dist/routes/static.js.map +1 -1
- package/package.json +19 -18
- package/src/casa.js +133 -100
- package/src/lib/CasaTemplateLoader.js +24 -19
- package/src/lib/JourneyContext.js +138 -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 +69 -58
- package/src/lib/index.js +12 -12
- package/src/lib/logger.js +9 -9
- package/src/lib/mount.js +70 -74
- 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 -41
- 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 -29
- 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/layouts/main.njk +2 -1
package/dist/lib/constants.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* General-purpose references to the different request lifecycle phases.
|
|
3
|
-
*/
|
|
1
|
+
/** General-purpose references to the different request lifecycle phases. */
|
|
4
2
|
export const REQUEST_PHASE_STEER: unique symbol;
|
|
5
3
|
export const REQUEST_PHASE_SANITISE: unique symbol;
|
|
6
4
|
export const REQUEST_PHASE_GATHER: unique symbol;
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
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
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
12
|
-
exports.
|
|
13
|
-
exports.CONFIG_ERROR_VISIBILITY_ONSUBMIT = Symbol('onsubmit');
|
|
14
|
-
exports.CONFIG_ERROR_VISIBILITY_ALWAYS = Symbol('always');
|
|
4
|
+
/** General-purpose references to the different request lifecycle phases. */
|
|
5
|
+
exports.REQUEST_PHASE_STEER = Symbol("steer");
|
|
6
|
+
exports.REQUEST_PHASE_SANITISE = Symbol("sanitise");
|
|
7
|
+
exports.REQUEST_PHASE_GATHER = Symbol("gather");
|
|
8
|
+
exports.REQUEST_PHASE_VALIDATE = Symbol("validate");
|
|
9
|
+
exports.REQUEST_PHASE_REDIRECT = Symbol("redirect");
|
|
10
|
+
exports.REQUEST_PHASE_RENDER = Symbol("render");
|
|
11
|
+
exports.CONFIG_ERROR_VISIBILITY_ONSUBMIT = Symbol("onsubmit");
|
|
12
|
+
exports.CONFIG_ERROR_VISIBILITY_ALWAYS = Symbol("always");
|
|
15
13
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.js"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.js"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC/D,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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export type ContextIdGenerator = import(
|
|
2
|
-
/**
|
|
3
|
-
* @typedef {import('../casa.js').ContextIdGenerator} ContextIdGenerator
|
|
4
|
-
*/
|
|
1
|
+
export type ContextIdGenerator = import("../casa.js").ContextIdGenerator;
|
|
2
|
+
/** @typedef {import("../casa.js").ContextIdGenerator} ContextIdGenerator */
|
|
5
3
|
/**
|
|
6
4
|
* Creates an instance of a UUID generator.
|
|
7
5
|
*
|
|
@@ -18,7 +16,7 @@ export function uuid(): ContextIdGenerator;
|
|
|
18
16
|
* @returns {ContextIdGenerator} Generator function
|
|
19
17
|
*/
|
|
20
18
|
export function sequentialInteger(): ContextIdGenerator;
|
|
21
|
-
export function shortGuid({ length, prefix, pool
|
|
19
|
+
export function shortGuid({ length, prefix, pool }?: {
|
|
22
20
|
length?: number | undefined;
|
|
23
21
|
prefix?: string | undefined;
|
|
24
22
|
pool?: string | undefined;
|
|
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.shortGuid = exports.sequentialInteger = exports.uuid = void 0;
|
|
4
4
|
/* eslint-disable import/no-cycle */
|
|
5
5
|
const node_crypto_1 = require("node:crypto");
|
|
6
|
-
/**
|
|
7
|
-
* @typedef {import('../casa.js').ContextIdGenerator} ContextIdGenerator
|
|
8
|
-
*/
|
|
6
|
+
/** @typedef {import("../casa.js").ContextIdGenerator} ContextIdGenerator */
|
|
9
7
|
/**
|
|
10
8
|
* Creates an instance of a UUID generator.
|
|
11
9
|
*
|
|
@@ -25,7 +23,7 @@ exports.uuid = uuid;
|
|
|
25
23
|
const sequentialInteger = () => ({ reservedIds }) => {
|
|
26
24
|
const contextIds = Array.from(reservedIds).sort();
|
|
27
25
|
if (!contextIds.length) {
|
|
28
|
-
return
|
|
26
|
+
return "1";
|
|
29
27
|
}
|
|
30
28
|
// Find the first numeric ID that we can increment
|
|
31
29
|
let lastInSequence;
|
|
@@ -35,14 +33,17 @@ const sequentialInteger = () => ({ reservedIds }) => {
|
|
|
35
33
|
return String(!Number.isNaN(lastInSequence) ? lastInSequence + 1 : 1);
|
|
36
34
|
};
|
|
37
35
|
exports.sequentialInteger = sequentialInteger;
|
|
38
|
-
const shortGuid = ({ length = 5, prefix =
|
|
36
|
+
const shortGuid = ({ length = 5, prefix = "", pool = "abcdefhkmnprtwxy346789" } = {}) => ({ reservedIds }) => {
|
|
39
37
|
// Ambiguous characters excluded
|
|
40
38
|
const poolSize = pool.length;
|
|
41
39
|
const maxAttempts = 10;
|
|
42
40
|
let attempts = maxAttempts;
|
|
43
41
|
let id;
|
|
44
42
|
do {
|
|
45
|
-
id = Array(length)
|
|
43
|
+
id = Array(length)
|
|
44
|
+
.fill(0)
|
|
45
|
+
.map(() => pool.charAt(Math.floor(Math.random() * poolSize)))
|
|
46
|
+
.join("");
|
|
46
47
|
attempts--;
|
|
47
48
|
} while (attempts > 0 && reservedIds.includes(id));
|
|
48
49
|
if (attempts === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-id-generators.js","sourceRoot":"","sources":["../../src/lib/context-id-generators.js"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,6CAAyC;AAEzC
|
|
1
|
+
{"version":3,"file":"context-id-generators.js","sourceRoot":"","sources":["../../src/lib/context-id-generators.js"],"names":[],"mappings":";;;AAAA,oCAAoC;AACpC,6CAAyC;AAEzC,4EAA4E;AAE5E;;;;GAIG;AACH,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,IAAA,wBAAU,GAAE,CAAC;AAyD7B,oBAAI;AAvDb;;;;;;;;GAQG;AACH,MAAM,iBAAiB,GACrB,GAAG,EAAE,CACL,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAClB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kDAAkD;IAClD,IAAI,cAAc,CAAC;IACnB,GAAG,CAAC;QACF,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,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;AA8BW,8CAAiB;AA5BhC,MAAM,SAAS,GACb,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,wBAAwB,EAAE,GAAG,EAAE,EAAE,EAAE,CACtE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE;IAClB,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,CAAC;QACF,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;aACf,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;aAC5D,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,QAAQ,EAAE,CAAC;IACb,CAAC,QAAQ,QAAQ,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;IAEnD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,aAAa,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,MAAM,GAAG,EAAE,EAAE,CAAC;AAC1B,CAAC,CAAC;AAG8B,8BAAS"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A convenience for ending the current session, but retaining some data in it,
|
|
3
|
-
* like the current language. It persists an empty session before regenerating
|
|
4
|
-
*
|
|
3
|
+
* like the current language. It persists an empty session before regenerating a
|
|
4
|
+
* new ID.
|
|
5
5
|
*
|
|
6
6
|
* Note: this will not remove the session from server-side storage, which will
|
|
7
7
|
* instead be left up to the storage mechanism to clean up.
|
|
8
8
|
*
|
|
9
9
|
* @memberof module:@dwp/govuk-casa
|
|
10
|
-
* @param {import(
|
|
10
|
+
* @param {import("express").Request} req HTTP request
|
|
11
11
|
* @param {Function} next Chain
|
|
12
12
|
* @returns {void}
|
|
13
13
|
*/
|
|
14
|
-
export default function endSession(req: import(
|
|
14
|
+
export default function endSession(req: import("express").Request, next: Function): void;
|
package/dist/lib/end-session.js
CHANGED
|
@@ -4,24 +4,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const logger_js_1 = __importDefault(require("./logger.js"));
|
|
7
|
-
const log = (0, logger_js_1.default)(
|
|
7
|
+
const log = (0, logger_js_1.default)("lib:end-session");
|
|
8
8
|
/**
|
|
9
9
|
* A convenience for ending the current session, but retaining some data in it,
|
|
10
|
-
* like the current language. It persists an empty session before regenerating
|
|
11
|
-
*
|
|
10
|
+
* like the current language. It persists an empty session before regenerating a
|
|
11
|
+
* new ID.
|
|
12
12
|
*
|
|
13
13
|
* Note: this will not remove the session from server-side storage, which will
|
|
14
14
|
* instead be left up to the storage mechanism to clean up.
|
|
15
15
|
*
|
|
16
16
|
* @memberof module:@dwp/govuk-casa
|
|
17
|
-
* @param {import(
|
|
17
|
+
* @param {import("express").Request} req HTTP request
|
|
18
18
|
* @param {Function} next Chain
|
|
19
19
|
* @returns {void}
|
|
20
20
|
*/
|
|
21
21
|
function endSession(req, next) {
|
|
22
22
|
const { language } = req.session;
|
|
23
23
|
Object.entries(req.session).forEach(([k]) => {
|
|
24
|
-
if (![
|
|
24
|
+
if (!["cookie"].includes(k)) {
|
|
25
25
|
// ESLint disabled as `Object.entries()` returns "own" properties, and
|
|
26
26
|
// all values are being null'd, so not assigned any user-controlled values
|
|
27
27
|
/* eslint-disable-next-line security/detect-object-injection */
|
package/dist/lib/field.d.ts
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* @memberof module:@dwp/govuk-casa
|
|
5
5
|
* @param {string} name Field name
|
|
6
6
|
* @param {object} [opts] Options
|
|
7
|
-
* @param {boolean} [opts.optional=false] Whether this field is optional
|
|
8
|
-
*
|
|
7
|
+
* @param {boolean} [opts.optional=false] Whether this field is optional.
|
|
8
|
+
* Default is `false`
|
|
9
|
+
* @param {boolean} [opts.persist=true] Whether this field will persist in
|
|
10
|
+
* `req.body`. Default is `true`
|
|
9
11
|
* @returns {PageField} A PageField
|
|
10
12
|
*/
|
|
11
13
|
export default function field(name: string, opts?: {
|
|
@@ -24,8 +26,10 @@ export class PageField {
|
|
|
24
26
|
*
|
|
25
27
|
* @param {string} name Field name
|
|
26
28
|
* @param {object} [opts] Options
|
|
27
|
-
* @param {boolean} [opts.optional=false] Whether this field is optional
|
|
28
|
-
*
|
|
29
|
+
* @param {boolean} [opts.optional=false] Whether this field is optional.
|
|
30
|
+
* Default is `false`
|
|
31
|
+
* @param {boolean} [opts.persist=true] Whether this field will persist in
|
|
32
|
+
* `req.body`. Default is `true`
|
|
29
33
|
*/
|
|
30
34
|
constructor(name: string, { optional, persist }?: {
|
|
31
35
|
optional?: boolean | undefined;
|
|
@@ -75,9 +79,8 @@ export class PageField {
|
|
|
75
79
|
*/
|
|
76
80
|
getValidators(): Validator[];
|
|
77
81
|
/**
|
|
78
|
-
* Add value validators
|
|
79
|
-
*
|
|
80
|
-
* same time as other "processors".
|
|
82
|
+
* Add value validators Some validators will include a `sanitise()` method
|
|
83
|
+
* which will be run at the same time as other "processors".
|
|
81
84
|
*
|
|
82
85
|
* @param {Validator[]} items Validation functions
|
|
83
86
|
* @returns {PageField} Chain
|
|
@@ -90,8 +93,8 @@ export class PageField {
|
|
|
90
93
|
*/
|
|
91
94
|
getProcessors(): FieldProcessorFunction[];
|
|
92
95
|
/**
|
|
93
|
-
* Add value pre-processors
|
|
94
|
-
*
|
|
96
|
+
* Add value pre-processors This is most often used to sanitise values to a
|
|
97
|
+
* particular data type.
|
|
95
98
|
*
|
|
96
99
|
* @param {FieldProcessorFunction[]} items Processor functions
|
|
97
100
|
* @returns {PageField} Chain
|
|
@@ -104,9 +107,8 @@ export class PageField {
|
|
|
104
107
|
*/
|
|
105
108
|
getConditions(): ValidatorConditionFunction[];
|
|
106
109
|
/**
|
|
107
|
-
* Add conditions
|
|
108
|
-
*
|
|
109
|
-
* "actionable".
|
|
110
|
+
* Add conditions All conditions must be met in order for this field to be
|
|
111
|
+
* considered "actionable".
|
|
110
112
|
*
|
|
111
113
|
* @param {ValidatorConditionFunction[]} items Condition functions
|
|
112
114
|
* @returns {PageField} Chain
|
|
@@ -164,9 +166,9 @@ export class PageField {
|
|
|
164
166
|
if(...args: ValidatorConditionFunction[]): PageField;
|
|
165
167
|
#private;
|
|
166
168
|
}
|
|
167
|
-
export type JourneyContext = import(
|
|
168
|
-
export type Validator = import(
|
|
169
|
-
export type ValidateContext = import(
|
|
170
|
-
export type ValidatorConditionFunction = import(
|
|
171
|
-
export type FieldProcessorFunction = import(
|
|
172
|
-
export type ValidationError = import(
|
|
169
|
+
export type JourneyContext = import("./index").JourneyContext;
|
|
170
|
+
export type Validator = import("../casa").Validator;
|
|
171
|
+
export type ValidateContext = import("../casa").ValidateContext;
|
|
172
|
+
export type ValidatorConditionFunction = import("../casa").ValidatorConditionFunction;
|
|
173
|
+
export type FieldProcessorFunction = import("../casa").FieldProcessorFunction;
|
|
174
|
+
export type ValidationError = import("./index").ValidationError;
|
package/dist/lib/field.js
CHANGED
|
@@ -18,32 +18,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.PageField = void 0;
|
|
19
19
|
const lodash_1 = __importDefault(require("lodash"));
|
|
20
20
|
const utils_js_1 = require("./utils.js");
|
|
21
|
-
const logger_js_1 = __importDefault(require("./logger.js"));
|
|
22
|
-
const log = (0, logger_js_1.default)('lib:field');
|
|
23
21
|
const { isFunction } = lodash_1.default;
|
|
24
22
|
/**
|
|
23
|
+
* @typedef {import("./index").JourneyContext} JourneyContext
|
|
25
24
|
* @access private
|
|
26
|
-
* @typedef {import('./index').JourneyContext} JourneyContext
|
|
27
25
|
*/
|
|
28
26
|
/**
|
|
27
|
+
* @typedef {import("../casa").Validator} Validator
|
|
29
28
|
* @access private
|
|
30
|
-
* @typedef {import('../casa').Validator} Validator
|
|
31
29
|
*/
|
|
32
30
|
/**
|
|
31
|
+
* @typedef {import("../casa").ValidateContext} ValidateContext
|
|
33
32
|
* @access private
|
|
34
|
-
* @typedef {import('../casa').ValidateContext} ValidateContext
|
|
35
33
|
*/
|
|
36
34
|
/**
|
|
35
|
+
* @typedef {import("../casa").ValidatorConditionFunction} ValidatorConditionFunction
|
|
37
36
|
* @access private
|
|
38
|
-
* @typedef {import('../casa').ValidatorConditionFunction} ValidatorConditionFunction
|
|
39
37
|
*/
|
|
40
38
|
/**
|
|
39
|
+
* @typedef {import("../casa").FieldProcessorFunction} FieldProcessorFunction
|
|
41
40
|
* @access private
|
|
42
|
-
* @typedef {import('../casa').FieldProcessorFunction} FieldProcessorFunction
|
|
43
41
|
*/
|
|
44
42
|
/**
|
|
43
|
+
* @typedef {import("./index").ValidationError} ValidationError
|
|
45
44
|
* @access private
|
|
46
|
-
* @typedef {import('./index').ValidationError} ValidationError
|
|
47
45
|
*/
|
|
48
46
|
// Quick check to see if the field name corresponds to a non-primitive complex
|
|
49
47
|
// type. For example, `my_field[nested]`.
|
|
@@ -61,32 +59,24 @@ class PageField {
|
|
|
61
59
|
*
|
|
62
60
|
* @param {string} name Field name
|
|
63
61
|
* @param {object} [opts] Options
|
|
64
|
-
* @param {boolean} [opts.optional=false] Whether this field is optional
|
|
65
|
-
*
|
|
62
|
+
* @param {boolean} [opts.optional=false] Whether this field is optional.
|
|
63
|
+
* Default is `false`
|
|
64
|
+
* @param {boolean} [opts.persist=true] Whether this field will persist in
|
|
65
|
+
* `req.body`. Default is `true`
|
|
66
66
|
*/
|
|
67
67
|
constructor(name, { optional = false, persist = true } = Object.create(null)) {
|
|
68
|
-
/**
|
|
69
|
-
* @type {string}
|
|
70
|
-
*/
|
|
68
|
+
/** @type {string} */
|
|
71
69
|
_PageField_name.set(this, void 0);
|
|
72
|
-
/**
|
|
73
|
-
* @type {FieldProcessorFunction[]}
|
|
74
|
-
*/
|
|
70
|
+
/** @type {FieldProcessorFunction[]} */
|
|
75
71
|
_PageField_processors.set(this, void 0);
|
|
76
|
-
/**
|
|
77
|
-
* @type {Validator[]}
|
|
78
|
-
*/
|
|
72
|
+
/** @type {Validator[]} */
|
|
79
73
|
_PageField_validators.set(this, void 0);
|
|
80
|
-
/**
|
|
81
|
-
* @type {ValidatorConditionFunction[]}
|
|
82
|
-
*/
|
|
74
|
+
/** @type {ValidatorConditionFunction[]} */
|
|
83
75
|
_PageField_conditions.set(this, void 0);
|
|
84
|
-
/**
|
|
85
|
-
* @type {object}
|
|
86
|
-
*/
|
|
76
|
+
/** @type {object} */
|
|
87
77
|
_PageField_meta.set(this, void 0);
|
|
88
78
|
if (!name) {
|
|
89
|
-
throw new SyntaxError(
|
|
79
|
+
throw new SyntaxError("A name for this field is required, i.e. \"field('myField')\".");
|
|
90
80
|
}
|
|
91
81
|
__classPrivateFieldSet(this, _PageField_name, undefined, "f");
|
|
92
82
|
__classPrivateFieldSet(this, _PageField_validators, [], "f");
|
|
@@ -185,7 +175,7 @@ class PageField {
|
|
|
185
175
|
// early to aid developer.
|
|
186
176
|
const isComplex = reComplexType.test(name);
|
|
187
177
|
if (isComplex && name.match(/\[/g).length > 1) {
|
|
188
|
-
throw new SyntaxError(
|
|
178
|
+
throw new SyntaxError("Complex field names are only supported to 1 property depth. E.g. a[b] is ok, a[b][c] is not");
|
|
189
179
|
}
|
|
190
180
|
__classPrivateFieldSet(this, _PageField_name, String(name), "f");
|
|
191
181
|
__classPrivateFieldGet(this, _PageField_meta, "f").complex = isComplex;
|
|
@@ -205,18 +195,17 @@ class PageField {
|
|
|
205
195
|
return __classPrivateFieldGet(this, _PageField_validators, "f");
|
|
206
196
|
}
|
|
207
197
|
/**
|
|
208
|
-
* Add value validators
|
|
209
|
-
*
|
|
210
|
-
* same time as other "processors".
|
|
198
|
+
* Add value validators Some validators will include a `sanitise()` method
|
|
199
|
+
* which will be run at the same time as other "processors".
|
|
211
200
|
*
|
|
212
201
|
* @param {Validator[]} items Validation functions
|
|
213
202
|
* @returns {PageField} Chain
|
|
214
203
|
*/
|
|
215
204
|
validators(items = []) {
|
|
216
205
|
if (!items.length) {
|
|
217
|
-
throw new Error(
|
|
206
|
+
throw new Error("Calling validators() to get all validators is no longer supported, please use getValidators()");
|
|
218
207
|
}
|
|
219
|
-
__classPrivateFieldSet(this, _PageField_validators, [...__classPrivateFieldGet(this, _PageField_validators, "f"), ...
|
|
208
|
+
__classPrivateFieldSet(this, _PageField_validators, [...__classPrivateFieldGet(this, _PageField_validators, "f"), ...items.flat()], "f");
|
|
220
209
|
return this;
|
|
221
210
|
}
|
|
222
211
|
/**
|
|
@@ -228,17 +217,17 @@ class PageField {
|
|
|
228
217
|
return __classPrivateFieldGet(this, _PageField_processors, "f");
|
|
229
218
|
}
|
|
230
219
|
/**
|
|
231
|
-
* Add value pre-processors
|
|
232
|
-
*
|
|
220
|
+
* Add value pre-processors This is most often used to sanitise values to a
|
|
221
|
+
* particular data type.
|
|
233
222
|
*
|
|
234
223
|
* @param {FieldProcessorFunction[]} items Processor functions
|
|
235
224
|
* @returns {PageField} Chain
|
|
236
225
|
*/
|
|
237
226
|
processors(items = []) {
|
|
238
227
|
if (!items.length) {
|
|
239
|
-
throw new Error(
|
|
228
|
+
throw new Error("Calling processors() to get all processors is no longer supported, please use getProcessors()");
|
|
240
229
|
}
|
|
241
|
-
__classPrivateFieldSet(this, _PageField_processors, [...__classPrivateFieldGet(this, _PageField_processors, "f"), ...
|
|
230
|
+
__classPrivateFieldSet(this, _PageField_processors, [...__classPrivateFieldGet(this, _PageField_processors, "f"), ...items.flat()], "f");
|
|
242
231
|
return this;
|
|
243
232
|
}
|
|
244
233
|
/**
|
|
@@ -250,18 +239,17 @@ class PageField {
|
|
|
250
239
|
return __classPrivateFieldGet(this, _PageField_conditions, "f");
|
|
251
240
|
}
|
|
252
241
|
/**
|
|
253
|
-
* Add conditions
|
|
254
|
-
*
|
|
255
|
-
* "actionable".
|
|
242
|
+
* Add conditions All conditions must be met in order for this field to be
|
|
243
|
+
* considered "actionable".
|
|
256
244
|
*
|
|
257
245
|
* @param {ValidatorConditionFunction[]} items Condition functions
|
|
258
246
|
* @returns {PageField} Chain
|
|
259
247
|
*/
|
|
260
248
|
conditions(items = []) {
|
|
261
249
|
if (!items.length) {
|
|
262
|
-
throw new Error(
|
|
250
|
+
throw new Error("Calling conditions() to get all conditions is no longer supported, please use getConditions()");
|
|
263
251
|
}
|
|
264
|
-
__classPrivateFieldSet(this, _PageField_conditions, [...__classPrivateFieldGet(this, _PageField_conditions, "f"), ...
|
|
252
|
+
__classPrivateFieldSet(this, _PageField_conditions, [...__classPrivateFieldGet(this, _PageField_conditions, "f"), ...items.flat()], "f");
|
|
265
253
|
return this;
|
|
266
254
|
}
|
|
267
255
|
/* ---------------------------------------------------------------- execute */
|
|
@@ -289,14 +277,11 @@ class PageField {
|
|
|
289
277
|
let fieldErrors = __classPrivateFieldGet(this, _PageField_validators, "f")[i].validate(context.fieldValue, context);
|
|
290
278
|
if (!Array.isArray(fieldErrors)) {
|
|
291
279
|
// Friendly message for developer
|
|
292
|
-
throw new TypeError(`The validator at index ${i} (name: ${__classPrivateFieldGet(this, _PageField_validators, "f")[i].name ||
|
|
280
|
+
throw new TypeError(`The validator at index ${i} (name: ${__classPrivateFieldGet(this, _PageField_validators, "f")[i].name || "unknown"}) for field '${__classPrivateFieldGet(this, _PageField_name, "f")}' did not return an array`);
|
|
293
281
|
}
|
|
294
282
|
fieldErrors = fieldErrors.map((e) => e.withContext(Object.assign(Object.assign({}, context), { validator: __classPrivateFieldGet(this, _PageField_validators, "f")[i].name })));
|
|
295
283
|
/* eslint-enable security/detect-object-injection */
|
|
296
|
-
errors = [
|
|
297
|
-
...errors,
|
|
298
|
-
...(fieldErrors !== null && fieldErrors !== void 0 ? fieldErrors : []),
|
|
299
|
-
];
|
|
284
|
+
errors = [...errors, ...(fieldErrors !== null && fieldErrors !== void 0 ? fieldErrors : [])];
|
|
300
285
|
}
|
|
301
286
|
return errors;
|
|
302
287
|
}
|
|
@@ -392,8 +377,10 @@ _PageField_name = new WeakMap(), _PageField_processors = new WeakMap(), _PageFie
|
|
|
392
377
|
* @memberof module:@dwp/govuk-casa
|
|
393
378
|
* @param {string} name Field name
|
|
394
379
|
* @param {object} [opts] Options
|
|
395
|
-
* @param {boolean} [opts.optional=false] Whether this field is optional
|
|
396
|
-
*
|
|
380
|
+
* @param {boolean} [opts.optional=false] Whether this field is optional.
|
|
381
|
+
* Default is `false`
|
|
382
|
+
* @param {boolean} [opts.persist=true] Whether this field will persist in
|
|
383
|
+
* `req.body`. Default is `true`
|
|
397
384
|
* @returns {PageField} A PageField
|
|
398
385
|
*/
|
|
399
386
|
function field(name, opts) {
|
package/dist/lib/field.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/lib/field.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAC5B,yCAAqC;
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/lib/field.js"],"names":[],"mappings":"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"}
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import CasaTemplateLoader from
|
|
2
|
-
import configure from
|
|
3
|
-
import configurationIngestor from
|
|
4
|
-
import endSession from
|
|
5
|
-
import field from
|
|
6
|
-
import { PageField } from
|
|
7
|
-
import JourneyContext from
|
|
8
|
-
import MutableRouter from
|
|
9
|
-
import Plan from
|
|
10
|
-
import * as utils from
|
|
11
|
-
import ValidationError from
|
|
12
|
-
import ValidatorFactory from
|
|
13
|
-
import waypointUrl from
|
|
1
|
+
import CasaTemplateLoader from "./CasaTemplateLoader.js";
|
|
2
|
+
import configure from "./configure.js";
|
|
3
|
+
import configurationIngestor from "./configuration-ingestor.js";
|
|
4
|
+
import endSession from "./end-session.js";
|
|
5
|
+
import field from "./field.js";
|
|
6
|
+
import { PageField } from "./field.js";
|
|
7
|
+
import JourneyContext from "./JourneyContext.js";
|
|
8
|
+
import MutableRouter from "./MutableRouter.js";
|
|
9
|
+
import Plan from "./Plan.js";
|
|
10
|
+
import * as utils from "./utils.js";
|
|
11
|
+
import ValidationError from "./ValidationError.js";
|
|
12
|
+
import ValidatorFactory from "./ValidatorFactory.js";
|
|
13
|
+
import waypointUrl from "./waypoint-url.js";
|
|
14
14
|
export { CasaTemplateLoader, configure, configurationIngestor, endSession, field, PageField, JourneyContext, MutableRouter, Plan, utils, ValidationError, ValidatorFactory, waypointUrl };
|
package/dist/lib/logger.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
declare function _default(namespace: any): {
|
|
2
|
-
trace:
|
|
3
|
-
debug:
|
|
4
|
-
info:
|
|
5
|
-
warn:
|
|
6
|
-
error:
|
|
7
|
-
fatal:
|
|
2
|
+
trace: debug.Debugger;
|
|
3
|
+
debug: debug.Debugger;
|
|
4
|
+
info: debug.Debugger;
|
|
5
|
+
warn: debug.Debugger;
|
|
6
|
+
error: debug.Debugger;
|
|
7
|
+
fatal: debug.Debugger;
|
|
8
8
|
};
|
|
9
9
|
export default _default;
|
|
10
|
+
import debug from "debug";
|
package/dist/lib/logger.js
CHANGED
|
@@ -4,16 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const debug_1 = __importDefault(require("debug"));
|
|
7
|
-
const casaDebugger = (0, debug_1.default)(
|
|
7
|
+
const casaDebugger = (0, debug_1.default)("casa");
|
|
8
8
|
exports.default = (namespace) => {
|
|
9
9
|
const logger = casaDebugger.extend(namespace);
|
|
10
10
|
return {
|
|
11
|
-
trace: logger.extend(
|
|
12
|
-
debug: logger.extend(
|
|
13
|
-
info: logger.extend(
|
|
14
|
-
warn: logger.extend(
|
|
15
|
-
error: logger.extend(
|
|
16
|
-
fatal: logger.extend(
|
|
11
|
+
trace: logger.extend("trace"),
|
|
12
|
+
debug: logger.extend("debug"),
|
|
13
|
+
info: logger.extend("info"),
|
|
14
|
+
warn: logger.extend("warn"),
|
|
15
|
+
error: logger.extend("error"),
|
|
16
|
+
fatal: logger.extend("fatal"),
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
19
|
//# sourceMappingURL=logger.js.map
|
package/dist/lib/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.js"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,MAAM,YAAY,GAAG,IAAA,eAAK,EAAC,MAAM,CAAC,CAAC;AAEnC,kBAAe,CAAC,SAAS,EAAE,EAAE;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.js"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,MAAM,YAAY,GAAG,IAAA,eAAK,EAAC,MAAM,CAAC,CAAC;AAEnC,kBAAe,CAAC,SAAS,EAAE,EAAE;IAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAC9B,CAAC;AACJ,CAAC,CAAC"}
|
package/dist/lib/mount.d.ts
CHANGED
|
@@ -13,8 +13,8 @@ declare function _default({ nunjucksEnv, mountUrl, plan, staticRouter, ancillary
|
|
|
13
13
|
postMiddleware: ExpressRequestHandler[];
|
|
14
14
|
}): Mounter;
|
|
15
15
|
export default _default;
|
|
16
|
-
export type NunjucksEnvironment = import(
|
|
17
|
-
export type ExpressRequestHandler = import(
|
|
18
|
-
export type Mounter = import(
|
|
19
|
-
export type Plan = import(
|
|
20
|
-
export type MutableRouter = import(
|
|
16
|
+
export type NunjucksEnvironment = import("nunjucks").Environment;
|
|
17
|
+
export type ExpressRequestHandler = import("express").RequestHandler;
|
|
18
|
+
export type Mounter = import("../casa").Mounter;
|
|
19
|
+
export type Plan = import("../casa").Plan;
|
|
20
|
+
export type MutableRouter = import("../casa").MutableRouter;
|
package/dist/lib/mount.js
CHANGED
|
@@ -8,30 +8,31 @@ const path_to_regexp_1 = require("path-to-regexp");
|
|
|
8
8
|
const strip_proxy_path_js_1 = __importDefault(require("../middleware/strip-proxy-path.js"));
|
|
9
9
|
const serve_first_waypoint_js_1 = __importDefault(require("../middleware/serve-first-waypoint.js"));
|
|
10
10
|
/**
|
|
11
|
+
* @typedef {import("nunjucks").Environment} NunjucksEnvironment
|
|
11
12
|
* @access private
|
|
12
|
-
* @typedef {import('nunjucks').Environment} NunjucksEnvironment
|
|
13
13
|
*/
|
|
14
14
|
/**
|
|
15
|
+
* @typedef {import("express").RequestHandler} ExpressRequestHandler
|
|
15
16
|
* @access private
|
|
16
|
-
* @typedef {import('express').RequestHandler} ExpressRequestHandler
|
|
17
17
|
*/
|
|
18
18
|
/**
|
|
19
|
+
* @typedef {import("../casa").Mounter} Mounter
|
|
19
20
|
* @access private
|
|
20
|
-
* @typedef {import('../casa').Mounter} Mounter
|
|
21
21
|
*/
|
|
22
22
|
/**
|
|
23
|
+
* @typedef {import("../casa").Plan} Plan
|
|
23
24
|
* @access private
|
|
24
|
-
* @typedef {import('../casa').Plan} Plan
|
|
25
25
|
*/
|
|
26
26
|
/**
|
|
27
|
+
* @typedef {import("../casa").MutableRouter} MutableRouter
|
|
27
28
|
* @access private
|
|
28
|
-
* @typedef {import('../casa').MutableRouter} MutableRouter
|
|
29
29
|
*/
|
|
30
30
|
/**
|
|
31
31
|
* Mounting function factory.
|
|
32
32
|
*
|
|
33
33
|
* @param {object} args Arguments
|
|
34
|
-
* @param {NunjucksEnvironment} args.nunjucksEnv Pre-configured Nunjucks
|
|
34
|
+
* @param {NunjucksEnvironment} args.nunjucksEnv Pre-configured Nunjucks
|
|
35
|
+
* environment
|
|
35
36
|
* @param {string} [args.mountUrl] Mount URL
|
|
36
37
|
* @param {Plan} [args.plan] CASA Plan
|
|
37
38
|
* @param {MutableRouter} args.staticRouter Router for all static assets
|
|
@@ -43,11 +44,11 @@ const serve_first_waypoint_js_1 = __importDefault(require("../middleware/serve-f
|
|
|
43
44
|
* @param {ExpressRequestHandler[]} args.bodyParserMiddleware Middleware
|
|
44
45
|
* @param {ExpressRequestHandler[]} args.dataMiddleware Middleware
|
|
45
46
|
* @param {ExpressRequestHandler[]} args.postMiddleware Middleware
|
|
46
|
-
* @returns {Mounter}
|
|
47
|
+
* @returns {Mounter} Mount
|
|
47
48
|
*/
|
|
48
|
-
exports.default = ({ nunjucksEnv, mountUrl, plan, staticRouter, ancillaryRouter, journeyRouter, preMiddleware, sessionMiddleware, i18nMiddleware, bodyParserMiddleware, dataMiddleware, postMiddleware, }) => (app, { route =
|
|
49
|
+
exports.default = ({ nunjucksEnv, mountUrl, plan, staticRouter, ancillaryRouter, journeyRouter, preMiddleware, sessionMiddleware, i18nMiddleware, bodyParserMiddleware, dataMiddleware, postMiddleware, }) => (app, { route = "/", serveFirstWaypoint = false } = {}) => {
|
|
49
50
|
nunjucksEnv.express(app);
|
|
50
|
-
app.set(
|
|
51
|
+
app.set("view engine", "njk");
|
|
51
52
|
// If a `mountUrl` has been defined, then we're potentially in "proxy mode",
|
|
52
53
|
// in which we strip the proxy path prefix from the incoming request URLs.
|
|
53
54
|
if (mountUrl) {
|
|
@@ -56,7 +57,7 @@ exports.default = ({ nunjucksEnv, mountUrl, plan, staticRouter, ancillaryRouter,
|
|
|
56
57
|
// Attach a handler to redirect requests for `/` to the first waypoint in
|
|
57
58
|
// the plan
|
|
58
59
|
if (serveFirstWaypoint && plan) {
|
|
59
|
-
const re = (0, path_to_regexp_1.pathToRegexp)(`${route}`.replace(/\/+/g,
|
|
60
|
+
const re = (0, path_to_regexp_1.pathToRegexp)(`${route}`.replace(/\/+/g, "/"));
|
|
60
61
|
app.use(re, (0, serve_first_waypoint_js_1.default)({ plan }));
|
|
61
62
|
}
|
|
62
63
|
// Capture the mount path of this CASA app, before any parameterised path
|