@gov-cy/govcy-express-services 1.9.0 → 1.9.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gov-cy/govcy-express-services",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "An Express-based system that dynamically renders services using @gov-cy/govcy-frontend-renderer and posts data to a submission API.",
5
5
  "author": "DMRID - DSF Team",
6
6
  "license": "MIT",
@@ -56,8 +56,8 @@
56
56
  "coverage:badge": "coverage-badges --output ./coverage-badges.svg && npm run coverage:copy"
57
57
  },
58
58
  "dependencies": {
59
- "@gov-cy/dsf-email-templates": "^2.1.11",
60
- "@gov-cy/govcy-frontend-renderer": "^1.26.7",
59
+ "@gov-cy/dsf-email-templates": "^2.1.14",
60
+ "@gov-cy/govcy-frontend-renderer": "^1.26.9",
61
61
  "axios": "^1.9.0",
62
62
  "cookie-parser": "^1.4.7",
63
63
  "dotenv": "^16.3.1",
@@ -78,8 +78,8 @@
78
78
  "nodemon": "^3.0.2",
79
79
  "pa11y": "^9.1.0",
80
80
  "patch-package": "^8.0.1",
81
- "sinon": "^21.0.1",
82
- "puppeteer": "^24.6.0"
81
+ "puppeteer": "^24.6.0",
82
+ "sinon": "^21.0.1"
83
83
  },
84
84
  "engines": {
85
85
  "node": ">=18.0.0"
@@ -94,19 +94,27 @@ export function evaluateExpression(expression, dataLayer = {}) {
94
94
  }
95
95
 
96
96
 
97
- /**
98
- * Evaluates expression **with automatic flattening**.
99
- * This is a convenience wrapper for most use cases.
100
- *
101
- * @param {string} expression - JS expression using dataLayer["..."]
102
- * @param {object} object - Unflattened data object (e.g., session.siteData[siteKey])
103
- * @param {string} prefix - Prefix to add to all keys (usually the siteKey)
104
- * @returns {*} - The evaluated result
105
- */
106
- export function evaluateExpressionWithFlattening(expression, object, prefix = '') {
107
- const dataLayer = flattenContext(object, prefix);
108
- return evaluateExpression(expression, dataLayer);
109
- }
97
+ /**
98
+ * Evaluates expression **with automatic flattening**.
99
+ * This is a convenience wrapper for most use cases.
100
+ *
101
+ * @param {string} expression - JS expression using dataLayer["..."]
102
+ * @param {object} object - Unflattened data object (e.g., session.siteData[siteKey])
103
+ * @param {string} prefix - Prefix to add to all keys (usually the siteKey)
104
+ * @param {object} [req=null] - Express request, used to inject user.profile_type into the context
105
+ * @returns {*} - The evaluated result
106
+ */
107
+ export function evaluateExpressionWithFlattening(expression, object, prefix = '', req = null) {
108
+ const baseObject = (object && typeof object === 'object') ? object : {};
109
+ const dataLayer = flattenContext(baseObject, prefix);
110
+
111
+ if (req) {
112
+ const profileType = req?.user?.profile_type ?? req?.session?.user?.profile_type ?? null;
113
+ dataLayer['user.profile_type'] = profileType;
114
+ }
115
+
116
+ return evaluateExpression(expression, dataLayer);
117
+ }
110
118
 
111
119
 
112
120
  /**
@@ -166,11 +174,12 @@ export function evaluatePageConditions(page, store, siteKey, req = {}) {
166
174
 
167
175
  try {
168
176
  // Evaluate the expression using flattened site data
169
- const result = evaluateExpressionWithFlattening(
170
- condition.expression,
171
- siteData,
172
- siteKey
173
- );
177
+ const result = evaluateExpressionWithFlattening(
178
+ condition.expression,
179
+ siteData,
180
+ siteKey,
181
+ req
182
+ );
174
183
 
175
184
  if (typeof result !== 'boolean') {
176
185
  logger.debug(`Condition expression on page '${page.pageData?.url || page.id}' returned non-boolean:`, result);