hof 21.0.6-axios-beta → 21.0.6-notify-attachments-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/ba61bb97-548e-44b6-b2f7-282f850cee4a.json +1 -0
- package/.nyc_output/processinfo/ba61bb97-548e-44b6-b2f7-282f850cee4a.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +21 -0
- package/codeReviewChecklist.md +22 -0
- package/components/notify/index.js +3 -1
- package/components/notify/notify.js +23 -7
- package/config/hof-defaults.js +8 -0
- package/frontend/govuk-template/build/govuk_template.html +20 -22
- package/frontend/template-mixins/mixins/template-mixins.js +1 -0
- package/frontend/template-mixins/partials/forms/checkbox.html +5 -0
- package/frontend/template-mixins/partials/forms/input-text-group.html +1 -1
- package/frontend/template-mixins/partials/forms/select.html +6 -6
- package/frontend/template-mixins/partials/forms/textarea-group.html +4 -4
- package/frontend/template-partials/views/partials/gatag.html +0 -1
- package/frontend/template-partials/views/partials/head.html +23 -0
- package/lib/ga-tag.js +33 -7
- package/middleware/cookies.js +2 -0
- package/model/apis/axios-settings.js +18 -6
- package/model/apis/html-to-pdf-converter.js +0 -1
- package/model/index.js +95 -92
- package/package.json +9 -11
- package/pull_request.md +16 -0
- package/sandbox/package.json +1 -1
- package/sandbox/yarn.lock +14 -9
- package/.nyc_output/4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5.json +0 -1
- package/.nyc_output/processinfo/4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5.json +0 -1
- package/sandbox/apps/sandbox/translations/en/default.json +0 -224
- package/sandbox/public/css/app.css +0 -2793
- package/sandbox/public/images/icons/icon-caret-left.png +0 -0
- package/sandbox/public/images/icons/icon-complete.png +0 -0
- package/sandbox/public/images/icons/icon-cross-remove-sign.png +0 -0
- package/sandbox/public/js/bundle.js +0 -32888
@@ -0,0 +1 @@
|
|
1
|
+
{"parent":null,"pid":96815,"argv":["/usr/local/bin/node","/Users/mohameduwais/UKHomeOffice/hof/node_modules/.bin/_mocha","test/**/*.spec.js","sandbox/test/**/*.spec.js"],"execArgv":[],"cwd":"/Users/mohameduwais/UKHomeOffice/hof","time":1699519755908,"ppid":96812,"coverageFilename":"/Users/mohameduwais/UKHomeOffice/hof/.nyc_output/ba61bb97-548e-44b6-b2f7-282f850cee4a.json","externalId":"","uuid":"ba61bb97-548e-44b6-b2f7-282f850cee4a","files":["/Users/mohameduwais/UKHomeOffice/hof/model/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/address-lookup/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/address-lookup/default-model.js","/Users/mohameduwais/UKHomeOffice/hof/components/address-lookup/defaults.js","/Users/mohameduwais/UKHomeOffice/hof/components/clear-session/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/combine-and-loop-fields/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/date/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/date/fields.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/email-service.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/emailer.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/smtp.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/ses.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/stub.js","/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/debug.js","/Users/mohameduwais/UKHomeOffice/hof/components/homeoffice-countries/index.js","/Users/mohameduwais/UKHomeOffice/hof/config/component-defaults.js","/Users/mohameduwais/UKHomeOffice/hof/components/notify/index.js","/Users/mohameduwais/UKHomeOffice/hof/components/notify/notify.js"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"processes":{"4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5":{"parent":null,"children":[]}},"files":{"/Users/robertmccann/Projects/hof/model/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/address-lookup/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/address-lookup/default-model.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/address-lookup/defaults.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/clear-session/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/combine-and-loop-fields/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/date/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/date/fields.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/email-service.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/emailer.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/transports/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/transports/smtp.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/transports/ses.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/transports/stub.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/emailer/transports/debug.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/homeoffice-countries/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/config/component-defaults.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/notify/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/notify/notify.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/components/summary/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/config/rate-limits.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/middleware/rate-limiter.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/config/hof-defaults.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/base-controller.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/formatting/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/validation/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/validation/validators.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/validation/email.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/validation-error.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/autofill/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/autofill/inputs.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/test-data/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/countries.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/helpers/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/utilities/reqres/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/config/sanitisation-rules.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/formatting/formatters.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/behaviour-session.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/behaviour-hooks.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/controller/controller.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/apps/sandbox/behaviours/country-select.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/template-mixins/mixins/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/template-mixins/mixins/template-mixins.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/template-mixins/mixins/render.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/template-mixins/mixins/helpers.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/govuk-template/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/govuk-template/build/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/govuk-template/build/config.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/template-partials/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/template-partials/translations/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/themes/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/themes/gov-uk/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/toolkit/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/toolkit/assets/javascript/helpers.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/toolkit/assets/javascript/form-focus.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/toolkit/assets/javascript/progressive-reveal.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/toolkit/assets/javascript/validation.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/frontend/toolkit/assets/javascript/character-count.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/middleware/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/middleware/cookies.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/middleware/errors.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/middleware/not-found.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/middleware/deep-translate.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/markdown.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/router.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/behaviours/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/behaviours/complete.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/util/constants.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/helpers.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/health.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/serve-static.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/ga-tag.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/sessions.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/settings.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/lib/logger.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/build/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/config/builder-defaults.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/transpiler/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/transpiler/lib/compile.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/transpiler/lib/build.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/transpiler/lib/expand-dirs.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/transpiler/lib/aggregate.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/transpiler/lib/write-files.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/model/apis/index.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/model/apis/html-to-pdf-converter.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/model.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/middleware/back-links.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/util/helpers.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/middleware/check-complete.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/middleware/check-progress.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/middleware/check-session.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/wizard/middleware/csrf.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/test/_unit/example_app/sections/summary-data-sections.spec.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/apps/sandbox/sections/summary-data-sections.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/apps/sandbox/lib/staticAppealStages.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/apps/sandbox/fields.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/test/helpers/utilities.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"],"/Users/robertmccann/Projects/hof/sandbox/apps/sandbox/behaviours/international-number.js":["4fc007c9-d6c8-4614-89ce-04c7d6ce9fe5"]},"externalIds":{}}
|
1
|
+
{"processes":{"ba61bb97-548e-44b6-b2f7-282f850cee4a":{"parent":null,"children":[]}},"files":{"/Users/mohameduwais/UKHomeOffice/hof/model/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/address-lookup/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/address-lookup/default-model.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/address-lookup/defaults.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/clear-session/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/combine-and-loop-fields/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/date/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/date/fields.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/email-service.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/emailer.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/smtp.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/ses.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/stub.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/emailer/transports/debug.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/homeoffice-countries/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/config/component-defaults.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/notify/index.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"],"/Users/mohameduwais/UKHomeOffice/hof/components/notify/notify.js":["ba61bb97-548e-44b6-b2f7-282f850cee4a"]},"externalIds":{}}
|
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
## 2024-07-22, Version 21.0.0 (Stable), @Rhodine-orleans-lindsay
|
2
|
+
* Replaces deprecated request module with axios
|
3
|
+
- refactors the hof model and apis to use axios instead of request
|
4
|
+
* Updates patch and minor dependency versions
|
5
|
+
|
6
|
+
## 2024-04-24, Version 20.5.0 (Stable), @mislam987
|
7
|
+
* Add hint property to checkboxes to align with govuk design guidelines
|
8
|
+
|
9
|
+
## 2024-02-29, Version 20.4.0 (Stable), @sulthan-ahmed
|
10
|
+
* Update version of govuk-frontend to 3.15
|
11
|
+
- this adds the new crown for the King
|
12
|
+
- this supports a lot of changes from the govuk design system
|
13
|
+
* Adds support for Google tag manager
|
14
|
+
* Fixes accessibility issues
|
15
|
+
* Sandbox area for testing hof changes
|
16
|
+
* Updates patch and minor versions including
|
17
|
+
- libphonenumber to 1.9.44
|
18
|
+
- nodemailer to 6.9.9
|
19
|
+
- ip to 1.1.9
|
20
|
+
- es5-ext to 0.10.63
|
21
|
+
|
1
22
|
## 2020-06-02, Version 16.0.0 (Stable), @andymoody
|
2
23
|
* Update version of helmet to 3.22.0
|
3
24
|
* Update version of i18n-future to 2.0.0
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# HOF code review checklist v1.0
|
2
|
+
|
3
|
+
This is a general guide on what you should check for when reviewing another team member's code.
|
4
|
+
|
5
|
+
## Fundamental checks
|
6
|
+
- [ ] Check for code format
|
7
|
+
- [ ] Check for duplicate code
|
8
|
+
- [ ] Check for if there are existing components in the framework already
|
9
|
+
- [ ] Check for copy and paste
|
10
|
+
- [ ] Check code readability (if the class, function and variable names are making sense, avoid using acronyms, check for simplicity, avoid complexity)
|
11
|
+
- [ ] Check if user inputs are sanitized
|
12
|
+
- [ ] Check if errors are handled
|
13
|
+
- [ ] Check if null / undefined values are checked before actions are performed on a variable (May not always be necessary)
|
14
|
+
- [ ] Check for performance (are there logic in loops that doesn't have to be executed each time? Could some tasks be added to a queue and performed later? etc)
|
15
|
+
|
16
|
+
## Advanced (optional if the ticket is low / medium impact) checks
|
17
|
+
- [ ] Check if the code is following SOLID principle, code maintainability
|
18
|
+
- [ ] Check if none functional requirements are needed (for example, should an audit log be stored for an action performed)
|
19
|
+
- [ ] Check the performance and efficiency of the tests
|
20
|
+
- [ ] Check to avoid the use of operations that only work in javascript (e.g. using && to return the object on the right if the statement on the left is true)
|
21
|
+
|
22
|
+
|
@@ -38,12 +38,14 @@ module.exports = config => {
|
|
38
38
|
if (typeof settings.recipient !== 'string' || !settings.recipient.includes('@')) {
|
39
39
|
throw new Error('hof-behaviour-emailer: invalid recipient');
|
40
40
|
}
|
41
|
-
|
42
41
|
if (typeof config.subject === 'function') {
|
43
42
|
settings.subject = config.subject(req.sessionModel.toJSON(), req.translate);
|
44
43
|
} else {
|
45
44
|
settings.subject = config.subject;
|
46
45
|
}
|
46
|
+
if (config.attachment && config.attachment !== undefined) {
|
47
|
+
settings.attachment = config.attachment(req.sessionModel.toJSON(), req.translate);
|
48
|
+
}
|
47
49
|
|
48
50
|
return settings;
|
49
51
|
})
|
@@ -1,4 +1,5 @@
|
|
1
1
|
'use strict';
|
2
|
+
/* eslint-disable no-console */
|
2
3
|
const NotifyClient = require('notifications-node-client').NotifyClient;
|
3
4
|
const { v4: uuidv4 } = require('uuid');
|
4
5
|
|
@@ -10,15 +11,30 @@ module.exports = class Notify {
|
|
10
11
|
this.notifyTemplate = options.notifyTemplate;
|
11
12
|
}
|
12
13
|
|
13
|
-
|
14
|
+
async sendEmail(templateId, recipient, personalisation) {
|
14
15
|
const reference = uuidv4();
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
try {
|
18
|
+
await this.notifyClient.sendEmail(templateId, recipient, {
|
19
|
+
personalisation: personalisation,
|
20
|
+
reference });
|
21
|
+
} catch (error) {
|
22
|
+
console.error('Error sending email:', error.response ? error.response.data : error.message);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
send(email) {
|
27
|
+
let personalisation = {
|
28
|
+
'email-subject': email.subject,
|
29
|
+
'email-body': email.body
|
30
|
+
};
|
31
|
+
|
32
|
+
if (email.attachment) {
|
33
|
+
personalisation = Object.assign({'email-attachment':
|
34
|
+
this.notifyClient.prepareUpload(email.attachment)}, personalisation);
|
35
|
+
}
|
36
|
+
|
37
|
+
this.sendEmail(this.notifyTemplate, email.recipient, personalisation);
|
22
38
|
}
|
23
39
|
};
|
24
40
|
|
package/config/hof-defaults.js
CHANGED
@@ -22,6 +22,14 @@ const defaults = {
|
|
22
22
|
env: process.env.NODE_ENV || 'development',
|
23
23
|
gaTagId: process.env.GA_TAG || 'Test-GA-Tag',
|
24
24
|
ga4TagId: process.env.GA_4_TAG,
|
25
|
+
// added to allow support for multiple HOF forms using GTM to customize how they track page views
|
26
|
+
gtm: {
|
27
|
+
tagId: process.env.GTM_TAG || false,
|
28
|
+
config: {},
|
29
|
+
composePageName: function (page, convertPage) {
|
30
|
+
return convertPage(page);
|
31
|
+
}
|
32
|
+
},
|
25
33
|
gaCrossDomainTrackingTagId: process.env.GDS_CROSS_DOMAIN_GA_TAG,
|
26
34
|
loglevel: process.env.LOG_LEVEL || 'info',
|
27
35
|
ignoreMiddlewareLogs: ['/healthz'],
|
@@ -5,50 +5,48 @@
|
|
5
5
|
<head>
|
6
6
|
<meta charset="utf-8" />
|
7
7
|
<title>{{ pageTitle }}</title>
|
8
|
+
{{{ head }}}
|
8
9
|
|
9
10
|
<link rel="shortcut icon" sizes="16x16 32x32 48x48" href="{{assetPath}}images/favicon.ico" type="image/x-icon">
|
10
|
-
<link rel="mask-icon" href="{{assetPath}}images/govuk-mask-icon.svg" color="#0b0c0c">
|
11
|
+
<link rel="mask-icon" href="{{assetPath}}images/govuk-mask-icon.svg" color="#0b0c0c">
|
11
12
|
<link rel="apple-touch-icon" sizes="180x180" href="{{assetPath}}images/govuk-apple-touch-icon-180x180.png">
|
12
13
|
<link rel="apple-touch-icon" sizes="167x167" href="{{assetPath}}images/govuk-apple-touch-icon-167x167.png">
|
13
14
|
<link rel="apple-touch-icon" sizes="152x152" href="{{assetPath}}images/govuk-apple-touch-icon-152x152.png">
|
14
15
|
<link rel="apple-touch-icon" href="{{assetPath}}images/govuk-apple-touch-icon.png">
|
15
|
-
|
16
|
-
|
16
|
+
|
17
|
+
|
17
18
|
<meta name="theme-color" content="#0b0c0c" />
|
18
19
|
|
19
20
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
|
24
23
|
<meta property="og:image" content="{{assetPath}}images/opengraph-image.png">
|
25
24
|
</head>
|
26
25
|
|
27
26
|
<body class="{{ bodyClasses }} govuk-template__body js-enabled" >
|
28
27
|
<script>document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');</script>
|
29
28
|
|
30
|
-
|
29
|
+
|
31
30
|
|
32
31
|
<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
32
|
{{{ cookieMessage }}}
|
34
33
|
</div>
|
35
|
-
|
36
|
-
{{{ bodyStart }}}
|
37
|
-
|
34
|
+
|
35
|
+
{{{ bodyStart }}}
|
36
|
+
|
38
37
|
<header role="banner" id="govuk-header" class="{{{ headerClass }}}">
|
39
38
|
<div class="govuk-header__container govuk-width-container">
|
40
|
-
|
39
|
+
|
41
40
|
<div class="govuk-header__logo">
|
42
41
|
<a href="{{{ homepageUrl }}}" title="{{ 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
42
|
<span class="govuk-header__logotype">
|
44
43
|
<!--[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
|
46
|
-
<path fill="currentColor" fill-rule="evenodd"
|
44
|
+
<svg aria-hidden="true" focusable="false" class="govuk-header__logotype-crown" xmlns="http://www.w3.org/2000/svg\" viewBox="0 0 32 30" height="30" width="32">
|
45
|
+
<path fill="currentColor" fill-rule="evenodd" d="M22.6 10.4c-1 .4-2-.1-2.4-1-.4-.9.1-2 1-2.4.9-.4 2 .1 2.4 1s-.1 2-1 2.4m-5.9 6.7c-.9.4-2-.1-2.4-1-.4-.9.1-2 1-2.4.9-.4 2 .1 2.4 1s-.1 2-1 2.4m10.8-3.7c-1 .4-2-.1-2.4-1-.4-.9.1-2 1-2.4.9-.4 2 .1 2.4 1s0 2-1 2.4m3.3 4.8c-1 .4-2-.1-2.4-1-.4-.9.1-2 1-2.4.9-.4 2 .1 2.4 1s-.1 2-1 2.4M17 4.7l2.3 1.2V2.5l-2.3.7-.2-.2.9-3h-3.4l.9 3-.2.2c-.1.1-2.3-.7-2.3-.7v3.4L15 4.7c.1.1.1.2.2.2l-1.3 4c-.1.2-.1.4-.1.6 0 1.1.8 2 1.9 2.2h.7c1-.2 1.9-1.1 1.9-2.1 0-.2 0-.4-.1-.6l-1.3-4c-.1-.2 0-.2.1-.3m-7.6 5.7c.9.4 2-.1 2.4-1 .4-.9-.1-2-1-2.4-.9-.4-2 .1-2.4 1s0 2 1 2.4m-5 3c.9.4 2-.1 2.4-1 .4-.9-.1-2-1-2.4-.9-.4-2 .1-2.4 1s.1 2 1 2.4m-3.2 4.8c.9.4 2-.1 2.4-1 .4-.9-.1-2-1-2.4-.9-.4-2 .1-2.4 1s0 2 1 2.4m14.8 11c4.4 0 8.6.3 12.3.8 1.1-4.5 2.4-7 3.7-8.8l-2.5-.9c.2 1.3.3 1.9 0 2.7-.4-.4-.8-1.1-1.1-2.3l-1.2 4c.7-.5 1.3-.8 2-.9-1.1 2.5-2.6 3.1-3.5 3-1.1-.2-1.7-1.2-1.5-2.1.3-1.2 1.5-1.5 2.1-.1 1.1-2.3-.8-3-2-2.3 1.9-1.9 2.1-3.5.6-5.6-2.1 1.6-2.1 3.2-1.2 5.5-1.2-1.4-3.2-.6-2.5 1.6.9-1.4 2.1-.5 1.9.8-.2 1.1-1.7 2.1-3.5 1.9-2.7-.2-2.9-2.1-2.9-3.6.7-.1 1.9.5 2.9 1.9l.4-4.3c-1.1 1.1-2.1 1.4-3.2 1.4.4-1.2 2.1-3 2.1-3h-5.4s1.7 1.9 2.1 3c-1.1 0-2.1-.2-3.2-1.4l.4 4.3c1-1.4 2.2-2 2.9-1.9-.1 1.5-.2 3.4-2.9 3.6-1.9.2-3.4-.8-3.5-1.9-.2-1.3 1-2.2 1.9-.8.7-2.3-1.2-3-2.5-1.6.9-2.2.9-3.9-1.2-5.5-1.5 2-1.3 3.7.6 5.6-1.2-.7-3.1 0-2 2.3.6-1.4 1.8-1.1 2.1.1.2.9-.3 1.9-1.5 2.1-.9.2-2.4-.5-3.5-3 .6 0 1.2.3 2 .9l-1.2-4c-.3 1.1-.7 1.9-1.1 2.3-.3-.8-.2-1.4 0-2.7l-2.9.9C1.3 23 2.6 25.5 3.7 30c3.7-.5 7.9-.8 12.3-.8\"></path>
|
47
46
|
</svg>
|
48
47
|
<!--<![endif]-->
|
49
|
-
<!--<![endif]-->
|
50
48
|
<!--[if IE 8]>
|
51
|
-
<img src="{{ assetPath }}images/govuk-logotype-crown.png" class="govuk-header__logotype-crown-fallback-image" width="
|
49
|
+
<img src="{{ assetPath }}images/govuk-logotype-tudor-crown.png" class="govuk-header__logotype-crown-fallback-image" width="32" height="30" alt="">
|
52
50
|
<![endif]-->
|
53
51
|
</span>
|
54
52
|
<span class="govuk-header__logotype-text">
|
@@ -57,11 +55,11 @@
|
|
57
55
|
</a>
|
58
56
|
</div>
|
59
57
|
{{{ insideHeader }}}
|
60
|
-
|
58
|
+
|
61
59
|
{{{ propositionHeader }}}
|
62
60
|
</div>
|
63
61
|
</header>
|
64
|
-
|
62
|
+
|
65
63
|
|
66
64
|
{{{ afterHeader }}}
|
67
65
|
|
@@ -81,7 +79,7 @@
|
|
81
79
|
<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
80
|
<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
81
|
</svg>
|
84
|
-
|
82
|
+
|
85
83
|
<span class="govuk-footer__licence-description">{{{ licenceMessage }}}</span>
|
86
84
|
</div>
|
87
85
|
|
@@ -93,12 +91,12 @@
|
|
93
91
|
</footer>
|
94
92
|
|
95
93
|
<div id="global-app-error" class="app-error hidden"></div>
|
96
|
-
|
94
|
+
|
97
95
|
|
98
96
|
{{{ bodyEnd }}}
|
99
|
-
|
100
|
-
|
97
|
+
|
98
|
+
|
101
99
|
<script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>if (typeof window.GOVUK === 'undefined') document.body.className = document.body.className.replace('js-enabled', '');</script>
|
102
|
-
|
100
|
+
|
103
101
|
</body>
|
104
102
|
</html>
|
@@ -319,6 +319,7 @@ module.exports = function (options) {
|
|
319
319
|
error: this.errors && this.errors[key],
|
320
320
|
invalid: this.errors && this.errors[key] && opts.required,
|
321
321
|
label: t(fieldLabel || 'fields.' + key + '.label'),
|
322
|
+
hint: conditionalTranslate(getTranslationKey(field, key, 'hint')),
|
322
323
|
selected: selected,
|
323
324
|
className: classNames(field) || 'govuk-label govuk-checkboxes__label',
|
324
325
|
child: field.child,
|
@@ -6,6 +6,11 @@
|
|
6
6
|
{{{label}}}
|
7
7
|
{{#error}}<span class="visuallyhidden">{{error.message}}</span>{{/error}}
|
8
8
|
</label>
|
9
|
+
{{#hint}}
|
10
|
+
<div id="{{key}}-hint" class="govuk-hint govuk-checkboxes__hint">
|
11
|
+
{{hint}}
|
12
|
+
</div>
|
13
|
+
{{/hint}}
|
9
14
|
</div>
|
10
15
|
{{#renderChild}}{{/renderChild}}
|
11
16
|
</div>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div id="{{id}}-group" class="{{#compound}} form-group-compound{{/compound}}{{#formGroupClassName}}{{formGroupClassName}}{{/formGroupClassName}}{{#error}} govuk-form-group--error{{/error}}">
|
2
|
-
{{#isPageHeading}}<h1 class="govuk-label-wrapper">{{/isPageHeading}}<label for="{{id}}" class="{{labelClassName}}{{#isPageHeading}}govuk-label--l{{/isPageHeading}}">
|
2
|
+
{{#isPageHeading}}<h1 class="govuk-label-wrapper">{{/isPageHeading}}<label for="{{id}}" class="{{labelClassName}} {{#isPageHeading}}govuk-label--l{{/isPageHeading}}">
|
3
3
|
{{{label}}}
|
4
4
|
</label>
|
5
5
|
{{#isPageHeading}}</h1>{{/isPageHeading}}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
<div id="{{id}}-group" class="{{#compound}} form-group-compound{{/compound}}{{#formGroupClassName}} {{formGroupClassName}}{{/formGroupClassName}}{{#error}} govuk-form-group--error{{/error}}">
|
2
2
|
{{#isPageHeading}}<h1 class="govuk-label-wrapper">{{/isPageHeading}}<label for="{{id}}" class="{{labelClassName}}{{#isPageHeading}}govuk-label--l{{/isPageHeading}}">
|
3
3
|
{{{label}}}
|
4
|
-
{{#hint}}<span {{$hintId}}id="{{hintId}}" {{/hintId}}class="govuk-hint">{{hint}}</span>{{/hint}}
|
5
|
-
{{#error}}
|
6
|
-
<p class="govuk-error-message">
|
7
|
-
<span class="govuk-visually-hidden">Error:</span> {{error.message}}
|
8
|
-
</p>
|
9
|
-
{{/error}}
|
10
4
|
</label>
|
11
5
|
{{#isPageHeading}}</h1>{{/isPageHeading}}
|
6
|
+
{{#hint}}<div {{$hintId}}id="{{hintId}}" {{/hintId}}class="govuk-hint">{{hint}}</div>{{/hint}}
|
7
|
+
{{#error}}
|
8
|
+
<p class="govuk-error-message">
|
9
|
+
<span class="govuk-visually-hidden">Error:</span> {{error.message}}
|
10
|
+
</p>
|
11
|
+
{{/error}}
|
12
12
|
<select id="{{id}}" class="govuk-select{{#className}} {{className}}{{/className}}{{#error}} govuk-select--error{{/error}}" name="{{id}}" aria-required="{{required}}">
|
13
13
|
{{#options}}
|
14
14
|
<option value="{{value}}" {{#selected}}selected{{/selected}}>{{label}}</option>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div id="{{id}}-group" class="govuk-form-group {{#formGroupClassName}}{{formGroupClassName}}{{/formGroupClassName}}{{#error}} govuk-form-group--error{{/error}}">
|
5
5
|
{{#isPageHeading}}<h1 class="govuk-label-wrapper">{{/isPageHeading}}
|
6
6
|
<label for="{{id}}"
|
7
|
-
class="{{labelClassName}}{{#isPageHeading}}govuk-label--l{{/isPageHeading}}">
|
7
|
+
class="{{labelClassName}} {{#isPageHeading}}govuk-label--l{{/isPageHeading}}">
|
8
8
|
{{{label}}}
|
9
9
|
{{#error}}
|
10
10
|
<p id="{{id}}-error" class="govuk-error-message">
|
@@ -18,10 +18,10 @@
|
|
18
18
|
<textarea name="{{id}}" id="{{id}}"
|
19
19
|
class="govuk-textarea {{#isMaxlengthOrMaxword}}govuk-js-character-count{{/isMaxlengthOrMaxword}} {{#className}}{{className}}{{/className}} {{#error}}govuk-input--error{{/error}}"
|
20
20
|
{{#isMaxlengthOrMaxword}}
|
21
|
-
aria-describedby="{{id}}-info"
|
21
|
+
aria-describedby="{{id}}-hint {{id}}-info"
|
22
22
|
{{/isMaxlengthOrMaxword}}
|
23
|
-
{{#attributes}}
|
24
|
-
{{attribute}}="{{value}}"
|
23
|
+
{{#attributes}}
|
24
|
+
{{attribute}}="{{value}}"
|
25
25
|
{{/attributes}}
|
26
26
|
{{^error}}{{#hintId}}{{#maxlength}} aria-describedby="{{id}}-maxlength-hint {{hintId}}"{{/maxlength}}{{/hintId}}{{/error}}
|
27
27
|
{{^error}}{{#hintId}}{{^maxlength}} aria-describedby="{{hintId}}"{{/maxlength}}{{/hintId}}{{/error}}
|
@@ -1,2 +1,25 @@
|
|
1
|
+
{{#gtmTagId}}
|
2
|
+
{{#cookiesAccepted}}
|
3
|
+
<!-- Google Tag Manager Data Layer -->
|
4
|
+
<script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>
|
5
|
+
var dataLayer = window.dataLayer || [];
|
6
|
+
dataLayer.push(
|
7
|
+
{{{gtmConfig}}}
|
8
|
+
);
|
9
|
+
</script>
|
10
|
+
<!-- End Google Tag Manager Data Layer -->
|
11
|
+
|
12
|
+
<!-- Google Tag Manager -->
|
13
|
+
<script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>
|
14
|
+
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
15
|
+
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
16
|
+
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
17
|
+
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
18
|
+
})(window,document,'script','dataLayer','{{gtmTagId}}');
|
19
|
+
</script>
|
20
|
+
<!-- End Google Tag Manager -->
|
21
|
+
{{/cookiesAccepted}}
|
22
|
+
{{/gtmTagId}}
|
23
|
+
|
1
24
|
<meta name="format-detection" content="telephone=no">
|
2
25
|
<link rel="stylesheet" href="{{assetPath}}/css/app.css">
|
package/lib/ga-tag.js
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
const _ = require('lodash');
|
4
4
|
|
5
|
+
const convertToGTMPage = text => {
|
6
|
+
// Remove leading and trailing slashes
|
7
|
+
let str = text.replace(/^\/|\/$/g, '');
|
8
|
+
// Replace hyphens with spaces and capitalize each word
|
9
|
+
str = str.replace(/-+/g, ' ').replace(/(^|\s)\S/g, function (match) {
|
10
|
+
return match.toUpperCase();
|
11
|
+
});
|
12
|
+
return str;
|
13
|
+
};
|
14
|
+
|
5
15
|
const pageView = (path, pageMap) => pageMap.get(path) || path;
|
6
16
|
|
7
17
|
const createUris = routes => {
|
@@ -42,19 +52,35 @@ const setupPageMap = routes => {
|
|
42
52
|
module.exports = (app, config) => {
|
43
53
|
const gaTagId = config.gaTagId;
|
44
54
|
const ga4TagId = config.ga4TagId;
|
55
|
+
const gtm = config.gtm;
|
45
56
|
const gaCrossDomainTrackingTagId = config.gaCrossDomainTrackingTagId;
|
46
57
|
const routes = config.routes;
|
47
58
|
|
48
|
-
if (gaTagId || ga4TagId) {
|
59
|
+
if (gaTagId || ga4TagId || gtm.tagId) {
|
49
60
|
const pageMap = setupPageMap(routes);
|
50
61
|
|
51
62
|
app.use((req, res, next) => {
|
52
|
-
|
53
|
-
|
54
|
-
res.locals
|
55
|
-
|
56
|
-
|
57
|
-
|
63
|
+
const page = pageView(req.path, pageMap);
|
64
|
+
|
65
|
+
// Preparing common res.locals properties
|
66
|
+
const properties = {
|
67
|
+
gaAllowDebug: config.env === 'development',
|
68
|
+
gaTagId: gaTagId,
|
69
|
+
ga4TagId: ga4TagId,
|
70
|
+
gaCrossDomainTrackingTagId: gaCrossDomainTrackingTagId,
|
71
|
+
'ga-id': gaTagId,
|
72
|
+
'ga-page': page
|
73
|
+
};
|
74
|
+
|
75
|
+
// Adding extra properties if a GTM TAG is available
|
76
|
+
if (gtm.tagId) {
|
77
|
+
gtm.config.pageName = gtm.composePageName(page, convertToGTMPage);
|
78
|
+
Object.assign(properties, {
|
79
|
+
gtmConfig: JSON.stringify(gtm.config),
|
80
|
+
gtmTagId: gtm.tagId
|
81
|
+
});
|
82
|
+
}
|
83
|
+
res.locals = Object.assign(res.locals, properties);
|
58
84
|
next();
|
59
85
|
});
|
60
86
|
}
|
package/middleware/cookies.js
CHANGED
@@ -22,6 +22,8 @@ module.exports = options => {
|
|
22
22
|
const reqIsCookieCheckRedirect = req.query[paramName] !== undefined;
|
23
23
|
|
24
24
|
if (reqIncludesCookies || isHealthcheckUrl(req.path, healthcheckUrls)) {
|
25
|
+
const prefs = 'cookie_preferences' in req.cookies ? JSON.parse(req.cookies.cookie_preferences) : {};
|
26
|
+
res.locals.cookiesAccepted = Boolean(prefs.usage);
|
25
27
|
next();
|
26
28
|
} else if (req.cookies === undefined || (!Object.keys(req.cookies).length && reqIsCookieCheckRedirect)) {
|
27
29
|
const err = new Error('Cookies required');
|
@@ -1,9 +1,21 @@
|
|
1
1
|
'use strict';
|
2
|
-
const
|
2
|
+
const { format } = require('url'); // Destructure 'format' from 'url' module
|
3
3
|
|
4
|
-
module.exports = (settings, body) => {
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
module.exports = (settings = {}, body = null) => {
|
5
|
+
if (typeof settings !== 'object' || settings === null) {
|
6
|
+
throw new TypeError('settings must be a non-null object');
|
7
|
+
}
|
8
|
+
|
9
|
+
const {
|
10
|
+
uri,
|
11
|
+
url,
|
12
|
+
body: settingsBody,
|
13
|
+
data: settingsData,
|
14
|
+
...restSettings
|
15
|
+
} = settings;
|
16
|
+
|
17
|
+
return Object.assign({}, restSettings, {
|
18
|
+
url: uri || url || format(settings),
|
19
|
+
data: settingsBody || body || settingsData
|
8
20
|
});
|
9
|
-
}
|
21
|
+
};
|