@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.
Files changed (407) hide show
  1. package/.public/javascripts/shared.min.js +1 -1
  2. package/.public/javascripts/shared.min.js.map +1 -1
  3. package/.server/client/javascripts/geospatial-map.d.ts +6 -6
  4. package/.server/client/javascripts/geospatial-map.js +3 -3
  5. package/.server/client/javascripts/location-map.d.ts +1 -1
  6. package/.server/client/javascripts/location-map.js +1 -1
  7. package/.server/client/javascripts/map.d.ts +5 -1
  8. package/.server/client/javascripts/map.js +10 -2
  9. package/.server/client/javascripts/map.js.map +1 -1
  10. package/.server/client/javascripts/shared.d.ts +7 -7
  11. package/.server/server/index.d.ts +1 -1
  12. package/.server/server/plugins/crumb.d.ts +1 -1
  13. package/.server/server/plugins/engine/beta/form-context.d.ts +6 -6
  14. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +4 -4
  15. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +2 -2
  16. package/.server/server/plugins/engine/components/CheckboxesField.js +2 -2
  17. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  18. package/.server/server/plugins/engine/components/ComponentBase.d.ts +5 -5
  19. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -8
  20. package/.server/server/plugins/engine/components/DatePartsField.d.ts +11 -11
  21. package/.server/server/plugins/engine/components/DeclarationField.d.ts +3 -3
  22. package/.server/server/plugins/engine/components/Details.d.ts +1 -1
  23. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +22 -22
  24. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -4
  25. package/.server/server/plugins/engine/components/FileUploadField.d.ts +3 -3
  26. package/.server/server/plugins/engine/components/FormComponent.d.ts +10 -10
  27. package/.server/server/plugins/engine/components/GeospatialField.d.ts +6 -6
  28. package/.server/server/plugins/engine/components/HiddenField.d.ts +2 -2
  29. package/.server/server/plugins/engine/components/Html.d.ts +1 -1
  30. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -1
  31. package/.server/server/plugins/engine/components/LatLongField.d.ts +22 -22
  32. package/.server/server/plugins/engine/components/List.d.ts +8 -8
  33. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +10 -10
  34. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +6 -6
  35. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +14 -14
  36. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -1
  37. package/.server/server/plugins/engine/components/MonthYearField.d.ts +11 -11
  38. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +5 -5
  39. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +1 -1
  40. package/.server/server/plugins/engine/components/NumberField.d.ts +3 -3
  41. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +1 -1
  42. package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -12
  43. package/.server/server/plugins/engine/components/RadiosField.d.ts +1 -1
  44. package/.server/server/plugins/engine/components/SelectField.d.ts +4 -4
  45. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +10 -10
  46. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +4 -4
  47. package/.server/server/plugins/engine/components/TextField.d.ts +2 -2
  48. package/.server/server/plugins/engine/components/UkAddressField.d.ts +11 -11
  49. package/.server/server/plugins/engine/components/YesNoField.d.ts +2 -2
  50. package/.server/server/plugins/engine/components/helpers/__stubs__/geospatial.d.ts +1 -1
  51. package/.server/server/plugins/engine/components/helpers/components.d.ts +5 -5
  52. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +1 -1
  53. package/.server/server/plugins/engine/components/index.d.ts +27 -27
  54. package/.server/server/plugins/engine/components/types.d.ts +1 -1
  55. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +4 -4
  56. package/.server/server/plugins/engine/date-helper.d.ts +1 -1
  57. package/.server/server/plugins/engine/helpers.d.ts +8 -8
  58. package/.server/server/plugins/engine/index.d.ts +5 -5
  59. package/.server/server/plugins/engine/models/FormModel.d.ts +6 -6
  60. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +6 -6
  61. package/.server/server/plugins/engine/models/index.d.ts +2 -2
  62. package/.server/server/plugins/engine/models/types.d.ts +4 -4
  63. package/.server/server/plugins/engine/options.d.ts +1 -1
  64. package/.server/server/plugins/engine/options.js +1 -1
  65. package/.server/server/plugins/engine/options.test.js +1 -1
  66. package/.server/server/plugins/engine/outputFormatters/adapter/v1.d.ts +4 -4
  67. package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +4 -4
  68. package/.server/server/plugins/engine/outputFormatters/index.d.ts +5 -5
  69. package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +4 -4
  70. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +4 -4
  71. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +8 -8
  72. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +6 -6
  73. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +8 -8
  74. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +5 -5
  75. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +4 -4
  76. package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +4 -4
  77. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +5 -5
  78. package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +3 -3
  79. package/.server/server/plugins/engine/pageControllers/__stubs__/request.d.ts +2 -2
  80. package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
  81. package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +2 -2
  82. package/.server/server/plugins/engine/pageControllers/helpers/state.d.ts +5 -5
  83. package/.server/server/plugins/engine/pageControllers/helpers/state.js +1 -1
  84. package/.server/server/plugins/engine/pageControllers/helpers/state.js.map +1 -1
  85. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +1 -1
  86. package/.server/server/plugins/engine/pageControllers/index.d.ts +7 -7
  87. package/.server/server/plugins/engine/plugin.d.ts +1 -1
  88. package/.server/server/plugins/engine/routes/file-upload.d.ts +1 -1
  89. package/.server/server/plugins/engine/routes/index.d.ts +3 -3
  90. package/.server/server/plugins/engine/routes/payment-helper.d.ts +3 -3
  91. package/.server/server/plugins/engine/routes/payment-helper.js +2 -2
  92. package/.server/server/plugins/engine/routes/payment.js +5 -5
  93. package/.server/server/plugins/engine/routes/payment.test.js +1 -1
  94. package/.server/server/plugins/engine/routes/questions.d.ts +2 -2
  95. package/.server/server/plugins/engine/routes/repeaters/item-delete.d.ts +2 -2
  96. package/.server/server/plugins/engine/routes/repeaters/summary.d.ts +2 -2
  97. package/.server/server/plugins/engine/services/index.d.ts +3 -3
  98. package/.server/server/plugins/engine/services/notifyService.d.ts +4 -4
  99. package/.server/server/plugins/engine/services/uploadService.d.ts +2 -2
  100. package/.server/server/plugins/engine/services/uploadService.js +1 -1
  101. package/.server/server/plugins/engine/types/index.d.ts +10 -10
  102. package/.server/server/plugins/engine/types/schema.d.ts +1 -1
  103. package/.server/server/plugins/engine/types.d.ts +25 -16
  104. package/.server/server/plugins/engine/types.js.map +1 -1
  105. package/.server/server/plugins/engine/validationHelpers.d.ts +2 -2
  106. package/.server/server/plugins/engine/vision.d.ts +1 -1
  107. package/.server/server/plugins/map/index.d.ts +1 -1
  108. package/.server/server/plugins/map/index.js +1 -1
  109. package/.server/server/plugins/map/routes/get-os-token.d.ts +11 -1
  110. package/.server/server/plugins/map/routes/get-os-token.js +12 -2
  111. package/.server/server/plugins/map/routes/get-os-token.js.map +1 -1
  112. package/.server/server/plugins/map/routes/index.d.ts +4 -4
  113. package/.server/server/plugins/map/routes/index.js +3 -2
  114. package/.server/server/plugins/map/routes/index.js.map +1 -1
  115. package/.server/server/plugins/map/routes/vts/esri-aerial.json +23 -0
  116. package/.server/server/plugins/map/service.d.ts +1 -1
  117. package/.server/server/plugins/map/service.js +5 -2
  118. package/.server/server/plugins/map/service.js.map +1 -1
  119. package/.server/server/plugins/map/test/__stubs__/find.d.ts +1 -1
  120. package/.server/server/plugins/map/test/__stubs__/find.js +1 -1
  121. package/.server/server/plugins/nunjucks/context.d.ts +2 -2
  122. package/.server/server/plugins/nunjucks/context.js +2 -2
  123. package/.server/server/plugins/nunjucks/context.test.js +1 -1
  124. package/.server/server/plugins/nunjucks/enviroment.test.js +1 -1
  125. package/.server/server/plugins/nunjucks/environment.d.ts +3 -3
  126. package/.server/server/plugins/nunjucks/environment.js +3 -3
  127. package/.server/server/plugins/nunjucks/filters/answer.d.ts +1 -1
  128. package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
  129. package/.server/server/plugins/nunjucks/filters/answer.test.js +1 -1
  130. package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +1 -1
  131. package/.server/server/plugins/nunjucks/filters/evaluate.js +1 -1
  132. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  133. package/.server/server/plugins/nunjucks/filters/field.js +1 -1
  134. package/.server/server/plugins/nunjucks/filters/field.test.js +1 -1
  135. package/.server/server/plugins/nunjucks/filters/href.d.ts +1 -1
  136. package/.server/server/plugins/nunjucks/filters/href.js +1 -1
  137. package/.server/server/plugins/nunjucks/filters/href.test.js +1 -1
  138. package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -8
  139. package/.server/server/plugins/nunjucks/filters/page.d.ts +1 -1
  140. package/.server/server/plugins/nunjucks/filters/page.js +1 -1
  141. package/.server/server/plugins/nunjucks/filters/page.test.js +1 -1
  142. package/.server/server/plugins/nunjucks/index.d.ts +3 -3
  143. package/.server/server/plugins/nunjucks/render.d.ts +2 -2
  144. package/.server/server/plugins/nunjucks/render.js +1 -1
  145. package/.server/server/plugins/nunjucks/types.d.ts +1 -1
  146. package/.server/server/plugins/nunjucks/types.js +1 -1
  147. package/.server/server/plugins/payment/helper.d.ts +2 -2
  148. package/.server/server/plugins/payment/helper.js +1 -1
  149. package/.server/server/plugins/payment/service.d.ts +3 -3
  150. package/.server/server/plugins/payment/service.js +1 -1
  151. package/.server/server/plugins/postcode-lookup/index.d.ts +1 -1
  152. package/.server/server/plugins/postcode-lookup/index.js +1 -1
  153. package/.server/server/plugins/postcode-lookup/models/index.d.ts +6 -6
  154. package/.server/server/plugins/postcode-lookup/models/index.js +1 -1
  155. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +6 -6
  156. package/.server/server/plugins/postcode-lookup/routes/index.js +15 -15
  157. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  158. package/.server/server/plugins/postcode-lookup/service.d.ts +1 -1
  159. package/.server/server/plugins/postcode-lookup/service.js +5 -2
  160. package/.server/server/plugins/postcode-lookup/service.js.map +1 -1
  161. package/.server/server/plugins/postcode-lookup/types.js +1 -1
  162. package/.server/server/routes/index.d.ts +2 -2
  163. package/.server/server/routes/types.d.ts +1 -1
  164. package/.server/server/schemas/index.d.ts +2 -2
  165. package/.server/server/services/cacheService.d.ts +8 -8
  166. package/.server/server/services/cacheService.js +2 -5
  167. package/.server/server/services/cacheService.js.map +1 -1
  168. package/.server/server/services/httpService.test.js +1 -1
  169. package/.server/server/services/index.d.ts +1 -1
  170. package/.server/server/types.d.ts +7 -7
  171. package/.server/server/utils/file-form-service.d.ts +2 -2
  172. package/.server/server/utils/file-form-service.js +1 -1
  173. package/package.json +8 -4
  174. package/src/client/javascripts/application.js +1 -1
  175. package/src/client/javascripts/geospatial-map.js +4 -4
  176. package/src/client/javascripts/location-map.js +2 -2
  177. package/src/client/javascripts/map.js +13 -4
  178. package/src/client/javascripts/shared.js +7 -7
  179. package/src/index.ts +3 -3
  180. package/src/server/common/helpers/logging/logger-options.ts +1 -1
  181. package/src/server/common/helpers/logging/logger.ts +1 -1
  182. package/src/server/common/helpers/logging/request-logger.ts +1 -1
  183. package/src/server/common/helpers/logging/request-tracing.js +1 -1
  184. package/src/server/common/helpers/redis-client.js +2 -2
  185. package/src/server/index.ts +13 -13
  186. package/src/server/plugins/crumb.ts +2 -2
  187. package/src/server/plugins/engine/beta/form-context.ts +9 -9
  188. package/src/server/plugins/engine/components/AutocompleteField.ts +3 -3
  189. package/src/server/plugins/engine/components/CheckboxesField.ts +7 -8
  190. package/src/server/plugins/engine/components/ComponentBase.ts +5 -5
  191. package/src/server/plugins/engine/components/ComponentCollection.ts +9 -9
  192. package/src/server/plugins/engine/components/DatePartsField.ts +8 -8
  193. package/src/server/plugins/engine/components/DeclarationField.ts +3 -3
  194. package/src/server/plugins/engine/components/Details.ts +1 -1
  195. package/src/server/plugins/engine/components/EastingNorthingField.ts +9 -9
  196. package/src/server/plugins/engine/components/EmailAddressField.ts +3 -3
  197. package/src/server/plugins/engine/components/FileUploadField.ts +6 -6
  198. package/src/server/plugins/engine/components/FormComponent.ts +4 -4
  199. package/src/server/plugins/engine/components/GeospatialField.ts +5 -5
  200. package/src/server/plugins/engine/components/HiddenField.ts +4 -4
  201. package/src/server/plugins/engine/components/Html.ts +1 -1
  202. package/src/server/plugins/engine/components/InsetText.ts +1 -1
  203. package/src/server/plugins/engine/components/LatLongField.ts +9 -9
  204. package/src/server/plugins/engine/components/List.ts +2 -2
  205. package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
  206. package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -5
  207. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +5 -5
  208. package/src/server/plugins/engine/components/Markdown.ts +1 -1
  209. package/src/server/plugins/engine/components/MonthYearField.ts +8 -8
  210. package/src/server/plugins/engine/components/MultilineTextField.ts +4 -4
  211. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +2 -2
  212. package/src/server/plugins/engine/components/NumberField.ts +3 -3
  213. package/src/server/plugins/engine/components/OsGridRefField.ts +2 -2
  214. package/src/server/plugins/engine/components/PaymentField.ts +8 -8
  215. package/src/server/plugins/engine/components/RadiosField.ts +1 -1
  216. package/src/server/plugins/engine/components/SelectField.ts +2 -2
  217. package/src/server/plugins/engine/components/SelectionControlField.ts +4 -4
  218. package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -4
  219. package/src/server/plugins/engine/components/TextField.ts +3 -3
  220. package/src/server/plugins/engine/components/UkAddressField.ts +7 -7
  221. package/src/server/plugins/engine/components/YesNoField.ts +5 -5
  222. package/src/server/plugins/engine/components/helpers/__stubs__/geospatial.ts +1 -1
  223. package/src/server/plugins/engine/components/helpers/components.ts +8 -8
  224. package/src/server/plugins/engine/components/helpers/geospatial.ts +1 -1
  225. package/src/server/plugins/engine/components/index.ts +27 -27
  226. package/src/server/plugins/engine/components/types.ts +1 -1
  227. package/src/server/plugins/engine/configureEnginePlugin.ts +10 -10
  228. package/src/server/plugins/engine/date-helper.ts +1 -1
  229. package/src/server/plugins/engine/helpers.ts +8 -8
  230. package/src/server/plugins/engine/index.ts +8 -8
  231. package/src/server/plugins/engine/models/FormModel.ts +15 -15
  232. package/src/server/plugins/engine/models/SummaryViewModel.ts +10 -10
  233. package/src/server/plugins/engine/models/index.ts +2 -2
  234. package/src/server/plugins/engine/models/types.ts +4 -4
  235. package/src/server/plugins/engine/options.js +3 -3
  236. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +6 -6
  237. package/src/server/plugins/engine/outputFormatters/human/v1.ts +9 -9
  238. package/src/server/plugins/engine/outputFormatters/index.ts +8 -8
  239. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +7 -7
  240. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +6 -6
  241. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +9 -9
  242. package/src/server/plugins/engine/pageControllers/PageController.ts +7 -7
  243. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +13 -13
  244. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +6 -6
  245. package/src/server/plugins/engine/pageControllers/StartPageController.ts +3 -3
  246. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +5 -5
  247. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +12 -12
  248. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +3 -3
  249. package/src/server/plugins/engine/pageControllers/__stubs__/request.ts +3 -3
  250. package/src/server/plugins/engine/pageControllers/__stubs__/server.ts +2 -2
  251. package/src/server/plugins/engine/pageControllers/errors.ts +1 -1
  252. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -2
  253. package/src/server/plugins/engine/pageControllers/helpers/state.ts +9 -9
  254. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +5 -5
  255. package/src/server/plugins/engine/pageControllers/index.ts +7 -7
  256. package/src/server/plugins/engine/pageControllers/validationOptions.ts +1 -1
  257. package/src/server/plugins/engine/plugin.ts +14 -14
  258. package/src/server/plugins/engine/routes/file-upload.ts +2 -2
  259. package/src/server/plugins/engine/routes/index.ts +10 -10
  260. package/src/server/plugins/engine/routes/payment-helper.js +4 -4
  261. package/src/server/plugins/engine/routes/payment.js +9 -9
  262. package/src/server/plugins/engine/routes/questions.ts +10 -10
  263. package/src/server/plugins/engine/routes/repeaters/item-delete.ts +6 -6
  264. package/src/server/plugins/engine/routes/repeaters/summary.ts +5 -5
  265. package/src/server/plugins/engine/services/formSubmissionService.js +2 -2
  266. package/src/server/plugins/engine/services/index.js +3 -3
  267. package/src/server/plugins/engine/services/localFormsService.js +2 -2
  268. package/src/server/plugins/engine/services/notifyService.ts +9 -9
  269. package/src/server/plugins/engine/services/uploadService.js +3 -3
  270. package/src/server/plugins/engine/types/index.ts +10 -10
  271. package/src/server/plugins/engine/types/schema.ts +2 -2
  272. package/src/server/plugins/engine/types.ts +22 -17
  273. package/src/server/plugins/engine/validationHelpers.ts +3 -3
  274. package/src/server/plugins/engine/vision.ts +3 -3
  275. package/src/server/plugins/map/index.js +2 -2
  276. package/src/server/plugins/map/routes/get-os-token.js +15 -3
  277. package/src/server/plugins/map/routes/index.js +7 -5
  278. package/src/server/plugins/map/routes/vts/esri-aerial.json +23 -0
  279. package/src/server/plugins/map/service.js +7 -4
  280. package/src/server/plugins/map/test/__stubs__/find.js +1 -1
  281. package/src/server/plugins/nunjucks/context.js +5 -5
  282. package/src/server/plugins/nunjucks/environment.js +6 -6
  283. package/src/server/plugins/nunjucks/filters/answer.js +3 -3
  284. package/src/server/plugins/nunjucks/filters/evaluate.js +2 -2
  285. package/src/server/plugins/nunjucks/filters/field.js +1 -1
  286. package/src/server/plugins/nunjucks/filters/href.js +2 -2
  287. package/src/server/plugins/nunjucks/filters/index.js +8 -8
  288. package/src/server/plugins/nunjucks/filters/page.js +1 -1
  289. package/src/server/plugins/nunjucks/index.js +3 -3
  290. package/src/server/plugins/nunjucks/plugin.js +3 -3
  291. package/src/server/plugins/nunjucks/render.js +2 -2
  292. package/src/server/plugins/nunjucks/types.js +1 -1
  293. package/src/server/plugins/payment/helper.js +2 -2
  294. package/src/server/plugins/payment/service.js +4 -4
  295. package/src/server/plugins/postcode-lookup/index.js +2 -2
  296. package/src/server/plugins/postcode-lookup/models/index.js +3 -3
  297. package/src/server/plugins/postcode-lookup/routes/index.js +24 -14
  298. package/src/server/plugins/postcode-lookup/service.js +7 -4
  299. package/src/server/plugins/postcode-lookup/types.js +1 -1
  300. package/src/server/plugins/session.ts +1 -1
  301. package/src/server/routes/index.ts +2 -2
  302. package/src/server/routes/public.ts +1 -1
  303. package/src/server/routes/types.ts +1 -1
  304. package/src/server/schemas/index.ts +2 -2
  305. package/src/server/secure-context.js +1 -1
  306. package/src/server/services/cacheService.ts +13 -18
  307. package/src/server/services/httpService.ts +1 -1
  308. package/src/server/services/index.ts +1 -1
  309. package/src/server/types.ts +7 -7
  310. package/src/server/utils/notify.ts +2 -2
  311. package/src/server/utils/utils.js +1 -1
  312. package/src/typings/hapi/index.d.ts +4 -4
  313. package/src/typings/joi/index.d.ts +1 -1
  314. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  315. package/src/server/index.test.ts +0 -644
  316. package/src/server/plugins/engine/beta/form-context.test.ts +0 -373
  317. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -362
  318. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -486
  319. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -927
  320. package/src/server/plugins/engine/components/DeclarationField.test.ts +0 -560
  321. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  322. package/src/server/plugins/engine/components/EastingNorthingField.test.ts +0 -727
  323. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -445
  324. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -1079
  325. package/src/server/plugins/engine/components/GeospatialField.test.ts +0 -380
  326. package/src/server/plugins/engine/components/HiddenField.test.ts +0 -188
  327. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  328. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  329. package/src/server/plugins/engine/components/LatLongField.test.ts +0 -898
  330. package/src/server/plugins/engine/components/List.test.ts +0 -79
  331. package/src/server/plugins/engine/components/LocationFieldBase.test.ts +0 -253
  332. package/src/server/plugins/engine/components/LocationFieldHelpers.test.ts +0 -743
  333. package/src/server/plugins/engine/components/Markdown.test.ts +0 -48
  334. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -617
  335. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -647
  336. package/src/server/plugins/engine/components/NationalGridFieldNumberField.test.ts +0 -449
  337. package/src/server/plugins/engine/components/NumberField.test.ts +0 -723
  338. package/src/server/plugins/engine/components/OsGridRefField.test.ts +0 -460
  339. package/src/server/plugins/engine/components/PaymentField.test.ts +0 -745
  340. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -297
  341. package/src/server/plugins/engine/components/SelectField.test.ts +0 -289
  342. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -384
  343. package/src/server/plugins/engine/components/TextField.test.ts +0 -521
  344. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -806
  345. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -256
  346. package/src/server/plugins/engine/components/helpers/components.test.ts +0 -399
  347. package/src/server/plugins/engine/components/helpers/geospatial.test.js +0 -55
  348. package/src/server/plugins/engine/components/helpers/helpers.test.ts +0 -219
  349. package/src/server/plugins/engine/date-helper.test.ts +0 -47
  350. package/src/server/plugins/engine/helpers.test.ts +0 -868
  351. package/src/server/plugins/engine/models/FormModel.test.ts +0 -725
  352. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -472
  353. package/src/server/plugins/engine/options.test.js +0 -63
  354. package/src/server/plugins/engine/outputFormatters/adapter/v1.location.test.ts +0 -356
  355. package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +0 -871
  356. package/src/server/plugins/engine/outputFormatters/human/v1.payment.test.ts +0 -147
  357. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -145
  358. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  359. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -268
  360. package/src/server/plugins/engine/outputFormatters/machine/v2.location.test.ts +0 -341
  361. package/src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts +0 -115
  362. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -311
  363. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1372
  364. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -246
  365. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1686
  366. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -279
  367. package/src/server/plugins/engine/pageControllers/StartPageController.test.ts +0 -32
  368. package/src/server/plugins/engine/pageControllers/StatusPageController.test.ts +0 -32
  369. package/src/server/plugins/engine/pageControllers/SummaryPageController.test.ts +0 -89
  370. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -37
  371. package/src/server/plugins/engine/pageControllers/errors.test.ts +0 -78
  372. package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +0 -182
  373. package/src/server/plugins/engine/pageControllers/helpers/state.test.ts +0 -359
  374. package/src/server/plugins/engine/pageControllers/helpers/submission.test.ts +0 -373
  375. package/src/server/plugins/engine/referenceNumbers.test.ts +0 -74
  376. package/src/server/plugins/engine/routes/index.test.ts +0 -332
  377. package/src/server/plugins/engine/routes/payment-helper.test.js +0 -136
  378. package/src/server/plugins/engine/routes/payment.test.js +0 -180
  379. package/src/server/plugins/engine/routes/questions.test.ts +0 -502
  380. package/src/server/plugins/engine/routes/repeaters/item-delete.test.ts +0 -83
  381. package/src/server/plugins/engine/routes/repeaters/summary.test.ts +0 -75
  382. package/src/server/plugins/engine/services/formsService.test.js +0 -26
  383. package/src/server/plugins/engine/services/notifyService.test.ts +0 -310
  384. package/src/server/plugins/engine/types/schema.test.ts +0 -234
  385. package/src/server/plugins/engine/views/components/service-banner/template.test.js +0 -43
  386. package/src/server/plugins/engine/views/components/tag-env/template.test.js +0 -28
  387. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  388. package/src/server/plugins/map/routes/get-os-token.test.js +0 -55
  389. package/src/server/plugins/map/service.test.js +0 -144
  390. package/src/server/plugins/nunjucks/context.test.js +0 -109
  391. package/src/server/plugins/nunjucks/enviroment.test.js +0 -207
  392. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -92
  393. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  394. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  395. package/src/server/plugins/nunjucks/filters/merge.test.js +0 -15
  396. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  397. package/src/server/plugins/payment/helper.test.js +0 -29
  398. package/src/server/plugins/payment/service.test.js +0 -218
  399. package/src/server/plugins/postcode-lookup/service.test.js +0 -177
  400. package/src/server/postcode-lookup.test.ts +0 -64
  401. package/src/server/routes/dummy-api.test.ts +0 -97
  402. package/src/server/services/cacheService.test.ts +0 -308
  403. package/src/server/services/httpService.test.js +0 -491
  404. package/src/server/utils/file-form-service.test.js +0 -127
  405. package/src/server/utils/notify.test.ts +0 -37
  406. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  407. 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 AnyRequest, type FormConfirmationState, type FormPayload, type FormState, type FormSubmissionError, type FormSubmissionState } from '~/src/server/plugins/engine/types.js';
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: AnyRequest): Promise<FormSubmissionState>;
20
- setState(request: AnyFormRequest, state: FormSubmissionState): Promise<FormSubmissionState>;
21
- getConfirmationState(request: AnyFormRequest): Promise<FormConfirmationState>;
22
- setConfirmationState(request: AnyFormRequest, confirmationState: FormConfirmationState): Promise<void>;
23
- clearState(request: AnyFormRequest): Promise<void>;
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: AnyFormRequest, componentNames: string[]): Promise<FormSubmissionState>;
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: AnyRequest, additionalIdentifier?: ADDITIONAL_IDENTIFIER): {
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
- // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style
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 AnyRequest,\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: AnyRequest): 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: AnyFormRequest, 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: AnyFormRequest\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: AnyFormRequest,\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: AnyFormRequest) {\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(\n request: AnyFormRequest,\n componentNames: string[]\n ) {\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: AnyRequest, additionalIdentifier?: ADDITIONAL_IDENTIFIER) {\n if (!request.yar.id) {\n throw new Error('No session ID found')\n }\n\n // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style\n const state = (request.params.state as string) || ''\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const slug = (request.params.slug as string) || ''\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":[]}
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 '~/src/server/services/httpService.js'
502
+ * @import { RequestOptions } from '../../server/services/httpService.js'
503
503
  */
504
504
  //# sourceMappingURL=httpService.test.js.map
@@ -1 +1 @@
1
- export { CacheService } from '~/src/server/services/cacheService.js';
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 '~/src/server/plugins/engine/models/index.js';
4
- import { type DetailItem } from '~/src/server/plugins/engine/models/types.js';
5
- import { type PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js';
6
- import { type FormContext, type OnRequestCallback, type PluginOptions, type PreparePageEventRequestOptions } from '~/src/server/plugins/engine/types.js';
7
- import { type PaymentService } from '~/src/server/plugins/payment/service.js';
8
- import { type FormRequestPayload, type FormStatus } from '~/src/server/routes/types.js';
9
- import { type CacheService } from '~/src/server/services/cacheService.js';
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('~/src/server/types.js').FormsService}
50
+ * @returns {import('../../server/types.js').FormsService}
51
51
  */
52
- toFormsService(): import("~/src/server/types.js").FormsService;
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('~/src/server/types.js').FormsService}
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.7.2",
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:types": "tsc -p tsconfig.build.json",
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",
@@ -1,3 +1,3 @@
1
- import { initAll } from '~/src/client/javascripts/shared.js'
1
+ import { initAll } from './shared.js'
2
2
 
3
3
  initAll()
@@ -6,7 +6,7 @@ import {
6
6
  defaultConfig,
7
7
  getCentroidGridRef,
8
8
  getCoordinateGridRef
9
- } from '~/src/client/javascripts/map.js'
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 '~/src/client/javascripts/map.js'
937
+ * @import { MapsEnvironmentConfig, InteractiveMap } from './map.js'
938
938
  */
939
939
 
940
940
  /**
941
- * @import { Geometry, FeatureCollection, Feature, Coordinates } from '~/src/server/plugins/engine/types.js'
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 '~/src/client/javascripts/map.js'
1065
+ * @import { MapLibreMap } from './map.js'
1066
1066
  */
@@ -7,7 +7,7 @@ import {
7
7
  latLongToEastingNorthing,
8
8
  latLongToOsGridRef,
9
9
  osGridRefToLatLong
10
- } from '~/src/client/javascripts/map.js'
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 '~/src/client/javascripts/map.js'
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 '~/src/client/javascripts/geospatial-map.js'
6
- import { processLocation } from '~/src/client/javascripts/location-map.js'
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 '~/src/server/plugins/engine/types.js'
410
+ * @import { Feature } from '../../server/plugins/engine/types.js'
402
411
  */
@@ -1,10 +1,10 @@
1
- import { initAllAutocomplete as initAllAutocompleteImp } from '~/src/client/javascripts/autocomplete.js'
2
- import { initFileUpload as initFileUploadImp } from '~/src/client/javascripts/file-upload.js'
3
- import { initAllGovuk as initAllGovukImp } from '~/src/client/javascripts/govuk.js'
4
- import { initPreviewCloseLink as initPreviewCloseLinkImp } from '~/src/client/javascripts/preview-close-link.js'
5
- export { initMaps } from '~/src/client/javascripts/map.js'
6
- export * as map from '~/src/client/javascripts/map.js'
7
- export * as geospatialMap from '~/src/client/javascripts/geospatial-map.js'
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 '~/src/config/index.js'
4
- import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
5
- import { createServer } from '~/src/server/index.js'
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 '~/src/config/index.js'
6
+ import { config } from '../../../../config/index.js'
7
7
 
8
8
  const logConfig = config.get('log')
9
9
  const serviceName = config.get('serviceName')
@@ -1,6 +1,6 @@
1
1
  import { pino } from 'pino'
2
2
 
3
- import { loggerOptions } from '~/src/server/common/helpers/logging/logger-options.js'
3
+ import { loggerOptions } from './logger-options.js'
4
4
 
5
5
  export function createLogger() {
6
6
  return pino(loggerOptions)
@@ -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 '~/src/server/common/helpers/logging/logger-options.js'
4
+ import { loggerOptions } from './logger-options.js'
5
5
 
6
6
  export const requestLogger = {
7
7
  plugin: hapiPino,
@@ -1,6 +1,6 @@
1
1
  import { tracing } from '@defra/hapi-tracing'
2
2
 
3
- import { config } from '~/src/config/index.js'
3
+ import { config } from '../../../../config/index.js'
4
4
 
5
5
  // Explicitly declare the expected type
6
6
 
@@ -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 '~/src/config/index.js'
5
- import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
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
@@ -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 '~/src/config/index.js'
15
- import { requestLogger } from '~/src/server/common/helpers/logging/request-logger.js'
16
- import { requestTracing } from '~/src/server/common/helpers/logging/request-tracing.js'
17
- import { buildRedisClient } from '~/src/server/common/helpers/redis-client.js'
18
- import { configureCrumbPlugin } from '~/src/server/plugins/crumb.js'
19
- import { configureEnginePlugin } from '~/src/server/plugins/engine/configureEnginePlugin.js'
20
- import pluginErrorPages from '~/src/server/plugins/errorPages.js'
21
- import { plugin as pluginViews } from '~/src/server/plugins/nunjucks/index.js'
22
- import pluginPulse from '~/src/server/plugins/pulse.js'
23
- import pluginSession from '~/src/server/plugins/session.js'
24
- import { dummyApiRoutes, publicRoutes } from '~/src/server/routes/index.js'
25
- import { prepareSecureContext } from '~/src/server/secure-context.js'
26
- import { type RouteConfig } from '~/src/server/types.js'
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 '~/src/config/index.js'
5
- import { type RouteConfig } from '~/src/server/types.js'
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 '~/src/server/constants.js'
5
+ import { PREVIEW_PATH_PREFIX } from '../../../constants.js'
6
6
  import {
7
7
  checkEmailAddressForLiveFormSubmission,
8
8
  getCacheService
9
- } from '~/src/server/plugins/engine/helpers.js'
10
- import { FormModel } from '~/src/server/plugins/engine/models/index.js'
11
- import { type PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js'
12
- import { TerminalPageController } from '~/src/server/plugins/engine/pageControllers/index.js'
13
- import * as defaultServices from '~/src/server/plugins/engine/services/index.js'
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 '~/src/server/plugins/engine/types.js'
21
- import { FormStatus } from '~/src/server/routes/types.js'
22
- import { type Services } from '~/src/server/types.js'
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 '~/src/server/plugins/engine/components/SelectField.js'
4
- import { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
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 '~/src/server/plugins/engine/types.js'
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 '~/src/server/plugins/engine/components/FormComponent.js'
5
- import { SelectionControlField } from '~/src/server/plugins/engine/components/SelectionControlField.js'
6
- import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
7
- import { type QuestionPageController } from '~/src/server/plugins/engine/pageControllers/QuestionPageController.js'
8
- import { messageTemplate } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
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 '~/src/server/plugins/engine/types.js'
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 '~/src/server/plugins/engine/components/ComponentCollection.js'
12
- import { type Component } from '~/src/server/plugins/engine/components/helpers/components.js'
13
- import { type ViewModel } from '~/src/server/plugins/engine/components/types.js'
14
- import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
15
- import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
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 '~/src/server/plugins/engine/components/FormComponent.js'
12
+ } from './FormComponent.js'
13
13
  import {
14
14
  createComponent,
15
15
  type Component,
16
16
  type Field,
17
17
  type Guidance
18
- } from '~/src/server/plugins/engine/components/helpers/components.js'
19
- import { type ComponentViewModel } from '~/src/server/plugins/engine/components/types.js'
20
- import { getErrors } from '~/src/server/plugins/engine/helpers.js'
21
- import { type FormModel } from '~/src/server/plugins/engine/models/index.js'
22
- import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
23
- import { validationOptions as opts } from '~/src/server/plugins/engine/pageControllers/validationOptions.js'
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 '~/src/server/plugins/engine/types.js'
31
- import { type FormQuery } from '~/src/server/routes/types.js'
30
+ } from '../types.js'
31
+ import { type FormQuery } from '../../../routes/types.js'
32
32
 
33
33
  export class ComponentCollection {
34
34
  page?: PageControllerClass