hof 20.0.0-redis-beta.32-redis-beta → 20.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. package/.github/workflows/automate-publish.yml +1 -1
  2. package/.github/workflows/automate-tag.yml +4 -4
  3. package/.nyc_output/7c548a7f-5c40-44b2-b9fb-648341a23d6f.json +1 -0
  4. package/.nyc_output/processinfo/7c548a7f-5c40-44b2-b9fb-648341a23d6f.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -1
  6. package/.vscode/settings.json +6 -0
  7. package/README.md +6 -0
  8. package/components/notify/notify.js +1 -1
  9. package/config/hof-defaults.js +1 -2
  10. package/config/sanitisation-rules.js +20 -17
  11. package/controller/base-controller.js +5 -3
  12. package/controller/controller.js +5 -0
  13. package/frontend/govuk-template/govuk_template_generated.html +104 -0
  14. package/frontend/template-partials/views/layout.html +2 -2
  15. package/frontend/template-partials/views/partials/maincontent-left.html +2 -2
  16. package/frontend/template-partials/views/partials/navigation.html +2 -2
  17. package/frontend/template-partials/views/partials/summary-table-row.html +2 -2
  18. package/frontend/template-partials/views/session-timeout.html +2 -1
  19. package/index.js +1 -1
  20. package/lib/health.js +1 -1
  21. package/lib/sessions.js +1 -1
  22. package/middleware/errors.js +2 -0
  23. package/middleware/rate-limiter.js +1 -3
  24. package/package.json +5 -4
  25. package/sandbox/.env +1 -0
  26. package/sandbox/apps/sandbox/translations/en/default.json +15 -36
  27. package/sandbox/public/css/app.css +6605 -12
  28. package/sandbox/public/js/bundle.js +2792 -22
  29. package/sandbox/server.js +1 -1
  30. package/wizard/middleware/check-progress.js +36 -1
  31. package/.nyc_output/cb764db8-e9f0-43bb-b3b1-7af57bb79bb5.json +0 -1
  32. package/.nyc_output/processinfo/cb764db8-e9f0-43bb-b3b1-7af57bb79bb5.json +0 -1
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":5683,"argv":["/Users/sulthan/.nvm/versions/node/v16.15.0/bin/node","/Users/sulthan/development/HO/hof/node_modules/.bin/_mocha","test/**/*.spec.js","sandbox/test/**/*.spec.js"],"execArgv":[],"cwd":"/Users/sulthan/development/HO/hof","time":1662566958656,"ppid":5682,"coverageFilename":"/Users/sulthan/development/HO/hof/.nyc_output/7c548a7f-5c40-44b2-b9fb-648341a23d6f.json","externalId":"","uuid":"7c548a7f-5c40-44b2-b9fb-648341a23d6f","files":["/Users/sulthan/development/HO/hof/model/index.js","/Users/sulthan/development/HO/hof/components/index.js","/Users/sulthan/development/HO/hof/components/address-lookup/index.js","/Users/sulthan/development/HO/hof/components/address-lookup/default-model.js","/Users/sulthan/development/HO/hof/components/address-lookup/defaults.js","/Users/sulthan/development/HO/hof/components/clear-session/index.js","/Users/sulthan/development/HO/hof/components/date/index.js","/Users/sulthan/development/HO/hof/components/date/fields.js","/Users/sulthan/development/HO/hof/components/emailer/index.js","/Users/sulthan/development/HO/hof/components/emailer/email-service.js","/Users/sulthan/development/HO/hof/components/emailer/emailer.js","/Users/sulthan/development/HO/hof/components/emailer/transports/index.js","/Users/sulthan/development/HO/hof/components/emailer/transports/smtp.js","/Users/sulthan/development/HO/hof/components/emailer/transports/ses.js","/Users/sulthan/development/HO/hof/components/emailer/transports/stub.js","/Users/sulthan/development/HO/hof/components/emailer/transports/debug.js","/Users/sulthan/development/HO/hof/components/notify/index.js","/Users/sulthan/development/HO/hof/components/notify/notify.js","/Users/sulthan/development/HO/hof/components/summary/index.js","/Users/sulthan/development/HO/hof/config/rate-limits.js","/Users/sulthan/development/HO/hof/middleware/rate-limiter.js","/Users/sulthan/development/HO/hof/config/hof-defaults.js","/Users/sulthan/development/HO/hof/controller/base-controller.js","/Users/sulthan/development/HO/hof/controller/formatting/index.js","/Users/sulthan/development/HO/hof/controller/validation/index.js","/Users/sulthan/development/HO/hof/controller/validation/validators.js","/Users/sulthan/development/HO/hof/controller/validation/email.js","/Users/sulthan/development/HO/hof/controller/validation-error.js","/Users/sulthan/development/HO/hof/utilities/index.js","/Users/sulthan/development/HO/hof/utilities/autofill/index.js","/Users/sulthan/development/HO/hof/utilities/autofill/inputs.js","/Users/sulthan/development/HO/hof/utilities/test-data/index.js","/Users/sulthan/development/HO/hof/utilities/countries.js","/Users/sulthan/development/HO/hof/utilities/helpers/index.js","/Users/sulthan/development/HO/hof/utilities/reqres/index.js","/Users/sulthan/development/HO/hof/config/sanitisation-rules.js","/Users/sulthan/development/HO/hof/controller/formatting/formatters.js","/Users/sulthan/development/HO/hof/controller/index.js","/Users/sulthan/development/HO/hof/controller/behaviour-session.js","/Users/sulthan/development/HO/hof/controller/behaviour-hooks.js","/Users/sulthan/development/HO/hof/controller/controller.js","/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/behaviours/country-select.js","/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/index.js","/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/template-mixins.js","/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/render.js","/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/helpers.js","/Users/sulthan/development/HO/hof/index.js","/Users/sulthan/development/HO/hof/frontend/index.js","/Users/sulthan/development/HO/hof/frontend/govuk-template/index.js","/Users/sulthan/development/HO/hof/frontend/govuk-template/build/index.js","/Users/sulthan/development/HO/hof/frontend/govuk-template/build/config.js","/Users/sulthan/development/HO/hof/frontend/template-partials/index.js","/Users/sulthan/development/HO/hof/frontend/template-partials/translations/index.js","/Users/sulthan/development/HO/hof/frontend/themes/index.js","/Users/sulthan/development/HO/hof/frontend/themes/gov-uk/index.js","/Users/sulthan/development/HO/hof/frontend/toolkit/index.js","/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/helpers.js","/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/form-focus.js","/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/progressive-reveal.js","/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/validation.js","/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/character-count.js","/Users/sulthan/development/HO/hof/middleware/index.js","/Users/sulthan/development/HO/hof/middleware/cookies.js","/Users/sulthan/development/HO/hof/middleware/errors.js","/Users/sulthan/development/HO/hof/middleware/not-found.js","/Users/sulthan/development/HO/hof/middleware/deep-translate.js","/Users/sulthan/development/HO/hof/lib/markdown.js","/Users/sulthan/development/HO/hof/lib/router.js","/Users/sulthan/development/HO/hof/wizard/index.js","/Users/sulthan/development/HO/hof/wizard/behaviours/index.js","/Users/sulthan/development/HO/hof/wizard/behaviours/complete.js","/Users/sulthan/development/HO/hof/wizard/util/constants.js","/Users/sulthan/development/HO/hof/lib/helpers.js","/Users/sulthan/development/HO/hof/lib/health.js","/Users/sulthan/development/HO/hof/lib/serve-static.js","/Users/sulthan/development/HO/hof/lib/ga-tag.js","/Users/sulthan/development/HO/hof/lib/sessions.js","/Users/sulthan/development/HO/hof/lib/settings.js","/Users/sulthan/development/HO/hof/lib/logger.js","/Users/sulthan/development/HO/hof/build/index.js","/Users/sulthan/development/HO/hof/config/builder-defaults.js","/Users/sulthan/development/HO/hof/transpiler/index.js","/Users/sulthan/development/HO/hof/transpiler/lib/compile.js","/Users/sulthan/development/HO/hof/transpiler/lib/build.js","/Users/sulthan/development/HO/hof/transpiler/lib/expand-dirs.js","/Users/sulthan/development/HO/hof/transpiler/lib/aggregate.js","/Users/sulthan/development/HO/hof/transpiler/lib/write-files.js","/Users/sulthan/development/HO/hof/model/apis/index.js","/Users/sulthan/development/HO/hof/model/apis/html-to-pdf-converter.js","/Users/sulthan/development/HO/hof/wizard/model.js","/Users/sulthan/development/HO/hof/wizard/middleware/back-links.js","/Users/sulthan/development/HO/hof/wizard/util/helpers.js","/Users/sulthan/development/HO/hof/wizard/middleware/check-complete.js","/Users/sulthan/development/HO/hof/wizard/middleware/check-progress.js","/Users/sulthan/development/HO/hof/wizard/middleware/check-session.js","/Users/sulthan/development/HO/hof/wizard/middleware/csrf.js","/Users/sulthan/development/HO/hof/sandbox/test/_unit/example_app/sections/summary-data-sections.spec.js","/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/sections/summary-data-sections.js","/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/lib/staticAppealStages.js","/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/fields.js","/Users/sulthan/development/HO/hof/sandbox/test/helpers/utilities.js","/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/behaviours/international-number.js","/Users/sulthan/development/HO/hof/lib/encryption.js","/Users/sulthan/development/HO/hof/wizard/middleware/session.js","/Users/sulthan/development/HO/hof/wizard/middleware/session-model.js"]}
@@ -1 +1 @@
1
- {"processes":{"cb764db8-e9f0-43bb-b3b1-7af57bb79bb5":{"parent":null,"children":[]}},"files":{"/Users/martincrawley/Documents/Code/HOF/hof/model/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/address-lookup/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/address-lookup/default-model.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/address-lookup/defaults.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/clear-session/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/date/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/date/fields.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/email-service.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/emailer.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/transports/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/transports/smtp.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/transports/ses.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/transports/stub.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/emailer/transports/debug.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/components/summary/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/config/rate-limits.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/middleware/rate-limiter.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/base-controller.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/formatting/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/validation/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/validation/validators.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/validation/email.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/validation-error.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/autofill/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/autofill/inputs.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/test-data/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/countries.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/helpers/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/utilities/reqres/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/config/sanitisation-rules.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/formatting/formatters.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/behaviour-session.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/behaviour-hooks.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/controller/controller.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/sandbox/apps/sandbox/behaviours/country-select.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/template-mixins/mixins/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/template-mixins/mixins/template-mixins.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/template-mixins/mixins/render.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/template-mixins/mixins/helpers.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/govuk-template/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/govuk-template/build/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/govuk-template/build/config.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/template-partials/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/template-partials/translations/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/themes/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/themes/gov-uk/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/toolkit/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/toolkit/assets/javascript/helpers.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/toolkit/assets/javascript/form-focus.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/toolkit/assets/javascript/progressive-reveal.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/toolkit/assets/javascript/validation.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/frontend/toolkit/assets/javascript/character-count.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/middleware/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/middleware/cookies.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/middleware/errors.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/middleware/not-found.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/middleware/deep-translate.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/markdown.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/router.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/behaviours/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/behaviours/complete.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/util/constants.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/helpers.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/health.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/serve-static.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/ga-tag.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/sessions.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/settings.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/config/hof-defaults.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/lib/logger.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/build/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/config/builder-defaults.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/transpiler/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/transpiler/lib/compile.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/transpiler/lib/build.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/transpiler/lib/expand-dirs.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/transpiler/lib/aggregate.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/transpiler/lib/write-files.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/model/apis/index.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/model/apis/html-to-pdf-converter.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/model.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/middleware/back-links.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/util/helpers.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/middleware/check-complete.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/middleware/check-progress.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/middleware/check-session.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/wizard/middleware/csrf.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/sandbox/test/_unit/example_app/sections/summary-data-sections.spec.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/sandbox/apps/sandbox/sections/summary-data-sections.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/sandbox/apps/sandbox/lib/staticAppealStages.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/sandbox/apps/sandbox/fields.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"],"/Users/martincrawley/Documents/Code/HOF/hof/sandbox/test/helpers/utilities.js":["cb764db8-e9f0-43bb-b3b1-7af57bb79bb5"]},"externalIds":{}}
1
+ {"processes":{"7c548a7f-5c40-44b2-b9fb-648341a23d6f":{"parent":null,"children":[]}},"files":{"/Users/sulthan/development/HO/hof/model/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/address-lookup/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/address-lookup/default-model.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/address-lookup/defaults.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/clear-session/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/date/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/date/fields.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/email-service.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/emailer.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/transports/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/transports/smtp.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/transports/ses.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/transports/stub.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/emailer/transports/debug.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/notify/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/notify/notify.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/components/summary/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/config/rate-limits.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/middleware/rate-limiter.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/config/hof-defaults.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/base-controller.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/formatting/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/validation/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/validation/validators.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/validation/email.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/validation-error.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/autofill/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/autofill/inputs.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/test-data/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/countries.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/helpers/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/utilities/reqres/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/config/sanitisation-rules.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/formatting/formatters.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/behaviour-session.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/behaviour-hooks.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/controller/controller.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/behaviours/country-select.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/template-mixins.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/render.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/template-mixins/mixins/helpers.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/govuk-template/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/govuk-template/build/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/govuk-template/build/config.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/template-partials/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/template-partials/translations/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/themes/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/themes/gov-uk/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/toolkit/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/helpers.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/form-focus.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/progressive-reveal.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/validation.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/frontend/toolkit/assets/javascript/character-count.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/middleware/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/middleware/cookies.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/middleware/errors.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/middleware/not-found.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/middleware/deep-translate.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/markdown.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/router.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/behaviours/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/behaviours/complete.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/util/constants.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/helpers.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/health.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/serve-static.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/ga-tag.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/sessions.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/settings.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/logger.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/build/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/config/builder-defaults.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/transpiler/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/transpiler/lib/compile.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/transpiler/lib/build.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/transpiler/lib/expand-dirs.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/transpiler/lib/aggregate.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/transpiler/lib/write-files.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/model/apis/index.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/model/apis/html-to-pdf-converter.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/model.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/back-links.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/util/helpers.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/check-complete.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/check-progress.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/check-session.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/csrf.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/test/_unit/example_app/sections/summary-data-sections.spec.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/sections/summary-data-sections.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/lib/staticAppealStages.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/fields.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/test/helpers/utilities.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/sandbox/apps/sandbox/behaviours/international-number.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/lib/encryption.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/session.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"],"/Users/sulthan/development/HO/hof/wizard/middleware/session-model.js":["7c548a7f-5c40-44b2-b9fb-648341a23d6f"]},"externalIds":{}}
@@ -0,0 +1,6 @@
1
+ {
2
+ "search.exclude": {
3
+ "": true,
4
+ "**/node_modules": false
5
+ }
6
+ }
package/README.md CHANGED
@@ -1722,3 +1722,9 @@ Additional vendor JavaScript files are included. These are:
1722
1722
  - safari-cachebuster.js
