hof 23.0.5-aws-sdk-v2-beta → 23.0.6

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 CHANGED
@@ -1,9 +1,3 @@
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
1
  ## 2026-04-16, Version 23.0.4 (Stable), @PaolaDMadd-Pro
8
2
 
9
3
  ### Fixed
package/README.md CHANGED
@@ -1364,25 +1364,17 @@ The following transport options are available:
1364
1364
 
1365
1365
  #### `ses`
1366
1366
 
1367
- [nodemailer SES transport](https://nodemailer.com/transports/ses)
1367
+ [nodemailer-ses-transport](https://github.com/andris9/nodemailer-ses-transport)
1368
1368
 
1369
1369
  ##### Options
1370
1370
 
1371
1371
  - `accessKeyId` <String>: AWS accessKeyId. Required.
1372
- - `secretAccessKey` <String>: AWS secret access key. Required.
1372
+ - `secretAccessKey` <String>: AWS accessKeyId. Required.
1373
1373
  - `sessionToken` <String>
1374
1374
  - `region` <String>. Defaults to 'eu-west-1'.
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.
1375
+ - `httpOptions` <String>
1376
+ - `rateLimit` <String>
1377
+ - `maxConnections` <String>
1386
1378
 
1387
1379
  #### `debug`
1388
1380
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const { SESv2Client, SendEmailCommand } = require('@aws-sdk/client-sesv2');
3
+ const ses = require('nodemailer-ses-transport');
4
4
 
5
5
  module.exports = options => {
6
6
  if (!options.accessKeyId) {
@@ -10,29 +10,27 @@ module.exports = options => {
10
10
  throw new Error('Required option `secretAccessKey` not found.');
11
11
  }
12
12
 
13
- const credentials = {
13
+ const opts = {
14
14
  accessKeyId: options.accessKeyId,
15
15
  secretAccessKey: options.secretAccessKey
16
16
  };
17
17
 
18
+ opts.region = options.region || 'eu-west-1';
19
+
18
20
  if (options.sessionToken) {
19
- credentials.sessionToken = options.sessionToken;
21
+ opts.sessionToken = options.sessionToken;
20
22
  }
21
23
 
22
- const clientOptions = {
23
- region: options.region || 'eu-west-1',
24
- credentials
25
- };
24
+ if (options.httpOptions) {
25
+ opts.httpOptions = options.httpOptions;
26
+ }
26
27
 
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);
28
+ if (options.rateLimit !== undefined) {
29
+ opts.rateLimit = options.rateLimit;
30
30
  }
31
31
 
32
- return {
33
- SES: {
34
- sesClient: new SESv2Client(clientOptions),
35
- SendEmailCommand
36
- }
37
- };
32
+ if (options.maxConnections !== undefined) {
33
+ opts.maxConnections = options.maxConnections;
34
+ }
35
+ return ses(opts);
38
36
  };
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.5-aws-sdk-v2-beta",
4
+ "version": "23.0.6",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
7
7
  "author": "HomeOffice",
@@ -34,7 +34,6 @@
34
34
  "postversion": "git push && git push --tags"
35
35
  },
36
36
  "dependencies": {
37
- "@aws-sdk/client-sesv2": "^3.907.0",
38
37
  "@rollup/plugin-commonjs": "^29.0.0",
39
38
  "@rollup/plugin-node-resolve": "^16.0.3",
40
39
  "aliasify": "^2.1.0",
@@ -74,13 +73,14 @@
74
73
  "libphonenumber-js": "^1.12.23",
75
74
  "lodash": "^4.17.21",
76
75
  "markdown-it": "^12.3.2",
77
- "minimatch": "^3.1.2",
76
+ "minimatch": "^4.2.5",
78
77
  "minimist": "^1.2.8",
79
78
  "mixwith": "^0.1.1",
80
79
  "moment": "^2.30.1",
81
80
  "morgan": "^1.10.1",
82
81
  "mustache": "^4.2.0",
83
82
  "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,118 +0,0 @@
1
-
2
- <!DOCTYPE html>
3
- <!--[if lt IE 9]><html class="lte-ie8" lang="{{htmlLang}}"><![endif]-->
4
- <!--[if gt IE 8]><!--><html lang="{{htmlLang}}" class="govuk-template--rebranded"><!--<![endif]-->
5
- <head>
6
- <meta charset="utf-8" />
7
- <title>{{$pageTitle}}{{/pageTitle}}</title>
8
- {{$head}}{{/head}}
9
- <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
10
- <meta name="theme-color" content="#1d70b8">
11
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
12
- <link rel="icon" sizes="48x48" href="{{govukAssetPath}}rebrand/images/favicon.ico">
13
- <link rel="icon" sizes="any" href="{{govukAssetPath}}rebrand/images/favicon.svg" type="image/svg+xml">
14
- <link rel="mask-icon" href="{{govukAssetPath}}rebrand/images/govuk-icon-mask.svg" color="#1d70b8">
15
- <link rel="apple-touch-icon" href="{{govukAssetPath}}rebrand/images/govuk-icon-180.png">
16
- <link rel="manifest" href="{{govukAssetPath}}rebrand/manifest.json">
17
- <meta property="og:image" content="{{govukAssetPath}}rebrand/images/govuk-opengraph-image.png">
18
- </head>
19
-
20
- <body class="{{$bodyClasses}}{{/bodyClasses}} govuk-template__body js-enabled" >
21
- <script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>document.body.className += ' js-enabled' + ('noModule' in HTMLScriptElement.prototype ? ' govuk-frontend-supported' : '');</script>
22
-
23
-
24
- <div id="global-cookie-message" class="gem-c-cookie-banner govuk-clearfix" data-module="cookie-banner" role="region" aria-label="cookie banner" data-nosnippet="">
25
- {{$cookieMessage}}{{/cookieMessage}}
26
- </div>
27
-
28
- {{$bodyStart}}{{/bodyStart}}
29
-
30
- <header role="banner" id="govuk-header" class="{{$headerClass}}{{/headerClass}}">
31
- <div class="govuk-header__container govuk-width-container">
32
-
33
- <div class="govuk-header__logo">
34
- <a href="{{$homepageUrl}}https://www.gov.uk{{/homepageUrl}}" title="{{$logoLinkTitle}}Go to the GOV.UK homepage{{/logoLinkTitle}}" id="logo" class="govuk-header__link govuk-header__link--homepage" target="_blank" data-module="track-click" data-track-category="homeLinkClicked" data-track-action="homeHeader">
35
- <!--[if gt IE 8]><!-->
36
- <div id="govuk-header__logo"></div>
37
- <img src="/public/images/govuk-logo.svg" id="govuk-header__logo" alt="Logo" loading="lazy" />
38
- <!--<![endif]-->
39
- <!--[if IE 8]>
40
- <img src="{{govukAssetPath}}rebrand/images/govuk-logotype-tudor-crown.png" class="govuk-header__logotype-crown-fallback-image" width="32" height="30" alt="">
41
- <![endif]-->
42
- </a>
43
- </div>
44
- {{$insideHeader}}{{/insideHeader}}
45
-
46
- {{$propositionHeader}}{{/propositionHeader}}
47
- </div>
48
- </header>
49
-
50
-
51
- {{$afterHeader}}{{/afterHeader}}
52
-
53
-
54
- {{$main}}{{/main}}
55
-
56
- <footer class="govuk-footer">
57
- <div class="govuk-width-container">
58
- <svg
59
- focusable="false"
60
- role="presentation"
61
- xmlns="http://www.w3.org/2000/svg"
62
- viewBox="0 0 64 60"
63
- height="30"
64
- width="32"
65
- fill="currentcolor" class="govuk-footer__crown">
66
- <g>
67
- <circle cx="20" cy="17.6" r="3.7" />
68
- <circle cx="10.2" cy="23.5" r="3.7" />
69
- <circle cx="3.7" cy="33.2" r="3.7" />
70
- <circle cx="31.7" cy="30.6" r="3.7" />
71
- <circle cx="43.3" cy="17.6" r="3.7" />
72
- <circle cx="53.2" cy="23.5" r="3.7" />
73
- <circle cx="59.7" cy="33.2" r="3.7" />
74
- <circle cx="31.7" cy="30.6" r="3.7" />
75
- <path d="M33.1,9.8c.2-.1.3-.3.5-.5l4.6,2.4v-6.8l-4.6,1.5c-.1-.2-.3-.3-.5-.5l1.9-5.9h-6.7l1.9,5.9c-.2.1-.3.3-.5.5l-4.6-1.5v6.8l4.6-2.4c.1.2.3.3.5.5l-2.6,8c-.9,2.8,1.2,5.7,4.1,5.7h0c3,0,5.1-2.9,4.1-5.7l-2.6-8ZM37,37.9s-3.4,3.8-4.1,6.1c2.2,0,4.2-.5,6.4-2.8l-.7,8.5c-2-2.8-4.4-4.1-5.7-3.8.1,3.1.5,6.7,5.8,7.2,3.7.3,6.7-1.5,7-3.8.4-2.6-2-4.3-3.7-1.6-1.4-4.5,2.4-6.1,4.9-3.2-1.9-4.5-1.8-7.7,2.4-10.9,3,4,2.6,7.3-1.2,11.1,2.4-1.3,6.2,0,4,4.6-1.2-2.8-3.7-2.2-4.2.2-.3,1.7.7,3.7,3,4.2,1.9.3,4.7-.9,7-5.9-1.3,0-2.4.7-3.9,1.7l2.4-8c.6,2.3,1.4,3.7,2.2,4.5.6-1.6.5-2.8,0-5.3l5,1.8c-2.6,3.6-5.2,8.7-7.3,17.5-7.4-1.1-15.7-1.7-24.5-1.7h0c-8.8,0-17.1.6-24.5,1.7-2.1-8.9-4.7-13.9-7.3-17.5l5-1.8c-.5,2.5-.6,3.7,0,5.3.8-.8,1.6-2.3,2.2-4.5l2.4,8c-1.5-1-2.6-1.7-3.9-1.7,2.3,5,5.2,6.2,7,5.9,2.3-.4,3.3-2.4,3-4.2-.5-2.4-3-3.1-4.2-.2-2.2-4.6,1.6-6,4-4.6-3.7-3.7-4.2-7.1-1.2-11.1,4.2,3.2,4.3,6.4,2.4,10.9,2.5-2.8,6.3-1.3,4.9,3.2-1.8-2.7-4.1-1-3.7,1.6.3,2.3,3.3,4.1,7,3.8,5.4-.5,5.7-4.2,5.8-7.2-1.3-.2-3.7,1-5.7,3.8l-.7-8.5c2.2,2.3,4.2,2.7,6.4,2.8-.7-2.3-4.1-6.1-4.1-6.1h10.6,0Z" />
76
- </g>
77
- </svg>
78
- <div class="govuk-footer__meta">
79
- <div class="govuk-footer__meta-item govuk-footer__meta-item--grow">
80
- <h2 class="govuk-visually-hidden">Support links</h2>
81
- {{$footerSupportLinks}}{{/footerSupportLinks}}
82
- <svg
83
- aria-hidden="true"
84
- focusable="false"
85
- class="govuk-footer__licence-logo"
86
- xmlns="http://www.w3.org/2000/svg"
87
- viewBox="0 0 483.2 195.7"
88
- height="17"
89
- width="41">
90
- <path
91
- fill="currentColor"
92
- d="M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145" />
93
- </svg>
94
- <span class="govuk-footer__licence-description">
95
- {{$licenceMessage}}All content is available under the <a href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" id="open-government-licence" class="govuk-footer__link" target="_blank" rel="license">Open Government Licence v3.0</a>, except where otherwise stated{{/licenceMessage}}
96
- </span>
97
- </div>
98
- <div class="govuk-footer__meta-item">
99
- <a
100
- class="govuk-footer__link govuk-footer__copyright-logo"
101
- href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">
102
- {{$crownCopyrightMessage}}© Crown copyright{{/crownCopyrightMessage}}
103
- </a>
104
- </div>
105
- </div>
106
- </div>
107
- </footer>
108
-
109
- <div id="global-app-error" class="app-error hidden"></div>
110
-
111
-
112
- {{$bodyEnd}}{{/bodyEnd}}
113
-
114
-
115
- <script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>if (typeof window.GOVUK === 'undefined') document.body.className = document.body.className.replace('js-enabled', '');</script>
116
-
117
- </body>
118
- </html>
@@ -1,346 +0,0 @@
1
- {
2
- "buttons": {
3
- "edit": "Edit",
4
- "delete": "Delete",
5
- "find-address": "Find address"
6
- },
7
- "errors": {
8
- "service-unavailable": {
9
- "contact": "You can email for more information"
10
- }
11
- },
12
- "exit": {
13
- "header": "You have left this form",
14
- "title": "You have left this form"
15
- },
16
- "fields": {
17
- "landing-page-radio": {
18
- "legend": "Which form would you like to explore?",
19
- "hint": "Choose one of the options below and press continue.",
20
- "options": {
21
- "basic-form": {
22
- "label": "Basic form"
23
- },
24
- "complex-form": {
25
- "label": "Complex form"
26
- },
27
- "build-your-own-form": {
28
- "label": "Build your own form"
29
- }
30
- }
31
- },
32
- "name": {
33
- "label": "Full name"
34
- },
35
- "dateOfBirth": {
36
- "legend": "What is your date of birth?",
37
- "hint": "For example, 31 10 1990"
38
- },
39
- "building": {
40
- "label": "Building and street"
41
- },
42
- "street": {
43
- "label": "Address line 2"
44
- },
45
- "townOrCity": {
46
- "label": "Town or city"
47
- },
48
- "postcode": {
49
- "label": "Postcode"
50
- },
51
- "incomeTypes": {
52
- "label": "Sources of income",
53
- "legend": "Select the options where you receive income from",
54
- "hint": "Select all options that apply to you.",
55
- "options": {
56
- "salary": {
57
- "label": "Salary"
58
- },
59
- "universal_credit": {
60
- "label": "Universal Credit"
61
- },
62
- "child_benefit": {
63
- "label": "Child Benefit"
64
- },
65
- "housing_benefit": {
66
- "label": "Housing Benefit"
67
- },
68
- "other": {
69
- "label": "Other"
70
- }
71
- }
72
- },
73
- "countryOfHearing": {
74
- "legend": "What country was the appeal lodged?",
75
- "options": {
76
- "englandAndWales": {
77
- "label": "England and Wales"
78
- },
79
- "scotland": {
80
- "label": "Scotland"
81
- },
82
- "northernIreland": {
83
- "label": "Northern Ireland"
84
- }
85
- }
86
- },
87
- "email": {
88
- "label": "Email address"
89
- },
90
- "phone": {
91
- "label": "Phone number",
92
- "hint": "International phone numbers require the international dialling code, for example +33235066182"
93
- },
94
- "int-phone-number": {
95
- "legend": "International phone number"
96
- },
97
- "complaintDetails": {
98
- "label": "Complaint details",
99
- "hint": "Briefly summarise your complaint. Include anything that can help our investigation."
100
- },
101
- "whatHappened": {
102
- "label": "What happened",
103
- "hint": "Briefly summarise what happened."
104
- },
105
- "countrySelect": {
106
- "label": "Which country are you based in?",
107
- "hint": "Start to type the country name and options will appear"
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
- },
135
- "appealStages": {
136
- "label": "Appeal stage",
137
- "hint": "Choose an appeal stage from the drop down menu",
138
- "options": {
139
- "null": "Select..."
140
- }
141
- },
142
- "amountWithUnitSelect": {
143
- "label": "Amount",
144
- "amountLabel": "Amount:",
145
- "unitLabel": "Unit:",
146
- "options": [
147
- {
148
- "null": "Select..."
149
- },
150
- {
151
- "label": "Litres",
152
- "value": "L"
153
- },
154
- {
155
- "label": "Kilograms",
156
- "value": "KG"
157
- }
158
- ]
159
- }
160
- },
161
- "journey": {
162
- "header": "HOF Bootstrap Sandbox Form",
163
- "serviceName": "HOF Bootstrap Sandbox Form",
164
- "confirmation": {
165
- "details": "Your reference number <br><strong>HDJ2123F</strong>"
166
- }
167
- },
168
- "pages": {
169
- "landing-page": {
170
- "header": "Landing page"
171
- },
172
- "build-your-own-form": {
173
- "title": "Build your own form",
174
- "subheader": "Access the build your own form guidance link"
175
- },
176
- "address": {
177
- "header": "What is your address in the UK?",
178
- "intro": "If you have no fixed address, enter an address where we can contact you."
179
- },
180
- "name": {
181
- "header": "What is your full name?"
182
- },
183
- "email": {
184
- "header": "Enter your email address"
185
- },
186
- "phone-number": {
187
- "header": "Enter your phone number"
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
- },
204
- "confirm": {
205
- "header": "Check your answers before submitting your application.",
206
- "sections": {
207
- "applicantsDetails": {
208
- "header": "Applicant's details"
209
- },
210
- "addressLookup": {
211
- "header": "Address lookup"
212
- },
213
- "address": {
214
- "header": "Address"
215
- },
216
- "income": {
217
- "header": "Income"
218
- },
219
- "appealDetails": {
220
- "header": "Appeal details"
221
- },
222
- "countrySelect": {
223
- "header": "Country of residence"
224
- },
225
- "contactDetails": {
226
- "header": "Contact details"
227
- },
228
- "complaintDetails": {
229
- "header": "Complaint details"
230
- },
231
- "whatHappened": {
232
- "header": "What happened"
233
- },
234
- "amountWithUnitSelect": {
235
- "header": "Entered amount"
236
- }
237
- }
238
- },
239
- "confirmation": {
240
- "title": "Application sent",
241
- "alert": "Application sent",
242
- "subheader": "What happens next",
243
- "content": "We’ll contact you with the decision of your application or if we need more information from you."
244
- },
245
- "exit": {
246
- "message": "We have cleared your information to keep it secure. Your information has not been saved."
247
- },
248
- "session-timeout-warning": {
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 %}"
253
- },
254
- "save-and-exit": {
255
- "header": "You have been signed out",
256
- "paragraph-1": "Your form doesn't appear to have been worked on for 30 minutes so we closed it for security.",
257
- "paragraph-2": "Any answers you saved have not been affected.",
258
- "paragraph-3": "You can sign back in to your application at any time by returning to the <a href='/' class='govuk-link'>start page</a>."
259
- }
260
- },
261
- "validation": {
262
- "landing-page-radio": {
263
- "required": "Select an option below and press continue"
264
- },
265
- "name": {
266
- "default": "Enter your full name"
267
- },
268
- "dateOfBirth": {
269
- "default": "Enter your date of birth in the correct format; for example, 31 10 1990",
270
- "after": "Enter a date after 1 1 1900",
271
- "before": "Enter a date that is in the past"
272
- },
273
- "building": {
274
- "default": "Enter details of your building and street"
275
- },
276
- "townOrCity": {
277
- "default": "Enter a town or city",
278
- "regex": "Enter a town or city without including digits"
279
- },
280
- "postcode": {
281
- "default": "Enter your postcode"
282
- },
283
- "incomeTypes": {
284
- "default": "Select all options that apply to you."
285
- },
286
- "countryOfHearing": {
287
- "default": "Select where the appeal hearing is to be held"
288
- },
289
- "countrySelect": {
290
- "default": "Enter a valid country of residence",
291
- "required": "Enter your country of residence"
292
- },
293
- "email": {
294
- "default": "Enter your email address in the correct format"
295
- },
296
- "phone": {
297
- "default": "Enter your phone number"
298
- },
299
- "int-phone-number": {
300
- "required": "Enter an international phone number",
301
- "internationalPhoneNumber": "Enter a valid international phone number"
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
- },
322
- "complaintDetails": {
323
- "default": "Enter details about why you are making a complaint",
324
- "maxlength": "Keep to the {{maxlength}} character limit"
325
- },
326
- "whatHappened": {
327
- "default": "Enter details about what happened",
328
- "maxword": "Keep to the {{maxword}} word limit"
329
- },
330
- "appealStages": {
331
- "required": "Select an appeal stage from the list"
332
- },
333
- "amountWithUnitSelect": {
334
- "default": "Enter the amount in the correct format; for example, 10 Litres",
335
- "alphanum": "The amount must not contain any special characters",
336
- "required": "Enter an amount and a unit value"
337
- },
338
- "amountWithUnitSelect-unit": {
339
- "default": "A valid value must be selected as the amount unit",
340
- "required": "A unit must be selected for the amount"
341
- },
342
- "amountWithUnitSelect-amount": {
343
- "required": "An amount must be selected with the unit"
344
- }
345
- }
346
- }