@defra/forms-engine-plugin 0.0.2 → 0.0.4

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.
Files changed (330) hide show
  1. package/.public/assets/fonts/bold-affa96571d-v2.woff +0 -0
  2. package/.public/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
  3. package/.public/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
  4. package/.public/assets/fonts/light-f591b13f7d-v2.woff +0 -0
  5. package/.public/assets/images/favicon.ico +0 -0
  6. package/.public/assets/images/favicon.svg +1 -0
  7. package/.public/assets/images/govuk-crest.svg +1 -0
  8. package/.public/assets/images/govuk-icon-180.png +0 -0
  9. package/.public/assets/images/govuk-icon-192.png +0 -0
  10. package/.public/assets/images/govuk-icon-512.png +0 -0
  11. package/.public/assets/images/govuk-icon-mask.svg +1 -0
  12. package/.public/assets/images/govuk-opengraph-image.png +0 -0
  13. package/.public/assets/manifest.json +39 -0
  14. package/.public/assets-manifest.json +24 -0
  15. package/.public/javascripts/application.0fd8c18.min.js +3 -0
  16. package/.public/javascripts/application.0fd8c18.min.js.LICENSE.txt +58 -0
  17. package/.public/javascripts/application.0fd8c18.min.js.map +1 -0
  18. package/.public/javascripts/file-upload.b2f18f5.min.js +2 -0
  19. package/.public/javascripts/file-upload.b2f18f5.min.js.map +1 -0
  20. package/.public/javascripts/vendor/accessible-autocomplete.275d332.min.js +2 -0
  21. package/.public/javascripts/vendor/accessible-autocomplete.275d332.min.js.map +1 -0
  22. package/.public/stylesheets/application.e340021.min.css +14 -0
  23. package/.public/stylesheets/application.e340021.min.css.map +1 -0
  24. package/.server/server/plugins/nunjucks/environment.js +3 -3
  25. package/.server/server/plugins/nunjucks/environment.js.map +1 -1
  26. package/package.json +6 -2
  27. package/.browserslistrc +0 -16
  28. package/.editorconfig +0 -9
  29. package/.eslintrc.cjs +0 -266
  30. package/.github/dependabot.yml +0 -85
  31. package/.github/workflows/check-pull-request.yml +0 -209
  32. package/.github/workflows/pr-notifier.yml +0 -98
  33. package/.github/workflows/publish.yml +0 -111
  34. package/.husky/pre-commit +0 -1
  35. package/.lintstagedrc.js +0 -4
  36. package/.nvmrc +0 -1
  37. package/.prettierignore +0 -8
  38. package/.prettierrc.cjs +0 -26
  39. package/Dockerfile +0 -61
  40. package/Procfile +0 -1
  41. package/babel.config.cjs +0 -55
  42. package/compose/aws.env +0 -4
  43. package/compose/start-localstack.sh +0 -26
  44. package/docker-compose.yaml +0 -86
  45. package/globals.d.ts +0 -1
  46. package/jest.config.cjs +0 -54
  47. package/jest.environment.js +0 -4
  48. package/jest.setup.cjs +0 -14
  49. package/postcss.config.js +0 -26
  50. package/sonar-project.properties +0 -17
  51. package/src/client/javascripts/application.js +0 -87
  52. package/src/client/javascripts/file-upload.js +0 -386
  53. package/src/client/stylesheets/_code.scss +0 -33
  54. package/src/client/stylesheets/_govuk-frontend.scss +0 -4
  55. package/src/client/stylesheets/_prose.scss +0 -56
  56. package/src/client/stylesheets/_service-banner.scss +0 -24
  57. package/src/client/stylesheets/_summary-list.scss +0 -28
  58. package/src/client/stylesheets/_tag-env.scss +0 -24
  59. package/src/client/stylesheets/application.scss +0 -14
  60. package/src/common/cookies.js +0 -58
  61. package/src/common/cookies.test.js +0 -23
  62. package/src/common/types.js +0 -5
  63. package/src/config/index.ts +0 -271
  64. package/src/index.ts +0 -31
  65. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  66. package/src/server/common/helpers/logging/logger-options.ts +0 -46
  67. package/src/server/common/helpers/logging/logger.ts +0 -7
  68. package/src/server/common/helpers/logging/request-logger.ts +0 -9
  69. package/src/server/common/helpers/logging/request-tracing.js +0 -10
  70. package/src/server/common/helpers/redis-client.js +0 -70
  71. package/src/server/constants.js +0 -1
  72. package/src/server/forms/README.md +0 -10
  73. package/src/server/forms/components.json +0 -1015
  74. package/src/server/forms/report-a-terrorist.json +0 -270
  75. package/src/server/forms/runner-components-test.json +0 -365
  76. package/src/server/forms/test.json +0 -581
  77. package/src/server/index.test.ts +0 -582
  78. package/src/server/index.ts +0 -140
  79. package/src/server/plugins/blankie.test.ts +0 -73
  80. package/src/server/plugins/blankie.ts +0 -48
  81. package/src/server/plugins/crumb.ts +0 -20
  82. package/src/server/plugins/engine/README.md +0 -87
  83. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -294
  84. package/src/server/plugins/engine/components/AutocompleteField.ts +0 -49
  85. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -379
  86. package/src/server/plugins/engine/components/CheckboxesField.ts +0 -106
  87. package/src/server/plugins/engine/components/ComponentBase.ts +0 -97
  88. package/src/server/plugins/engine/components/ComponentCollection.ts +0 -278
  89. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -822
  90. package/src/server/plugins/engine/components/DatePartsField.ts +0 -264
  91. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  92. package/src/server/plugins/engine/components/Details.ts +0 -30
  93. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -395
  94. package/src/server/plugins/engine/components/EmailAddressField.ts +0 -55
  95. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -778
  96. package/src/server/plugins/engine/components/FileUploadField.ts +0 -262
  97. package/src/server/plugins/engine/components/FormComponent.ts +0 -249
  98. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  99. package/src/server/plugins/engine/components/Html.ts +0 -29
  100. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  101. package/src/server/plugins/engine/components/InsetText.ts +0 -27
  102. package/src/server/plugins/engine/components/List.test.ts +0 -76
  103. package/src/server/plugins/engine/components/List.ts +0 -72
  104. package/src/server/plugins/engine/components/ListFormComponent.ts +0 -140
  105. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -567
  106. package/src/server/plugins/engine/components/MonthYearField.ts +0 -222
  107. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -558
  108. package/src/server/plugins/engine/components/MultilineTextField.ts +0 -138
  109. package/src/server/plugins/engine/components/NumberField.test.ts +0 -701
  110. package/src/server/plugins/engine/components/NumberField.ts +0 -163
  111. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -288
  112. package/src/server/plugins/engine/components/RadiosField.ts +0 -24
  113. package/src/server/plugins/engine/components/SelectField.test.ts +0 -288
  114. package/src/server/plugins/engine/components/SelectField.ts +0 -47
  115. package/src/server/plugins/engine/components/SelectionControlField.ts +0 -43
  116. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -356
  117. package/src/server/plugins/engine/components/TelephoneNumberField.ts +0 -67
  118. package/src/server/plugins/engine/components/TextField.test.ts +0 -489
  119. package/src/server/plugins/engine/components/TextField.ts +0 -96
  120. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -623
  121. package/src/server/plugins/engine/components/UkAddressField.ts +0 -172
  122. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -248
  123. package/src/server/plugins/engine/components/YesNoField.ts +0 -31
  124. package/src/server/plugins/engine/components/constants.ts +0 -1
  125. package/src/server/plugins/engine/components/helpers.ts +0 -330
  126. package/src/server/plugins/engine/components/index.ts +0 -24
  127. package/src/server/plugins/engine/components/types.ts +0 -117
  128. package/src/server/plugins/engine/configureEnginePlugin.ts +0 -47
  129. package/src/server/plugins/engine/helpers.test.ts +0 -791
  130. package/src/server/plugins/engine/helpers.ts +0 -379
  131. package/src/server/plugins/engine/index.ts +0 -7
  132. package/src/server/plugins/engine/models/FormModel.test.ts +0 -42
  133. package/src/server/plugins/engine/models/FormModel.ts +0 -443
  134. package/src/server/plugins/engine/models/RepeatingSummaryViewModel.ts +0 -0
  135. package/src/server/plugins/engine/models/Section.ts +0 -0
  136. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -209
  137. package/src/server/plugins/engine/models/SummaryViewModel.ts +0 -220
  138. package/src/server/plugins/engine/models/index.ts +0 -2
  139. package/src/server/plugins/engine/models/types.ts +0 -114
  140. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -143
  141. package/src/server/plugins/engine/outputFormatters/human/v1.ts +0 -73
  142. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  143. package/src/server/plugins/engine/outputFormatters/index.ts +0 -44
  144. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -229
  145. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +0 -140
  146. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -229
  147. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +0 -153
  148. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1108
  149. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +0 -446
  150. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -205
  151. package/src/server/plugins/engine/pageControllers/PageController.ts +0 -176
  152. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1264
  153. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +0 -561
  154. package/src/server/plugins/engine/pageControllers/README.md +0 -28
  155. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -264
  156. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +0 -458
  157. package/src/server/plugins/engine/pageControllers/StartPageController.ts +0 -18
  158. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +0 -50
  159. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +0 -261
  160. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -28
  161. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +0 -19
  162. package/src/server/plugins/engine/pageControllers/helpers.test.ts +0 -198
  163. package/src/server/plugins/engine/pageControllers/helpers.ts +0 -101
  164. package/src/server/plugins/engine/pageControllers/index.ts +0 -10
  165. package/src/server/plugins/engine/pageControllers/validationOptions.ts +0 -89
  166. package/src/server/plugins/engine/plugin.ts +0 -673
  167. package/src/server/plugins/engine/services/formSubmissionService.js +0 -46
  168. package/src/server/plugins/engine/services/formsService.js +0 -46
  169. package/src/server/plugins/engine/services/formsService.test.js +0 -90
  170. package/src/server/plugins/engine/services/index.js +0 -3
  171. package/src/server/plugins/engine/services/notifyService.test.ts +0 -132
  172. package/src/server/plugins/engine/services/notifyService.ts +0 -64
  173. package/src/server/plugins/engine/services/uploadService.js +0 -60
  174. package/src/server/plugins/engine/types.ts +0 -315
  175. package/src/server/plugins/engine/views/components/autocompletefield.html +0 -5
  176. package/src/server/plugins/engine/views/components/checkboxesfield.html +0 -5
  177. package/src/server/plugins/engine/views/components/datepartsfield.html +0 -5
  178. package/src/server/plugins/engine/views/components/details.html +0 -6
  179. package/src/server/plugins/engine/views/components/emailaddressfield.html +0 -5
  180. package/src/server/plugins/engine/views/components/fileuploadfield-key.html +0 -8
  181. package/src/server/plugins/engine/views/components/fileuploadfield-value.html +0 -3
  182. package/src/server/plugins/engine/views/components/fileuploadfield.html +0 -24
  183. package/src/server/plugins/engine/views/components/html.html +0 -3
  184. package/src/server/plugins/engine/views/components/insettext.html +0 -7
  185. package/src/server/plugins/engine/views/components/list.html +0 -36
  186. package/src/server/plugins/engine/views/components/monthyearfield.html +0 -5
  187. package/src/server/plugins/engine/views/components/multilinetextfield.html +0 -10
  188. package/src/server/plugins/engine/views/components/numberfield.html +0 -5
  189. package/src/server/plugins/engine/views/components/radiosfield.html +0 -5
  190. package/src/server/plugins/engine/views/components/selectfield.html +0 -5
  191. package/src/server/plugins/engine/views/components/telephonenumberfield.html +0 -5
  192. package/src/server/plugins/engine/views/components/textfield.html +0 -5
  193. package/src/server/plugins/engine/views/components/ukaddressfield.html +0 -25
  194. package/src/server/plugins/engine/views/components/yesnofield.html +0 -5
  195. package/src/server/plugins/engine/views/file-upload.html +0 -45
  196. package/src/server/plugins/engine/views/index.html +0 -39
  197. package/src/server/plugins/engine/views/item-delete.html +0 -56
  198. package/src/server/plugins/engine/views/partials/components.html +0 -6
  199. package/src/server/plugins/engine/views/partials/conditional-components.html +0 -3
  200. package/src/server/plugins/engine/views/partials/debug.html +0 -44
  201. package/src/server/plugins/engine/views/partials/form.html +0 -15
  202. package/src/server/plugins/engine/views/partials/heading.html +0 -16
  203. package/src/server/plugins/engine/views/partials/preview-banner.html +0 -32
  204. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  205. package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +0 -10
  206. package/src/server/plugins/engine/views/repeat-list-summary.html +0 -53
  207. package/src/server/plugins/errorPages.ts +0 -58
  208. package/src/server/plugins/nunjucks/context.js +0 -88
  209. package/src/server/plugins/nunjucks/context.test.js +0 -142
  210. package/src/server/plugins/nunjucks/enviroment.test.js +0 -201
  211. package/src/server/plugins/nunjucks/environment.js +0 -116
  212. package/src/server/plugins/nunjucks/filters/answer.js +0 -27
  213. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -89
  214. package/src/server/plugins/nunjucks/filters/evaluate.js +0 -21
  215. package/src/server/plugins/nunjucks/filters/field.js +0 -28
  216. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  217. package/src/server/plugins/nunjucks/filters/highlight.js +0 -11
  218. package/src/server/plugins/nunjucks/filters/href.js +0 -30
  219. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  220. package/src/server/plugins/nunjucks/filters/index.js +0 -8
  221. package/src/server/plugins/nunjucks/filters/inspect.js +0 -15
  222. package/src/server/plugins/nunjucks/filters/page.js +0 -24
  223. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  224. package/src/server/plugins/nunjucks/index.js +0 -3
  225. package/src/server/plugins/nunjucks/plugin.js +0 -40
  226. package/src/server/plugins/nunjucks/render.js +0 -42
  227. package/src/server/plugins/nunjucks/types.js +0 -40
  228. package/src/server/plugins/pulse.ts +0 -11
  229. package/src/server/plugins/router.ts +0 -201
  230. package/src/server/plugins/session.ts +0 -28
  231. package/src/server/routes/health.js +0 -13
  232. package/src/server/routes/health.test.js +0 -35
  233. package/src/server/routes/index.test.ts +0 -125
  234. package/src/server/routes/index.ts +0 -2
  235. package/src/server/routes/public.ts +0 -47
  236. package/src/server/routes/types.ts +0 -48
  237. package/src/server/schemas/index.ts +0 -34
  238. package/src/server/secure-context.js +0 -43
  239. package/src/server/services/cacheService.test.ts +0 -276
  240. package/src/server/services/cacheService.ts +0 -131
  241. package/src/server/services/httpService.test.js +0 -491
  242. package/src/server/services/httpService.ts +0 -50
  243. package/src/server/services/index.ts +0 -1
  244. package/src/server/types.ts +0 -54
  245. package/src/server/utils/notify.test.ts +0 -37
  246. package/src/server/utils/notify.ts +0 -50
  247. package/src/server/utils/secure-context/get-trust-store-certs.js +0 -11
  248. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  249. package/src/server/utils/utils.js +0 -24
  250. package/src/server/utils/utils.test.js +0 -54
  251. package/src/server/views/404.html +0 -16
  252. package/src/server/views/500.html +0 -19
  253. package/src/server/views/components/debug/macro.njk +0 -3
  254. package/src/server/views/components/debug/template.njk +0 -13
  255. package/src/server/views/components/service-banner/macro.njk +0 -3
  256. package/src/server/views/components/service-banner/template.njk +0 -20
  257. package/src/server/views/components/service-banner/template.test.js +0 -43
  258. package/src/server/views/components/tag-env/macro.njk +0 -3
  259. package/src/server/views/components/tag-env/template.njk +0 -30
  260. package/src/server/views/components/tag-env/template.test.js +0 -66
  261. package/src/server/views/confirmation.html +0 -19
  262. package/src/server/views/help/accessibility-statement.html +0 -58
  263. package/src/server/views/help/cookie-preferences.html +0 -57
  264. package/src/server/views/help/cookies.html +0 -71
  265. package/src/server/views/help/get-support.html +0 -37
  266. package/src/server/views/help/privacy-notice.html +0 -68
  267. package/src/server/views/help/terms-and-conditions.html +0 -83
  268. package/src/server/views/layout.html +0 -199
  269. package/src/server/views/summary.html +0 -50
  270. package/src/typings/hapi/index.d.ts +0 -95
  271. package/src/typings/hapi-tracing/index.d.ts +0 -6
  272. package/src/typings/index.d.ts +0 -3
  273. package/src/typings/joi/index.d.ts +0 -22
  274. package/stylelint.config.js +0 -10
  275. package/test/client/javascripts/file-upload.test.js +0 -1197
  276. package/test/condition/checkboxes.test.js +0 -112
  277. package/test/condition/radios.test.js +0 -112
  278. package/test/condition/text.test.js +0 -103
  279. package/test/fixtures/assets-manifest.json +0 -4
  280. package/test/fixtures/form.js +0 -86
  281. package/test/fixtures/index.js +0 -2
  282. package/test/fixtures/list.js +0 -92
  283. package/test/form/cookies.test.js +0 -338
  284. package/test/form/csrf.test.js +0 -87
  285. package/test/form/definitions/basic.js +0 -101
  286. package/test/form/definitions/blank.js +0 -10
  287. package/test/form/definitions/checkboxes.json +0 -88
  288. package/test/form/definitions/components.json +0 -452
  289. package/test/form/definitions/conditional-reveal.js +0 -140
  290. package/test/form/definitions/conditions-basic.js +0 -187
  291. package/test/form/definitions/conditions-complex.js +0 -338
  292. package/test/form/definitions/conditions-dates.js +0 -78
  293. package/test/form/definitions/conditions-escaping.js +0 -143
  294. package/test/form/definitions/demo-cph-number.js +0 -3099
  295. package/test/form/definitions/feedback.json +0 -45
  296. package/test/form/definitions/fields-optional.js +0 -402
  297. package/test/form/definitions/fields-required.js +0 -402
  298. package/test/form/definitions/file-upload-basic.js +0 -44
  299. package/test/form/definitions/file-upload.js +0 -66
  300. package/test/form/definitions/minimal.js +0 -39
  301. package/test/form/definitions/phase-alpha.json +0 -33
  302. package/test/form/definitions/phase-default.json +0 -26
  303. package/test/form/definitions/radios.json +0 -88
  304. package/test/form/definitions/repeat-mixed.js +0 -54
  305. package/test/form/definitions/repeat.js +0 -70
  306. package/test/form/definitions/status.json +0 -126
  307. package/test/form/definitions/templates.js +0 -183
  308. package/test/form/definitions/test.json +0 -581
  309. package/test/form/definitions/text.json +0 -75
  310. package/test/form/definitions/titles.json +0 -170
  311. package/test/form/definitions.test.js +0 -47
  312. package/test/form/exit-page.test.js +0 -210
  313. package/test/form/feedback.test.js +0 -68
  314. package/test/form/fields-optional.test.js +0 -237
  315. package/test/form/fields-required.test.js +0 -294
  316. package/test/form/file-upload.test.js +0 -313
  317. package/test/form/govuk-notify.test.js +0 -449
  318. package/test/form/journey-basic.test.js +0 -444
  319. package/test/form/persist-files.test.js +0 -227
  320. package/test/form/phase-banner.test.js +0 -71
  321. package/test/form/repeat.test.js +0 -628
  322. package/test/form/summary-submission-email.test.js +0 -95
  323. package/test/form/template.test.js +0 -288
  324. package/test/form/titles.test.js +0 -204
  325. package/test/helpers/component-helpers.js +0 -74
  326. package/test/utils/get-cookie.js +0 -42
  327. package/test/utils/get-form-definitions.js +0 -18
  328. package/tmp.pdf +0 -1
  329. package/tsconfig.json +0 -28
  330. package/webpack.config.js +0 -208