1723
1723
 
1724
1724
  Copy `assets/javascript/vendor` into your javascript directory (ie `hmpo/vendor`) and compile them with your JavaScript.
1725
+
1726
+ ## Journey Header Navigation.html page
1727
+
1728
+ - Navigation.html contains a journeyHeaderURL, which is set in the controller.
1729
+ - getJourneyHeaderURL within the controller translates an empty baseURL to '/'.
1730
+ - The above helps fix broken journey header URLs in the GRO and UKVIC services which both have a baseURL's set to '/'.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  const NotifyClient = require('notifications-node-client').NotifyClient;
3
- const {v4: uuidv4} = require('uuid');
3
+ const { v4: uuidv4 } = require('uuid');
4
4
 
5
5
  module.exports = class Notify {
6
6
  constructor(opts) {
@@ -27,8 +27,7 @@ const defaults = {
27
27
  ignoreMiddlewareLogs: ['/healthz'],
28
28
  redis: {
29
29
  port: process.env.REDIS_PORT || '6379',
30
- host: process.env.REDIS_HOST || '127.0.0.1',
31
- legacyMode: true
30
+ host: process.env.REDIS_HOST || '127.0.0.1'
32
31
  },
33
32
  session: {
34
33
  ttl: process.env.SESSION_TTL || 1800,
@@ -3,27 +3,30 @@
3
3
 
4
4
  const sanitisationBlacklistArray = {
5
5
  // Input will be sanitised using the below rules
6
+ // Each one is an array which will run sequentially
7
+ // Some have multiple steps which allow us to remove dups then append the suffix
8
+ // Useful for ensuring we're not re-sanitising the same input multiple times (and appending extra hypens each time)
6
9
  // The key is what we're sanitising out
7
10
  // The regex is the rule we used to find them (note some dictate repeating characters)
8
11
  // And the replace is what we're replacing that pattern with. Usually nothing sometimes a
9
12
  // single character or sometimes a single character followed by a "-"
10
- '/*': { regex: '\/\\*', replace: '-' },
11
- '*/': { regex: '\\*\\/', replace: '-' },
12
- '|': { regex: '\\|', replace: '-' },
13
- '&&': { regex: '&&+', replace: '&' },
14
- '@@': { regex: '@@+', replace: '@' },
15
- '/..;/': { regex: '/\\.\\.;/', replace: '-' }, // Purposely input before ".." as they conflict
16
- // '..': { regex: '\\.\\.+', replace: '.' }, // Agreed to disable this rule for now unless its specifically required
17
- '/etc/passwd': { regex: '\/etc\/passwd', replace: '-' },
18
- 'c:\\': { regex: 'c:\\\\', replace: '-' },
19
- 'cmd.exe': { regex: 'cmd\\.exe', replace: '-' },
20
- '<': { regex: '<', replace: '<-' },
21
- '>': { regex: '>', replace: '>-' },
22
- '[': { regex: '\\[+', replace: '[-' },
23
- ']': { regex: '\\]+', replace: ']-' },
24
- '~': { regex: '~', replace: '~-' },
25
- '&#': { regex: '&#', replace: '-' },
26
- '%U': { regex: '%U', replace: '-' }
13
+ '/*': [{ regex: '\/\\*', replace: '-' }],
14
+ '*/': [{ regex: '\\*\\/', replace: '-' }],
15
+ '|': [{ regex: '\\|', replace: '-' }],
16
+ '&&': [{ regex: '&&+', replace: '&' }],
17
+ '@@': [{ regex: '@@+', replace: '@' }],
18
+ '/..;/': [{ regex: '/\\.\\.;/', replace: '-' }], // Purposely input before ".." as they conflict
19
+ // '..': [{ regex: '\\.\\.+', replace: '.' }], // Agreed to disable this rule for now unless its specifically required
20
+ '/etc/passwd': [{ regex: '\/etc\/passwd', replace: '-' }],
21
+ 'c:\\': [{ regex: 'c:\\\\', replace: '-' }],
22
+ 'cmd.exe': [{ regex: 'cmd\\.exe', replace: '-' }],
23
+ '<': [{ regex: '<+', replace: '<' }, { regex: '<(?!-)', replace: '<-' }],
24
+ '>': [{ regex: '>+', replace: '>' }, { regex: '>(?!-)', replace: '>-' }],
25
+ '[': [{ regex: '\\[+', replace: '[' }, { regex: '\\[(?!-)', replace: '[-' }],
26
+ ']': [{ regex: '\\]+', replace: ']-' }, { regex: '\\](?!-)', replace: ']-' }],
27
+ '~': [{ regex: '~+', replace: '~' }, { regex: '~(?!-)', replace: '~-' }],
28
+ '&#': [{ regex: '&#', replace: '-' }],
29
+ '%U': [{ regex: '%U', replace: '-' }]
27
30
  };
28
31
 
29
32
  module.exports = sanitisationBlacklistArray;
@@ -177,9 +177,11 @@ module.exports = class BaseController extends EventEmitter {
177
177
  // For each property in our form data
178
178
  Object.keys(sanitisationBlacklistArray).forEach(function (blacklisted, blacklistedIndex) {
179
179
  const blacklistedDetail = sanitisationBlacklistArray[blacklisted];
180
- const regexQuery = new RegExp(blacklistedDetail.regex, 'gi');
181
- // Will perform the required replace based on our passed in regex and the replace string
182
- req.form.values[property] = req.form.values[property].replace(regexQuery, blacklistedDetail.replace);
180
+ blacklistedDetail.forEach(step => {
181
+ const regexQuery = new RegExp(step.regex, 'gi');
182
+ // Will perform the required replace based on our passed in regex and the replace string
183
+ req.form.values[property] = req.form.values[property].replace(regexQuery, step.replace);
184
+ });
183
185
  });
184
186
  }
185
187
  });
@@ -113,6 +113,7 @@ module.exports = class Controller extends BaseController {
113
113
  baseUrl: req.baseUrl,
114
114
  skipToMain: this.getFirstFormItem(req.form.options.fields),
115
115
  title: this.getTitle(route, lookup, req.form.options.fields, res.locals),
116
+ journeyHeaderURL: this.getJourneyHeaderURL(req.baseUrl),
116
117
  header: this.getHeader(route, lookup, res.locals),
117
118
  captionHeading: this.getCaptionHeading(route, lookup, res.locals),
118
119
  warning: this.getWarning(route, lookup, res.locals),
@@ -124,6 +125,10 @@ module.exports = class Controller extends BaseController {
124
125
  }, stepLocals);
125
126
  }
126
127
 
128
+ getJourneyHeaderURL(url) {
129
+ return url === '' ? '/' : url;
130
+ }
131
+
127
132
  getFirstFormItem(fields) {
128
133
  let firstFieldKey;
129
134
  if (_.size(fields)) {
@@ -0,0 +1,104 @@
1
+
2
+ <!DOCTYPE html>
3
+ <!--[if lt IE 9]><html class="lte-ie8" lang="{{htmlLang}}"><![endif]-->
4
+ <!--[if gt IE 8]><!--><html lang="{{htmlLang}}" class="govuk-template"><!--<![endif]-->
5
+ <head>
6
+ <meta charset="utf-8" />
7
+ <title>{{$pageTitle}}{{/pageTitle}}</title>
8
+
9
+ <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="{{govukAssetPath}}images/favicon.ico" type="image/x-icon">
10
+ <link rel="mask-icon" href="{{govukAssetPath}}images/govuk-mask-icon.svg" color="#0b0c0c">
11
+ <link rel="apple-touch-icon" sizes="180x180" href="{{govukAssetPath}}images/govuk-apple-touch-icon-180x180.png">
12
+ <link rel="apple-touch-icon" sizes="167x167" href="{{govukAssetPath}}images/govuk-apple-touch-icon-167x167.png">
13
+ <link rel="apple-touch-icon" sizes="152x152" href="{{govukAssetPath}}images/govuk-apple-touch-icon-152x152.png">
14
+ <link rel="apple-touch-icon" href="{{govukAssetPath}}images/govuk-apple-touch-icon.png">
15
+
16
+
17
+ <meta name="theme-color" content="#0b0c0c" />
18
+
19
+ <meta name="viewport" content="width=device-width, initial-scale=1">
20
+
21
+ {{$head}}{{/head}}
22
+
23
+
24
+ <meta property="og:image" content="{{govukAssetPath}}images/opengraph-image.png">
25
+ </head>
26
+
27
+ <body class="{{$bodyClasses}}{{/bodyClasses}} govuk-template__body js-enabled" >
28
+ <script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');</script>
29
+
30
+
31
+
32
+ <div id="global-cookie-message" class="gem-c-cookie-banner govuk-clearfix" data-module="cookie-banner" role="region" aria-label="cookie banner" data-nosnippet="">
33
+ {{$cookieMessage}}{{/cookieMessage}}
34
+ </div>
35
+
36
+ {{$bodyStart}}{{/bodyStart}}
37
+
38
+ <header role="banner" id="govuk-header" class="{{$headerClass}}{{/headerClass}}">
39
+ <div class="govuk-header__container govuk-width-container">
40
+
41
+ <div class="govuk-header__logo">
42
+ <a href="{{$homepageUrl}}https://www.gov.uk{{/homepageUrl}}" title="{{$logoLinkTitle}}Go to the GOV.UK homepage{{/logoLinkTitle}}" id="logo" class="govuk-header__link govuk-header__link--homepage" target="_blank" data-module="track-click" data-track-category="homeLinkClicked" data-track-action="homeHeader">
43
+ <span class="govuk-header__logotype">
44
+ <!--[if gt IE 8]><!-->
45
+ <svg aria-hidden="true" focusable="false" class="govuk-header__logotype-crown" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 132 97" height="30" width="36">
46
+ <path fill="currentColor" fill-rule="evenodd" d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"></path>
47
+ </svg>
48
+ <!--<![endif]-->
49
+ <!--<![endif]-->
50
+ <!--[if IE 8]>
51
+ <img src="{{govukAssetPath}}images/govuk-logotype-crown.png" class="govuk-header__logotype-crown-fallback-image" width="36" height="32">
52
+ <![endif]-->
53
+ </span>
54
+ <span class="govuk-header__logotype-text">
55
+ {{$globalHeaderText}}GOV.UK{{/globalHeaderText}}
56
+ </span>
57
+ </a>
58
+ </div>
59
+ {{$insideHeader}}{{/insideHeader}}
60
+
61
+ {{$propositionHeader}}{{/propositionHeader}}
62
+ </div>
63
+ </header>
64
+
65
+
66
+ {{$afterHeader}}{{/afterHeader}}
67
+
68
+
69
+ {{$main}}{{/main}}
70
+
71
+ <footer class="govuk-footer" id="footer" role="contentinfo">
72
+
73
+ <div class="govuk-width-container">
74
+ {{$footerTop}}{{/footerTop}}
75
+
76
+ <div class="govuk-footer__meta">
77
+ <div class="govuk-footer__meta-item govuk-footer__meta-item--grow">
78
+ <h2 class="govuk-visually-hidden">Support links</h2>
79
+ {{$footerSupportLinks}}{{/footerSupportLinks}}
80
+
81
+ <svg aria-hidden="true" focusable="false" class="govuk-footer__licence-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 483.2 195.7" height="17" width="41">
82
+ <path fill="currentColor" d="M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145"></path>
83
+ </svg>
84
+
85
+ <span class="govuk-footer__licence-description">{{$licenceMessage}}All content is available under the <a href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" id="open-government-licence" class="govuk-footer__link" target="_blank" rel="license">Open Government Licence v3.0</a>, except where otherwise stated{{/licenceMessage}}</span>
86
+ </div>
87
+
88
+ <div class="govuk-footer__meta-item">
89
+ <a class="govuk-footer__link govuk-footer__copyright-logo" id="copyright-logo" target="_blank" href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">{{$crownCopyrightMessage}}© Crown copyright{{/crownCopyrightMessage}}</a>
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </footer>
94
+
95
+ <div id="global-app-error" class="app-error hidden"></div>
96
+
97
+
98
+ {{$bodyEnd}}{{/bodyEnd}}
99
+
100
+
101
+ <script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>if (typeof window.GOVUK === 'undefined') document.body.className = document.body.className.replace('js-enabled', '');</script>
102
+
103
+ </body>
104
+ </html>
@@ -44,9 +44,9 @@
44
44
  {{/gaTagId}}
45
45
  {{/cookieMessage}}
46
46
  {{$footerSupportLinks}}
47
- <ul>
47
+ <ul class="govuk-footer__inline-list">
48
48
  {{#footerSupportLinks}}
49
- <li class="govuk-footer__inline-list-item"><a href="{{path}}">{{#t}}{{property}}{{/t}}</a></li>
49
+ <li class="govuk-footer__inline-list-item"><a class="govuk-footer__link" href="{{path}}">{{#t}}{{property}}{{/t}}</a></li>
50
50
  {{/footerSupportLinks}}
51
51
  {{^footerSupportLinks}}
52
52
  <li class="govuk-footer__inline-list-item"><a class="govuk-footer__link" href="/cookies">{{#t}}base.cookies{{/t}}</a></li>
@@ -3,8 +3,8 @@
3
3
  <div class="govuk-grid-column-two-thirds">
4
4
  {{$validationSummary}}{{/validationSummary}}
5
5
  {{#captionHeading}}<span class="govuk-caption-l">{{captionHeading}}</span>{{/captionHeading}}
6
- {{#header}}<h1 class="govuk-heading-xl">{{header}}</h1>{{/header}}
7
- {{#subHeading}}<div id="page-header" class="govuk-heading-l">{{subHeading}}</div>{{/subHeading}}
6
+ {{#header}}<h1 class="govuk-heading-l">{{header}}</h1>{{/header}}
7
+ {{#subHeading}}<div id="page-header"><h2 class="govuk-heading-m">{{subHeading}}</h2></div>{{/subHeading}}
8
8
  {{$content}}{{/content}}
9
9
  </div>
10
10
  {{/content-outer}}
@@ -1,8 +1,8 @@
1
1
  <div class="govuk-header__content">
2
2
  {{#startPageRedirectUrl}}
3
- <a href="{{startPageRedirectUrl}}" class="govuk-header__link govuk-header__link--service-name" id="proposition-name">{{$journeyHeader}}{{/journeyHeader}}</a>
3
+ <a href="{{startPageRedirectUrl}}" class="govuk-header__link govuk-header__link--service-name" id="proposition-name">{{$journeyHeader}}{{/journeyHeader}}</a>
4
4
  {{/startPageRedirectUrl}}
5
5
  {{^startPageRedirectUrl}}
6
- <a href="{{baseUrl}}" class="govuk-header__link govuk-header__link--service-name" id="proposition-name">{{$journeyHeader}}{{/journeyHeader}}</a>
6
+ <a href="{{journeyHeaderURL}}" class="govuk-header__link govuk-header__link--service-name" id="proposition-name">{{$journeyHeader}}{{/journeyHeader}}</a>
7
7
  {{/startPageRedirectUrl}}
8
8
  </div>
@@ -5,10 +5,10 @@
5
5
  <dt class="confirm-label">{{label}}</dt>
6
6
  <dd class="confirm-value" data-value="{{value}}">{{value}}</dd>
7
7
  {{#changeLink}}
8
- <dd><span class="link"><a href="{{changeLink}}" id="{{field}}-change-{{index}}">{{#t}}buttons.change{{/t}} <span class="visuallyhidden">{{changeLinkDescription}} from {{value}}</span></a></span></dd>
8
+ <dd><span><a class="govuk-link" href="{{changeLink}}" id="{{field}}-change-{{index}}">{{#t}}buttons.change{{/t}} <span class="visuallyhidden">{{changeLinkDescription}} from {{value}}</span></a></span></dd>
9
9
  {{/changeLink}}
10
10
  {{^changeLink}}
11
- <dd><span class="link"><a href="{{baseUrl}}{{step}}/edit#{{field}}" id="{{field}}-change">{{#t}}buttons.change{{/t}} <span class="visuallyhidden">{{changeLinkDescription}} from {{value}}</span></a></span></dd>
11
+ <dd><span><a class="govuk-link" href="{{baseUrl}}{{step}}/edit#{{field}}" id="{{field}}-change">{{#t}}buttons.change{{/t}} <span class="visuallyhidden">{{changeLinkDescription}} from {{value}}</span></a></span></dd>
12
12
  {{/changeLink}}
13
13
  {{/isSeparator}}
14
14
  </div>
@@ -1,6 +1,7 @@
1
1
  {{<error}}
2
2
  {{$content}}
3
- <p>{{{content.message}}}</p>
3
+ <h1 class="govuk-heading-l">{{{content.title}}}</h1>
4
+ <h2 class="govuk-heading-m">{{{content.message}}}</h2>
4
5
  <a href="{{startLink}}" class="govuk-button" role="button">{{#t}}buttons.start-again{{/t}}</a>
5
6
  {{/content}}
6
7
  {{/error}}
package/index.js CHANGED
@@ -79,7 +79,7 @@ const getContentSecurityPolicy = (config, res) => {
79
79
  fontSrc: ['fonts.gstatic.com '],
80
80
  scriptSrc: ['www.google-analytics.com', 'ssl.google-analytics.com'],
81
81
  imgSrc: ['www.google-analytics.com', 'ssl.gstatic.com'],
82
- connectSrc: ['www.google-analytics.com']
82
+ connectSrc: ['https://www.google-analytics.com', 'https://region1.google-analytics.com']
83
83
  };
84
84
 
85
85
  if (config.gaTagId) {
package/lib/health.js CHANGED
@@ -15,7 +15,7 @@ module.exports = redis => {
15
15
 
16
16
  router.get('/readiness', healthCheck({
17
17
  test: () => {
18
- if (!redis.isOpen && !redis.isReady) {
18
+ if (!redis.connected && !redis.ready) {
19
19
  return new Error('Session store unhealthy');
20
20
  }
21
21
  return 0;
package/lib/sessions.js CHANGED
@@ -50,7 +50,7 @@ module.exports = (app, config) => {
50
50
  logger.error(e);
51
51
  });
52
52
  }
53
- client.connect();
53
+
54
54
  const store = new RedisStore({
55
55
  client: client,
56
56
  ttl: config.session.ttl,
@@ -12,6 +12,8 @@ const getContent = (err, translate) => {
12
12
  if (err.code === 'SESSION_TIMEOUT') {
13
13
  err.status = 401;
14
14
  err.template = 'session-timeout';
15
+ err.title = (translate && translate('errors.session.title'));
16
+ err.message = (translate && translate('errors.session.message'));
15
17
  content.title = (translate && translate('errors.session.title'));
16
18
  content.message = (translate && translate('errors.session.message'));
17
19
  }
@@ -25,11 +25,9 @@ module.exports = (options, rateLimitType) => {
25
25
  }
26
26
 
27
27
  const closeConnection = async err => {
28
- await redisClient.v4.QUIT();
28
+ await redisClient.quit();
29
29
  return next(err);
30
30
  };
31
- redisClient.on('error', err => logger.log('error', err));
32
- await redisClient.connect();
33
31
 
34
32
  try {
35
33
  // fetch records of current user using IP address, returns null when no record is found
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "hof",
3
3
  "description": "A bootstrap for HOF projects",
4
- "version": "20.0.0-redis-beta.32-redis-beta",
4
+ "version": "20.0.0",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
7
7
  "author": "HomeOffice",
@@ -42,7 +42,7 @@
42
42
  "callsite": "^1.0.0",
43
43
  "chalk": "^2.0.0",
44
44
  "chokidar": "^3.4.0",
45
- "connect-redis": "^6.1.3",
45
+ "connect-redis": "^5.2.0",
46
46
  "cookie-parser": "^1.4.6",
47
47
  "cp": "^0.2.0",
48
48
  "csrf": "^3.0.2",
@@ -72,7 +72,7 @@
72
72
  "minimatch": "^3.0.3",
73
73
  "minimist": "^1.2.6",
74
74
  "mixwith": "^0.1.1",
75
- "moment": "^2.29.2",
75
+ "moment": "^2.29.4",
76
76
  "morgan": "^1.10.0",
77
77
  "mustache": "^2.3.0",
78
78
  "nodemailer": "^6.6.3",
@@ -80,7 +80,7 @@
80
80
  "nodemailer-smtp-transport": "^2.7.4",
81
81
  "nodemailer-stub-transport": "^1.1.0",
82
82
  "notifications-node-client": "^5.1.1",
83
- "redis": "^4.3.1",
83
+ "redis": "^3.1.2",
84
84
  "reqres": "^3.0.1",
85
85
  "request": "^2.79.0",
86
86
  "rimraf": "^3.0.2",
@@ -89,6 +89,7 @@
89
89
  "uglify-js": "^3.14.3",
90
90
  "underscore": "^1.12.1",
91
91
  "urijs": "^1.19.11",
92
+ "uuid": "^8.3.2",
92
93
  "winston": "^3.7.2"
93
94
  },
94
95
  "devDependencies": {
package/sandbox/.env ADDED
@@ -0,0 +1 @@
1
+ // GA_TAG=UA-215558609-1