@defra/forms-engine-plugin 4.7.2 → 4.8.0
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/.public/javascripts/shared.min.js +1 -1
- package/.public/javascripts/shared.min.js.map +1 -1
- package/.server/client/javascripts/geospatial-map.d.ts +6 -6
- package/.server/client/javascripts/geospatial-map.js +3 -3
- package/.server/client/javascripts/location-map.d.ts +1 -1
- package/.server/client/javascripts/location-map.js +1 -1
- package/.server/client/javascripts/map.d.ts +5 -1
- package/.server/client/javascripts/map.js +10 -2
- package/.server/client/javascripts/map.js.map +1 -1
- package/.server/client/javascripts/shared.d.ts +7 -7
- package/.server/server/index.d.ts +1 -1
- package/.server/server/plugins/crumb.d.ts +1 -1
- package/.server/server/plugins/engine/beta/form-context.d.ts +6 -6
- package/.server/server/plugins/engine/components/AutocompleteField.d.ts +4 -4
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +2 -2
- package/.server/server/plugins/engine/components/CheckboxesField.js +2 -2
- package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentBase.d.ts +5 -5
- package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -8
- package/.server/server/plugins/engine/components/DatePartsField.d.ts +11 -11
- package/.server/server/plugins/engine/components/DeclarationField.d.ts +3 -3
- package/.server/server/plugins/engine/components/Details.d.ts +1 -1
- package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +22 -22
- package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -4
- package/.server/server/plugins/engine/components/FileUploadField.d.ts +3 -3
- package/.server/server/plugins/engine/components/FormComponent.d.ts +10 -10
- package/.server/server/plugins/engine/components/GeospatialField.d.ts +6 -6
- package/.server/server/plugins/engine/components/HiddenField.d.ts +2 -2
- package/.server/server/plugins/engine/components/Html.d.ts +1 -1
- package/.server/server/plugins/engine/components/InsetText.d.ts +1 -1
- package/.server/server/plugins/engine/components/LatLongField.d.ts +22 -22
- package/.server/server/plugins/engine/components/List.d.ts +8 -8
- package/.server/server/plugins/engine/components/ListFormComponent.d.ts +10 -10
- package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +6 -6
- package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +14 -14
- package/.server/server/plugins/engine/components/Markdown.d.ts +1 -1
- package/.server/server/plugins/engine/components/MonthYearField.d.ts +11 -11
- package/.server/server/plugins/engine/components/MultilineTextField.d.ts +5 -5
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +1 -1
- package/.server/server/plugins/engine/components/NumberField.d.ts +3 -3
- package/.server/server/plugins/engine/components/OsGridRefField.d.ts +1 -1
- package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -12
- package/.server/server/plugins/engine/components/RadiosField.d.ts +1 -1
- package/.server/server/plugins/engine/components/SelectField.d.ts +4 -4
- package/.server/server/plugins/engine/components/SelectionControlField.d.ts +10 -10
- package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +4 -4
- package/.server/server/plugins/engine/components/TextField.d.ts +2 -2
- package/.server/server/plugins/engine/components/UkAddressField.d.ts +11 -11
- package/.server/server/plugins/engine/components/YesNoField.d.ts +2 -2
- package/.server/server/plugins/engine/components/helpers/__stubs__/geospatial.d.ts +1 -1
- package/.server/server/plugins/engine/components/helpers/components.d.ts +5 -5
- package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +1 -1
- package/.server/server/plugins/engine/components/index.d.ts +27 -27
- package/.server/server/plugins/engine/components/types.d.ts +1 -1
- package/.server/server/plugins/engine/configureEnginePlugin.d.ts +4 -4
- package/.server/server/plugins/engine/date-helper.d.ts +1 -1
- package/.server/server/plugins/engine/helpers.d.ts +8 -8
- package/.server/server/plugins/engine/index.d.ts +5 -5
- package/.server/server/plugins/engine/models/FormModel.d.ts +6 -6
- package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +6 -6
- package/.server/server/plugins/engine/models/index.d.ts +2 -2
- package/.server/server/plugins/engine/models/types.d.ts +4 -4
- package/.server/server/plugins/engine/options.d.ts +1 -1
- package/.server/server/plugins/engine/options.js +1 -1
- package/.server/server/plugins/engine/options.test.js +1 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.d.ts +4 -4
- package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +4 -4
- package/.server/server/plugins/engine/outputFormatters/index.d.ts +5 -5
- package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +4 -4
- package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +4 -4
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +8 -8
- package/.server/server/plugins/engine/pageControllers/PageController.d.ts +6 -6
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +8 -8
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +5 -5
- package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +4 -4
- package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +4 -4
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +5 -5
- package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +3 -3
- package/.server/server/plugins/engine/pageControllers/__stubs__/request.d.ts +2 -2
- package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +2 -2
- package/.server/server/plugins/engine/pageControllers/helpers/state.d.ts +5 -5
- package/.server/server/plugins/engine/pageControllers/helpers/state.js +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/state.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/index.d.ts +7 -7
- package/.server/server/plugins/engine/plugin.d.ts +1 -1
- package/.server/server/plugins/engine/routes/file-upload.d.ts +1 -1
- package/.server/server/plugins/engine/routes/index.d.ts +3 -3
- package/.server/server/plugins/engine/routes/payment-helper.d.ts +3 -3
- package/.server/server/plugins/engine/routes/payment-helper.js +2 -2
- package/.server/server/plugins/engine/routes/payment.js +5 -5
- package/.server/server/plugins/engine/routes/payment.test.js +1 -1
- package/.server/server/plugins/engine/routes/questions.d.ts +2 -2
- package/.server/server/plugins/engine/routes/repeaters/item-delete.d.ts +2 -2
- package/.server/server/plugins/engine/routes/repeaters/summary.d.ts +2 -2
- package/.server/server/plugins/engine/services/index.d.ts +3 -3
- package/.server/server/plugins/engine/services/notifyService.d.ts +4 -4
- package/.server/server/plugins/engine/services/uploadService.d.ts +2 -2
- package/.server/server/plugins/engine/services/uploadService.js +1 -1
- package/.server/server/plugins/engine/types/index.d.ts +10 -10
- package/.server/server/plugins/engine/types/schema.d.ts +1 -1
- package/.server/server/plugins/engine/types.d.ts +25 -16
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/engine/validationHelpers.d.ts +2 -2
- package/.server/server/plugins/engine/vision.d.ts +1 -1
- package/.server/server/plugins/map/index.d.ts +1 -1
- package/.server/server/plugins/map/index.js +1 -1
- package/.server/server/plugins/map/routes/get-os-token.d.ts +11 -1
- package/.server/server/plugins/map/routes/get-os-token.js +12 -2
- package/.server/server/plugins/map/routes/get-os-token.js.map +1 -1
- package/.server/server/plugins/map/routes/index.d.ts +4 -4
- package/.server/server/plugins/map/routes/index.js +3 -2
- package/.server/server/plugins/map/routes/index.js.map +1 -1
- package/.server/server/plugins/map/routes/vts/esri-aerial.json +23 -0
- package/.server/server/plugins/map/service.d.ts +1 -1
- package/.server/server/plugins/map/service.js +5 -2
- package/.server/server/plugins/map/service.js.map +1 -1
- package/.server/server/plugins/map/test/__stubs__/find.d.ts +1 -1
- package/.server/server/plugins/map/test/__stubs__/find.js +1 -1
- package/.server/server/plugins/nunjucks/context.d.ts +2 -2
- package/.server/server/plugins/nunjucks/context.js +2 -2
- package/.server/server/plugins/nunjucks/context.test.js +1 -1
- package/.server/server/plugins/nunjucks/enviroment.test.js +1 -1
- package/.server/server/plugins/nunjucks/environment.d.ts +3 -3
- package/.server/server/plugins/nunjucks/environment.js +3 -3
- package/.server/server/plugins/nunjucks/filters/answer.d.ts +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
- package/.server/server/plugins/nunjucks/filters/answer.test.js +1 -1
- package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +1 -1
- package/.server/server/plugins/nunjucks/filters/evaluate.js +1 -1
- package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
- package/.server/server/plugins/nunjucks/filters/field.js +1 -1
- package/.server/server/plugins/nunjucks/filters/field.test.js +1 -1
- package/.server/server/plugins/nunjucks/filters/href.d.ts +1 -1
- package/.server/server/plugins/nunjucks/filters/href.js +1 -1
- package/.server/server/plugins/nunjucks/filters/href.test.js +1 -1
- package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -8
- package/.server/server/plugins/nunjucks/filters/page.d.ts +1 -1
- package/.server/server/plugins/nunjucks/filters/page.js +1 -1
- package/.server/server/plugins/nunjucks/filters/page.test.js +1 -1
- package/.server/server/plugins/nunjucks/index.d.ts +3 -3
- package/.server/server/plugins/nunjucks/render.d.ts +2 -2
- package/.server/server/plugins/nunjucks/render.js +1 -1
- package/.server/server/plugins/nunjucks/types.d.ts +1 -1
- package/.server/server/plugins/nunjucks/types.js +1 -1
- package/.server/server/plugins/payment/helper.d.ts +2 -2
- package/.server/server/plugins/payment/helper.js +1 -1
- package/.server/server/plugins/payment/service.d.ts +3 -3
- package/.server/server/plugins/payment/service.js +1 -1
- package/.server/server/plugins/postcode-lookup/index.d.ts +1 -1
- package/.server/server/plugins/postcode-lookup/index.js +1 -1
- package/.server/server/plugins/postcode-lookup/models/index.d.ts +6 -6
- package/.server/server/plugins/postcode-lookup/models/index.js +1 -1
- package/.server/server/plugins/postcode-lookup/routes/index.d.ts +6 -6
- package/.server/server/plugins/postcode-lookup/routes/index.js +15 -15
- package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/service.d.ts +1 -1
- package/.server/server/plugins/postcode-lookup/service.js +5 -2
- package/.server/server/plugins/postcode-lookup/service.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/types.js +1 -1
- package/.server/server/routes/index.d.ts +2 -2
- package/.server/server/routes/types.d.ts +1 -1
- package/.server/server/schemas/index.d.ts +2 -2
- package/.server/server/services/cacheService.d.ts +8 -8
- package/.server/server/services/cacheService.js +2 -5
- package/.server/server/services/cacheService.js.map +1 -1
- package/.server/server/services/httpService.test.js +1 -1
- package/.server/server/services/index.d.ts +1 -1
- package/.server/server/types.d.ts +7 -7
- package/.server/server/utils/file-form-service.d.ts +2 -2
- package/.server/server/utils/file-form-service.js +1 -1
- package/package.json +8 -4
- package/src/client/javascripts/application.js +1 -1
- package/src/client/javascripts/geospatial-map.js +4 -4
- package/src/client/javascripts/location-map.js +2 -2
- package/src/client/javascripts/map.js +13 -4
- package/src/client/javascripts/shared.js +7 -7
- package/src/index.ts +3 -3
- package/src/server/common/helpers/logging/logger-options.ts +1 -1
- package/src/server/common/helpers/logging/logger.ts +1 -1
- package/src/server/common/helpers/logging/request-logger.ts +1 -1
- package/src/server/common/helpers/logging/request-tracing.js +1 -1
- package/src/server/common/helpers/redis-client.js +2 -2
- package/src/server/index.ts +13 -13
- package/src/server/plugins/crumb.ts +2 -2
- package/src/server/plugins/engine/beta/form-context.ts +9 -9
- package/src/server/plugins/engine/components/AutocompleteField.ts +3 -3
- package/src/server/plugins/engine/components/CheckboxesField.ts +7 -8
- package/src/server/plugins/engine/components/ComponentBase.ts +5 -5
- package/src/server/plugins/engine/components/ComponentCollection.ts +9 -9
- package/src/server/plugins/engine/components/DatePartsField.ts +8 -8
- package/src/server/plugins/engine/components/DeclarationField.ts +3 -3
- package/src/server/plugins/engine/components/Details.ts +1 -1
- package/src/server/plugins/engine/components/EastingNorthingField.ts +9 -9
- package/src/server/plugins/engine/components/EmailAddressField.ts +3 -3
- package/src/server/plugins/engine/components/FileUploadField.ts +6 -6
- package/src/server/plugins/engine/components/FormComponent.ts +4 -4
- package/src/server/plugins/engine/components/GeospatialField.ts +5 -5
- package/src/server/plugins/engine/components/HiddenField.ts +4 -4
- package/src/server/plugins/engine/components/Html.ts +1 -1
- package/src/server/plugins/engine/components/InsetText.ts +1 -1
- package/src/server/plugins/engine/components/LatLongField.ts +9 -9
- package/src/server/plugins/engine/components/List.ts +2 -2
- package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
- package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -5
- package/src/server/plugins/engine/components/LocationFieldHelpers.ts +5 -5
- package/src/server/plugins/engine/components/Markdown.ts +1 -1
- package/src/server/plugins/engine/components/MonthYearField.ts +8 -8
- package/src/server/plugins/engine/components/MultilineTextField.ts +4 -4
- package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +2 -2
- package/src/server/plugins/engine/components/NumberField.ts +3 -3
- package/src/server/plugins/engine/components/OsGridRefField.ts +2 -2
- package/src/server/plugins/engine/components/PaymentField.ts +8 -8
- package/src/server/plugins/engine/components/RadiosField.ts +1 -1
- package/src/server/plugins/engine/components/SelectField.ts +2 -2
- package/src/server/plugins/engine/components/SelectionControlField.ts +4 -4
- package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -4
- package/src/server/plugins/engine/components/TextField.ts +3 -3
- package/src/server/plugins/engine/components/UkAddressField.ts +7 -7
- package/src/server/plugins/engine/components/YesNoField.ts +5 -5
- package/src/server/plugins/engine/components/helpers/__stubs__/geospatial.ts +1 -1
- package/src/server/plugins/engine/components/helpers/components.ts +8 -8
- package/src/server/plugins/engine/components/helpers/geospatial.ts +1 -1
- package/src/server/plugins/engine/components/index.ts +27 -27
- package/src/server/plugins/engine/components/types.ts +1 -1
- package/src/server/plugins/engine/configureEnginePlugin.ts +10 -10
- package/src/server/plugins/engine/date-helper.ts +1 -1
- package/src/server/plugins/engine/helpers.ts +8 -8
- package/src/server/plugins/engine/index.ts +8 -8
- package/src/server/plugins/engine/models/FormModel.ts +15 -15
- package/src/server/plugins/engine/models/SummaryViewModel.ts +10 -10
- package/src/server/plugins/engine/models/index.ts +2 -2
- package/src/server/plugins/engine/models/types.ts +4 -4
- package/src/server/plugins/engine/options.js +3 -3
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +6 -6
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +9 -9
- package/src/server/plugins/engine/outputFormatters/index.ts +8 -8
- package/src/server/plugins/engine/outputFormatters/machine/v1.ts +7 -7
- package/src/server/plugins/engine/outputFormatters/machine/v2.ts +6 -6
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +9 -9
- package/src/server/plugins/engine/pageControllers/PageController.ts +7 -7
- package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +13 -13
- package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +6 -6
- package/src/server/plugins/engine/pageControllers/StartPageController.ts +3 -3
- package/src/server/plugins/engine/pageControllers/StatusPageController.ts +5 -5
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +12 -12
- package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +3 -3
- package/src/server/plugins/engine/pageControllers/__stubs__/request.ts +3 -3
- package/src/server/plugins/engine/pageControllers/__stubs__/server.ts +2 -2
- package/src/server/plugins/engine/pageControllers/errors.ts +1 -1
- package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -2
- package/src/server/plugins/engine/pageControllers/helpers/state.ts +9 -9
- package/src/server/plugins/engine/pageControllers/helpers/submission.ts +5 -5
- package/src/server/plugins/engine/pageControllers/index.ts +7 -7
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +1 -1
- package/src/server/plugins/engine/plugin.ts +14 -14
- package/src/server/plugins/engine/routes/file-upload.ts +2 -2
- package/src/server/plugins/engine/routes/index.ts +10 -10
- package/src/server/plugins/engine/routes/payment-helper.js +4 -4
- package/src/server/plugins/engine/routes/payment.js +9 -9
- package/src/server/plugins/engine/routes/questions.ts +10 -10
- package/src/server/plugins/engine/routes/repeaters/item-delete.ts +6 -6
- package/src/server/plugins/engine/routes/repeaters/summary.ts +5 -5
- package/src/server/plugins/engine/services/formSubmissionService.js +2 -2
- package/src/server/plugins/engine/services/index.js +3 -3
- package/src/server/plugins/engine/services/localFormsService.js +2 -2
- package/src/server/plugins/engine/services/notifyService.ts +9 -9
- package/src/server/plugins/engine/services/uploadService.js +3 -3
- package/src/server/plugins/engine/types/index.ts +10 -10
- package/src/server/plugins/engine/types/schema.ts +2 -2
- package/src/server/plugins/engine/types.ts +22 -17
- package/src/server/plugins/engine/validationHelpers.ts +3 -3
- package/src/server/plugins/engine/vision.ts +3 -3
- package/src/server/plugins/map/index.js +2 -2
- package/src/server/plugins/map/routes/get-os-token.js +15 -3
- package/src/server/plugins/map/routes/index.js +7 -5
- package/src/server/plugins/map/routes/vts/esri-aerial.json +23 -0
- package/src/server/plugins/map/service.js +7 -4
- package/src/server/plugins/map/test/__stubs__/find.js +1 -1
- package/src/server/plugins/nunjucks/context.js +5 -5
- package/src/server/plugins/nunjucks/environment.js +6 -6
- package/src/server/plugins/nunjucks/filters/answer.js +3 -3
- package/src/server/plugins/nunjucks/filters/evaluate.js +2 -2
- package/src/server/plugins/nunjucks/filters/field.js +1 -1
- package/src/server/plugins/nunjucks/filters/href.js +2 -2
- package/src/server/plugins/nunjucks/filters/index.js +8 -8
- package/src/server/plugins/nunjucks/filters/page.js +1 -1
- package/src/server/plugins/nunjucks/index.js +3 -3
- package/src/server/plugins/nunjucks/plugin.js +3 -3
- package/src/server/plugins/nunjucks/render.js +2 -2
- package/src/server/plugins/nunjucks/types.js +1 -1
- package/src/server/plugins/payment/helper.js +2 -2
- package/src/server/plugins/payment/service.js +4 -4
- package/src/server/plugins/postcode-lookup/index.js +2 -2
- package/src/server/plugins/postcode-lookup/models/index.js +3 -3
- package/src/server/plugins/postcode-lookup/routes/index.js +24 -14
- package/src/server/plugins/postcode-lookup/service.js +7 -4
- package/src/server/plugins/postcode-lookup/types.js +1 -1
- package/src/server/plugins/session.ts +1 -1
- package/src/server/routes/index.ts +2 -2
- package/src/server/routes/public.ts +1 -1
- package/src/server/routes/types.ts +1 -1
- package/src/server/schemas/index.ts +2 -2
- package/src/server/secure-context.js +1 -1
- package/src/server/services/cacheService.ts +13 -18
- package/src/server/services/httpService.ts +1 -1
- package/src/server/services/index.ts +1 -1
- package/src/server/types.ts +7 -7
- package/src/server/utils/notify.ts +2 -2
- package/src/server/utils/utils.js +1 -1
- package/src/typings/hapi/index.d.ts +4 -4
- package/src/typings/joi/index.d.ts +1 -1
- package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
- package/src/server/index.test.ts +0 -644
- package/src/server/plugins/engine/beta/form-context.test.ts +0 -373
- package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -362
- package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -486
- package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -927
- package/src/server/plugins/engine/components/DeclarationField.test.ts +0 -560
- package/src/server/plugins/engine/components/Details.test.ts +0 -49
- package/src/server/plugins/engine/components/EastingNorthingField.test.ts +0 -727
- package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -445
- package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -1079
- package/src/server/plugins/engine/components/GeospatialField.test.ts +0 -380
- package/src/server/plugins/engine/components/HiddenField.test.ts +0 -188
- package/src/server/plugins/engine/components/Html.test.ts +0 -48
- package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
- package/src/server/plugins/engine/components/LatLongField.test.ts +0 -898
- package/src/server/plugins/engine/components/List.test.ts +0 -79
- package/src/server/plugins/engine/components/LocationFieldBase.test.ts +0 -253
- package/src/server/plugins/engine/components/LocationFieldHelpers.test.ts +0 -743
- package/src/server/plugins/engine/components/Markdown.test.ts +0 -48
- package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -617
- package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -647
- package/src/server/plugins/engine/components/NationalGridFieldNumberField.test.ts +0 -449
- package/src/server/plugins/engine/components/NumberField.test.ts +0 -723
- package/src/server/plugins/engine/components/OsGridRefField.test.ts +0 -460
- package/src/server/plugins/engine/components/PaymentField.test.ts +0 -745
- package/src/server/plugins/engine/components/RadiosField.test.ts +0 -297
- package/src/server/plugins/engine/components/SelectField.test.ts +0 -289
- package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -384
- package/src/server/plugins/engine/components/TextField.test.ts +0 -521
- package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -806
- package/src/server/plugins/engine/components/YesNoField.test.ts +0 -256
- package/src/server/plugins/engine/components/helpers/components.test.ts +0 -399
- package/src/server/plugins/engine/components/helpers/geospatial.test.js +0 -55
- package/src/server/plugins/engine/components/helpers/helpers.test.ts +0 -219
- package/src/server/plugins/engine/date-helper.test.ts +0 -47
- package/src/server/plugins/engine/helpers.test.ts +0 -868
- package/src/server/plugins/engine/models/FormModel.test.ts +0 -725
- package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -472
- package/src/server/plugins/engine/options.test.js +0 -63
- package/src/server/plugins/engine/outputFormatters/adapter/v1.location.test.ts +0 -356
- package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +0 -871
- package/src/server/plugins/engine/outputFormatters/human/v1.payment.test.ts +0 -147
- package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -145
- package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
- package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -268
- package/src/server/plugins/engine/outputFormatters/machine/v2.location.test.ts +0 -341
- package/src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts +0 -115
- package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -311
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1372
- package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -246
- package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1686
- package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -279
- package/src/server/plugins/engine/pageControllers/StartPageController.test.ts +0 -32
- package/src/server/plugins/engine/pageControllers/StatusPageController.test.ts +0 -32
- package/src/server/plugins/engine/pageControllers/SummaryPageController.test.ts +0 -89
- package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -37
- package/src/server/plugins/engine/pageControllers/errors.test.ts +0 -78
- package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +0 -182
- package/src/server/plugins/engine/pageControllers/helpers/state.test.ts +0 -359
- package/src/server/plugins/engine/pageControllers/helpers/submission.test.ts +0 -373
- package/src/server/plugins/engine/referenceNumbers.test.ts +0 -74
- package/src/server/plugins/engine/routes/index.test.ts +0 -332
- package/src/server/plugins/engine/routes/payment-helper.test.js +0 -136
- package/src/server/plugins/engine/routes/payment.test.js +0 -180
- package/src/server/plugins/engine/routes/questions.test.ts +0 -502
- package/src/server/plugins/engine/routes/repeaters/item-delete.test.ts +0 -83
- package/src/server/plugins/engine/routes/repeaters/summary.test.ts +0 -75
- package/src/server/plugins/engine/services/formsService.test.js +0 -26
- package/src/server/plugins/engine/services/notifyService.test.ts +0 -310
- package/src/server/plugins/engine/types/schema.test.ts +0 -234
- package/src/server/plugins/engine/views/components/service-banner/template.test.js +0 -43
- package/src/server/plugins/engine/views/components/tag-env/template.test.js +0 -28
- package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
- package/src/server/plugins/map/routes/get-os-token.test.js +0 -55
- package/src/server/plugins/map/service.test.js +0 -144
- package/src/server/plugins/nunjucks/context.test.js +0 -109
- package/src/server/plugins/nunjucks/enviroment.test.js +0 -207
- package/src/server/plugins/nunjucks/filters/answer.test.js +0 -92
- package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
- package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
- package/src/server/plugins/nunjucks/filters/merge.test.js +0 -15
- package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
- package/src/server/plugins/payment/helper.test.js +0 -29
- package/src/server/plugins/payment/service.test.js +0 -218
- package/src/server/plugins/postcode-lookup/service.test.js +0 -177
- package/src/server/postcode-lookup.test.ts +0 -64
- package/src/server/routes/dummy-api.test.ts +0 -97
- package/src/server/services/cacheService.test.ts +0 -308
- package/src/server/services/httpService.test.js +0 -491
- package/src/server/utils/file-form-service.test.js +0 -127
- package/src/server/utils/notify.test.ts +0 -37
- package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
- package/src/server/utils/utils.test.js +0 -69
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Server } from '@hapi/hapi';
|
|
2
|
-
import { type AnyFormRequest, type
|
|
2
|
+
import { type AnyFormRequest, type CacheRequest, type FormConfirmationState, type FormPayload, type FormState, type FormSubmissionError, type FormSubmissionState } from '../../server/plugins/engine/types.js';
|
|
3
3
|
export declare enum ADDITIONAL_IDENTIFIER {
|
|
4
4
|
Confirmation = ":confirmation"
|
|
5
5
|
}
|
|
@@ -16,11 +16,11 @@ export declare class CacheService {
|
|
|
16
16
|
server: Server;
|
|
17
17
|
cacheName?: string;
|
|
18
18
|
});
|
|
19
|
-
getState(request:
|
|
20
|
-
setState(request:
|
|
21
|
-
getConfirmationState(request:
|
|
22
|
-
setConfirmationState(request:
|
|
23
|
-
clearState(request:
|
|
19
|
+
getState(request: CacheRequest): Promise<FormSubmissionState>;
|
|
20
|
+
setState(request: CacheRequest, state: FormSubmissionState): Promise<FormSubmissionState>;
|
|
21
|
+
getConfirmationState(request: CacheRequest): Promise<FormConfirmationState>;
|
|
22
|
+
setConfirmationState(request: CacheRequest, confirmationState: FormConfirmationState): Promise<void>;
|
|
23
|
+
clearState(request: CacheRequest): Promise<void>;
|
|
24
24
|
getFlash(request: AnyFormRequest): {
|
|
25
25
|
errors: FormSubmissionError[];
|
|
26
26
|
} | undefined;
|
|
@@ -50,14 +50,14 @@ export declare class CacheService {
|
|
|
50
50
|
* ```
|
|
51
51
|
* @returns The updated state after removal
|
|
52
52
|
*/
|
|
53
|
-
resetComponentStates(request:
|
|
53
|
+
resetComponentStates(request: CacheRequest, componentNames: string[]): Promise<FormSubmissionState>;
|
|
54
54
|
/**
|
|
55
55
|
* The key used to store user session data against.
|
|
56
56
|
* If there are multiple forms on the same runner instance, for example `form-a` and `form-a-feedback` this will prevent CacheService from clearing data from `form-a` if a user gave feedback before they finished `form-a`
|
|
57
57
|
* @param request - hapi request object
|
|
58
58
|
* @param additionalIdentifier - appended to the id
|
|
59
59
|
*/
|
|
60
|
-
Key(request:
|
|
60
|
+
Key(request: CacheRequest, additionalIdentifier?: ADDITIONAL_IDENTIFIER): {
|
|
61
61
|
segment: string;
|
|
62
62
|
id: string;
|
|
63
63
|
};
|
|
@@ -104,11 +104,8 @@ export class CacheService {
|
|
|
104
104
|
if (!request.yar.id) {
|
|
105
105
|
throw new Error('No session ID found');
|
|
106
106
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const state = request.params.state || '';
|
|
110
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
111
|
-
const slug = request.params.slug || '';
|
|
107
|
+
const state = request.params.state ?? '';
|
|
108
|
+
const slug = request.params.slug ?? '';
|
|
112
109
|
const key = `${request.yar.id}:${state}:${slug}:`;
|
|
113
110
|
return {
|
|
114
111
|
segment: partition,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheService.js","names":["Hoek","unset","config","partition","ADDITIONAL_IDENTIFIER","CacheService","cache","logger","constructor","server","cacheName","log","segment","getState","request","key","Key","cached","get","setState","state","ttl","set","getConfirmationState","Confirmation","value","setConfirmationState","confirmationState","clearState","yar","id","drop","getFlash","messages","flash","Array","isArray","length","at","setFlash","message","resetComponentStates","componentNames","componentName","additionalIdentifier","Error","params","slug","merge","update","mergeArrays"],"sources":["../../../src/server/services/cacheService.ts"],"sourcesContent":["import { type Server } from '@hapi/hapi'\nimport * as Hoek from '@hapi/hoek'\nimport unset from 'lodash/unset.js'\n\nimport { config } from '~/src/config/index.js'\nimport { type createServer } from '~/src/server/index.js'\nimport {\n type AnyFormRequest,\n type
|
|
1
|
+
{"version":3,"file":"cacheService.js","names":["Hoek","unset","config","partition","ADDITIONAL_IDENTIFIER","CacheService","cache","logger","constructor","server","cacheName","log","segment","getState","request","key","Key","cached","get","setState","state","ttl","set","getConfirmationState","Confirmation","value","setConfirmationState","confirmationState","clearState","yar","id","drop","getFlash","messages","flash","Array","isArray","length","at","setFlash","message","resetComponentStates","componentNames","componentName","additionalIdentifier","Error","params","slug","merge","update","mergeArrays"],"sources":["../../../src/server/services/cacheService.ts"],"sourcesContent":["import { type Server } from '@hapi/hapi'\nimport * as Hoek from '@hapi/hoek'\nimport unset from 'lodash/unset.js'\n\nimport { config } from '~/src/config/index.js'\nimport { type createServer } from '~/src/server/index.js'\nimport {\n type AnyFormRequest,\n type CacheRequest,\n type FormConfirmationState,\n type FormPayload,\n type FormState,\n type FormSubmissionError,\n type FormSubmissionState\n} from '~/src/server/plugins/engine/types.js'\n\nconst partition = 'cache'\n\nexport enum ADDITIONAL_IDENTIFIER {\n Confirmation = ':confirmation'\n}\n\nexport class CacheService {\n /**\n * This service is responsible for getting, storing or deleting a user's session data in the cache. This service has been registered by {@link createServer}\n */\n cache\n logger: Server['logger']\n\n constructor({ server, cacheName }: { server: Server; cacheName?: string }) {\n if (!cacheName) {\n server.log(\n 'warn',\n 'You are using the default hapi cache. Please provide a cache name in plugin registration options.'\n )\n }\n\n this.cache = server.cache({ cache: cacheName, segment: 'formSubmission' })\n this.logger = server.logger\n }\n\n async getState(request: CacheRequest): Promise<FormSubmissionState> {\n const key = this.Key(request)\n const cached = await this.cache.get(key)\n\n return cached ?? {}\n }\n\n async setState(request: CacheRequest, state: FormSubmissionState) {\n const key = this.Key(request)\n const ttl = config.get('sessionTimeout')\n\n await this.cache.set(key, state, ttl)\n\n return this.getState(request)\n }\n\n async getConfirmationState(\n request: CacheRequest\n ): Promise<FormConfirmationState> {\n const key = this.Key(request, ADDITIONAL_IDENTIFIER.Confirmation)\n const value = await this.cache.get(key)\n\n return value ?? {}\n }\n\n async setConfirmationState(\n request: CacheRequest,\n confirmationState: FormConfirmationState\n ) {\n const key = this.Key(request, ADDITIONAL_IDENTIFIER.Confirmation)\n const ttl = config.get('confirmationSessionTimeout')\n\n return this.cache.set(key, confirmationState, ttl)\n }\n\n async clearState(request: CacheRequest) {\n if (request.yar.id) {\n await this.cache.drop(this.Key(request))\n }\n }\n\n getFlash(\n request: AnyFormRequest\n ): { errors: FormSubmissionError[] } | undefined {\n const key = this.Key(request)\n const messages = request.yar.flash(key.id)\n\n if (Array.isArray(messages) && messages.length) {\n return messages.at(0)\n }\n }\n\n setFlash(\n request: AnyFormRequest,\n message: { errors: FormSubmissionError[] }\n ) {\n const key = this.Key(request)\n\n request.yar.flash(key.id, message)\n }\n\n /**\n * Resets (removes) component states from the form state by their keys.\n * Supports both flat keys and nested paths.\n * @param request - The Hapi request object\n * @param componentNames - Array of state keys to remove. Uses lodash's unset syntax. Can be:\n * - Flat keys: `'componentName'` for top-level state\n * - Nested paths: `\"upload['/my-page']\"` or `'upload./my-page'` for nested state\n * @example\n * ```typescript\n * // Remove a flat component state\n * await cacheService.resetComponentStates(request, ['emailAddress'])\n *\n * // Remove nested upload state for a specific page\n * await cacheService.resetComponentStates(request, [\"upload['/file-upload-page']\"])\n *\n * // Remove multiple states at once\n * await cacheService.resetComponentStates(request, [\n * 'componentName',\n * \"upload['/my-page']\"\n * ])\n * ```\n * @returns The updated state after removal\n */\n async resetComponentStates(request: CacheRequest, componentNames: string[]) {\n const state = await this.getState(request)\n\n for (const componentName of componentNames) {\n unset(state, componentName)\n }\n\n return this.setState(request, state)\n }\n\n /**\n * The key used to store user session data against.\n * If there are multiple forms on the same runner instance, for example `form-a` and `form-a-feedback` this will prevent CacheService from clearing data from `form-a` if a user gave feedback before they finished `form-a`\n * @param request - hapi request object\n * @param additionalIdentifier - appended to the id\n */\n Key(request: CacheRequest, additionalIdentifier?: ADDITIONAL_IDENTIFIER) {\n if (!request.yar.id) {\n throw new Error('No session ID found')\n }\n\n const state = request.params.state ?? ''\n const slug = request.params.slug ?? ''\n const key = `${request.yar.id}:${state}:${slug}:`\n\n return {\n segment: partition,\n id: `${key}${additionalIdentifier ?? ''}`\n }\n }\n}\n\n/**\n * State merge helper\n * 1. Merges objects (form fields)\n * 2. Overwrites arrays\n */\nexport function merge<StateType extends FormState | FormPayload>(\n state: StateType,\n update: object\n): StateType {\n return Hoek.merge(state, update, {\n mergeArrays: false\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -499,6 +499,6 @@ describe('HTTP service', () => {
|
|
|
499
499
|
|
|
500
500
|
/**
|
|
501
501
|
* @import { IncomingMessage } from 'node:http'
|
|
502
|
-
* @import { RequestOptions } from '
|
|
502
|
+
* @import { RequestOptions } from '../../server/services/httpService.js'
|
|
503
503
|
*/
|
|
504
504
|
//# sourceMappingURL=httpService.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { CacheService } from '
|
|
1
|
+
export { CacheService } from '../../server/services/cacheService.js';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type FormDefinition, type FormMetadata, type SubmitPayload, type SubmitResponsePayload } from '@defra/forms-model';
|
|
2
2
|
import { type Server } from '@hapi/hapi';
|
|
3
|
-
import { type FormModel } from '
|
|
4
|
-
import { type DetailItem } from '
|
|
5
|
-
import { type PageController } from '
|
|
6
|
-
import { type FormContext, type OnRequestCallback, type PluginOptions, type PreparePageEventRequestOptions } from '
|
|
7
|
-
import { type PaymentService } from '
|
|
8
|
-
import { type FormRequestPayload, type FormStatus } from '
|
|
9
|
-
import { type CacheService } from '
|
|
3
|
+
import { type FormModel } from '../server/plugins/engine/models/index.js';
|
|
4
|
+
import { type DetailItem } from '../server/plugins/engine/models/types.js';
|
|
5
|
+
import { type PageController } from '../server/plugins/engine/pageControllers/PageController.js';
|
|
6
|
+
import { type FormContext, type OnRequestCallback, type PluginOptions, type PreparePageEventRequestOptions } from '../server/plugins/engine/types.js';
|
|
7
|
+
import { type PaymentService } from '../server/plugins/payment/service.js';
|
|
8
|
+
import { type FormRequestPayload, type FormStatus } from '../server/routes/types.js';
|
|
9
|
+
import { type CacheService } from '../server/services/cacheService.js';
|
|
10
10
|
export interface FormsService {
|
|
11
11
|
getFormMetadata: (slug: string) => Promise<FormMetadata>;
|
|
12
12
|
getFormMetadataById: (id: string) => Promise<FormMetadata>;
|
|
@@ -47,9 +47,9 @@ export class FileFormService {
|
|
|
47
47
|
getFormDefinition(id: string): FormDefinition;
|
|
48
48
|
/**
|
|
49
49
|
* Returns a FormsService compliant interface
|
|
50
|
-
* @returns {import('
|
|
50
|
+
* @returns {import('../../server/types.js').FormsService}
|
|
51
51
|
*/
|
|
52
|
-
toFormsService(): import("
|
|
52
|
+
toFormsService(): import("../../server/types.js").FormsService;
|
|
53
53
|
#private;
|
|
54
54
|
}
|
|
55
55
|
import type { FormMetadata } from '@defra/forms-model';
|
|
@@ -117,7 +117,7 @@ export class FileFormService {
|
|
|
117
117
|
|
|
118
118
|
/**
|
|
119
119
|
* Returns a FormsService compliant interface
|
|
120
|
-
* @returns {import('
|
|
120
|
+
* @returns {import('../../server/types.js').FormsService}
|
|
121
121
|
*/
|
|
122
122
|
toFormsService() {
|
|
123
123
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@defra/forms-engine-plugin",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.0",
|
|
4
4
|
"description": "Defra forms engine",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -35,10 +35,11 @@
|
|
|
35
35
|
"./package.json": "./package.json"
|
|
36
36
|
},
|
|
37
37
|
"scripts": {
|
|
38
|
-
"build": "rm -rf ./.server && npm run build:server && npm run build:client && npm run build:types",
|
|
38
|
+
"build": "rm -rf ./.server ./.src && npm run build:server && npm run build:client && npm run build:types && npm run build:src",
|
|
39
39
|
"build:client": "NODE_ENV=${NODE_ENV:-production} webpack",
|
|
40
40
|
"build:server": "babel --delete-dir-on-start --extensions \".js\",\".ts\" --ignore \"**/*.test.ts\" --copy-files --no-copy-ignored --source-maps --out-dir ./.server ./src",
|
|
41
|
-
"build:
|
|
41
|
+
"build:src": "node scripts/resolve-tilde-imports.js",
|
|
42
|
+
"build:types": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.alias.json",
|
|
42
43
|
"dev": "concurrently \"npm run client:watch\" \"npm run server:watch:dev\" --kill-others --names \"client,server\" --prefix-colors \"red.dim,blue.dim\"",
|
|
43
44
|
"dev:debug": "concurrently \"npm run client:watch\" \"npm run server:watch:debug\" --kill-others --names \"client,server\" --prefix-colors \"red.dim,blue.dim\"",
|
|
44
45
|
"format": "npm run format:check -- --write",
|
|
@@ -50,10 +51,12 @@
|
|
|
50
51
|
"docs:clear": "docusaurus clear",
|
|
51
52
|
"generate-schema-docs": "node scripts/generate-schema-docs.js",
|
|
52
53
|
"postinstall": "npm run setup:husky",
|
|
54
|
+
"postpack": "mv src .src && mv .src.bak src",
|
|
55
|
+
"prepack": "mv src .src.bak && mv .src src",
|
|
53
56
|
"lint": "npm run lint:editorconfig && npm run lint:js && npm run lint:types",
|
|
54
57
|
"lint:editorconfig": "editorconfig-checker",
|
|
55
58
|
"lint:fix": "npm run lint:js -- --fix",
|
|
56
|
-
"lint:js": "eslint --cache --cache-location .cache/eslint --cache-strategy content --color .",
|
|
59
|
+
"lint:js": "node --max-old-space-size=8192 ./node_modules/.bin/eslint --cache --cache-location .cache/eslint --cache-strategy content --color .",
|
|
57
60
|
"lint:scss": "stylelint --cache --cache-location .cache/stylelint --cache-strategy content --color --ignore-path .gitignore --max-warnings 0 \"**/*.scss\"",
|
|
58
61
|
"lint:types": "tsc --noEmit",
|
|
59
62
|
"test": "jest --color --coverage --verbose",
|
|
@@ -209,6 +212,7 @@
|
|
|
209
212
|
"stylelint": "^16.25.0",
|
|
210
213
|
"stylelint-config-gds": "^2.0.0",
|
|
211
214
|
"terser-webpack-plugin": "^5.3.14",
|
|
215
|
+
"tsc-alias": "^1.8.16",
|
|
212
216
|
"tsx": "^4.20.6",
|
|
213
217
|
"typescript": "^5.9.3",
|
|
214
218
|
"typescript-eslint": "^8.56.1",
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
defaultConfig,
|
|
7
7
|
getCentroidGridRef,
|
|
8
8
|
getCoordinateGridRef
|
|
9
|
-
} from '
|
|
9
|
+
} from './map.js'
|
|
10
10
|
|
|
11
11
|
const helpPanelConfig = {
|
|
12
12
|
showLabel: true,
|
|
@@ -934,11 +934,11 @@ function onListElKeydownFactory() {
|
|
|
934
934
|
}
|
|
935
935
|
|
|
936
936
|
/**
|
|
937
|
-
* @import { MapsEnvironmentConfig, InteractiveMap } from '
|
|
937
|
+
* @import { MapsEnvironmentConfig, InteractiveMap } from './map.js'
|
|
938
938
|
*/
|
|
939
939
|
|
|
940
940
|
/**
|
|
941
|
-
* @import { Geometry, FeatureCollection, Feature, Coordinates } from '
|
|
941
|
+
* @import { Geometry, FeatureCollection, Feature, Coordinates } from '../../server/plugins/engine/types.js'
|
|
942
942
|
*/
|
|
943
943
|
|
|
944
944
|
/**
|
|
@@ -1062,5 +1062,5 @@ function onListElKeydownFactory() {
|
|
|
1062
1062
|
*/
|
|
1063
1063
|
|
|
1064
1064
|
/**
|
|
1065
|
-
* @import { MapLibreMap } from '
|
|
1065
|
+
* @import { MapLibreMap } from './map.js'
|
|
1066
1066
|
*/
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
latLongToEastingNorthing,
|
|
8
8
|
latLongToOsGridRef,
|
|
9
9
|
osGridRefToLatLong
|
|
10
|
-
} from '
|
|
10
|
+
} from './map.js'
|
|
11
11
|
|
|
12
12
|
const LOCATION_FIELD_SELECTOR = 'input.govuk-input'
|
|
13
13
|
|
|
@@ -474,5 +474,5 @@ export function processLocation(config, location, index) {
|
|
|
474
474
|
}
|
|
475
475
|
|
|
476
476
|
/**
|
|
477
|
-
* @import { InteractiveMap, InteractiveMapInitConfig, MapCenter, MapLibreMap, MapsEnvironmentConfig } from '
|
|
477
|
+
* @import { InteractiveMap, InteractiveMapInitConfig, MapCenter, MapLibreMap, MapsEnvironmentConfig } from './map.js'
|
|
478
478
|
*/
|
|
@@ -2,8 +2,8 @@ import { centroid } from '@turf/centroid'
|
|
|
2
2
|
// @ts-expect-error - no types
|
|
3
3
|
import OsGridRef, { LatLon } from 'geodesy/osgridref.js'
|
|
4
4
|
|
|
5
|
-
import { processGeospatial } from '
|
|
6
|
-
import { processLocation } from '
|
|
5
|
+
import { processGeospatial } from './geospatial-map.js'
|
|
6
|
+
import { processLocation } from './location-map.js'
|
|
7
7
|
|
|
8
8
|
// Center of UK
|
|
9
9
|
const DEFAULT_LAT = 53.825564
|
|
@@ -13,7 +13,8 @@ const COMPANY_SYMBOL_CODE = 169
|
|
|
13
13
|
const defaultData = {
|
|
14
14
|
VTS_OUTDOOR_URL: '/api/maps/vts/OS_VTS_3857_Outdoor.json',
|
|
15
15
|
VTS_DARK_URL: '/api/maps/vts/OS_VTS_3857_Dark.json',
|
|
16
|
-
VTS_BLACK_AND_WHITE_URL: '/api/maps/vts/OS_VTS_3857_Black_and_White.json'
|
|
16
|
+
VTS_BLACK_AND_WHITE_URL: '/api/maps/vts/OS_VTS_3857_Black_and_White.json',
|
|
17
|
+
VTS_AERIAL_URL: '/api/maps/vts/esri-aerial.json'
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -317,6 +318,13 @@ export function createMap(mapId, initConfig, mapsConfig) {
|
|
|
317
318
|
logo: `${assetPath}/interactive-map/assets/images/os-logo-black.svg`,
|
|
318
319
|
logoAltText,
|
|
319
320
|
attribution: `Contains OS data ${String.fromCodePoint(COMPANY_SYMBOL_CODE)} Crown copyright and database rights ${new Date().getFullYear()}`
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
id: 'aerial',
|
|
324
|
+
label: 'Aerial',
|
|
325
|
+
url: data.VTS_AERIAL_URL,
|
|
326
|
+
thumbnail: `${assetPath}/interactive-map/assets/images/aerial-map-thumb.jpg`,
|
|
327
|
+
attribution: `Tiles ${String.fromCodePoint(COMPANY_SYMBOL_CODE)} Esri — Source: Esri, Maxar, Earthstar Geographics, and the GIS User Community ${new Date().getFullYear()}`
|
|
320
328
|
}
|
|
321
329
|
]
|
|
322
330
|
}),
|
|
@@ -388,6 +396,7 @@ export function centerMap(map, mapProvider, center) {
|
|
|
388
396
|
* @property {string} VTS_OUTDOOR_URL - the outdoor tile URL
|
|
389
397
|
* @property {string} VTS_DARK_URL - the dark tile URL
|
|
390
398
|
* @property {string} VTS_BLACK_AND_WHITE_URL - the black and white tile URL
|
|
399
|
+
* @property {string} VTS_AERIAL_URL - the aerial tile URL
|
|
391
400
|
*/
|
|
392
401
|
|
|
393
402
|
/**
|
|
@@ -398,5 +407,5 @@ export function centerMap(map, mapProvider, center) {
|
|
|
398
407
|
*/
|
|
399
408
|
|
|
400
409
|
/**
|
|
401
|
-
* @import { Feature } from '
|
|
410
|
+
* @import { Feature } from '../../server/plugins/engine/types.js'
|
|
402
411
|
*/
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { initAllAutocomplete as initAllAutocompleteImp } from '
|
|
2
|
-
import { initFileUpload as initFileUploadImp } from '
|
|
3
|
-
import { initAllGovuk as initAllGovukImp } from '
|
|
4
|
-
import { initPreviewCloseLink as initPreviewCloseLinkImp } from '
|
|
5
|
-
export { initMaps } from '
|
|
6
|
-
export * as map from '
|
|
7
|
-
export * as geospatialMap from '
|
|
1
|
+
import { initAllAutocomplete as initAllAutocompleteImp } from './autocomplete.js'
|
|
2
|
+
import { initFileUpload as initFileUploadImp } from './file-upload.js'
|
|
3
|
+
import { initAllGovuk as initAllGovukImp } from './govuk.js'
|
|
4
|
+
import { initPreviewCloseLink as initPreviewCloseLinkImp } from './preview-close-link.js'
|
|
5
|
+
export { initMaps } from './map.js'
|
|
6
|
+
export * as map from './map.js'
|
|
7
|
+
export * as geospatialMap from './geospatial-map.js'
|
|
8
8
|
|
|
9
9
|
export const initAllGovuk = initAllGovukImp
|
|
10
10
|
export const initAllAutocomplete = initAllAutocompleteImp
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getErrorMessage } from '@defra/forms-model'
|
|
2
2
|
|
|
3
|
-
import { config } from '
|
|
4
|
-
import { createLogger } from '
|
|
5
|
-
import { createServer } from '
|
|
3
|
+
import { config } from './config/index.js'
|
|
4
|
+
import { createLogger } from './server/common/helpers/logging/logger.js'
|
|
5
|
+
import { createServer } from './server/index.js'
|
|
6
6
|
|
|
7
7
|
const logger = createLogger()
|
|
8
8
|
|
|
@@ -3,7 +3,7 @@ import { ecsFormat } from '@elastic/ecs-pino-format'
|
|
|
3
3
|
import { type Options } from 'hapi-pino'
|
|
4
4
|
import { type LoggerOptions, type TransportSingleOptions } from 'pino'
|
|
5
5
|
|
|
6
|
-
import { config } from '
|
|
6
|
+
import { config } from '../../../../config/index.js'
|
|
7
7
|
|
|
8
8
|
const logConfig = config.get('log')
|
|
9
9
|
const serviceName = config.get('serviceName')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ServerRegisterPluginObject } from '@hapi/hapi'
|
|
2
2
|
import hapiPino, { type Options } from 'hapi-pino'
|
|
3
3
|
|
|
4
|
-
import { loggerOptions } from '
|
|
4
|
+
import { loggerOptions } from './logger-options.js'
|
|
5
5
|
|
|
6
6
|
export const requestLogger = {
|
|
7
7
|
plugin: hapiPino,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getErrorMessage } from '@defra/forms-model'
|
|
2
2
|
import { Cluster, Redis } from 'ioredis'
|
|
3
3
|
|
|
4
|
-
import { config } from '
|
|
5
|
-
import { createLogger } from '
|
|
4
|
+
import { config } from '../../../config/index.js'
|
|
5
|
+
import { createLogger } from './logging/logger.js'
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Setup Redis and provide a redis client
|
package/src/server/index.ts
CHANGED
|
@@ -11,19 +11,19 @@ import Wreck from '@hapi/wreck'
|
|
|
11
11
|
import blipp from 'blipp'
|
|
12
12
|
import { ProxyAgent } from 'proxy-agent'
|
|
13
13
|
|
|
14
|
-
import { config } from '
|
|
15
|
-
import { requestLogger } from '
|
|
16
|
-
import { requestTracing } from '
|
|
17
|
-
import { buildRedisClient } from '
|
|
18
|
-
import { configureCrumbPlugin } from '
|
|
19
|
-
import { configureEnginePlugin } from '
|
|
20
|
-
import pluginErrorPages from '
|
|
21
|
-
import { plugin as pluginViews } from '
|
|
22
|
-
import pluginPulse from '
|
|
23
|
-
import pluginSession from '
|
|
24
|
-
import { dummyApiRoutes, publicRoutes } from '
|
|
25
|
-
import { prepareSecureContext } from '
|
|
26
|
-
import { type RouteConfig } from '
|
|
14
|
+
import { config } from '../config/index.js'
|
|
15
|
+
import { requestLogger } from './common/helpers/logging/request-logger.js'
|
|
16
|
+
import { requestTracing } from './common/helpers/logging/request-tracing.js'
|
|
17
|
+
import { buildRedisClient } from './common/helpers/redis-client.js'
|
|
18
|
+
import { configureCrumbPlugin } from './plugins/crumb.js'
|
|
19
|
+
import { configureEnginePlugin } from './plugins/engine/configureEnginePlugin.js'
|
|
20
|
+
import pluginErrorPages from './plugins/errorPages.js'
|
|
21
|
+
import { plugin as pluginViews } from './plugins/nunjucks/index.js'
|
|
22
|
+
import pluginPulse from './plugins/pulse.js'
|
|
23
|
+
import pluginSession from './plugins/session.js'
|
|
24
|
+
import { dummyApiRoutes, publicRoutes } from './routes/index.js'
|
|
25
|
+
import { prepareSecureContext } from './secure-context.js'
|
|
26
|
+
import { type RouteConfig } from './types.js'
|
|
27
27
|
|
|
28
28
|
const proxyAgent = new ProxyAgent()
|
|
29
29
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import crumb, { type RegisterOptions } from '@hapi/crumb'
|
|
2
2
|
import { type ServerRegisterPluginObject } from '@hapi/hapi'
|
|
3
3
|
|
|
4
|
-
import { config } from '
|
|
5
|
-
import { type RouteConfig } from '
|
|
4
|
+
import { config } from '../../config/index.js'
|
|
5
|
+
import { type RouteConfig } from '../types.js'
|
|
6
6
|
|
|
7
7
|
export const configureCrumbPlugin = (
|
|
8
8
|
routeConfig?: RouteConfig
|
|
@@ -2,24 +2,24 @@ import Boom from '@hapi/boom'
|
|
|
2
2
|
import { type Request, type Server } from '@hapi/hapi'
|
|
3
3
|
import { isEqual } from 'date-fns'
|
|
4
4
|
|
|
5
|
-
import { PREVIEW_PATH_PREFIX } from '
|
|
5
|
+
import { PREVIEW_PATH_PREFIX } from '../../../constants.js'
|
|
6
6
|
import {
|
|
7
7
|
checkEmailAddressForLiveFormSubmission,
|
|
8
8
|
getCacheService
|
|
9
|
-
} from '
|
|
10
|
-
import { FormModel } from '
|
|
11
|
-
import { type PageController } from '
|
|
12
|
-
import { TerminalPageController } from '
|
|
13
|
-
import * as defaultServices from '
|
|
9
|
+
} from '../helpers.js'
|
|
10
|
+
import { FormModel } from '../models/index.js'
|
|
11
|
+
import { type PageController } from '../pageControllers/PageController.js'
|
|
12
|
+
import { TerminalPageController } from '../pageControllers/index.js'
|
|
13
|
+
import * as defaultServices from '../services/index.js'
|
|
14
14
|
import {
|
|
15
15
|
type AnyRequest,
|
|
16
16
|
type FormContext,
|
|
17
17
|
type FormContextRequest,
|
|
18
18
|
type FormSubmissionError,
|
|
19
19
|
type FormSubmissionState
|
|
20
|
-
} from '
|
|
21
|
-
import { FormStatus } from '
|
|
22
|
-
import { type Services } from '
|
|
20
|
+
} from '../types.js'
|
|
21
|
+
import { FormStatus } from '../../../routes/types.js'
|
|
22
|
+
import { type Services } from '../../../types.js'
|
|
23
23
|
|
|
24
24
|
type JourneyState = FormStatus | 'preview'
|
|
25
25
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type AutocompleteFieldComponent } from '@defra/forms-model'
|
|
2
2
|
|
|
3
|
-
import { SelectField } from '
|
|
4
|
-
import { messageTemplate } from '
|
|
3
|
+
import { SelectField } from './SelectField.js'
|
|
4
|
+
import { messageTemplate } from '../pageControllers/validationOptions.js'
|
|
5
5
|
import {
|
|
6
6
|
type FormPayload,
|
|
7
7
|
type FormSubmissionError
|
|
8
|
-
} from '
|
|
8
|
+
} from '../types.js'
|
|
9
9
|
|
|
10
10
|
export class AutocompleteField extends SelectField {
|
|
11
11
|
declare options: AutocompleteFieldComponent['options']
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { type CheckboxesFieldComponent, type Item } from '@defra/forms-model'
|
|
2
2
|
import joi, { type ArraySchema } from 'joi'
|
|
3
3
|
|
|
4
|
-
import { isFormValue } from '
|
|
5
|
-
import { SelectionControlField } from '
|
|
6
|
-
import { type FormModel } from '
|
|
7
|
-
import { type QuestionPageController } from '
|
|
8
|
-
import { messageTemplate } from '
|
|
4
|
+
import { isFormValue } from './FormComponent.js'
|
|
5
|
+
import { SelectionControlField } from './SelectionControlField.js'
|
|
6
|
+
import { type FormModel } from '../models/FormModel.js'
|
|
7
|
+
import { type QuestionPageController } from '../pageControllers/QuestionPageController.js'
|
|
8
|
+
import { messageTemplate } from '../pageControllers/validationOptions.js'
|
|
9
9
|
import {
|
|
10
10
|
type ErrorMessageTemplateList,
|
|
11
11
|
type FormState,
|
|
12
12
|
type FormStateValue,
|
|
13
13
|
type FormSubmissionState
|
|
14
|
-
} from '
|
|
14
|
+
} from '../types.js'
|
|
15
15
|
|
|
16
16
|
export class CheckboxesField extends SelectionControlField {
|
|
17
17
|
declare options: CheckboxesFieldComponent['options']
|
|
@@ -26,8 +26,7 @@ export class CheckboxesField extends SelectionControlField {
|
|
|
26
26
|
super(def, props)
|
|
27
27
|
|
|
28
28
|
const { listType: type } = this
|
|
29
|
-
const { options } = def
|
|
30
|
-
const schema = 'schema' in def ? def.schema : {}
|
|
29
|
+
const { options, schema } = def
|
|
31
30
|
|
|
32
31
|
let formSchema =
|
|
33
32
|
type === 'string' ? joi.array<string>() : joi.array<number>()
|
|
@@ -8,11 +8,11 @@ import joi, {
|
|
|
8
8
|
type StringSchema
|
|
9
9
|
} from 'joi'
|
|
10
10
|
|
|
11
|
-
import { type ComponentCollection } from '
|
|
12
|
-
import { type Component } from '
|
|
13
|
-
import { type ViewModel } from '
|
|
14
|
-
import { type FormModel } from '
|
|
15
|
-
import { type PageControllerClass } from '
|
|
11
|
+
import { type ComponentCollection } from './ComponentCollection.js'
|
|
12
|
+
import { type Component } from './helpers/components.js'
|
|
13
|
+
import { type ViewModel } from './types.js'
|
|
14
|
+
import { type FormModel } from '../models/index.js'
|
|
15
|
+
import { type PageControllerClass } from '../pageControllers/helpers/pages.js'
|
|
16
16
|
|
|
17
17
|
export class ComponentBase {
|
|
18
18
|
id?: string
|
|
@@ -9,26 +9,26 @@ import {
|
|
|
9
9
|
FormComponent,
|
|
10
10
|
isFormState,
|
|
11
11
|
isFormValue
|
|
12
|
-
} from '
|
|
12
|
+
} from './FormComponent.js'
|
|
13
13
|
import {
|
|
14
14
|
createComponent,
|
|
15
15
|
type Component,
|
|
16
16
|
type Field,
|
|
17
17
|
type Guidance
|
|
18
|
-
} from '
|
|
19
|
-
import { type ComponentViewModel } from '
|
|
20
|
-
import { getErrors } from '
|
|
21
|
-
import { type FormModel } from '
|
|
22
|
-
import { type PageControllerClass } from '
|
|
23
|
-
import { validationOptions as opts } from '
|
|
18
|
+
} from './helpers/components.js'
|
|
19
|
+
import { type ComponentViewModel } from './types.js'
|
|
20
|
+
import { getErrors } from '../helpers.js'
|
|
21
|
+
import { type FormModel } from '../models/index.js'
|
|
22
|
+
import { type PageControllerClass } from '../pageControllers/helpers/pages.js'
|
|
23
|
+
import { validationOptions as opts } from '../pageControllers/validationOptions.js'
|
|
24
24
|
import {
|
|
25
25
|
type FormPayload,
|
|
26
26
|
type FormState,
|
|
27
27
|
type FormSubmissionError,
|
|
28
28
|
type FormSubmissionState,
|
|
29
29
|
type FormValidationResult
|
|
30
|
-
} from '
|
|
31
|
-
import { type FormQuery } from '
|
|
30
|
+
} from '../types.js'
|
|
31
|
+
import { type FormQuery } from '../../../routes/types.js'
|
|
32
32
|
|
|
33
33
|
export class ComponentCollection {
|
|
34
34
|
page?: PageControllerClass
|