@@ -1,19 +0,0 @@
1
- import { getTrustStoreCerts } from '~/src/server/utils/secure-context/get-trust-store-certs.js'
2
-
3
- describe('#getTrustStoreCerts', () => {
4
- const mockProcessEnvWithCerts = {
5
- TRUSTSTORE_CA_ONE:
6
- 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCm1vY2stY2VydC1kb3JpcwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==',
7
- UNRELATED_ENV: 'not-a-cert'
8
- }
9
-
10
- test('Should provide expected result with "certs"', () => {
11
- expect(getTrustStoreCerts(mockProcessEnvWithCerts)).toEqual([
12
- '-----BEGIN CERTIFICATE-----\nmock-cert-doris\n-----END CERTIFICATE-----'
13
- ])
14
- })
15
-
16
- test('Should provide expected empty array', () => {
17
- expect(getTrustStoreCerts({})).toEqual([])
18
- })
19
- })
@@ -1,24 +0,0 @@
1
- import { getTraceId } from '@defra/hapi-tracing'
2
-
3
- import { config } from '~/src/config/index.js'
4
-
5
- /**
6
- * Returns a set of headers to use in an HTTP request, merging them with any existing headers in options.
7
- * @param {Record<string, string> | undefined} [existingHeaders] - Optional existing headers to merge with the tracing headers.
8
- * @param {string} [header] - The tracing header name to use.
9
- * @returns {Record<string, string> | undefined} The merged headers, or undefined if no tracing header is available.
10
- */
11
- export function applyTraceHeaders(
12
- existingHeaders,
13
- header = config.get('tracing').header
14
- ) {
15
- if (!header) {
16
- return existingHeaders
17
- }
18
-
19
- const traceId = getTraceId()
20
-
21
- const headers = traceId ? { [header]: traceId } : undefined
22
-
23
- return existingHeaders ? Object.assign(existingHeaders, headers) : headers
24
- }
@@ -1,54 +0,0 @@
1
- import { getTraceId } from '@defra/hapi-tracing'
2
-
3
- import { config } from '~/src/config/index.js'
4
- import { applyTraceHeaders } from '~/src/server/utils/utils.js'
5
-
6
- jest.mock('@defra/hapi-tracing')
7
-
8
- describe('Header helper functions', () => {
9
- it('should include the trace id in the headers if available', () => {
10
- jest.mocked(getTraceId).mockReturnValue('my-trace-id')
11
-
12
- const result = applyTraceHeaders() // Updated to applyTraceHeaders
13
- expect(result).toEqual({
14
- [config.get('tracing').header]: 'my-trace-id'
15
- })
16
- })
17
-
18
- it('should exclude the trace id in the headers if missing', () => {
19
- jest.mocked(getTraceId).mockReturnValue(null)
20
-
21
- const result = applyTraceHeaders() // Updated to applyTraceHeaders
22
- expect(result).toBeUndefined()
23
- })
24
-
25
- it('should merge existing headers with the trace id if available', () => {
26
- jest.mocked(getTraceId).mockReturnValue('my-trace-id')
27
-
28
- const existingHeaders = { Authorization: 'Bearer token' }
29
- const result = applyTraceHeaders(existingHeaders) // Updated to applyTraceHeaders
30
-
31
- expect(result).toEqual({
32
- Authorization: 'Bearer token',
33
- [config.get('tracing').header]: 'my-trace-id'
34
- })
35
- })
36
-
37
- it('should return existing headers without modification if trace id is missing', () => {
38
- jest.mocked(getTraceId).mockReturnValue(null)
39
-
40
- const existingHeaders = { Authorization: 'Bearer token' }
41
- const result = applyTraceHeaders(existingHeaders) // Updated to applyTraceHeaders
42
-
43
- expect(result).toEqual({
44
- Authorization: 'Bearer token'
45
- })
46
- })
47
-
48
- it('should return existing headers if tracing header configuration is missing', () => {
49
- const existingHeaders = { Authorization: 'Bearer token' }
50
- const result = applyTraceHeaders(existingHeaders, '')
51
-
52
- expect(result).toBe(existingHeaders)
53
- })
54
- })
@@ -1,16 +0,0 @@
1
- {% extends 'layout.html' %}
2
-
3
- {% block content %}
4
- <div class="govuk-width-container">
5
- <div class="govuk-main-wrapper">
6
- <div class="govuk-grid-row">
7
- <div class="govuk-grid-column-two-thirds">
8
- <h1 class="govuk-heading-l">Page not found</h1>
9
- <p class="govuk-body">If you typed the web address, check it is correct.</p>
10
- <p class="govuk-body">If you pasted the web address, check you copied the entire address.</p>
11
- <p class="govuk-body">If the web address is correct or you selected a link or button, <a href="https://www.gov.uk/guidance/contact-defra" class="govuk-link">contact the Defra Helpline</a> if you need to speak to someone about your form.</p>
12
- </div>
13
- </div>
14
- </div>
15
- </div>
16
- {% endblock %}
@@ -1,19 +0,0 @@
1
- {% extends 'layout.html' %}
2
-
3
- {% block content %}
4
- <div class="govuk-width-container">
5
- <div class="govuk-main-wrapper">
6
- <div class="govuk-grid-row">
7
- <div class="govuk-grid-column-two-thirds">
8
- <h1 class="govuk-heading-l">Sorry, there is a problem with the service</h1>
9
- <p class="govuk-body">You can:</p>
10
- <ul class="govuk-list govuk-list--bullet">
11
- <li>try your browser back button as your data may be saved</li>
12
- <li><a class="govuk-link" href="https://www.gov.uk/guidance/contact-defra">contact the Defra Helpline</a> if you
13
- have any questions</li>
14
- </ul>
15
- </div>
16
- </div>
17
- </div>
18
- </div>
19
- {% endblock %}
@@ -1,3 +0,0 @@
1
- {% macro appDebug(params) %}
2
- {%- include "./template.njk" -%}
3
- {% endmacro %}
@@ -1,13 +0,0 @@
1
- {%- macro _code(params) -%}
2
- {{- params.content | inspect | safe -}}
3
- {%- endmacro -%}
4
-
5
- {%- macro _container(params) -%}
6
- <code tabindex="0" class="app-code__container">
7
- {{- _code(params) | highlight('js') | safe -}}
8
- </code>
9
- {%- endmacro -%}
10
-
11
- <pre class="app-code">
12
- {{- _container(params) -}}
13
- </pre>
@@ -1,3 +0,0 @@
1
- {% macro appServiceBanner(params) %}
2
- {%- include "./template.njk" -%}
3
- {% endmacro %}
@@ -1,20 +0,0 @@
1
- {% from "govuk/components/warning-text/macro.njk" import govukWarningText -%}
2
-
3
- {%- macro _message(params) %}
4
- <span class="govuk-!-font-weight-bold" aria-hidden="true">{{ params.title }}:</span>
5
- <span class="app-service-banner__text">{{ params.text if params.text else params.html | safe }}</span>
6
- {% endmacro -%}
7
-
8
- {%- macro _iconFallback(params) %}
9
- <span id="app-service-banner-description">{{ params.title }}</span>
10
- {% endmacro -%}
11
-
12
- <aside class="app-service-banner" aria-labelledby="app-service-banner-description" aria-live="polite">
13
- <div class="govuk-width-container">
14
- {{ govukWarningText({
15
- html: _message(params) | trim | indent(2),
16
- iconFallbackText: _iconFallback(params) | safe | trim,
17
- classes: "app-service-banner__content"
18
- }) | trim | indent(4) }}
19
- </div>
20
- </aside>
@@ -1,43 +0,0 @@
1
- import { renderMacro } from '~/test/helpers/component-helpers.js'
2
-
3
- describe('Service banner component', () => {
4
- let $component = /** @type {HTMLElement | null} */ (null)
5
- let $content = /** @type {HTMLElement | null} */ (null)
6
- let $text = /** @type {HTMLElement | null} */ (null)
7
-
8
- beforeEach(() => {
9
- const { container, document } = renderMacro(
10
- 'appServiceBanner',
11
- 'components/service-banner/macro.njk',
12
- {
13
- params: {
14
- title: 'Service status',
15
- text: 'This is a service status message'
16
- }
17
- }
18
- )
19
-
20
- $component = container.getByRole('complementary')
21
- $content = document.querySelector('.app-service-banner__content')
22
- $text = document.querySelector('.app-service-banner__text')
23
- })
24
-
25
- it('should render contents', () => {
26
- expect($component).toBeInTheDocument()
27
- expect($component).toHaveClass('app-service-banner')
28
- expect($component).toContainElement($content)
29
- expect($content).toContainElement($text)
30
- })
31
-
32
- it('should announce service message', () => {
33
- expect($component).toHaveAttribute('aria-live', 'polite')
34
- })
35
-
36
- it('should have accessible name', () => {
37
- expect($component).toHaveAccessibleName('Service status')
38
- })
39
-
40
- it('should have text content', () => {
41
- expect($text).toHaveTextContent('This is a service status message')
42
- })
43
- })
@@ -1,3 +0,0 @@
1
- {% macro appTagEnv(params) %}
2
- {%- include "./template.njk" -%}
3
- {% endmacro %}
@@ -1,30 +0,0 @@
1
- {%- from "govuk/components/tag/macro.njk" import govukTag -%}
2
-
3
- {%- switch params.env %}
4
- {% case "local" %}
5
- {% set text = "Local" %}
6
- {% set classes = "govuk-tag--green" %}
7
- {% case "dev" %}
8
- {% set text = "Development" %}
9
- {% set classes = "govuk-tag--grey" %}
10
- {% case "test" %}
11
- {% set text = "Test" %}
12
- {% set classes = "govuk-tag--yellow" %}
13
- {% case "ext-test" %}
14
- {% set text = "External test" %}
15
- {% set classes = "govuk-tag--yellow" %}
16
- {% case "perf-test" %}
17
- {% set text = "Performance test" %}
18
- {% set classes = "govuk-tag--yellow" %}
19
- {% case "prod" %}
20
- {% set text = "Production" %}
21
- {% set classes = "govuk-tag--red" %}
22
- {% default %}
23
- {% set text = params.env | replace("-", " ") | capitalize %}
24
- {% set classes = "govuk-tag--grey" %}
25
- {% endswitch -%}
26
-
27
- {{ govukTag({
28
- text: text,
29
- classes: classes + " app-tag--env"
30
- }) }}
@@ -1,66 +0,0 @@
1
- import { renderMacro } from '~/test/helpers/component-helpers.js'
2
-
3
- describe('Tag environment component', () => {
4
- describe.each([
5
- {
6
- text: 'Local',
7
- env: 'local',
8
- colour: 'green'
9
- },
10
- {
11
- text: 'Development',
12
- env: 'dev',
13
- colour: 'grey'
14
- },
15
- {
16
- text: 'Test',
17
- env: 'test',
18
- colour: 'yellow'
19
- },
20
- {
21
- text: 'External test',
22
- env: 'ext-test',
23
- colour: 'yellow'
24
- },
25
- {
26
- text: 'Performance test',
27
- env: 'perf-test',
28
- colour: 'yellow'
29
- },
30
- {
31
- text: 'Production',
32
- env: 'prod',
33
- colour: 'red'
34
- },
35
- {
36
- text: 'Unknown environment',
37
- env: 'unknown-environment',
38
- colour: 'grey'
39
- }
40
- ])('Environment: $text', ({ text, env, colour }) => {
41
- let $component = /** @type {HTMLElement | null} */ (null)
42
-
43
- beforeEach(() => {
44
- const { container } = renderMacro(
45
- 'appTagEnv',
46
- 'components/tag-env/macro.njk',
47
- { params: { env } }
48
- )
49
-
50
- $component = container.getByRole('strong')
51
- })
52
-
53
- it('should render contents', () => {
54
- expect($component).toBeInTheDocument()
55
- expect($component).toHaveClass('govuk-tag')
56
- })
57
-
58
- it('should have text content', () => {
59
- expect($component).toHaveTextContent(text)
60
- })
61
-
62
- it('should use environment colour', () => {
63
- expect($component).toHaveClass(`govuk-tag--${colour}`)
64
- })
65
- })
66
- })
@@ -1,19 +0,0 @@
1
- {% extends "layout.html" %}
2
-
3
- {% from "govuk/components/panel/macro.njk" import govukPanel %}
4
-
5
- {% set mainClasses = "govuk-main-wrapper--l" %}
6
-
7
- {% block content %}
8
- <div class="govuk-grid-row">
9
- <div class="govuk-grid-column-two-thirds">
10
- {{ govukPanel({
11
- titleText: pageTitle
12
- }) }}
13
- <h2 class="govuk-heading-m">What happens next</h2>
14
- <div class="app-prose-scope">
15
- {{ submissionGuidance | markdown | safe }}
16
- </div>
17
- </div>
18
- </div>
19
- {% endblock %}
@@ -1,58 +0,0 @@
1
- {% extends 'layout.html' %}
2
-
3
- {% set pageTitle = "Accessibility statement" %}
4
-
5
- {% block content %}
6
- <div class="govuk-grid-row">
7
- <div class="govuk-grid-column-two-thirds">
8
- <h1 class="govuk-heading-l">Accessibility statement for this form</h1>
9
- <p class="govuk-body">This accessibility statement applies to online forms with a URL that starts with
10
- https://submit-forms-to-defra.service.gov.uk.</p>
11
-
12
- <h2 class="govuk-heading-m">Technical information about this website’s accessibility</h2>
13
- <p class="govuk-body">Defra is committed to making its forms accessible, in accordance with the Public Sector Bodies
14
- (Websites and Mobile Applications) (No. 2) Accessibility Regulations 2018.</p>
15
-
16
- <h2 class="govuk-heading-m">Compliance status</h2>
17
- <p class="govuk-body">Forms created by Defra are fully compliant with the Web Content Accessibility Guidelines
18
- (WCAG) version 2.2 AA standard.</p>
19
-
20
- <h2 class="govuk-heading-m">How accessible this website is</h2>
21
- <p class="govuk-body">This section lists accessibility issues with content found in Defra forms.</p>
22
-
23
- <h3 class="govuk-heading-s">Non-compliance with the accessibility regulations</h3>
24
- <p class="govuk-body">Defra forms do not have accessibility issues that fail the WCAG 2.2 accessibility regulations.</p>
25
-
26
- <h3 class="govuk-heading-s">Content that’s not within the scope of the accessibility regulations</h3>
27
- <p class="govuk-body">The accessibility issues listed in this section do not fail the accessibility regulations. We
28
- plan to fix them as soon as possible.</p>
29
- <ul class="govuk-list govuk-list--number">
30
- <li>Forms do not default to a dark or light theme based on the ‘prefers-color-scheme’.</li>
31
- <li>The email field allows for the entry of values that are not formatted as an email address.</li>
32
- <li>The summary screen for each form does not display the question asked. Instead, it displays a summarised version of
33
- the question.</li>
34
- <li>Some optional questions are not marked as optional.</li>
35
- <li>Section titles in some forms are formatted as H2 level headings. These headings are shown before page titles
36
- which are formatted as H1 level headings (skipped heading hierarchy).</li>
37
- </ul>
38
-
39
- <h2 class="govuk-heading-m">Preparation of this accessibility statement</h2>
40
- <p class="govuk-body">This statement was prepared on 24 June 2024. It was last reviewed on 26 June 2024.</p>
41
- <p class="govuk-body">The Defra Accessibility team tested 2 online forms against the WCAG 2.2 AA standard on 17 June
42
- 2024. The tests were done using automated testing tools.</p>
43
- <p class="govuk-body">We will commission a full accessibility audit of forms created by Defra before April 2025.</p>
44
-
45
- <h2 class="govuk-heading-m">Feedback and contact information</h2>
46
- <p class="govuk-body">If you find any problems not listed on this page or think we’re not meeting accessibility
47
- requirements, email the Defra Forms team on <a class="govuk-link"
48
- href="mailto:defraforms@defra.gov.uk">defraforms@defra.gov.uk</a>.</p>
49
-
50
- <h2 class="govuk-heading-m">Enforcement procedure</h2>
51
- <p class="govuk-body">The Equality and Human Rights Commission (EHRC) is responsible for enforcing the Public Sector
52
- Bodies (Websites and Mobile Applications) (No. 2) Accessibility Regulations 2018 (the ‘accessibility
53
- regulations’). If you’re not happy with how we respond to your complaint, contact the <a class="govuk-link"
54
- href="https://www.equalityadvisoryservice.com/" rel="external">Equality Advisory and Support Service (EASS)</a>.
55
- </p>
56
- </div>
57
- </div>
58
- {% endblock %}
@@ -1,57 +0,0 @@
1
- {% extends "layout.html" %}
2
-
3
- {% from "govuk/components/radios/macro.njk" import govukRadios %}
4
- {% from "govuk/components/button/macro.njk" import govukButton %}
5
- {% from "govuk/components/notification-banner/macro.njk" import govukNotificationBanner -%}
6
-
7
- {% set pageTitle = "Cookies" %}
8
-
9
- {% block content %}
10
- <div class="govuk-grid-row">
11
- <div class="govuk-grid-column-two-thirds">
12
- {% if cookieConsentUpdated %}
13
- {% set notificationHtml %}
14
- <p class="govuk-notification-banner__heading">
15
- You’ve set your cookie preferences.
16
- </p>
17
- {% endset %}
18
-
19
- {{ govukNotificationBanner({
20
- type: "success",
21
- html: notificationHtml
22
- }) }}
23
- {% endif %}
24
-
25
- <h2 class="govuk-heading-l">Change your cookie settings</h2>
26
-
27
- <form method="post" novalidate>
28
- <input type="hidden" name="crumb" value="{{ crumb }}">
29
-
30
- {{ govukRadios({
31
- name: "cookies[analytics]",
32
- fieldset: {
33
- legend: {
34
- text: "Do you want to accept analytics cookies?",
35
- classes: "govuk-fieldset__legend--s"
36
- }
37
- },
38
- items: [
39
- {
40
- value: "yes",
41
- text: "Yes"
42
- },
43
- {
44
- value: "no",
45
- text: "No"
46
- }
47
- ],
48
- value: "yes" if cookieConsent.analytics === true else "no"
49
- }) }}
50
-
51
- {{ govukButton({
52
- text: "Save cookie settings"
53
- }) }}
54
- </form>
55
- </div>
56
- </div>
57
- {% endblock %}
@@ -1,71 +0,0 @@
1
- {% extends 'layout.html' %}
2
-
3
- {% from "govuk/components/table/macro.njk" import govukTable %}
4
-
5
- {% set pageTitle = "Cookies" %}
6
-
7
- {% block content %}
8
- <div class="govuk-grid-row">
9
- <div class="govuk-grid-column-two-thirds">
10
- <h1 class="govuk-heading-l">Cookies</h1>
11
- <p class="govuk-body">Cookies are small files saved on your phone, tablet or computer when you visit a website.</p>
12
- <p class="govuk-body">We use essential cookies to make this form work.</p>
13
-
14
- <h2 class="govuk-heading-m">Essential cookies</h2>
15
- <p class="govuk-body">Essential cookies keep your information secure. We do not need to ask your permission to use them.</p>
16
- {{ govukTable({
17
- firstCellIsHeader: true,
18
- caption: "Essential cookies we use",
19
- head: [
20
- { text: "Name" },
21
- { text: "Purpose" },
22
- { text: "Expires" }
23
- ],
24
- rows: [
25
- [
26
- { text: "cookieConsent" },
27
- { text: "Remembers your cookie preferences" },
28
- { text: "1 year" }
29
- ],
30
- [
31
- { text: "session" },
32
- { text: "Remembers the information you enter" },
33
- { text: "When you close the browser, or after " + sessionDurationPretty }
34
- ],
35
- [
36
- { text: "crumb" },
37
- { text: "Ensures forms can only be submitted from this website" },
38
- { text: "When you close the browser" }
39
- ]
40
- ]
41
- }) }}
42
-
43
- <h2 class="govuk-heading-m">Analytics cookies</h2>
44
- <p class="govuk-body">We use Google Analytics software to understand how people use our forms. We do this to help make sure the site is meeting the needs of its users and to help us make improvements.</p>
45
- {{ govukTable({
46
- firstCellIsHeader: true,
47
- caption: "Analytics cookies we use",
48
- head: [
49
- { text: "Name" },
50
- { text: "Purpose" },
51
- { text: "Expires" }
52
- ],
53
- rows: [
54
- [
55
- { text: "_ga" },
56
- { text: "Used by Google Analytics to help us count how many people visit our forms by tracking if you’ve visited before" },
57
- { text: "2 years" }
58
- ],
59
- [
60
- { text: "_ga_" + googleAnalyticsContainerId },
61
- { text: "Used by Google Analytics to find and track an individual session with your device" },
62
- { text: "2 years" }
63
- ]
64
- ]
65
- }) }}
66
-
67
- <h2 class="govuk-heading-m">Change your settings</h2>
68
- <p class="govuk-body">You can <a class="govuk-link" href="/help/cookie-preferences/{{ slug }}">change which cookies you’re happy for us to use</a>.</p>
69
- </div>
70
- </div>
71
- {% endblock %}
@@ -1,37 +0,0 @@
1
- {% extends "layout.html" %}
2
-
3
- {% set pageTitle = "Get help with your form" %}
4
-
5
- {% block content %}
6
- {% if form.contact %}
7
- <div class="govuk-width-container">
8
- <div class="govuk-grid-row">
9
- <div class="govuk-grid-column-two-thirds">
10
- <h1 class="govuk-heading-l">{{ pageTitle }}</h1>
11
- {% if form.contact.phone %}
12
- <h2 class="govuk-heading-m">Telephone</h2>
13
- <div class="app-prose-scope">
14
- {{ form.contact.phone | markdown | safe }}
15
- </div>
16
- <p class="govuk-body"><a href="https://www.gov.uk/call-charges" class="govuk-link govuk-link--no-visited-state">Find out about call charges</a></p>
17
- {% endif %}
18
-
19
- {% if form.contact.email %}
20
- <h2 class="govuk-heading-m">Email</h2>
21
- <ul class="govuk-list">
22
- <li><a class="govuk-link govuk-link--no-visited-state" href="mailto:{{ form.contact.email.address }}">{{ form.contact.email.address }}</a></li>
23
- <li>{{ form.contact.email.responseTime }}</li>
24
- </ul>
25
- {% endif %}
26
-
27
- {% if form.contact.online %}
28
- <h2 class="govuk-heading-m">Online contact form</h2>
29
- <ul class="govuk-list">
30
- <li><a class="govuk-link govuk-link--no-visited-state" href="{{ form.contact.online.url }}">{{ form.contact.online.text }}</a></li>
31
- </ul>
32
- {% endif %}
33
- </div>
34
- </div>
35
- </div>
36
- {% endif %}
37
- {% endblock %}
@@ -1,68 +0,0 @@
1
- {% extends "layout.html" %}
2
-
3
- {% set pageTitle = config.serviceName + " privacy notice" %}
4
-
5
- {% block content %}
6
- <div class="govuk-grid-row">
7
- <div class="govuk-grid-column-two-thirds">
8
- <h1 class="govuk-heading-l">{{ config.serviceName }} privacy notice</h1>
9
- <p class="govuk-body">The {{ form.title }} form was created using ‘{{ config.serviceName }}’. This service is owned and operated by the Department for Environment, Food & Rural Affairs (Defra).</p>
10
-
11
- <h2 class="govuk-heading-m">Who collects your personal data</h2>
12
- <p class="govuk-body">The organisation that created the {{ form.title }} form using ‘{{ config.serviceName }}’ is the data controller of personal data they collect. If the data controller is outside the Defra legal entity, then Defra is the data processor.</p>
13
- <p class="govuk-body">Read the <a href="{{ form.privacyNoticeUrl }}" class="govuk-link">specific privacy notice for the {{ form.title }} form</a>.</p>
14
- <p class="govuk-body">Defra also collects some data as a data controller. This privacy notice explains what personal data Defra collects and processes as a data controller through forms made with ‘{{ config.serviceName }}’.</p>
15
- <p class="govuk-body">If you need further information about how Defra uses your personal data, email <a href="mailto:defraforms@defra.gov.uk" class="govuk-link">defraforms@defra.gov.uk</a>.</p>
16
- <p class="govuk-body">If you want information and your associated rights you can email: <a href="mailto:data.protection@defra.gov.uk" class="govuk-link">data.protection@defra.gov.uk</a>.</p>
17
- <p class="govuk-body">The data protection officer for Defra is responsible for checking that Defra complies with legislation. You can contact them at <a href="mailto:DefraGroupDataProtectionOfficer@defra.gov.uk" class="govuk-link">Defra<wbr>Group<wbr>Data<wbr>Protection<wbr>Officer@defra.gov.uk</a>.</p>
18
-
19
- <h2 class="govuk-heading-m">Data we collect from you and what we do with it</h2>
20
- <p class="govuk-body">If you give your consent, we use Google Analytics cookies to collect information about how you use ‘{{ config.serviceName }}’. Read the <a href="https://support.google.com/analytics/topic/2919631" class="govuk-link">data privacy and security policy for Google Analytics</a>.</p>
21
- <p class="govuk-body">Google Analytics processes information about:</p>
22
- <ul class="govuk-list govuk-list--bullet">
23
- <li>your IP address</li>
24
- <li>the pages you visit on ‘{{ config.serviceName }}’</li>
25
- <li>how long you spend on each ‘{{ config.serviceName }}’ page</li>
26
- <li>how you got to the site</li>
27
- <li>what you select while you’re visiting the site</li>
28
- </ul>
29
- <p class="govuk-body">Defra will make sure you cannot be directly identified by Google Analytics data. We do this by using <a href="https://support.google.com/analytics/answer/2763052" class="govuk-link">Google Analytics’ IP address anonymisation</a> feature and by removing any other personal data from the titles or URLs of the pages you visit.</p>
30
- <p class="govuk-body">Defra will not combine analytics information with other data sets in a way that would directly identify who you are.</p>
31
- <p class="govuk-body">We use system logs to collect information about the usage of forms. The logs are stored in Amazon Web Services based in London.</p>
32
- <p class="govuk-body">We use the system logs and Google Analytics data to create anonymised reports about the performance of forms that use ‘{{ config.serviceName }}’. We use this data to improve forms, for example, if we discover a high number of drops offs at a certain point within a form. We may share this information with the data controller of the form.</p>
33
- <p class="govuk-body">If you email us feedback about a form that uses ‘{{ config.serviceName }}’, we’ll send your email address and any other personal information you choose to include in your email to the data controller for review. The data controller may use your personal information to reply to your query to update a form based on your feedback where it is appropriate.</p>
34
-
35
- <h2 class="govuk-heading-m">Lawful basis for processing your personal data</h2>
36
- <p class="govuk-body">The lawful basis for processing your personal data is your consent.</p>
37
-
38
- <h2 class="govuk-heading-m">Cookies</h2>
39
- <p class="govuk-body">We use cookies to make this form work. Read about the <a href="/help/cookies" class="govuk-link">cookies we use to make this form work</a>.</p>
40
-
41
- <h2 class="govuk-heading-m">How long we keep your data</h2>
42
- <p class="govuk-body">Defra will keep tracking cookies on your device for up to 1 year.</p>
43
-
44
- <h2 class="govuk-heading-m">Transfer of your personal data outside of the UK</h2>
45
- <p class="govuk-body">We will only transfer your personal data to another country that is deemed adequate for data protection purposes.</p>
46
-
47
- <h2 class="govuk-heading-m">What are your rights</h2>
48
- <p class="govuk-body">Based on the lawful processing above, your individual rights are:</p>
49
- <ul class="govuk-list govuk-list--bullet">
50
- <li>the right to be informed</li>
51
- <li>the right of access</li>
52
- <li>the right to rectification</li>
53
- <li>the right to erasure</li>
54
- <li>the right to restrict processing</li>
55
- <li>the right to data portability</li>
56
- <li>rights in relation to automated decision making and profiling</li>
57
- </ul>
58
- <p class="govuk-body">Get more information about your <a href="https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/individual-rights/" class="govuk-link">individual rights</a> under the UK General Data Protection Regulation (UK GDPR) and the Data Protection Act 2018 (DPA 2018).</p>
59
-
60
- <h2 class="govuk-heading-m">Complaints</h2>
61
- <p class="govuk-body">You have the right to <a href="https://ico.org.uk/make-a-complaint/" class="govuk-link">make a complaint</a> to the Information Commissioner’s Office at any time.</p>
62
-
63
- <h2 class="govuk-heading-m">Personal information charter</h2>
64
- <p class="govuk-body">Our <a href="https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs/about/personal-information-charter" class="govuk-link">personal information charter</a> explains more about your rights over your personal data.</p>
65
- <p class="govuk-body">Last updated: 24 December 2024</p>
66
- </div>
67
- </div>
68
- {% endblock %}