@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/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/lib/mount.js"],"names":[],"mappings":";;;;;AAAA,qCAAiC;AACjC,mDAA8C;AAE9C,4FAAgF;AAChF,oGAAwF;AAExF;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../../src/lib/mount.js"],"names":[],"mappings":";;;;;AAAA,qCAAiC;AACjC,mDAA8C;AAE9C,4FAAgF;AAChF,oGAAwF;AAExF;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,kBAAe,CAAC,EACZ,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,eAAe,EACf,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,cAAc,GACf,EAAE,EAAE,CACL,CAAC,GAAG,EAAE,EAAE,KAAK,GAAG,GAAG,EAAE,kBAAkB,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;IACxD,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAE9B,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,QAAQ,EAAE,CAAC;QACb,GAAG,CAAC,GAAG,CAAC,IAAA,6BAA+B,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,yEAAyE;IACzE,WAAW;IACX,IAAI,kBAAkB,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,IAAA,6BAAY,EAAC,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAA,iCAAmC,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,yEAAyE;IACzE,6EAA6E;IAC7E,6DAA6D;IAC7D,2EAA2E;IAC3E,uBAAuB;IACvB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,GAAG,CAAC,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC;QACzC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,0EAA0E;IAC1E,4EAA4E;IAC5E,eAAe;IACf,MAAM,kBAAkB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;IAC/C,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvB,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAE5B,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC;QACpB,0EAA0E;QAC1E,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE3B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEvB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
|
|
@@ -13,17 +13,16 @@ export function includes(source?: any[], search?: any): boolean;
|
|
|
13
13
|
*
|
|
14
14
|
* Requires NodeJS >= 14 to make use of bundled date locale data.
|
|
15
15
|
*
|
|
16
|
-
* `date` may be any of the following types:
|
|
17
|
-
* object - {dd:'', mm:'', yyyy:''}
|
|
16
|
+
* `date` may be any of the following types: object - {dd:'', mm:'', yyyy:''}
|
|
18
17
|
*
|
|
19
18
|
* @memberof NunjucksFilters
|
|
20
|
-
* @param
|
|
21
|
-
* @param
|
|
22
|
-
* @param
|
|
23
|
-
* @param
|
|
24
|
-
* @param
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
19
|
+
* @param {object} date Date
|
|
20
|
+
* @param {string} date.dd Day
|
|
21
|
+
* @param {string} date.mm Month
|
|
22
|
+
* @param {string} date.yyyy Year
|
|
23
|
+
* @param {object} [config] Options
|
|
24
|
+
* @param {string} [config.locale] Locale (default 'en')
|
|
25
|
+
* @param {string} [config.format] Format (default 'd MMMM yyyy')
|
|
27
26
|
* @returns {string} Formatted date
|
|
28
27
|
*/
|
|
29
28
|
export function formatDateObject(date: {
|
|
@@ -37,9 +36,8 @@ export function formatDateObject(date: {
|
|
|
37
36
|
/**
|
|
38
37
|
* Attribute values will be HTML/attribute escaped.
|
|
39
38
|
*
|
|
40
|
-
* Example:
|
|
41
|
-
*
|
|
42
|
-
* Output: class="basic" data-ga="3"
|
|
39
|
+
* Example: Given: {class: 'basic', 'data-ga': 3} Output: class="basic"
|
|
40
|
+
* data-ga="3"
|
|
43
41
|
*
|
|
44
42
|
* @memberof NunjucksFilters
|
|
45
43
|
* @param {object} attrsObject Attributes object (in name:value pairs)
|
|
@@ -16,7 +16,7 @@ const combineMerge = (target, source, options) => {
|
|
|
16
16
|
source.forEach((item, index) => {
|
|
17
17
|
// ESLint disabled as `index` is only an integer
|
|
18
18
|
/* eslint-disable security/detect-object-injection */
|
|
19
|
-
if (typeof destination[index] ===
|
|
19
|
+
if (typeof destination[index] === "undefined") {
|
|
20
20
|
destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);
|
|
21
21
|
}
|
|
22
22
|
else if (options.isMergeableObject(item)) {
|
|
@@ -32,7 +32,7 @@ const combineMerge = (target, source, options) => {
|
|
|
32
32
|
// Allows objects to be deepmerged and retain their type, without becoming [object Object]
|
|
33
33
|
// ref: https://github.com/jonschlinkert/is-plain-object/blob/master/is-plain-object.js
|
|
34
34
|
function isObject(o) {
|
|
35
|
-
return Object.prototype.toString.call(o) ===
|
|
35
|
+
return Object.prototype.toString.call(o) === "[object Object]";
|
|
36
36
|
}
|
|
37
37
|
function isPlainObjectOrArray(o) {
|
|
38
38
|
if (Array.isArray(o)) {
|
|
@@ -50,13 +50,13 @@ function isPlainObjectOrArray(o) {
|
|
|
50
50
|
return false;
|
|
51
51
|
}
|
|
52
52
|
// eslint-disable-next-line no-prototype-builtins
|
|
53
|
-
return prot.hasOwnProperty(
|
|
53
|
+
return prot.hasOwnProperty("isPrototypeOf");
|
|
54
54
|
}
|
|
55
55
|
function mergeObjects(...objects) {
|
|
56
|
-
return deepmergeAll([
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
56
|
+
return deepmergeAll([Object.create(null), ...objects], {
|
|
57
|
+
arrayMerge: combineMerge,
|
|
58
|
+
isMergeableObject: isPlainObjectOrArray,
|
|
59
|
+
});
|
|
60
60
|
}
|
|
61
61
|
exports.mergeObjects = mergeObjects;
|
|
62
62
|
/**
|
|
@@ -67,7 +67,7 @@ exports.mergeObjects = mergeObjects;
|
|
|
67
67
|
* @param {any} search Item to search within the `source`
|
|
68
68
|
* @returns {boolean} True if the search item was found
|
|
69
69
|
*/
|
|
70
|
-
function includes(source = [], search =
|
|
70
|
+
function includes(source = [], search = "") {
|
|
71
71
|
return source.includes(search);
|
|
72
72
|
}
|
|
73
73
|
exports.includes = includes;
|
|
@@ -76,40 +76,40 @@ exports.includes = includes;
|
|
|
76
76
|
*
|
|
77
77
|
* Requires NodeJS >= 14 to make use of bundled date locale data.
|
|
78
78
|
*
|
|
79
|
-
* `date` may be any of the following types:
|
|
80
|
-
* object - {dd:'', mm:'', yyyy:''}
|
|
79
|
+
* `date` may be any of the following types: object - {dd:'', mm:'', yyyy:''}
|
|
81
80
|
*
|
|
82
81
|
* @memberof NunjucksFilters
|
|
83
|
-
* @param
|
|
84
|
-
* @param
|
|
85
|
-
* @param
|
|
86
|
-
* @param
|
|
87
|
-
* @param
|
|
88
|
-
* @param
|
|
89
|
-
* @param
|
|
82
|
+
* @param {object} date Date
|
|
83
|
+
* @param {string} date.dd Day
|
|
84
|
+
* @param {string} date.mm Month
|
|
85
|
+
* @param {string} date.yyyy Year
|
|
86
|
+
* @param {object} [config] Options
|
|
87
|
+
* @param {string} [config.locale] Locale (default 'en')
|
|
88
|
+
* @param {string} [config.format] Format (default 'd MMMM yyyy')
|
|
90
89
|
* @returns {string} Formatted date
|
|
91
90
|
*/
|
|
92
91
|
function formatDateObject(date, config = {}) {
|
|
93
|
-
const { locale =
|
|
94
|
-
if (Object.prototype.toString.call(date) ===
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
const { locale = "en", format = "d MMMM yyyy" } = config;
|
|
93
|
+
if (Object.prototype.toString.call(date) === "[object Object]" &&
|
|
94
|
+
"yyyy" in date &&
|
|
95
|
+
"mm" in date &&
|
|
96
|
+
"dd" in date) {
|
|
98
97
|
return luxon_1.DateTime.fromObject({
|
|
99
98
|
year: Math.max(0, parseInt(date.yyyy, 10)),
|
|
100
99
|
month: Math.max(0, parseInt(date.mm, 10)),
|
|
101
100
|
day: Math.max(1, parseInt(date.dd, 10)),
|
|
102
|
-
})
|
|
101
|
+
})
|
|
102
|
+
.setLocale(locale)
|
|
103
|
+
.toFormat(format);
|
|
103
104
|
}
|
|
104
|
-
return
|
|
105
|
+
return "INVALID DATE OBJECT";
|
|
105
106
|
}
|
|
106
107
|
exports.formatDateObject = formatDateObject;
|
|
107
108
|
/**
|
|
108
109
|
* Attribute values will be HTML/attribute escaped.
|
|
109
110
|
*
|
|
110
|
-
* Example:
|
|
111
|
-
*
|
|
112
|
-
* Output: class="basic" data-ga="3"
|
|
111
|
+
* Example: Given: {class: 'basic', 'data-ga': 3} Output: class="basic"
|
|
112
|
+
* data-ga="3"
|
|
113
113
|
*
|
|
114
114
|
* @memberof NunjucksFilters
|
|
115
115
|
* @param {object} attrsObject Attributes object (in name:value pairs)
|
|
@@ -117,24 +117,24 @@ exports.formatDateObject = formatDateObject;
|
|
|
117
117
|
*/
|
|
118
118
|
function renderAsAttributes(attrsObject) {
|
|
119
119
|
const attrsList = [];
|
|
120
|
-
if (typeof attrsObject ===
|
|
120
|
+
if (typeof attrsObject === "object") {
|
|
121
121
|
Object.keys(attrsObject).forEach((key) => {
|
|
122
122
|
// ESLint disable as `attrsObject` is dev-controlled, `Object.keys()` has
|
|
123
123
|
// been used (to get "own" properties) and `m` is one of the characters
|
|
124
124
|
// found by the regex.
|
|
125
125
|
/* eslint-disable security/detect-object-injection */
|
|
126
126
|
const value = String(attrsObject[key]).replace(/[<>"'&]/g, (m) => ({
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
'"':
|
|
130
|
-
'
|
|
131
|
-
|
|
132
|
-
}[m])
|
|
127
|
+
"<": "<",
|
|
128
|
+
">": ">",
|
|
129
|
+
'"': """,
|
|
130
|
+
"'": "'",
|
|
131
|
+
"&": "&",
|
|
132
|
+
})[m]);
|
|
133
133
|
/* eslint-enable security/detect-object-injection */
|
|
134
134
|
attrsList.push(`${key}="${value}"`);
|
|
135
135
|
});
|
|
136
136
|
}
|
|
137
|
-
return new nunjucks_1.default.runtime.SafeString(attrsList.join(
|
|
137
|
+
return new nunjucks_1.default.runtime.SafeString(attrsList.join(" "));
|
|
138
138
|
}
|
|
139
139
|
exports.renderAsAttributes = renderAsAttributes;
|
|
140
140
|
//# sourceMappingURL=nunjucks-filters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nunjucks-filters.js","sourceRoot":"","sources":["../../src/lib/nunjucks-filters.js"],"names":[],"mappings":";;;;;;AAAA,0DAA8B;AAC9B,iCAAiC;AACjC,wDAAgC;AAEhC,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,mBAAK,CAAC;AAEpC,4EAA4E;AAC5E,kBAAkB;AAClB,+CAA+C;AAE/C,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"nunjucks-filters.js","sourceRoot":"","sources":["../../src/lib/nunjucks-filters.js"],"names":[],"mappings":"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"}
|
package/dist/lib/nunjucks.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @typedef {object} NunjucksOptions
|
|
3
|
-
* @property {string[]} [views=[]] Template file directories (optional, default
|
|
3
|
+
* @property {string[]} [views=[]] Template file directories (optional, default
|
|
4
|
+
* []). Default is `[]`
|
|
4
5
|
*/
|
|
5
6
|
/**
|
|
6
7
|
* Create a Nunjucks environment.
|
|
7
8
|
*
|
|
8
|
-
* @access private
|
|
9
9
|
* @param {NunjucksOptions} options Nunjucks options
|
|
10
10
|
* @returns {Environment} Nunjucks Environment instance
|
|
11
|
+
* @access private
|
|
11
12
|
*/
|
|
12
|
-
export default function nunjucksConfig({ views
|
|
13
|
+
export default function nunjucksConfig({ views }: NunjucksOptions): Environment;
|
|
13
14
|
export type NunjucksOptions = {
|
|
14
15
|
/**
|
|
15
|
-
* Template file directories (optional, default
|
|
16
|
+
* Template file directories (optional, default
|
|
17
|
+
* []). Default is `[]`
|
|
16
18
|
*/
|
|
17
19
|
views?: string[] | undefined;
|
|
18
20
|
};
|
|
19
|
-
import { Environment } from
|
|
21
|
+
import { Environment } from "nunjucks";
|
package/dist/lib/nunjucks.js
CHANGED
|
@@ -11,16 +11,17 @@ const CasaTemplateLoader_js_1 = __importDefault(require("./CasaTemplateLoader.js
|
|
|
11
11
|
const nunjucks_filters_js_1 = require("./nunjucks-filters.js");
|
|
12
12
|
/**
|
|
13
13
|
* @typedef {object} NunjucksOptions
|
|
14
|
-
* @property {string[]} [views=[]] Template file directories (optional, default
|
|
14
|
+
* @property {string[]} [views=[]] Template file directories (optional, default
|
|
15
|
+
* []). Default is `[]`
|
|
15
16
|
*/
|
|
16
17
|
/**
|
|
17
18
|
* Create a Nunjucks environment.
|
|
18
19
|
*
|
|
19
|
-
* @access private
|
|
20
20
|
* @param {NunjucksOptions} options Nunjucks options
|
|
21
21
|
* @returns {Environment} Nunjucks Environment instance
|
|
22
|
+
* @access private
|
|
22
23
|
*/
|
|
23
|
-
function nunjucksConfig({ views = []
|
|
24
|
+
function nunjucksConfig({ views = [] }) {
|
|
24
25
|
// Prepare a single Nunjucks environment for all responses to use. Note that
|
|
25
26
|
// we cannot prepare response-specific global functions/filters if we use a
|
|
26
27
|
// single environment, but the performance gains of doing so are significant.
|
|
@@ -38,12 +39,13 @@ function nunjucksConfig({ views = [], }) {
|
|
|
38
39
|
env.modifyBlock = loader.modifyBlock.bind(loader);
|
|
39
40
|
// Globals
|
|
40
41
|
// These can't be modified once set. But they can be overridden by res.locals.
|
|
42
|
+
env.addGlobal("casaVersion",
|
|
41
43
|
/* eslint-disable-next-line security/detect-non-literal-fs-filename */
|
|
42
|
-
|
|
43
|
-
env.addGlobal(
|
|
44
|
-
env.addGlobal(
|
|
45
|
-
env.addGlobal(
|
|
46
|
-
env.addGlobal(
|
|
44
|
+
JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)(dirname_cjs_1.default, "../../package.json"))).version);
|
|
45
|
+
env.addGlobal("mergeObjects", nunjucks_filters_js_1.mergeObjects);
|
|
46
|
+
env.addGlobal("includes", nunjucks_filters_js_1.includes);
|
|
47
|
+
env.addGlobal("formatDateObject", nunjucks_filters_js_1.formatDateObject);
|
|
48
|
+
env.addGlobal("renderAsAttributes", nunjucks_filters_js_1.renderAsAttributes);
|
|
47
49
|
return env;
|
|
48
50
|
}
|
|
49
51
|
exports.default = nunjucksConfig;
|
package/dist/lib/nunjucks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nunjucks.js","sourceRoot":"","sources":["../../src/lib/nunjucks.js"],"names":[],"mappings":";;;;;AAAA,2BAAkC;AAClC,+BAA+B;AAC/B,uCAAuC;AACvC,gEAAoC;AACpC,oFAAyD;AACzD,+
|
|
1
|
+
{"version":3,"file":"nunjucks.js","sourceRoot":"","sources":["../../src/lib/nunjucks.js"],"names":[],"mappings":";;;;;AAAA,2BAAkC;AAClC,+BAA+B;AAC/B,uCAAuC;AACvC,gEAAoC;AACpC,oFAAyD;AACzD,+DAK+B;AAE/B;;;;GAIG;AAEH;;;;;;GAMG;AACH,SAAwB,cAAc,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE;IACnD,4EAA4E;IAC5E,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,MAAM,GAAG,IAAI,+BAAkB,CAAC,KAAK,EAAE;QAC3C,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,IAAI,sBAAW,CAAC,MAAM,EAAE;QAClC,UAAU,EAAE,IAAI;QAChB,gBAAgB,EAAE,KAAK;QACvB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,yCAAyC;IACzC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAElD,UAAU;IACV,8EAA8E;IAC9E,GAAG,CAAC,SAAS,CACX,aAAa;IACb,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,cAAO,EAAC,qBAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,OAAO,CACzE,CAAC;IAEF,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kCAAY,CAAC,CAAC;IAC5C,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,8BAAQ,CAAC,CAAC;IACpC,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,sCAAgB,CAAC,CAAC;IACpD,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,wCAAkB,CAAC,CAAC;IAExD,OAAO,GAAG,CAAC;AACb,CAAC;AAjCD,iCAiCC"}
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,116 +1,116 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @typedef {import("../casa").GlobalHook | import("../casa").PageHook} Hook
|
|
2
3
|
* @access private
|
|
3
|
-
* @typedef {import('../casa').GlobalHook | import('../casa').PageHook} Hook
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
6
|
* Determine if value is empty. Recurse over objects.
|
|
7
7
|
*
|
|
8
|
-
* @
|
|
9
|
-
* @param {any} val Value to check
|
|
8
|
+
* @param {any} val Value to check
|
|
10
9
|
* @returns {boolean} True if the object is empty
|
|
10
|
+
* @access private
|
|
11
11
|
*/
|
|
12
12
|
export function isEmpty(val: any): boolean;
|
|
13
13
|
/**
|
|
14
14
|
* Test is a value can be stringified (numbers or strings)
|
|
15
15
|
*
|
|
16
|
-
* @access private
|
|
17
16
|
* @param {any} value Item to test
|
|
18
17
|
* @returns {boolean} Whether the value is stringable or not
|
|
18
|
+
* @access private
|
|
19
19
|
*/
|
|
20
20
|
export function isStringable(value: any): boolean;
|
|
21
21
|
/**
|
|
22
22
|
* Extract the middleware functions that are relevant for the given hook and
|
|
23
23
|
* path.
|
|
24
24
|
*
|
|
25
|
-
* @access private
|
|
26
25
|
* @param {string} hookName Hook name (including scope prefix)
|
|
27
26
|
* @param {string} path URL path to match (relative to mountUrl)
|
|
28
27
|
* @param {Hook[]} hooks Hooks to be applied at the page level
|
|
29
28
|
* @returns {Function[]} An array of middleware that should be applied
|
|
29
|
+
* @access private
|
|
30
30
|
*/
|
|
31
31
|
export function resolveMiddlewareHooks(hookName: string, path: string, hooks?: Hook[]): Function[];
|
|
32
32
|
/**
|
|
33
33
|
* Coerce an input to a string.
|
|
34
34
|
*
|
|
35
|
-
* @access private
|
|
36
35
|
* @param {any} input Input to be stringified
|
|
37
36
|
* @param {string} fallback Fallback to use if input can't be stringified
|
|
38
37
|
* @returns {string} The stringified input
|
|
38
|
+
* @access private
|
|
39
39
|
*/
|
|
40
40
|
export function stringifyInput(input: any, fallback: string, ...args: any[]): string;
|
|
41
41
|
/**
|
|
42
42
|
* Coerce an input to an integer.
|
|
43
43
|
*
|
|
44
44
|
* @param {any} input Input to be coerced.
|
|
45
|
-
* @returns {number|undefined} The number as an integer or `undefined`.
|
|
45
|
+
* @returns {number | undefined} The number as an integer or `undefined`.
|
|
46
46
|
*/
|
|
47
47
|
export function coerceInputToInteger(input: any): number | undefined;
|
|
48
48
|
/**
|
|
49
49
|
* Strip whitespace from a string.
|
|
50
50
|
*
|
|
51
|
-
* @
|
|
52
|
-
* @param {
|
|
53
|
-
* @
|
|
54
|
-
* @returns {string} value stripped of white space
|
|
51
|
+
* @param {string} value Value to be stripped of whitespace
|
|
52
|
+
* @param {object} options Overrides for the default whitespace replacements
|
|
53
|
+
* @returns {string} Value stripped of white space
|
|
55
54
|
* @throws {TypeError}
|
|
55
|
+
* @access private
|
|
56
56
|
*/
|
|
57
57
|
export function stripWhitespace(value: string, options: object): string;
|
|
58
58
|
/**
|
|
59
59
|
* Checks if the given string can be used as an object key.
|
|
60
60
|
*
|
|
61
|
-
* @access private
|
|
62
61
|
* @param {string} key Proposed Object key
|
|
63
62
|
* @returns {string} Same key if it's valid
|
|
64
|
-
* @throws {Error}
|
|
63
|
+
* @throws {Error} If proposed key is an invalid keyword
|
|
64
|
+
* @access private
|
|
65
65
|
*/
|
|
66
66
|
export function notProto(key: string): string;
|
|
67
67
|
/**
|
|
68
68
|
* Validate a hook name.
|
|
69
69
|
*
|
|
70
|
-
* @access private
|
|
71
70
|
* @param {string} hookName Hook name
|
|
72
71
|
* @returns {void}
|
|
73
72
|
* @throws {TypeError}
|
|
74
73
|
* @throws {SyntaxError}
|
|
74
|
+
* @access private
|
|
75
75
|
*/
|
|
76
76
|
export function validateHookName(hookName: string): void;
|
|
77
77
|
/**
|
|
78
78
|
* Validate a hook path.
|
|
79
79
|
*
|
|
80
|
-
* @access private
|
|
81
80
|
* @param {string} path URL path
|
|
82
81
|
* @returns {void}
|
|
83
82
|
* @throws {TypeError}
|
|
83
|
+
* @access private
|
|
84
84
|
*/
|
|
85
85
|
export function validateHookPath(path: string): void;
|
|
86
86
|
/**
|
|
87
87
|
* Validate a URL path.
|
|
88
88
|
*
|
|
89
|
-
* @access private
|
|
90
89
|
* @param {string} path URL path
|
|
91
90
|
* @returns {string} Same string, if valid
|
|
92
91
|
* @throws {TypeError}
|
|
93
92
|
* @throws {SyntaxError}
|
|
93
|
+
* @access private
|
|
94
94
|
*/
|
|
95
95
|
export function validateUrlPath(path: string): string;
|
|
96
96
|
/**
|
|
97
97
|
* Validate a template name.
|
|
98
98
|
*
|
|
99
|
-
* @access private
|
|
100
99
|
* @param {string} view Template name
|
|
101
100
|
* @returns {void}
|
|
102
101
|
* @throws {TypeError}
|
|
103
102
|
* @throws {SyntaxError}
|
|
103
|
+
* @access private
|
|
104
104
|
*/
|
|
105
105
|
export function validateView(view: string): void;
|
|
106
106
|
/**
|
|
107
107
|
* Validate a waypoint.
|
|
108
108
|
*
|
|
109
|
-
* @access private
|
|
110
109
|
* @param {string} waypoint Waypoint
|
|
111
110
|
* @returns {void}
|
|
112
111
|
* @throws {TypeError}
|
|
113
112
|
* @throws {SyntaxError}
|
|
113
|
+
* @access private
|
|
114
114
|
*/
|
|
115
115
|
export function validateWaypoint(waypoint: string): void;
|
|
116
|
-
export type Hook = import(
|
|
116
|
+
export type Hook = import("../casa").GlobalHook | import("../casa").PageHook;
|