@defra/forms-engine-plugin 0.0.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/.browserslistrc +16 -0
- package/.editorconfig +9 -0
- package/.eslintrc.cjs +266 -0
- package/.github/dependabot.yml +85 -0
- package/.github/workflows/check-pull-request.yml +209 -0
- package/.github/workflows/pr-notifier.yml +98 -0
- package/.github/workflows/publish.yml +111 -0
- package/.husky/pre-commit +1 -0
- package/.lintstagedrc.js +4 -0
- package/.nvmrc +1 -0
- package/.prettierignore +8 -0
- package/.prettierrc.cjs +26 -0
- package/.server/client/javascripts/application.js +68 -0
- package/.server/client/javascripts/application.js.map +1 -0
- package/.server/client/javascripts/file-upload.js +292 -0
- package/.server/client/javascripts/file-upload.js.map +1 -0
- package/.server/client/stylesheets/_code.scss +33 -0
- package/.server/client/stylesheets/_govuk-frontend.scss +4 -0
- package/.server/client/stylesheets/_prose.scss +56 -0
- package/.server/client/stylesheets/_service-banner.scss +24 -0
- package/.server/client/stylesheets/_summary-list.scss +28 -0
- package/.server/client/stylesheets/_tag-env.scss +24 -0
- package/.server/client/stylesheets/application.scss +14 -0
- package/.server/common/cookies.js +55 -0
- package/.server/common/cookies.js.map +1 -0
- package/.server/common/cookies.test.js +15 -0
- package/.server/common/cookies.test.js.map +1 -0
- package/.server/common/types.js +6 -0
- package/.server/common/types.js.map +1 -0
- package/.server/config/index.js +241 -0
- package/.server/config/index.js.map +1 -0
- package/.server/index.js +25 -0
- package/.server/index.js.map +1 -0
- package/.server/server/common/helpers/logging/logger-options.js +44 -0
- package/.server/server/common/helpers/logging/logger-options.js.map +1 -0
- package/.server/server/common/helpers/logging/logger.js +6 -0
- package/.server/server/common/helpers/logging/logger.js.map +1 -0
- package/.server/server/common/helpers/logging/request-logger.js +7 -0
- package/.server/server/common/helpers/logging/request-logger.js.map +1 -0
- package/.server/server/common/helpers/logging/request-tracing.js +12 -0
- package/.server/server/common/helpers/logging/request-tracing.js.map +1 -0
- package/.server/server/common/helpers/redis-client.js +55 -0
- package/.server/server/common/helpers/redis-client.js.map +1 -0
- package/.server/server/constants.js +2 -0
- package/.server/server/constants.js.map +1 -0
- package/.server/server/forms/README.md +10 -0
- package/.server/server/forms/components.json +1015 -0
- package/.server/server/forms/report-a-terrorist.json +270 -0
- package/.server/server/forms/runner-components-test.json +365 -0
- package/.server/server/forms/test.json +581 -0
- package/.server/server/index.js +116 -0
- package/.server/server/index.js.map +1 -0
- package/.server/server/plugins/blankie.js +29 -0
- package/.server/server/plugins/blankie.js.map +1 -0
- package/.server/server/plugins/crumb.js +15 -0
- package/.server/server/plugins/crumb.js.map +1 -0
- package/.server/server/plugins/engine/README.md +87 -0
- package/.server/server/plugins/engine/components/AutocompleteField.js +37 -0
- package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -0
- package/.server/server/plugins/engine/components/CheckboxesField.js +79 -0
- package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -0
- package/.server/server/plugins/engine/components/ComponentBase.js +55 -0
- package/.server/server/plugins/engine/components/ComponentBase.js.map +1 -0
- package/.server/server/plugins/engine/components/ComponentCollection.js +198 -0
- package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -0
- package/.server/server/plugins/engine/components/DatePartsField.js +208 -0
- package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -0
- package/.server/server/plugins/engine/components/Details.js +26 -0
- package/.server/server/plugins/engine/components/Details.js.map +1 -0
- package/.server/server/plugins/engine/components/EmailAddressField.js +40 -0
- package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -0
- package/.server/server/plugins/engine/components/FileUploadField.js +195 -0
- package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -0
- package/.server/server/plugins/engine/components/FormComponent.js +210 -0
- package/.server/server/plugins/engine/components/FormComponent.js.map +1 -0
- package/.server/server/plugins/engine/components/Html.js +24 -0
- package/.server/server/plugins/engine/components/Html.js.map +1 -0
- package/.server/server/plugins/engine/components/InsetText.js +22 -0
- package/.server/server/plugins/engine/components/InsetText.js.map +1 -0
- package/.server/server/plugins/engine/components/List.js +65 -0
- package/.server/server/plugins/engine/components/List.js.map +1 -0
- package/.server/server/plugins/engine/components/ListFormComponent.js +87 -0
- package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -0
- package/.server/server/plugins/engine/components/MonthYearField.js +172 -0
- package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -0
- package/.server/server/plugins/engine/components/MultilineTextField.js +115 -0
- package/.server/server/plugins/engine/components/MultilineTextField.js.map +1 -0
- package/.server/server/plugins/engine/components/NumberField.js +137 -0
- package/.server/server/plugins/engine/components/NumberField.js.map +1 -0
- package/.server/server/plugins/engine/components/RadiosField.js +18 -0
- package/.server/server/plugins/engine/components/RadiosField.js.map +1 -0
- package/.server/server/plugins/engine/components/SelectField.js +33 -0
- package/.server/server/plugins/engine/components/SelectField.js.map +1 -0
- package/.server/server/plugins/engine/components/SelectionControlField.js +43 -0
- package/.server/server/plugins/engine/components/SelectionControlField.js.map +1 -0
- package/.server/server/plugins/engine/components/TelephoneNumberField.js +43 -0
- package/.server/server/plugins/engine/components/TelephoneNumberField.js.map +1 -0
- package/.server/server/plugins/engine/components/TextField.js +63 -0
- package/.server/server/plugins/engine/components/TextField.js.map +1 -0
- package/.server/server/plugins/engine/components/UkAddressField.js +130 -0
- package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -0
- package/.server/server/plugins/engine/components/YesNoField.js +28 -0
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -0
- package/.server/server/plugins/engine/components/constants.js +2 -0
- package/.server/server/plugins/engine/components/constants.js.map +1 -0
- package/.server/server/plugins/engine/components/helpers.js +219 -0
- package/.server/server/plugins/engine/components/helpers.js.map +1 -0
- package/.server/server/plugins/engine/components/index.js +25 -0
- package/.server/server/plugins/engine/components/index.js.map +1 -0
- package/.server/server/plugins/engine/components/types.js +2 -0
- package/.server/server/plugins/engine/components/types.js.map +1 -0
- package/.server/server/plugins/engine/configureEnginePlugin.js +44 -0
- package/.server/server/plugins/engine/configureEnginePlugin.js.map +1 -0
- package/.server/server/plugins/engine/helpers.js +268 -0
- package/.server/server/plugins/engine/helpers.js.map +1 -0
- package/.server/server/plugins/engine/index.js +6 -0
- package/.server/server/plugins/engine/index.js.map +1 -0
- package/.server/server/plugins/engine/models/FormModel.js +363 -0
- package/.server/server/plugins/engine/models/FormModel.js.map +1 -0
- package/.server/server/plugins/engine/models/RepeatingSummaryViewModel.js +2 -0
- package/.server/server/plugins/engine/models/RepeatingSummaryViewModel.js.map +1 -0
- package/.server/server/plugins/engine/models/Section.js +2 -0
- package/.server/server/plugins/engine/models/Section.js.map +1 -0
- package/.server/server/plugins/engine/models/SummaryViewModel.js +183 -0
- package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -0
- package/.server/server/plugins/engine/models/index.js +3 -0
- package/.server/server/plugins/engine/models/index.js.map +1 -0
- package/.server/server/plugins/engine/models/types.js +2 -0
- package/.server/server/plugins/engine/models/types.js.map +1 -0
- package/.server/server/plugins/engine/outputFormatters/human/v1.js +44 -0
- package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -0
- package/.server/server/plugins/engine/outputFormatters/index.js +24 -0
- package/.server/server/plugins/engine/outputFormatters/index.js.map +1 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js +104 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js.map +1 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.js +110 -0
- package/.server/server/plugins/engine/outputFormatters/machine/v2.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +401 -0
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/PageController.js +133 -0
- package/.server/server/plugins/engine/pageControllers/PageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +482 -0
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/README.md +28 -0
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +372 -0
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/StartPageController.js +16 -0
- package/.server/server/plugins/engine/pageControllers/StartPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/StatusPageController.js +43 -0
- package/.server/server/plugins/engine/pageControllers/StatusPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +195 -0
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/TerminalPageController.js +8 -0
- package/.server/server/plugins/engine/pageControllers/TerminalPageController.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/helpers.js +69 -0
- package/.server/server/plugins/engine/pageControllers/helpers.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/index.js +10 -0
- package/.server/server/plugins/engine/pageControllers/index.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/validationOptions.js +78 -0
- package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -0
- package/.server/server/plugins/engine/plugin.js +562 -0
- package/.server/server/plugins/engine/plugin.js.map +1 -0
- package/.server/server/plugins/engine/services/formSubmissionService.js +39 -0
- package/.server/server/plugins/engine/services/formSubmissionService.js.map +1 -0
- package/.server/server/plugins/engine/services/formsService.js +41 -0
- package/.server/server/plugins/engine/services/formsService.js.map +1 -0
- package/.server/server/plugins/engine/services/formsService.test.js +71 -0
- package/.server/server/plugins/engine/services/formsService.test.js.map +1 -0
- package/.server/server/plugins/engine/services/index.js +4 -0
- package/.server/server/plugins/engine/services/index.js.map +1 -0
- package/.server/server/plugins/engine/services/notifyService.js +45 -0
- package/.server/server/plugins/engine/services/notifyService.js.map +1 -0
- package/.server/server/plugins/engine/services/uploadService.js +51 -0
- package/.server/server/plugins/engine/services/uploadService.js.map +1 -0
- package/.server/server/plugins/engine/types.js +53 -0
- package/.server/server/plugins/engine/types.js.map +1 -0
- package/.server/server/plugins/engine/views/components/autocompletefield.html +5 -0
- package/.server/server/plugins/engine/views/components/checkboxesfield.html +5 -0
- package/.server/server/plugins/engine/views/components/datepartsfield.html +5 -0
- package/.server/server/plugins/engine/views/components/details.html +6 -0
- package/.server/server/plugins/engine/views/components/emailaddressfield.html +5 -0
- package/.server/server/plugins/engine/views/components/fileuploadfield-key.html +8 -0
- package/.server/server/plugins/engine/views/components/fileuploadfield-value.html +3 -0
- package/.server/server/plugins/engine/views/components/fileuploadfield.html +24 -0
- package/.server/server/plugins/engine/views/components/html.html +3 -0
- package/.server/server/plugins/engine/views/components/insettext.html +7 -0
- package/.server/server/plugins/engine/views/components/list.html +36 -0
- package/.server/server/plugins/engine/views/components/monthyearfield.html +5 -0
- package/.server/server/plugins/engine/views/components/multilinetextfield.html +10 -0
- package/.server/server/plugins/engine/views/components/numberfield.html +5 -0
- package/.server/server/plugins/engine/views/components/radiosfield.html +5 -0
- package/.server/server/plugins/engine/views/components/selectfield.html +5 -0
- package/.server/server/plugins/engine/views/components/telephonenumberfield.html +5 -0
- package/.server/server/plugins/engine/views/components/textfield.html +5 -0
- package/.server/server/plugins/engine/views/components/ukaddressfield.html +25 -0
- package/.server/server/plugins/engine/views/components/yesnofield.html +5 -0
- package/.server/server/plugins/engine/views/file-upload.html +45 -0
- package/.server/server/plugins/engine/views/index.html +39 -0
- package/.server/server/plugins/engine/views/item-delete.html +56 -0
- package/.server/server/plugins/engine/views/partials/components.html +6 -0
- package/.server/server/plugins/engine/views/partials/conditional-components.html +3 -0
- package/.server/server/plugins/engine/views/partials/debug.html +44 -0
- package/.server/server/plugins/engine/views/partials/form.html +15 -0
- package/.server/server/plugins/engine/views/partials/heading.html +16 -0
- package/.server/server/plugins/engine/views/partials/preview-banner.html +32 -0
- package/.server/server/plugins/engine/views/partials/preview-banner.test.js +108 -0
- package/.server/server/plugins/engine/views/partials/preview-banner.test.js.map +1 -0
- package/.server/server/plugins/engine/views/partials/warn-missing-notification-email.html +10 -0
- package/.server/server/plugins/engine/views/repeat-list-summary.html +53 -0
- package/.server/server/plugins/errorPages.js +49 -0
- package/.server/server/plugins/errorPages.js.map +1 -0
- package/.server/server/plugins/nunjucks/context.js +79 -0
- package/.server/server/plugins/nunjucks/context.js.map +1 -0
- package/.server/server/plugins/nunjucks/context.test.js +134 -0
- package/.server/server/plugins/nunjucks/context.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/enviroment.test.js +166 -0
- package/.server/server/plugins/nunjucks/enviroment.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/environment.js +95 -0
- package/.server/server/plugins/nunjucks/environment.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/answer.js +26 -0
- package/.server/server/plugins/nunjucks/filters/answer.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/answer.test.js +70 -0
- package/.server/server/plugins/nunjucks/filters/answer.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/evaluate.js +22 -0
- package/.server/server/plugins/nunjucks/filters/evaluate.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/field.js +26 -0
- package/.server/server/plugins/nunjucks/filters/field.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/field.test.js +64 -0
- package/.server/server/plugins/nunjucks/filters/field.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/highlight.js +14 -0
- package/.server/server/plugins/nunjucks/filters/highlight.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/href.js +28 -0
- package/.server/server/plugins/nunjucks/filters/href.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/href.test.js +63 -0
- package/.server/server/plugins/nunjucks/filters/href.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/index.js +9 -0
- package/.server/server/plugins/nunjucks/filters/index.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/inspect.js +16 -0
- package/.server/server/plugins/nunjucks/filters/inspect.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/page.js +23 -0
- package/.server/server/plugins/nunjucks/filters/page.js.map +1 -0
- package/.server/server/plugins/nunjucks/filters/page.test.js +51 -0
- package/.server/server/plugins/nunjucks/filters/page.test.js.map +1 -0
- package/.server/server/plugins/nunjucks/index.js +4 -0
- package/.server/server/plugins/nunjucks/index.js.map +1 -0
- package/.server/server/plugins/nunjucks/plugin.js +38 -0
- package/.server/server/plugins/nunjucks/plugin.js.map +1 -0
- package/.server/server/plugins/nunjucks/render.js +41 -0
- package/.server/server/plugins/nunjucks/render.js.map +1 -0
- package/.server/server/plugins/nunjucks/types.js +41 -0
- package/.server/server/plugins/nunjucks/types.js.map +1 -0
- package/.server/server/plugins/pulse.js +8 -0
- package/.server/server/plugins/pulse.js.map +1 -0
- package/.server/server/plugins/router.js +169 -0
- package/.server/server/plugins/router.js.map +1 -0
- package/.server/server/plugins/session.js +28 -0
- package/.server/server/plugins/session.js.map +1 -0
- package/.server/server/routes/health.js +15 -0
- package/.server/server/routes/health.js.map +1 -0
- package/.server/server/routes/health.test.js +32 -0
- package/.server/server/routes/health.test.js.map +1 -0
- package/.server/server/routes/index.js +3 -0
- package/.server/server/routes/index.js.map +1 -0
- package/.server/server/routes/public.js +37 -0
- package/.server/server/routes/public.js.map +1 -0
- package/.server/server/routes/types.js +14 -0
- package/.server/server/routes/types.js.map +1 -0
- package/.server/server/schemas/index.js +15 -0
- package/.server/server/schemas/index.js.map +1 -0
- package/.server/server/secure-context.js +36 -0
- package/.server/server/secure-context.js.map +1 -0
- package/.server/server/services/cacheService.js +85 -0
- package/.server/server/services/cacheService.js.map +1 -0
- package/.server/server/services/httpService.js +44 -0
- package/.server/server/services/httpService.js.map +1 -0
- package/.server/server/services/httpService.test.js +504 -0
- package/.server/server/services/httpService.test.js.map +1 -0
- package/.server/server/services/index.js +2 -0
- package/.server/server/services/index.js.map +1 -0
- package/.server/server/types.js +2 -0
- package/.server/server/types.js.map +1 -0
- package/.server/server/utils/notify.js +40 -0
- package/.server/server/utils/notify.js.map +1 -0
- package/.server/server/utils/secure-context/get-trust-store-certs.js +7 -0
- package/.server/server/utils/secure-context/get-trust-store-certs.js.map +1 -0
- package/.server/server/utils/secure-context/get-trust-store-certs.test.js +14 -0
- package/.server/server/utils/secure-context/get-trust-store-certs.test.js.map +1 -0
- package/.server/server/utils/utils.js +20 -0
- package/.server/server/utils/utils.js.map +1 -0
- package/.server/server/utils/utils.test.js +49 -0
- package/.server/server/utils/utils.test.js.map +1 -0
- package/.server/server/views/404.html +16 -0
- package/.server/server/views/500.html +19 -0
- package/.server/server/views/components/debug/macro.njk +3 -0
- package/.server/server/views/components/debug/template.njk +13 -0
- package/.server/server/views/components/service-banner/macro.njk +3 -0
- package/.server/server/views/components/service-banner/template.njk +20 -0
- package/.server/server/views/components/service-banner/template.test.js +36 -0
- package/.server/server/views/components/service-banner/template.test.js.map +1 -0
- package/.server/server/views/components/tag-env/macro.njk +3 -0
- package/.server/server/views/components/tag-env/template.njk +30 -0
- package/.server/server/views/components/tag-env/template.test.js +59 -0
- package/.server/server/views/components/tag-env/template.test.js.map +1 -0
- package/.server/server/views/confirmation.html +19 -0
- package/.server/server/views/help/accessibility-statement.html +58 -0
- package/.server/server/views/help/cookie-preferences.html +57 -0
- package/.server/server/views/help/cookies.html +71 -0
- package/.server/server/views/help/get-support.html +37 -0
- package/.server/server/views/help/privacy-notice.html +68 -0
- package/.server/server/views/help/terms-and-conditions.html +83 -0
- package/.server/server/views/layout.html +199 -0
- package/.server/server/views/summary.html +50 -0
- package/.server/typings/hapi/index.d.js +2 -0
- package/.server/typings/hapi/index.d.js.map +1 -0
- package/.server/typings/hapi-tracing/index.d.js +2 -0
- package/.server/typings/hapi-tracing/index.d.js.map +1 -0
- package/.server/typings/index.d.js +2 -0
- package/.server/typings/index.d.js.map +1 -0
- package/.server/typings/joi/index.d.js +2 -0
- package/.server/typings/joi/index.d.js.map +1 -0
- package/Dockerfile +61 -0
- package/LICENCE +8 -0
- package/Procfile +1 -0
- package/README.md +87 -0
- package/babel.config.cjs +55 -0
- package/compose/aws.env +4 -0
- package/compose/start-localstack.sh +26 -0
- package/docker-compose.yaml +86 -0
- package/globals.d.ts +1 -0
- package/jest.config.cjs +54 -0
- package/jest.environment.js +4 -0
- package/jest.setup.cjs +14 -0
- package/package.json +163 -0
- package/postcss.config.js +26 -0
- package/sonar-project.properties +17 -0
- package/src/client/javascripts/application.js +87 -0
- package/src/client/javascripts/file-upload.js +386 -0
- package/src/client/stylesheets/_code.scss +33 -0
- package/src/client/stylesheets/_govuk-frontend.scss +4 -0
- package/src/client/stylesheets/_prose.scss +56 -0
- package/src/client/stylesheets/_service-banner.scss +24 -0
- package/src/client/stylesheets/_summary-list.scss +28 -0
- package/src/client/stylesheets/_tag-env.scss +24 -0
- package/src/client/stylesheets/application.scss +14 -0
- package/src/common/cookies.js +58 -0
- package/src/common/cookies.test.js +23 -0
- package/src/common/types.js +5 -0
- package/src/config/index.ts +271 -0
- package/src/index.ts +31 -0
- package/src/server/common/helpers/logging/logger-options.test.ts +50 -0
- package/src/server/common/helpers/logging/logger-options.ts +46 -0
- package/src/server/common/helpers/logging/logger.ts +7 -0
- package/src/server/common/helpers/logging/request-logger.ts +9 -0
- package/src/server/common/helpers/logging/request-tracing.js +10 -0
- package/src/server/common/helpers/redis-client.js +70 -0
- package/src/server/constants.js +1 -0
- package/src/server/forms/README.md +10 -0
- package/src/server/forms/components.json +1015 -0
- package/src/server/forms/report-a-terrorist.json +270 -0
- package/src/server/forms/runner-components-test.json +365 -0
- package/src/server/forms/test.json +581 -0
- package/src/server/index.test.ts +582 -0
- package/src/server/index.ts +140 -0
- package/src/server/plugins/blankie.test.ts +73 -0
- package/src/server/plugins/blankie.ts +48 -0
- package/src/server/plugins/crumb.ts +20 -0
- package/src/server/plugins/engine/README.md +87 -0
- package/src/server/plugins/engine/components/AutocompleteField.test.ts +294 -0
- package/src/server/plugins/engine/components/AutocompleteField.ts +49 -0
- package/src/server/plugins/engine/components/CheckboxesField.test.ts +379 -0
- package/src/server/plugins/engine/components/CheckboxesField.ts +106 -0
- package/src/server/plugins/engine/components/ComponentBase.ts +97 -0
- package/src/server/plugins/engine/components/ComponentCollection.ts +278 -0
- package/src/server/plugins/engine/components/DatePartsField.test.ts +822 -0
- package/src/server/plugins/engine/components/DatePartsField.ts +264 -0
- package/src/server/plugins/engine/components/Details.test.ts +49 -0
- package/src/server/plugins/engine/components/Details.ts +30 -0
- package/src/server/plugins/engine/components/EmailAddressField.test.ts +395 -0
- package/src/server/plugins/engine/components/EmailAddressField.ts +55 -0
- package/src/server/plugins/engine/components/FileUploadField.test.ts +778 -0
- package/src/server/plugins/engine/components/FileUploadField.ts +262 -0
- package/src/server/plugins/engine/components/FormComponent.ts +249 -0
- package/src/server/plugins/engine/components/Html.test.ts +48 -0
- package/src/server/plugins/engine/components/Html.ts +29 -0
- package/src/server/plugins/engine/components/InsetText.test.ts +48 -0
- package/src/server/plugins/engine/components/InsetText.ts +27 -0
- package/src/server/plugins/engine/components/List.test.ts +76 -0
- package/src/server/plugins/engine/components/List.ts +72 -0
- package/src/server/plugins/engine/components/ListFormComponent.ts +140 -0
- package/src/server/plugins/engine/components/MonthYearField.test.ts +567 -0
- package/src/server/plugins/engine/components/MonthYearField.ts +222 -0
- package/src/server/plugins/engine/components/MultilineTextField.test.ts +558 -0
- package/src/server/plugins/engine/components/MultilineTextField.ts +138 -0
- package/src/server/plugins/engine/components/NumberField.test.ts +701 -0
- package/src/server/plugins/engine/components/NumberField.ts +163 -0
- package/src/server/plugins/engine/components/RadiosField.test.ts +288 -0
- package/src/server/plugins/engine/components/RadiosField.ts +24 -0
- package/src/server/plugins/engine/components/SelectField.test.ts +288 -0
- package/src/server/plugins/engine/components/SelectField.ts +47 -0
- package/src/server/plugins/engine/components/SelectionControlField.ts +43 -0
- package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +356 -0
- package/src/server/plugins/engine/components/TelephoneNumberField.ts +67 -0
- package/src/server/plugins/engine/components/TextField.test.ts +489 -0
- package/src/server/plugins/engine/components/TextField.ts +96 -0
- package/src/server/plugins/engine/components/UkAddressField.test.ts +623 -0
- package/src/server/plugins/engine/components/UkAddressField.ts +172 -0
- package/src/server/plugins/engine/components/YesNoField.test.ts +248 -0
- package/src/server/plugins/engine/components/YesNoField.ts +31 -0
- package/src/server/plugins/engine/components/constants.ts +1 -0
- package/src/server/plugins/engine/components/helpers.ts +330 -0
- package/src/server/plugins/engine/components/index.ts +24 -0
- package/src/server/plugins/engine/components/types.ts +117 -0
- package/src/server/plugins/engine/configureEnginePlugin.ts +47 -0
- package/src/server/plugins/engine/helpers.test.ts +791 -0
- package/src/server/plugins/engine/helpers.ts +379 -0
- package/src/server/plugins/engine/index.ts +7 -0
- package/src/server/plugins/engine/models/FormModel.test.ts +42 -0
- package/src/server/plugins/engine/models/FormModel.ts +443 -0
- package/src/server/plugins/engine/models/RepeatingSummaryViewModel.ts +0 -0
- package/src/server/plugins/engine/models/Section.ts +0 -0
- package/src/server/plugins/engine/models/SummaryViewModel.test.ts +209 -0
- package/src/server/plugins/engine/models/SummaryViewModel.ts +220 -0
- package/src/server/plugins/engine/models/index.ts +2 -0
- package/src/server/plugins/engine/models/types.ts +114 -0
- package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +143 -0
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +73 -0
- package/src/server/plugins/engine/outputFormatters/index.test.ts +17 -0
- package/src/server/plugins/engine/outputFormatters/index.ts +44 -0
- package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +229 -0
- package/src/server/plugins/engine/outputFormatters/machine/v1.ts +140 -0
- package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +229 -0
- package/src/server/plugins/engine/outputFormatters/machine/v2.ts +153 -0
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +1108 -0
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +446 -0
- package/src/server/plugins/engine/pageControllers/PageController.test.ts +205 -0
- package/src/server/plugins/engine/pageControllers/PageController.ts +176 -0
- package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +1264 -0
- package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +561 -0
- package/src/server/plugins/engine/pageControllers/README.md +28 -0
- package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +264 -0
- package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +458 -0
- package/src/server/plugins/engine/pageControllers/StartPageController.ts +18 -0
- package/src/server/plugins/engine/pageControllers/StatusPageController.ts +50 -0
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +261 -0
- package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +28 -0
- package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +19 -0
- package/src/server/plugins/engine/pageControllers/helpers.test.ts +198 -0
- package/src/server/plugins/engine/pageControllers/helpers.ts +101 -0
- package/src/server/plugins/engine/pageControllers/index.ts +10 -0
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +89 -0
- package/src/server/plugins/engine/plugin.ts +673 -0
- package/src/server/plugins/engine/services/formSubmissionService.js +46 -0
- package/src/server/plugins/engine/services/formsService.js +46 -0
- package/src/server/plugins/engine/services/formsService.test.js +90 -0
- package/src/server/plugins/engine/services/index.js +3 -0
- package/src/server/plugins/engine/services/notifyService.test.ts +132 -0
- package/src/server/plugins/engine/services/notifyService.ts +64 -0
- package/src/server/plugins/engine/services/uploadService.js +60 -0
- package/src/server/plugins/engine/types.ts +315 -0
- package/src/server/plugins/engine/views/components/autocompletefield.html +5 -0
- package/src/server/plugins/engine/views/components/checkboxesfield.html +5 -0
- package/src/server/plugins/engine/views/components/datepartsfield.html +5 -0
- package/src/server/plugins/engine/views/components/details.html +6 -0
- package/src/server/plugins/engine/views/components/emailaddressfield.html +5 -0
- package/src/server/plugins/engine/views/components/fileuploadfield-key.html +8 -0
- package/src/server/plugins/engine/views/components/fileuploadfield-value.html +3 -0
- package/src/server/plugins/engine/views/components/fileuploadfield.html +24 -0
- package/src/server/plugins/engine/views/components/html.html +3 -0
- package/src/server/plugins/engine/views/components/insettext.html +7 -0
- package/src/server/plugins/engine/views/components/list.html +36 -0
- package/src/server/plugins/engine/views/components/monthyearfield.html +5 -0
- package/src/server/plugins/engine/views/components/multilinetextfield.html +10 -0
- package/src/server/plugins/engine/views/components/numberfield.html +5 -0
- package/src/server/plugins/engine/views/components/radiosfield.html +5 -0
- package/src/server/plugins/engine/views/components/selectfield.html +5 -0
- package/src/server/plugins/engine/views/components/telephonenumberfield.html +5 -0
- package/src/server/plugins/engine/views/components/textfield.html +5 -0
- package/src/server/plugins/engine/views/components/ukaddressfield.html +25 -0
- package/src/server/plugins/engine/views/components/yesnofield.html +5 -0
- package/src/server/plugins/engine/views/file-upload.html +45 -0
- package/src/server/plugins/engine/views/index.html +39 -0
- package/src/server/plugins/engine/views/item-delete.html +56 -0
- package/src/server/plugins/engine/views/partials/components.html +6 -0
- package/src/server/plugins/engine/views/partials/conditional-components.html +3 -0
- package/src/server/plugins/engine/views/partials/debug.html +44 -0
- package/src/server/plugins/engine/views/partials/form.html +15 -0
- package/src/server/plugins/engine/views/partials/heading.html +16 -0
- package/src/server/plugins/engine/views/partials/preview-banner.html +32 -0
- package/src/server/plugins/engine/views/partials/preview-banner.test.js +122 -0
- package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +10 -0
- package/src/server/plugins/engine/views/repeat-list-summary.html +53 -0
- package/src/server/plugins/errorPages.ts +58 -0
- package/src/server/plugins/nunjucks/context.js +88 -0
- package/src/server/plugins/nunjucks/context.test.js +142 -0
- package/src/server/plugins/nunjucks/enviroment.test.js +201 -0
- package/src/server/plugins/nunjucks/environment.js +116 -0
- package/src/server/plugins/nunjucks/filters/answer.js +27 -0
- package/src/server/plugins/nunjucks/filters/answer.test.js +89 -0
- package/src/server/plugins/nunjucks/filters/evaluate.js +21 -0
- package/src/server/plugins/nunjucks/filters/field.js +28 -0
- package/src/server/plugins/nunjucks/filters/field.test.js +75 -0
- package/src/server/plugins/nunjucks/filters/highlight.js +11 -0
- package/src/server/plugins/nunjucks/filters/href.js +30 -0
- package/src/server/plugins/nunjucks/filters/href.test.js +80 -0
- package/src/server/plugins/nunjucks/filters/index.js +8 -0
- package/src/server/plugins/nunjucks/filters/inspect.js +15 -0
- package/src/server/plugins/nunjucks/filters/page.js +24 -0
- package/src/server/plugins/nunjucks/filters/page.test.js +65 -0
- package/src/server/plugins/nunjucks/index.js +3 -0
- package/src/server/plugins/nunjucks/plugin.js +40 -0
- package/src/server/plugins/nunjucks/render.js +42 -0
- package/src/server/plugins/nunjucks/types.js +40 -0
- package/src/server/plugins/pulse.ts +11 -0
- package/src/server/plugins/router.ts +201 -0
- package/src/server/plugins/session.ts +28 -0
- package/src/server/routes/health.js +13 -0
- package/src/server/routes/health.test.js +35 -0
- package/src/server/routes/index.test.ts +125 -0
- package/src/server/routes/index.ts +2 -0
- package/src/server/routes/public.ts +47 -0
- package/src/server/routes/types.ts +48 -0
- package/src/server/schemas/index.ts +34 -0
- package/src/server/secure-context.js +43 -0
- package/src/server/services/cacheService.test.ts +276 -0
- package/src/server/services/cacheService.ts +131 -0
- package/src/server/services/httpService.test.js +491 -0
- package/src/server/services/httpService.ts +50 -0
- package/src/server/services/index.ts +1 -0
- package/src/server/types.ts +54 -0
- package/src/server/utils/notify.test.ts +37 -0
- package/src/server/utils/notify.ts +50 -0
- package/src/server/utils/secure-context/get-trust-store-certs.js +11 -0
- package/src/server/utils/secure-context/get-trust-store-certs.test.js +19 -0
- package/src/server/utils/utils.js +24 -0
- package/src/server/utils/utils.test.js +54 -0
- package/src/server/views/404.html +16 -0
- package/src/server/views/500.html +19 -0
- package/src/server/views/components/debug/macro.njk +3 -0
- package/src/server/views/components/debug/template.njk +13 -0
- package/src/server/views/components/service-banner/macro.njk +3 -0
- package/src/server/views/components/service-banner/template.njk +20 -0
- package/src/server/views/components/service-banner/template.test.js +43 -0
- package/src/server/views/components/tag-env/macro.njk +3 -0
- package/src/server/views/components/tag-env/template.njk +30 -0
- package/src/server/views/components/tag-env/template.test.js +66 -0
- package/src/server/views/confirmation.html +19 -0
- package/src/server/views/help/accessibility-statement.html +58 -0
- package/src/server/views/help/cookie-preferences.html +57 -0
- package/src/server/views/help/cookies.html +71 -0
- package/src/server/views/help/get-support.html +37 -0
- package/src/server/views/help/privacy-notice.html +68 -0
- package/src/server/views/help/terms-and-conditions.html +83 -0
- package/src/server/views/layout.html +199 -0
- package/src/server/views/summary.html +50 -0
- package/src/typings/hapi/index.d.ts +95 -0
- package/src/typings/hapi-tracing/index.d.ts +6 -0
- package/src/typings/index.d.ts +3 -0
- package/src/typings/joi/index.d.ts +22 -0
- package/stylelint.config.js +10 -0
- package/test/client/javascripts/file-upload.test.js +1197 -0
- package/test/condition/checkboxes.test.js +112 -0
- package/test/condition/radios.test.js +112 -0
- package/test/condition/text.test.js +103 -0
- package/test/fixtures/assets-manifest.json +4 -0
- package/test/fixtures/form.js +86 -0
- package/test/fixtures/index.js +2 -0
- package/test/fixtures/list.js +92 -0
- package/test/form/cookies.test.js +338 -0
- package/test/form/csrf.test.js +87 -0
- package/test/form/definitions/basic.js +101 -0
- package/test/form/definitions/blank.js +10 -0
- package/test/form/definitions/checkboxes.json +88 -0
- package/test/form/definitions/components.json +452 -0
- package/test/form/definitions/conditional-reveal.js +140 -0
- package/test/form/definitions/conditions-basic.js +187 -0
- package/test/form/definitions/conditions-complex.js +338 -0
- package/test/form/definitions/conditions-dates.js +78 -0
- package/test/form/definitions/conditions-escaping.js +143 -0
- package/test/form/definitions/demo-cph-number.js +3099 -0
- package/test/form/definitions/feedback.json +45 -0
- package/test/form/definitions/fields-optional.js +402 -0
- package/test/form/definitions/fields-required.js +402 -0
- package/test/form/definitions/file-upload-basic.js +44 -0
- package/test/form/definitions/file-upload.js +66 -0
- package/test/form/definitions/minimal.js +39 -0
- package/test/form/definitions/phase-alpha.json +33 -0
- package/test/form/definitions/phase-default.json +26 -0
- package/test/form/definitions/radios.json +88 -0
- package/test/form/definitions/repeat-mixed.js +54 -0
- package/test/form/definitions/repeat.js +70 -0
- package/test/form/definitions/status.json +126 -0
- package/test/form/definitions/templates.js +183 -0
- package/test/form/definitions/test.json +581 -0
- package/test/form/definitions/text.json +75 -0
- package/test/form/definitions/titles.json +170 -0
- package/test/form/definitions.test.js +47 -0
- package/test/form/exit-page.test.js +210 -0
- package/test/form/feedback.test.js +68 -0
- package/test/form/fields-optional.test.js +237 -0
- package/test/form/fields-required.test.js +294 -0
- package/test/form/file-upload.test.js +313 -0
- package/test/form/govuk-notify.test.js +449 -0
- package/test/form/journey-basic.test.js +444 -0
- package/test/form/persist-files.test.js +227 -0
- package/test/form/phase-banner.test.js +71 -0
- package/test/form/repeat.test.js +628 -0
- package/test/form/summary-submission-email.test.js +95 -0
- package/test/form/template.test.js +288 -0
- package/test/form/titles.test.js +204 -0
- package/test/helpers/component-helpers.js +74 -0
- package/test/utils/get-cookie.js +42 -0
- package/test/utils/get-form-definitions.js +18 -0
- package/tmp.pdf +1 -0
- package/tsconfig.json +28 -0
- package/webpack.config.js +208 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-trust-store-certs.test.js","names":["getTrustStoreCerts","describe","mockProcessEnvWithCerts","TRUSTSTORE_CA_ONE","UNRELATED_ENV","test","expect","toEqual"],"sources":["../../../../src/server/utils/secure-context/get-trust-store-certs.test.js"],"sourcesContent":["import { getTrustStoreCerts } from '~/src/server/utils/secure-context/get-trust-store-certs.js'\n\ndescribe('#getTrustStoreCerts', () => {\n const mockProcessEnvWithCerts = {\n TRUSTSTORE_CA_ONE:\n 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCm1vY2stY2VydC1kb3JpcwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==',\n UNRELATED_ENV: 'not-a-cert'\n }\n\n test('Should provide expected result with \"certs\"', () => {\n expect(getTrustStoreCerts(mockProcessEnvWithCerts)).toEqual([\n '-----BEGIN CERTIFICATE-----\\nmock-cert-doris\\n-----END CERTIFICATE-----'\n ])\n })\n\n test('Should provide expected empty array', () => {\n expect(getTrustStoreCerts({})).toEqual([])\n })\n})\n"],"mappings":"AAAA,SAASA,kBAAkB;AAE3BC,QAAQ,CAAC,qBAAqB,EAAE,MAAM;EACpC,MAAMC,uBAAuB,GAAG;IAC9BC,iBAAiB,EACf,kGAAkG;IACpGC,aAAa,EAAE;EACjB,CAAC;EAEDC,IAAI,CAAC,6CAA6C,EAAE,MAAM;IACxDC,MAAM,CAACN,kBAAkB,CAACE,uBAAuB,CAAC,CAAC,CAACK,OAAO,CAAC,CAC1D,yEAAyE,CAC1E,CAAC;EACJ,CAAC,CAAC;EAEFF,IAAI,CAAC,qCAAqC,EAAE,MAAM;IAChDC,MAAM,CAACN,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAACO,OAAO,CAAC,EAAE,CAAC;EAC5C,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { getTraceId } from '@defra/hapi-tracing';
|
|
2
|
+
import { config } from "../../config/index.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Returns a set of headers to use in an HTTP request, merging them with any existing headers in options.
|
|
6
|
+
* @param {Record<string, string> | undefined} [existingHeaders] - Optional existing headers to merge with the tracing headers.
|
|
7
|
+
* @param {string} [header] - The tracing header name to use.
|
|
8
|
+
* @returns {Record<string, string> | undefined} The merged headers, or undefined if no tracing header is available.
|
|
9
|
+
*/
|
|
10
|
+
export function applyTraceHeaders(existingHeaders, header = config.get('tracing').header) {
|
|
11
|
+
if (!header) {
|
|
12
|
+
return existingHeaders;
|
|
13
|
+
}
|
|
14
|
+
const traceId = getTraceId();
|
|
15
|
+
const headers = traceId ? {
|
|
16
|
+
[header]: traceId
|
|
17
|
+
} : undefined;
|
|
18
|
+
return existingHeaders ? Object.assign(existingHeaders, headers) : headers;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["getTraceId","config","applyTraceHeaders","existingHeaders","header","get","traceId","headers","undefined","Object","assign"],"sources":["../../../src/server/utils/utils.js"],"sourcesContent":["import { getTraceId } from '@defra/hapi-tracing'\n\nimport { config } from '~/src/config/index.js'\n\n/**\n * Returns a set of headers to use in an HTTP request, merging them with any existing headers in options.\n * @param {Record<string, string> | undefined} [existingHeaders] - Optional existing headers to merge with the tracing headers.\n * @param {string} [header] - The tracing header name to use.\n * @returns {Record<string, string> | undefined} The merged headers, or undefined if no tracing header is available.\n */\nexport function applyTraceHeaders(\n existingHeaders,\n header = config.get('tracing').header\n) {\n if (!header) {\n return existingHeaders\n }\n\n const traceId = getTraceId()\n\n const headers = traceId ? { [header]: traceId } : undefined\n\n return existingHeaders ? Object.assign(existingHeaders, headers) : headers\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,qBAAqB;AAEhD,SAASC,MAAM;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,eAAe,EACfC,MAAM,GAAGH,MAAM,CAACI,GAAG,CAAC,SAAS,CAAC,CAACD,MAAM,EACrC;EACA,IAAI,CAACA,MAAM,EAAE;IACX,OAAOD,eAAe;EACxB;EAEA,MAAMG,OAAO,GAAGN,UAAU,CAAC,CAAC;EAE5B,MAAMO,OAAO,GAAGD,OAAO,GAAG;IAAE,CAACF,MAAM,GAAGE;EAAQ,CAAC,GAAGE,SAAS;EAE3D,OAAOL,eAAe,GAAGM,MAAM,CAACC,MAAM,CAACP,eAAe,EAAEI,OAAO,CAAC,GAAGA,OAAO;AAC5E","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { getTraceId } from '@defra/hapi-tracing';
|
|
2
|
+
import { config } from "../../config/index.js";
|
|
3
|
+
import { applyTraceHeaders } from "./utils.js";
|
|
4
|
+
jest.mock('@defra/hapi-tracing');
|
|
5
|
+
describe('Header helper functions', () => {
|
|
6
|
+
it('should include the trace id in the headers if available', () => {
|
|
7
|
+
jest.mocked(getTraceId).mockReturnValue('my-trace-id');
|
|
8
|
+
const result = applyTraceHeaders(); // Updated to applyTraceHeaders
|
|
9
|
+
expect(result).toEqual({
|
|
10
|
+
[config.get('tracing').header]: 'my-trace-id'
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
it('should exclude the trace id in the headers if missing', () => {
|
|
14
|
+
jest.mocked(getTraceId).mockReturnValue(null);
|
|
15
|
+
const result = applyTraceHeaders(); // Updated to applyTraceHeaders
|
|
16
|
+
expect(result).toBeUndefined();
|
|
17
|
+
});
|
|
18
|
+
it('should merge existing headers with the trace id if available', () => {
|
|
19
|
+
jest.mocked(getTraceId).mockReturnValue('my-trace-id');
|
|
20
|
+
const existingHeaders = {
|
|
21
|
+
Authorization: 'Bearer token'
|
|
22
|
+
};
|
|
23
|
+
const result = applyTraceHeaders(existingHeaders); // Updated to applyTraceHeaders
|
|
24
|
+
|
|
25
|
+
expect(result).toEqual({
|
|
26
|
+
Authorization: 'Bearer token',
|
|
27
|
+
[config.get('tracing').header]: 'my-trace-id'
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
it('should return existing headers without modification if trace id is missing', () => {
|
|
31
|
+
jest.mocked(getTraceId).mockReturnValue(null);
|
|
32
|
+
const existingHeaders = {
|
|
33
|
+
Authorization: 'Bearer token'
|
|
34
|
+
};
|
|
35
|
+
const result = applyTraceHeaders(existingHeaders); // Updated to applyTraceHeaders
|
|
36
|
+
|
|
37
|
+
expect(result).toEqual({
|
|
38
|
+
Authorization: 'Bearer token'
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
it('should return existing headers if tracing header configuration is missing', () => {
|
|
42
|
+
const existingHeaders = {
|
|
43
|
+
Authorization: 'Bearer token'
|
|
44
|
+
};
|
|
45
|
+
const result = applyTraceHeaders(existingHeaders, '');
|
|
46
|
+
expect(result).toBe(existingHeaders);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=utils.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.test.js","names":["getTraceId","config","applyTraceHeaders","jest","mock","describe","it","mocked","mockReturnValue","result","expect","toEqual","get","header","toBeUndefined","existingHeaders","Authorization","toBe"],"sources":["../../../src/server/utils/utils.test.js"],"sourcesContent":["import { getTraceId } from '@defra/hapi-tracing'\n\nimport { config } from '~/src/config/index.js'\nimport { applyTraceHeaders } from '~/src/server/utils/utils.js'\n\njest.mock('@defra/hapi-tracing')\n\ndescribe('Header helper functions', () => {\n it('should include the trace id in the headers if available', () => {\n jest.mocked(getTraceId).mockReturnValue('my-trace-id')\n\n const result = applyTraceHeaders() // Updated to applyTraceHeaders\n expect(result).toEqual({\n [config.get('tracing').header]: 'my-trace-id'\n })\n })\n\n it('should exclude the trace id in the headers if missing', () => {\n jest.mocked(getTraceId).mockReturnValue(null)\n\n const result = applyTraceHeaders() // Updated to applyTraceHeaders\n expect(result).toBeUndefined()\n })\n\n it('should merge existing headers with the trace id if available', () => {\n jest.mocked(getTraceId).mockReturnValue('my-trace-id')\n\n const existingHeaders = { Authorization: 'Bearer token' }\n const result = applyTraceHeaders(existingHeaders) // Updated to applyTraceHeaders\n\n expect(result).toEqual({\n Authorization: 'Bearer token',\n [config.get('tracing').header]: 'my-trace-id'\n })\n })\n\n it('should return existing headers without modification if trace id is missing', () => {\n jest.mocked(getTraceId).mockReturnValue(null)\n\n const existingHeaders = { Authorization: 'Bearer token' }\n const result = applyTraceHeaders(existingHeaders) // Updated to applyTraceHeaders\n\n expect(result).toEqual({\n Authorization: 'Bearer token'\n })\n })\n\n it('should return existing headers if tracing header configuration is missing', () => {\n const existingHeaders = { Authorization: 'Bearer token' }\n const result = applyTraceHeaders(existingHeaders, '')\n\n expect(result).toBe(existingHeaders)\n })\n})\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,qBAAqB;AAEhD,SAASC,MAAM;AACf,SAASC,iBAAiB;AAE1BC,IAAI,CAACC,IAAI,CAAC,qBAAqB,CAAC;AAEhCC,QAAQ,CAAC,yBAAyB,EAAE,MAAM;EACxCC,EAAE,CAAC,yDAAyD,EAAE,MAAM;IAClEH,IAAI,CAACI,MAAM,CAACP,UAAU,CAAC,CAACQ,eAAe,CAAC,aAAa,CAAC;IAEtD,MAAMC,MAAM,GAAGP,iBAAiB,CAAC,CAAC,EAAC;IACnCQ,MAAM,CAACD,MAAM,CAAC,CAACE,OAAO,CAAC;MACrB,CAACV,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CAACC,MAAM,GAAG;IAClC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,EAAE,CAAC,uDAAuD,EAAE,MAAM;IAChEH,IAAI,CAACI,MAAM,CAACP,UAAU,CAAC,CAACQ,eAAe,CAAC,IAAI,CAAC;IAE7C,MAAMC,MAAM,GAAGP,iBAAiB,CAAC,CAAC,EAAC;IACnCQ,MAAM,CAACD,MAAM,CAAC,CAACK,aAAa,CAAC,CAAC;EAChC,CAAC,CAAC;EAEFR,EAAE,CAAC,8DAA8D,EAAE,MAAM;IACvEH,IAAI,CAACI,MAAM,CAACP,UAAU,CAAC,CAACQ,eAAe,CAAC,aAAa,CAAC;IAEtD,MAAMO,eAAe,GAAG;MAAEC,aAAa,EAAE;IAAe,CAAC;IACzD,MAAMP,MAAM,GAAGP,iBAAiB,CAACa,eAAe,CAAC,EAAC;;IAElDL,MAAM,CAACD,MAAM,CAAC,CAACE,OAAO,CAAC;MACrBK,aAAa,EAAE,cAAc;MAC7B,CAACf,MAAM,CAACW,GAAG,CAAC,SAAS,CAAC,CAACC,MAAM,GAAG;IAClC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFP,EAAE,CAAC,4EAA4E,EAAE,MAAM;IACrFH,IAAI,CAACI,MAAM,CAACP,UAAU,CAAC,CAACQ,eAAe,CAAC,IAAI,CAAC;IAE7C,MAAMO,eAAe,GAAG;MAAEC,aAAa,EAAE;IAAe,CAAC;IACzD,MAAMP,MAAM,GAAGP,iBAAiB,CAACa,eAAe,CAAC,EAAC;;IAElDL,MAAM,CAACD,MAAM,CAAC,CAACE,OAAO,CAAC;MACrBK,aAAa,EAAE;IACjB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFV,EAAE,CAAC,2EAA2E,EAAE,MAAM;IACpF,MAAMS,eAAe,GAAG;MAAEC,aAAa,EAAE;IAAe,CAAC;IACzD,MAAMP,MAAM,GAAGP,iBAAiB,CAACa,eAAe,EAAE,EAAE,CAAC;IAErDL,MAAM,CAACD,MAAM,CAAC,CAACQ,IAAI,CAACF,eAAe,CAAC;EACtC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
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 %}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 %}
|
|
@@ -0,0 +1,13 @@
|
|
|
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>
|
|
@@ -0,0 +1,20 @@
|
|
|
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>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { renderMacro } from "../../../../../test/helpers/component-helpers.js";
|
|
2
|
+
describe('Service banner component', () => {
|
|
3
|
+
let $component = /** @type {HTMLElement | null} */null;
|
|
4
|
+
let $content = /** @type {HTMLElement | null} */null;
|
|
5
|
+
let $text = /** @type {HTMLElement | null} */null;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
const {
|
|
8
|
+
container,
|
|
9
|
+
document
|
|
10
|
+
} = renderMacro('appServiceBanner', 'components/service-banner/macro.njk', {
|
|
11
|
+
params: {
|
|
12
|
+
title: 'Service status',
|
|
13
|
+
text: 'This is a service status message'
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
$component = container.getByRole('complementary');
|
|
17
|
+
$content = document.querySelector('.app-service-banner__content');
|
|
18
|
+
$text = document.querySelector('.app-service-banner__text');
|
|
19
|
+
});
|
|
20
|
+
it('should render contents', () => {
|
|
21
|
+
expect($component).toBeInTheDocument();
|
|
22
|
+
expect($component).toHaveClass('app-service-banner');
|
|
23
|
+
expect($component).toContainElement($content);
|
|
24
|
+
expect($content).toContainElement($text);
|
|
25
|
+
});
|
|
26
|
+
it('should announce service message', () => {
|
|
27
|
+
expect($component).toHaveAttribute('aria-live', 'polite');
|
|
28
|
+
});
|
|
29
|
+
it('should have accessible name', () => {
|
|
30
|
+
expect($component).toHaveAccessibleName('Service status');
|
|
31
|
+
});
|
|
32
|
+
it('should have text content', () => {
|
|
33
|
+
expect($text).toHaveTextContent('This is a service status message');
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=template.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.test.js","names":["renderMacro","describe","$component","$content","$text","beforeEach","container","document","params","title","text","getByRole","querySelector","it","expect","toBeInTheDocument","toHaveClass","toContainElement","toHaveAttribute","toHaveAccessibleName","toHaveTextContent"],"sources":["../../../../../src/server/views/components/service-banner/template.test.js"],"sourcesContent":["import { renderMacro } from '~/test/helpers/component-helpers.js'\n\ndescribe('Service banner component', () => {\n let $component = /** @type {HTMLElement | null} */ (null)\n let $content = /** @type {HTMLElement | null} */ (null)\n let $text = /** @type {HTMLElement | null} */ (null)\n\n beforeEach(() => {\n const { container, document } = renderMacro(\n 'appServiceBanner',\n 'components/service-banner/macro.njk',\n {\n params: {\n title: 'Service status',\n text: 'This is a service status message'\n }\n }\n )\n\n $component = container.getByRole('complementary')\n $content = document.querySelector('.app-service-banner__content')\n $text = document.querySelector('.app-service-banner__text')\n })\n\n it('should render contents', () => {\n expect($component).toBeInTheDocument()\n expect($component).toHaveClass('app-service-banner')\n expect($component).toContainElement($content)\n expect($content).toContainElement($text)\n })\n\n it('should announce service message', () => {\n expect($component).toHaveAttribute('aria-live', 'polite')\n })\n\n it('should have accessible name', () => {\n expect($component).toHaveAccessibleName('Service status')\n })\n\n it('should have text content', () => {\n expect($text).toHaveTextContent('This is a service status message')\n })\n})\n"],"mappings":"AAAA,SAASA,WAAW;AAEpBC,QAAQ,CAAC,0BAA0B,EAAE,MAAM;EACzC,IAAIC,UAAU,GAAG,iCAAmC,IAAK;EACzD,IAAIC,QAAQ,GAAG,iCAAmC,IAAK;EACvD,IAAIC,KAAK,GAAG,iCAAmC,IAAK;EAEpDC,UAAU,CAAC,MAAM;IACf,MAAM;MAAEC,SAAS;MAAEC;IAAS,CAAC,GAAGP,WAAW,CACzC,kBAAkB,EAClB,qCAAqC,EACrC;MACEQ,MAAM,EAAE;QACNC,KAAK,EAAE,gBAAgB;QACvBC,IAAI,EAAE;MACR;IACF,CACF,CAAC;IAEDR,UAAU,GAAGI,SAAS,CAACK,SAAS,CAAC,eAAe,CAAC;IACjDR,QAAQ,GAAGI,QAAQ,CAACK,aAAa,CAAC,8BAA8B,CAAC;IACjER,KAAK,GAAGG,QAAQ,CAACK,aAAa,CAAC,2BAA2B,CAAC;EAC7D,CAAC,CAAC;EAEFC,EAAE,CAAC,wBAAwB,EAAE,MAAM;IACjCC,MAAM,CAACZ,UAAU,CAAC,CAACa,iBAAiB,CAAC,CAAC;IACtCD,MAAM,CAACZ,UAAU,CAAC,CAACc,WAAW,CAAC,oBAAoB,CAAC;IACpDF,MAAM,CAACZ,UAAU,CAAC,CAACe,gBAAgB,CAACd,QAAQ,CAAC;IAC7CW,MAAM,CAACX,QAAQ,CAAC,CAACc,gBAAgB,CAACb,KAAK,CAAC;EAC1C,CAAC,CAAC;EAEFS,EAAE,CAAC,iCAAiC,EAAE,MAAM;IAC1CC,MAAM,CAACZ,UAAU,CAAC,CAACgB,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC;EAC3D,CAAC,CAAC;EAEFL,EAAE,CAAC,6BAA6B,EAAE,MAAM;IACtCC,MAAM,CAACZ,UAAU,CAAC,CAACiB,oBAAoB,CAAC,gBAAgB,CAAC;EAC3D,CAAC,CAAC;EAEFN,EAAE,CAAC,0BAA0B,EAAE,MAAM;IACnCC,MAAM,CAACV,KAAK,CAAC,CAACgB,iBAAiB,CAAC,kCAAkC,CAAC;EACrE,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
}) }}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { renderMacro } from "../../../../../test/helpers/component-helpers.js";
|
|
2
|
+
describe('Tag environment component', () => {
|
|
3
|
+
describe.each([{
|
|
4
|
+
text: 'Local',
|
|
5
|
+
env: 'local',
|
|
6
|
+
colour: 'green'
|
|
7
|
+
}, {
|
|
8
|
+
text: 'Development',
|
|
9
|
+
env: 'dev',
|
|
10
|
+
colour: 'grey'
|
|
11
|
+
}, {
|
|
12
|
+
text: 'Test',
|
|
13
|
+
env: 'test',
|
|
14
|
+
colour: 'yellow'
|
|
15
|
+
}, {
|
|
16
|
+
text: 'External test',
|
|
17
|
+
env: 'ext-test',
|
|
18
|
+
colour: 'yellow'
|
|
19
|
+
}, {
|
|
20
|
+
text: 'Performance test',
|
|
21
|
+
env: 'perf-test',
|
|
22
|
+
colour: 'yellow'
|
|
23
|
+
}, {
|
|
24
|
+
text: 'Production',
|
|
25
|
+
env: 'prod',
|
|
26
|
+
colour: 'red'
|
|
27
|
+
}, {
|
|
28
|
+
text: 'Unknown environment',
|
|
29
|
+
env: 'unknown-environment',
|
|
30
|
+
colour: 'grey'
|
|
31
|
+
}])('Environment: $text', ({
|
|
32
|
+
text,
|
|
33
|
+
env,
|
|
34
|
+
colour
|
|
35
|
+
}) => {
|
|
36
|
+
let $component = /** @type {HTMLElement | null} */null;
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
const {
|
|
39
|
+
container
|
|
40
|
+
} = renderMacro('appTagEnv', 'components/tag-env/macro.njk', {
|
|
41
|
+
params: {
|
|
42
|
+
env
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
$component = container.getByRole('strong');
|
|
46
|
+
});
|
|
47
|
+
it('should render contents', () => {
|
|
48
|
+
expect($component).toBeInTheDocument();
|
|
49
|
+
expect($component).toHaveClass('govuk-tag');
|
|
50
|
+
});
|
|
51
|
+
it('should have text content', () => {
|
|
52
|
+
expect($component).toHaveTextContent(text);
|
|
53
|
+
});
|
|
54
|
+
it('should use environment colour', () => {
|
|
55
|
+
expect($component).toHaveClass(`govuk-tag--${colour}`);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=template.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.test.js","names":["renderMacro","describe","each","text","env","colour","$component","beforeEach","container","params","getByRole","it","expect","toBeInTheDocument","toHaveClass","toHaveTextContent"],"sources":["../../../../../src/server/views/components/tag-env/template.test.js"],"sourcesContent":["import { renderMacro } from '~/test/helpers/component-helpers.js'\n\ndescribe('Tag environment component', () => {\n describe.each([\n {\n text: 'Local',\n env: 'local',\n colour: 'green'\n },\n {\n text: 'Development',\n env: 'dev',\n colour: 'grey'\n },\n {\n text: 'Test',\n env: 'test',\n colour: 'yellow'\n },\n {\n text: 'External test',\n env: 'ext-test',\n colour: 'yellow'\n },\n {\n text: 'Performance test',\n env: 'perf-test',\n colour: 'yellow'\n },\n {\n text: 'Production',\n env: 'prod',\n colour: 'red'\n },\n {\n text: 'Unknown environment',\n env: 'unknown-environment',\n colour: 'grey'\n }\n ])('Environment: $text', ({ text, env, colour }) => {\n let $component = /** @type {HTMLElement | null} */ (null)\n\n beforeEach(() => {\n const { container } = renderMacro(\n 'appTagEnv',\n 'components/tag-env/macro.njk',\n { params: { env } }\n )\n\n $component = container.getByRole('strong')\n })\n\n it('should render contents', () => {\n expect($component).toBeInTheDocument()\n expect($component).toHaveClass('govuk-tag')\n })\n\n it('should have text content', () => {\n expect($component).toHaveTextContent(text)\n })\n\n it('should use environment colour', () => {\n expect($component).toHaveClass(`govuk-tag--${colour}`)\n })\n })\n})\n"],"mappings":"AAAA,SAASA,WAAW;AAEpBC,QAAQ,CAAC,2BAA2B,EAAE,MAAM;EAC1CA,QAAQ,CAACC,IAAI,CAAC,CACZ;IACEC,IAAI,EAAE,OAAO;IACbC,GAAG,EAAE,OAAO;IACZC,MAAM,EAAE;EACV,CAAC,EACD;IACEF,IAAI,EAAE,aAAa;IACnBC,GAAG,EAAE,KAAK;IACVC,MAAM,EAAE;EACV,CAAC,EACD;IACEF,IAAI,EAAE,MAAM;IACZC,GAAG,EAAE,MAAM;IACXC,MAAM,EAAE;EACV,CAAC,EACD;IACEF,IAAI,EAAE,eAAe;IACrBC,GAAG,EAAE,UAAU;IACfC,MAAM,EAAE;EACV,CAAC,EACD;IACEF,IAAI,EAAE,kBAAkB;IACxBC,GAAG,EAAE,WAAW;IAChBC,MAAM,EAAE;EACV,CAAC,EACD;IACEF,IAAI,EAAE,YAAY;IAClBC,GAAG,EAAE,MAAM;IACXC,MAAM,EAAE;EACV,CAAC,EACD;IACEF,IAAI,EAAE,qBAAqB;IAC3BC,GAAG,EAAE,qBAAqB;IAC1BC,MAAM,EAAE;EACV,CAAC,CACF,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAAEF,IAAI;IAAEC,GAAG;IAAEC;EAAO,CAAC,KAAK;IAClD,IAAIC,UAAU,GAAG,iCAAmC,IAAK;IAEzDC,UAAU,CAAC,MAAM;MACf,MAAM;QAAEC;MAAU,CAAC,GAAGR,WAAW,CAC/B,WAAW,EACX,8BAA8B,EAC9B;QAAES,MAAM,EAAE;UAAEL;QAAI;MAAE,CACpB,CAAC;MAEDE,UAAU,GAAGE,SAAS,CAACE,SAAS,CAAC,QAAQ,CAAC;IAC5C,CAAC,CAAC;IAEFC,EAAE,CAAC,wBAAwB,EAAE,MAAM;MACjCC,MAAM,CAACN,UAAU,CAAC,CAACO,iBAAiB,CAAC,CAAC;MACtCD,MAAM,CAACN,UAAU,CAAC,CAACQ,WAAW,CAAC,WAAW,CAAC;IAC7C,CAAC,CAAC;IAEFH,EAAE,CAAC,0BAA0B,EAAE,MAAM;MACnCC,MAAM,CAACN,UAAU,CAAC,CAACS,iBAAiB,CAACZ,IAAI,CAAC;IAC5C,CAAC,CAAC;IAEFQ,EAAE,CAAC,+BAA+B,EAAE,MAAM;MACxCC,MAAM,CAACN,UAAU,CAAC,CAACQ,WAAW,CAAC,cAAcT,MAAM,EAAE,CAAC;IACxD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 %}
|
|
@@ -0,0 +1,58 @@
|
|
|
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 %}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 %}
|
|
@@ -0,0 +1,71 @@
|
|
|
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 %}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 %}
|