hof 23.0.4-session-timeout-beta-2 → 23.0.5-aws-sdk-v2-beta
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/CHANGELOG.md +7 -2
- package/README.md +13 -6
- package/components/emailer/transports/ses.js +16 -14
- package/frontend/themes/gov-uk/client-js/session-timeout-dialog.js +0 -3
- package/package.json +2 -2
- package/sandbox/apps/sandbox/translations/en/default.json +72 -4
- package/sandbox/public/css/app.css +14392 -9077
- package/sandbox/public/js/bundle.js +21 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
## 2026-
|
|
1
|
+
## 2026-05-12, Version 23.0.5 (Stable), @gregwolversonHO
|
|
2
|
+
|
|
3
|
+
### Changed
|
|
4
|
+
- Replaced nodemailer-ses-transport library with @aws-sdk/client-sesv2 to remove dependency on deprecated aws-sdk-v2 library
|
|
5
|
+
- Replaced usage of nodemailer-ses-transport in the [emailer ses client](./components/emailer/transports/ses.js).
|
|
6
|
+
|
|
7
|
+
## 2026-04-16, Version 23.0.4 (Stable), @PaolaDMadd-Pro
|
|
2
8
|
|
|
3
9
|
### Fixed
|
|
4
10
|
- Decoupled session timeout keep alive from analytics configuration.
|
|
@@ -16,7 +22,6 @@
|
|
|
16
22
|
* `gaTagId` not set: default `connect-src 'self'` remains and GA region endpoints are absent.
|
|
17
23
|
- Added frontend Jest coverage for timeout refresh behavior:
|
|
18
24
|
* Success path (`$.get().done`) updates refresh time and calls controller.
|
|
19
|
-
* Failure path (`$.get().fail`) triggers a console.error and does not call controller.
|
|
20
25
|
|
|
21
26
|
|
|
22
27
|
## 2026-03-18, Version 23.0.3 (Stable), @vinodhasamiyappan-ho
|
package/README.md
CHANGED
|
@@ -1364,17 +1364,25 @@ The following transport options are available:
|
|
|
1364
1364
|
|
|
1365
1365
|
#### `ses`
|
|
1366
1366
|
|
|
1367
|
-
[nodemailer
|
|
1367
|
+
[nodemailer SES transport](https://nodemailer.com/transports/ses)
|
|
1368
1368
|
|
|
1369
1369
|
##### Options
|
|
1370
1370
|
|
|
1371
1371
|
- `accessKeyId` <String>: AWS accessKeyId. Required.
|
|
1372
|
-
- `secretAccessKey` <String>: AWS
|
|
1372
|
+
- `secretAccessKey` <String>: AWS secret access key. Required.
|
|
1373
1373
|
- `sessionToken` <String>
|
|
1374
1374
|
- `region` <String>. Defaults to 'eu-west-1'.
|
|
1375
|
-
- `httpOptions` <
|
|
1376
|
-
|
|
1377
|
-
-
|
|
1375
|
+
- `httpOptions` <Object>: Optional top-level overrides passed to the AWS SDK v3 SES client.
|
|
1376
|
+
|
|
1377
|
+
Requires `@aws-sdk/client-sesv2`.
|
|
1378
|
+
|
|
1379
|
+
`rateLimit` and `maxConnections` are legacy options from `nodemailer-ses-transport` and are no longer used.
|
|
1380
|
+
|
|
1381
|
+
##### Migration note (from `nodemailer-ses-transport`)
|
|
1382
|
+
|
|
1383
|
+
- No config key changes are required for existing HOF `ses` transport users (`accessKeyId`, `secretAccessKey`, `sessionToken`, and `region` are still supported).
|
|
1384
|
+
- If you used `rateLimit` or `maxConnections`, move that control to your application layer (for example, queueing/rate-limiting before calling `send`).
|
|
1385
|
+
- `httpOptions` is treated as an optional object of top-level AWS SDK v3 SES client overrides.
|
|
1378
1386
|
|
|
1379
1387
|
#### `debug`
|
|
1380
1388
|
|
|
@@ -1459,7 +1467,6 @@ From version 23.0.4 , session timeout keep alive is now independent of analytics
|
|
|
1459
1467
|
When a user clicks **Stay on this page** in the timeout dialog:
|
|
1460
1468
|
|
|
1461
1469
|
- If keep-alive succeeds: session refresh timestamp is updated and the timeout countdown/controller is restarted.
|
|
1462
|
-
- If keep-alive fails: a ```console.error``` is flagged by default.
|
|
1463
1470
|
|
|
1464
1471
|
|
|
1465
1472
|
### Customising content in `pages.json`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const
|
|
3
|
+
const { SESv2Client, SendEmailCommand } = require('@aws-sdk/client-sesv2');
|
|
4
4
|
|
|
5
5
|
module.exports = options => {
|
|
6
6
|
if (!options.accessKeyId) {
|
|
@@ -10,27 +10,29 @@ module.exports = options => {
|
|
|
10
10
|
throw new Error('Required option `secretAccessKey` not found.');
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
const
|
|
13
|
+
const credentials = {
|
|
14
14
|
accessKeyId: options.accessKeyId,
|
|
15
15
|
secretAccessKey: options.secretAccessKey
|
|
16
16
|
};
|
|
17
17
|
|
|
18
|
-
opts.region = options.region || 'eu-west-1';
|
|
19
|
-
|
|
20
18
|
if (options.sessionToken) {
|
|
21
|
-
|
|
19
|
+
credentials.sessionToken = options.sessionToken;
|
|
22
20
|
}
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
const clientOptions = {
|
|
23
|
+
region: options.region || 'eu-west-1',
|
|
24
|
+
credentials
|
|
25
|
+
};
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
// Legacy v2-style http options are accepted as top-level client overrides.
|
|
28
|
+
if (options.httpOptions && typeof options.httpOptions === 'object') {
|
|
29
|
+
Object.assign(clientOptions, options.httpOptions);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
return {
|
|
33
|
+
SES: {
|
|
34
|
+
sesClient: new SESv2Client(clientOptions),
|
|
35
|
+
SendEmailCommand
|
|
36
|
+
}
|
|
37
|
+
};
|
|
36
38
|
};
|
|
@@ -281,9 +281,6 @@ window.GOVUK.sessionDialog = {
|
|
|
281
281
|
.done(function () {
|
|
282
282
|
window.GOVUK.sessionDialog.timeSessionRefreshed = new Date();
|
|
283
283
|
window.GOVUK.sessionDialog.controller();
|
|
284
|
-
})
|
|
285
|
-
.fail(function () {
|
|
286
|
-
console.error('Session refresh failed.');
|
|
287
284
|
});
|
|
288
285
|
},
|
|
289
286
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hof",
|
|
3
3
|
"description": "A bootstrap for HOF projects",
|
|
4
|
-
"version": "23.0.
|
|
4
|
+
"version": "23.0.5-aws-sdk-v2-beta",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"author": "HomeOffice",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"postversion": "git push && git push --tags"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"@aws-sdk/client-sesv2": "^3.907.0",
|
|
37
38
|
"@rollup/plugin-commonjs": "^29.0.0",
|
|
38
39
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
39
40
|
"aliasify": "^2.1.0",
|
|
@@ -80,7 +81,6 @@
|
|
|
80
81
|
"morgan": "^1.10.1",
|
|
81
82
|
"mustache": "^4.2.0",
|
|
82
83
|
"nodemailer": "^6.10.1",
|
|
83
|
-
"nodemailer-ses-transport": "^1.5.1",
|
|
84
84
|
"nodemailer-stub-transport": "^1.1.0",
|
|
85
85
|
"notifications-node-client": "^8.2.1",
|
|
86
86
|
"redis": "^3.1.2",
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
+
"buttons": {
|
|
3
|
+
"edit": "Edit",
|
|
4
|
+
"delete": "Delete",
|
|
5
|
+
"find-address": "Find address"
|
|
6
|
+
},
|
|
2
7
|
"errors": {
|
|
3
8
|
"service-unavailable": {
|
|
4
9
|
"contact": "You can email for more information"
|
|
@@ -101,6 +106,32 @@
|
|
|
101
106
|
"label": "Which country are you based in?",
|
|
102
107
|
"hint": "Start to type the country name and options will appear"
|
|
103
108
|
},
|
|
109
|
+
"hasOtherName": {
|
|
110
|
+
"legend": "Have you been known by any other names?",
|
|
111
|
+
"options": {
|
|
112
|
+
"yes": {
|
|
113
|
+
"label": "Yes"
|
|
114
|
+
},
|
|
115
|
+
"no": {
|
|
116
|
+
"label": "No"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"otherFirstName": {
|
|
121
|
+
"label": "Other first name"
|
|
122
|
+
},
|
|
123
|
+
"otherSurname": {
|
|
124
|
+
"label": "Other surname"
|
|
125
|
+
},
|
|
126
|
+
"uk-address-postcode": {
|
|
127
|
+
"label": "Postcode"
|
|
128
|
+
},
|
|
129
|
+
"uk-address-select": {
|
|
130
|
+
"label": "Select the address"
|
|
131
|
+
},
|
|
132
|
+
"uk-address": {
|
|
133
|
+
"label": "Address"
|
|
134
|
+
},
|
|
104
135
|
"appealStages": {
|
|
105
136
|
"label": "Appeal stage",
|
|
106
137
|
"hint": "Choose an appeal stage from the drop down menu",
|
|
@@ -155,12 +186,30 @@
|
|
|
155
186
|
"phone-number": {
|
|
156
187
|
"header": "Enter your phone number"
|
|
157
188
|
},
|
|
189
|
+
"other-name": {
|
|
190
|
+
"header": "Other names"
|
|
191
|
+
},
|
|
192
|
+
"address-lookup": {
|
|
193
|
+
"edit": "Change",
|
|
194
|
+
"cantfind": "I can't find the address in the list",
|
|
195
|
+
"postcode-entered": "Postcode you entered: ",
|
|
196
|
+
"postcode-api": {
|
|
197
|
+
"not-found": "Sorry - we couldn't find any addresses for that postcode, enter your address manually",
|
|
198
|
+
"cant-connect": "Sorry - we couldn't connect to the postcode lookup service at this time, enter your address manually"
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"name-details": {
|
|
202
|
+
"header": "Other names summary"
|
|
203
|
+
},
|
|
158
204
|
"confirm": {
|
|
159
205
|
"header": "Check your answers before submitting your application.",
|
|
160
206
|
"sections": {
|
|
161
207
|
"applicantsDetails": {
|
|
162
208
|
"header": "Applicant's details"
|
|
163
209
|
},
|
|
210
|
+
"addressLookup": {
|
|
211
|
+
"header": "Address lookup"
|
|
212
|
+
},
|
|
164
213
|
"address": {
|
|
165
214
|
"header": "Address"
|
|
166
215
|
},
|
|
@@ -197,10 +246,10 @@
|
|
|
197
246
|
"message": "We have cleared your information to keep it secure. Your information has not been saved."
|
|
198
247
|
},
|
|
199
248
|
"session-timeout-warning": {
|
|
200
|
-
"dialog-title": "{
|
|
201
|
-
"dialog-text": "{
|
|
202
|
-
"timeout-continue-button": "{
|
|
203
|
-
"dialog-exit-link": "{
|
|
249
|
+
"dialog-title": "{% if showSaveAndExit %}You will be signed out soon{% endif %}{% if not showSaveAndExit %}Your application will close soon{% endif %}",
|
|
250
|
+
"dialog-text": "{% if showSaveAndExit %}Any answers you have saved will not be affected, but your progress on this page will not be saved.{% endif %}{% if not showSaveAndExit %}If that happens, your progress will not be saved.{% endif %}",
|
|
251
|
+
"timeout-continue-button": "{% if showSaveAndExit %}Stay signed in{% endif %}{% if not showSaveAndExit %}Stay on this page{% endif %}",
|
|
252
|
+
"dialog-exit-link": "{% if showSaveAndExit %}Sign out{% endif %}{% if not showSaveAndExit %}Exit this form{% endif %}"
|
|
204
253
|
},
|
|
205
254
|
"save-and-exit": {
|
|
206
255
|
"header": "You have been signed out",
|
|
@@ -251,6 +300,25 @@
|
|
|
251
300
|
"required": "Enter an international phone number",
|
|
252
301
|
"internationalPhoneNumber": "Enter a valid international phone number"
|
|
253
302
|
},
|
|
303
|
+
"hasOtherName": {
|
|
304
|
+
"required": "Select an option below and press continue"
|
|
305
|
+
},
|
|
306
|
+
"otherFirstName": {
|
|
307
|
+
"default": "Enter your other first name"
|
|
308
|
+
},
|
|
309
|
+
"otherSurname": {
|
|
310
|
+
"default": "Enter your other surname"
|
|
311
|
+
},
|
|
312
|
+
"uk-address-postcode": {
|
|
313
|
+
"required": "Enter a postcode",
|
|
314
|
+
"postcode": "Enter a real postcode"
|
|
315
|
+
},
|
|
316
|
+
"uk-address-select": {
|
|
317
|
+
"required": "Select an address from the list"
|
|
318
|
+
},
|
|
319
|
+
"uk-address": {
|
|
320
|
+
"required": "Enter your address"
|
|
321
|
+
},
|
|
254
322
|
"complaintDetails": {
|
|
255
323
|
"default": "Enter details about why you are making a complaint",
|
|
256
324
|
"maxlength": "Keep to the {{maxlength}} character limit"
|