@defra/forms-engine-plugin 4.7.2 → 4.7.3

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 (402) hide show
  1. package/.server/client/javascripts/geospatial-map.d.ts +6 -6
  2. package/.server/client/javascripts/geospatial-map.js +3 -3
  3. package/.server/client/javascripts/location-map.d.ts +1 -1
  4. package/.server/client/javascripts/location-map.js +1 -1
  5. package/.server/client/javascripts/map.d.ts +1 -1
  6. package/.server/client/javascripts/map.js +1 -1
  7. package/.server/client/javascripts/shared.d.ts +7 -7
  8. package/.server/server/index.d.ts +1 -1
  9. package/.server/server/plugins/crumb.d.ts +1 -1
  10. package/.server/server/plugins/engine/beta/form-context.d.ts +6 -6
  11. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +4 -4
  12. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +2 -2
  13. package/.server/server/plugins/engine/components/CheckboxesField.js +2 -2
  14. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  15. package/.server/server/plugins/engine/components/ComponentBase.d.ts +5 -5
  16. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -8
  17. package/.server/server/plugins/engine/components/DatePartsField.d.ts +11 -11
  18. package/.server/server/plugins/engine/components/DeclarationField.d.ts +3 -3
  19. package/.server/server/plugins/engine/components/Details.d.ts +1 -1
  20. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +22 -22
  21. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -4
  22. package/.server/server/plugins/engine/components/FileUploadField.d.ts +3 -3
  23. package/.server/server/plugins/engine/components/FormComponent.d.ts +10 -10
  24. package/.server/server/plugins/engine/components/GeospatialField.d.ts +6 -6
  25. package/.server/server/plugins/engine/components/HiddenField.d.ts +2 -2
  26. package/.server/server/plugins/engine/components/Html.d.ts +1 -1
  27. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -1
  28. package/.server/server/plugins/engine/components/LatLongField.d.ts +22 -22
  29. package/.server/server/plugins/engine/components/List.d.ts +8 -8
  30. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +10 -10
  31. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +6 -6
  32. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +14 -14
  33. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -1
  34. package/.server/server/plugins/engine/components/MonthYearField.d.ts +11 -11
  35. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +5 -5
  36. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +1 -1
  37. package/.server/server/plugins/engine/components/NumberField.d.ts +3 -3
  38. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +1 -1
  39. package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -12
  40. package/.server/server/plugins/engine/components/RadiosField.d.ts +1 -1
  41. package/.server/server/plugins/engine/components/SelectField.d.ts +4 -4
  42. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +10 -10
  43. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +4 -4
  44. package/.server/server/plugins/engine/components/TextField.d.ts +2 -2
  45. package/.server/server/plugins/engine/components/UkAddressField.d.ts +11 -11
  46. package/.server/server/plugins/engine/components/YesNoField.d.ts +2 -2
  47. package/.server/server/plugins/engine/components/helpers/__stubs__/geospatial.d.ts +1 -1
  48. package/.server/server/plugins/engine/components/helpers/components.d.ts +5 -5
  49. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +1 -1
  50. package/.server/server/plugins/engine/components/index.d.ts +27 -27
  51. package/.server/server/plugins/engine/components/types.d.ts +1 -1
  52. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +4 -4
  53. package/.server/server/plugins/engine/date-helper.d.ts +1 -1
  54. package/.server/server/plugins/engine/helpers.d.ts +8 -8
  55. package/.server/server/plugins/engine/index.d.ts +5 -5
  56. package/.server/server/plugins/engine/models/FormModel.d.ts +6 -6
  57. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +6 -6
  58. package/.server/server/plugins/engine/models/index.d.ts +2 -2
  59. package/.server/server/plugins/engine/models/types.d.ts +4 -4
  60. package/.server/server/plugins/engine/options.d.ts +1 -1
  61. package/.server/server/plugins/engine/options.js +1 -1
  62. package/.server/server/plugins/engine/options.test.js +1 -1
  63. package/.server/server/plugins/engine/outputFormatters/adapter/v1.d.ts +4 -4
  64. package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +4 -4
  65. package/.server/server/plugins/engine/outputFormatters/index.d.ts +5 -5
  66. package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +4 -4
  67. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +4 -4
  68. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +8 -8
  69. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +6 -6
  70. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +8 -8
  71. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +5 -5
  72. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +4 -4
  73. package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +4 -4
  74. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +5 -5
  75. package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +3 -3
  76. package/.server/server/plugins/engine/pageControllers/__stubs__/request.d.ts +2 -2
  77. package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
  78. package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +2 -2
  79. package/.server/server/plugins/engine/pageControllers/helpers/state.d.ts +5 -5
  80. package/.server/server/plugins/engine/pageControllers/helpers/state.js +1 -1
  81. package/.server/server/plugins/engine/pageControllers/helpers/state.js.map +1 -1
  82. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +1 -1
  83. package/.server/server/plugins/engine/pageControllers/index.d.ts +7 -7
  84. package/.server/server/plugins/engine/plugin.d.ts +1 -1
  85. package/.server/server/plugins/engine/routes/file-upload.d.ts +1 -1
  86. package/.server/server/plugins/engine/routes/index.d.ts +3 -3
  87. package/.server/server/plugins/engine/routes/payment-helper.d.ts +3 -3
  88. package/.server/server/plugins/engine/routes/payment-helper.js +2 -2
  89. package/.server/server/plugins/engine/routes/payment.js +5 -5
  90. package/.server/server/plugins/engine/routes/payment.test.js +1 -1
  91. package/.server/server/plugins/engine/routes/questions.d.ts +2 -2
  92. package/.server/server/plugins/engine/routes/repeaters/item-delete.d.ts +2 -2
  93. package/.server/server/plugins/engine/routes/repeaters/summary.d.ts +2 -2
  94. package/.server/server/plugins/engine/services/index.d.ts +3 -3
  95. package/.server/server/plugins/engine/services/notifyService.d.ts +4 -4
  96. package/.server/server/plugins/engine/services/uploadService.d.ts +2 -2
  97. package/.server/server/plugins/engine/services/uploadService.js +1 -1
  98. package/.server/server/plugins/engine/types/index.d.ts +10 -10
  99. package/.server/server/plugins/engine/types/schema.d.ts +1 -1
  100. package/.server/server/plugins/engine/types.d.ts +25 -16
  101. package/.server/server/plugins/engine/types.js.map +1 -1
  102. package/.server/server/plugins/engine/validationHelpers.d.ts +2 -2
  103. package/.server/server/plugins/engine/vision.d.ts +1 -1
  104. package/.server/server/plugins/map/index.d.ts +1 -1
  105. package/.server/server/plugins/map/index.js +1 -1
  106. package/.server/server/plugins/map/routes/get-os-token.d.ts +11 -1
  107. package/.server/server/plugins/map/routes/get-os-token.js +12 -2
  108. package/.server/server/plugins/map/routes/get-os-token.js.map +1 -1
  109. package/.server/server/plugins/map/routes/index.d.ts +4 -4
  110. package/.server/server/plugins/map/routes/index.js +3 -2
  111. package/.server/server/plugins/map/routes/index.js.map +1 -1
  112. package/.server/server/plugins/map/service.d.ts +1 -1
  113. package/.server/server/plugins/map/service.js +5 -2
  114. package/.server/server/plugins/map/service.js.map +1 -1
  115. package/.server/server/plugins/map/test/__stubs__/find.d.ts +1 -1
  116. package/.server/server/plugins/map/test/__stubs__/find.js +1 -1
  117. package/.server/server/plugins/nunjucks/context.d.ts +2 -2
  118. package/.server/server/plugins/nunjucks/context.js +2 -2
  119. package/.server/server/plugins/nunjucks/context.test.js +1 -1
  120. package/.server/server/plugins/nunjucks/enviroment.test.js +1 -1
  121. package/.server/server/plugins/nunjucks/environment.d.ts +3 -3
  122. package/.server/server/plugins/nunjucks/environment.js +3 -3
  123. package/.server/server/plugins/nunjucks/filters/answer.d.ts +1 -1
  124. package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
  125. package/.server/server/plugins/nunjucks/filters/answer.test.js +1 -1
  126. package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +1 -1
  127. package/.server/server/plugins/nunjucks/filters/evaluate.js +1 -1
  128. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  129. package/.server/server/plugins/nunjucks/filters/field.js +1 -1
  130. package/.server/server/plugins/nunjucks/filters/field.test.js +1 -1
  131. package/.server/server/plugins/nunjucks/filters/href.d.ts +1 -1
  132. package/.server/server/plugins/nunjucks/filters/href.js +1 -1
  133. package/.server/server/plugins/nunjucks/filters/href.test.js +1 -1
  134. package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -8
  135. package/.server/server/plugins/nunjucks/filters/page.d.ts +1 -1
  136. package/.server/server/plugins/nunjucks/filters/page.js +1 -1
  137. package/.server/server/plugins/nunjucks/filters/page.test.js +1 -1
  138. package/.server/server/plugins/nunjucks/index.d.ts +3 -3
  139. package/.server/server/plugins/nunjucks/render.d.ts +2 -2
  140. package/.server/server/plugins/nunjucks/render.js +1 -1
  141. package/.server/server/plugins/nunjucks/types.d.ts +1 -1
  142. package/.server/server/plugins/nunjucks/types.js +1 -1
  143. package/.server/server/plugins/payment/helper.d.ts +2 -2
  144. package/.server/server/plugins/payment/helper.js +1 -1
  145. package/.server/server/plugins/payment/service.d.ts +3 -3
  146. package/.server/server/plugins/payment/service.js +1 -1
  147. package/.server/server/plugins/postcode-lookup/index.d.ts +1 -1
  148. package/.server/server/plugins/postcode-lookup/index.js +1 -1
  149. package/.server/server/plugins/postcode-lookup/models/index.d.ts +6 -6
  150. package/.server/server/plugins/postcode-lookup/models/index.js +1 -1
  151. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +6 -6
  152. package/.server/server/plugins/postcode-lookup/routes/index.js +15 -15
  153. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  154. package/.server/server/plugins/postcode-lookup/service.d.ts +1 -1
  155. package/.server/server/plugins/postcode-lookup/service.js +5 -2
  156. package/.server/server/plugins/postcode-lookup/service.js.map +1 -1
  157. package/.server/server/plugins/postcode-lookup/types.js +1 -1
  158. package/.server/server/routes/index.d.ts +2 -2
  159. package/.server/server/routes/types.d.ts +1 -1
  160. package/.server/server/schemas/index.d.ts +2 -2
  161. package/.server/server/services/cacheService.d.ts +8 -8
  162. package/.server/server/services/cacheService.js +2 -5
  163. package/.server/server/services/cacheService.js.map +1 -1
  164. package/.server/server/services/httpService.test.js +1 -1
  165. package/.server/server/services/index.d.ts +1 -1
  166. package/.server/server/types.d.ts +7 -7
  167. package/.server/server/utils/file-form-service.d.ts +2 -2
  168. package/.server/server/utils/file-form-service.js +1 -1
  169. package/package.json +8 -4
  170. package/src/client/javascripts/application.js +1 -1
  171. package/src/client/javascripts/geospatial-map.js +4 -4
  172. package/src/client/javascripts/location-map.js +2 -2
  173. package/src/client/javascripts/map.js +3 -3
  174. package/src/client/javascripts/shared.js +7 -7
  175. package/src/index.ts +3 -3
  176. package/src/server/common/helpers/logging/logger-options.ts +1 -1
  177. package/src/server/common/helpers/logging/logger.ts +1 -1
  178. package/src/server/common/helpers/logging/request-logger.ts +1 -1
  179. package/src/server/common/helpers/logging/request-tracing.js +1 -1
  180. package/src/server/common/helpers/redis-client.js +2 -2
  181. package/src/server/index.ts +13 -13
  182. package/src/server/plugins/crumb.ts +2 -2
  183. package/src/server/plugins/engine/beta/form-context.ts +9 -9
  184. package/src/server/plugins/engine/components/AutocompleteField.ts +3 -3
  185. package/src/server/plugins/engine/components/CheckboxesField.ts +7 -8
  186. package/src/server/plugins/engine/components/ComponentBase.ts +5 -5
  187. package/src/server/plugins/engine/components/ComponentCollection.ts +9 -9
  188. package/src/server/plugins/engine/components/DatePartsField.ts +8 -8
  189. package/src/server/plugins/engine/components/DeclarationField.ts +3 -3
  190. package/src/server/plugins/engine/components/Details.ts +1 -1
  191. package/src/server/plugins/engine/components/EastingNorthingField.ts +9 -9
  192. package/src/server/plugins/engine/components/EmailAddressField.ts +3 -3
  193. package/src/server/plugins/engine/components/FileUploadField.ts +6 -6
  194. package/src/server/plugins/engine/components/FormComponent.ts +4 -4
  195. package/src/server/plugins/engine/components/GeospatialField.ts +5 -5
  196. package/src/server/plugins/engine/components/HiddenField.ts +4 -4
  197. package/src/server/plugins/engine/components/Html.ts +1 -1
  198. package/src/server/plugins/engine/components/InsetText.ts +1 -1
  199. package/src/server/plugins/engine/components/LatLongField.ts +9 -9
  200. package/src/server/plugins/engine/components/List.ts +2 -2
  201. package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
  202. package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -5
  203. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +5 -5
  204. package/src/server/plugins/engine/components/Markdown.ts +1 -1
  205. package/src/server/plugins/engine/components/MonthYearField.ts +8 -8
  206. package/src/server/plugins/engine/components/MultilineTextField.ts +4 -4
  207. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +2 -2
  208. package/src/server/plugins/engine/components/NumberField.ts +3 -3
  209. package/src/server/plugins/engine/components/OsGridRefField.ts +2 -2
  210. package/src/server/plugins/engine/components/PaymentField.ts +8 -8
  211. package/src/server/plugins/engine/components/RadiosField.ts +1 -1
  212. package/src/server/plugins/engine/components/SelectField.ts +2 -2
  213. package/src/server/plugins/engine/components/SelectionControlField.ts +4 -4
  214. package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -4
  215. package/src/server/plugins/engine/components/TextField.ts +3 -3
  216. package/src/server/plugins/engine/components/UkAddressField.ts +7 -7
  217. package/src/server/plugins/engine/components/YesNoField.ts +5 -5
  218. package/src/server/plugins/engine/components/helpers/__stubs__/geospatial.ts +1 -1
  219. package/src/server/plugins/engine/components/helpers/components.ts +8 -8
  220. package/src/server/plugins/engine/components/helpers/geospatial.ts +1 -1
  221. package/src/server/plugins/engine/components/index.ts +27 -27
  222. package/src/server/plugins/engine/components/types.ts +1 -1
  223. package/src/server/plugins/engine/configureEnginePlugin.ts +10 -10
  224. package/src/server/plugins/engine/date-helper.ts +1 -1
  225. package/src/server/plugins/engine/helpers.ts +8 -8
  226. package/src/server/plugins/engine/index.ts +8 -8
  227. package/src/server/plugins/engine/models/FormModel.ts +15 -15
  228. package/src/server/plugins/engine/models/SummaryViewModel.ts +10 -10
  229. package/src/server/plugins/engine/models/index.ts +2 -2
  230. package/src/server/plugins/engine/models/types.ts +4 -4
  231. package/src/server/plugins/engine/options.js +3 -3
  232. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +6 -6
  233. package/src/server/plugins/engine/outputFormatters/human/v1.ts +9 -9
  234. package/src/server/plugins/engine/outputFormatters/index.ts +8 -8
  235. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +7 -7
  236. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +6 -6
  237. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +9 -9
  238. package/src/server/plugins/engine/pageControllers/PageController.ts +7 -7
  239. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +13 -13
  240. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +6 -6
  241. package/src/server/plugins/engine/pageControllers/StartPageController.ts +3 -3
  242. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +5 -5
  243. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +12 -12
  244. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +3 -3
  245. package/src/server/plugins/engine/pageControllers/__stubs__/request.ts +3 -3
  246. package/src/server/plugins/engine/pageControllers/__stubs__/server.ts +2 -2
  247. package/src/server/plugins/engine/pageControllers/errors.ts +1 -1
  248. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -2
  249. package/src/server/plugins/engine/pageControllers/helpers/state.ts +9 -9
  250. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +5 -5
  251. package/src/server/plugins/engine/pageControllers/index.ts +7 -7
  252. package/src/server/plugins/engine/pageControllers/validationOptions.ts +1 -1
  253. package/src/server/plugins/engine/plugin.ts +14 -14
  254. package/src/server/plugins/engine/routes/file-upload.ts +2 -2
  255. package/src/server/plugins/engine/routes/index.ts +10 -10
  256. package/src/server/plugins/engine/routes/payment-helper.js +4 -4
  257. package/src/server/plugins/engine/routes/payment.js +9 -9
  258. package/src/server/plugins/engine/routes/questions.ts +10 -10
  259. package/src/server/plugins/engine/routes/repeaters/item-delete.ts +6 -6
  260. package/src/server/plugins/engine/routes/repeaters/summary.ts +5 -5
  261. package/src/server/plugins/engine/services/formSubmissionService.js +2 -2
  262. package/src/server/plugins/engine/services/index.js +3 -3
  263. package/src/server/plugins/engine/services/localFormsService.js +2 -2
  264. package/src/server/plugins/engine/services/notifyService.ts +9 -9
  265. package/src/server/plugins/engine/services/uploadService.js +3 -3
  266. package/src/server/plugins/engine/types/index.ts +10 -10
  267. package/src/server/plugins/engine/types/schema.ts +2 -2
  268. package/src/server/plugins/engine/types.ts +22 -17
  269. package/src/server/plugins/engine/validationHelpers.ts +3 -3
  270. package/src/server/plugins/engine/vision.ts +3 -3
  271. package/src/server/plugins/map/index.js +2 -2
  272. package/src/server/plugins/map/routes/get-os-token.js +15 -3
  273. package/src/server/plugins/map/routes/index.js +7 -5
  274. package/src/server/plugins/map/service.js +7 -4
  275. package/src/server/plugins/map/test/__stubs__/find.js +1 -1
  276. package/src/server/plugins/nunjucks/context.js +5 -5
  277. package/src/server/plugins/nunjucks/environment.js +6 -6
  278. package/src/server/plugins/nunjucks/filters/answer.js +3 -3
  279. package/src/server/plugins/nunjucks/filters/evaluate.js +2 -2
  280. package/src/server/plugins/nunjucks/filters/field.js +1 -1
  281. package/src/server/plugins/nunjucks/filters/href.js +2 -2
  282. package/src/server/plugins/nunjucks/filters/index.js +8 -8
  283. package/src/server/plugins/nunjucks/filters/page.js +1 -1
  284. package/src/server/plugins/nunjucks/index.js +3 -3
  285. package/src/server/plugins/nunjucks/plugin.js +3 -3
  286. package/src/server/plugins/nunjucks/render.js +2 -2
  287. package/src/server/plugins/nunjucks/types.js +1 -1
  288. package/src/server/plugins/payment/helper.js +2 -2
  289. package/src/server/plugins/payment/service.js +4 -4
  290. package/src/server/plugins/postcode-lookup/index.js +2 -2
  291. package/src/server/plugins/postcode-lookup/models/index.js +3 -3
  292. package/src/server/plugins/postcode-lookup/routes/index.js +24 -14
  293. package/src/server/plugins/postcode-lookup/service.js +7 -4
  294. package/src/server/plugins/postcode-lookup/types.js +1 -1
  295. package/src/server/plugins/session.ts +1 -1
  296. package/src/server/routes/index.ts +2 -2
  297. package/src/server/routes/public.ts +1 -1
  298. package/src/server/routes/types.ts +1 -1
  299. package/src/server/schemas/index.ts +2 -2
  300. package/src/server/secure-context.js +1 -1
  301. package/src/server/services/cacheService.ts +13 -18
  302. package/src/server/services/httpService.ts +1 -1
  303. package/src/server/services/index.ts +1 -1
  304. package/src/server/types.ts +7 -7
  305. package/src/server/utils/notify.ts +2 -2
  306. package/src/server/utils/utils.js +1 -1
  307. package/src/typings/hapi/index.d.ts +4 -4
  308. package/src/typings/joi/index.d.ts +1 -1
  309. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  310. package/src/server/index.test.ts +0 -644
  311. package/src/server/plugins/engine/beta/form-context.test.ts +0 -373
  312. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -362
  313. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -486
  314. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -927
  315. package/src/server/plugins/engine/components/DeclarationField.test.ts +0 -560
  316. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  317. package/src/server/plugins/engine/components/EastingNorthingField.test.ts +0 -727
  318. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -445
  319. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -1079
  320. package/src/server/plugins/engine/components/GeospatialField.test.ts +0 -380
  321. package/src/server/plugins/engine/components/HiddenField.test.ts +0 -188
  322. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  323. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  324. package/src/server/plugins/engine/components/LatLongField.test.ts +0 -898
  325. package/src/server/plugins/engine/components/List.test.ts +0 -79
  326. package/src/server/plugins/engine/components/LocationFieldBase.test.ts +0 -253
  327. package/src/server/plugins/engine/components/LocationFieldHelpers.test.ts +0 -743
  328. package/src/server/plugins/engine/components/Markdown.test.ts +0 -48
  329. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -617
  330. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -647
  331. package/src/server/plugins/engine/components/NationalGridFieldNumberField.test.ts +0 -449
  332. package/src/server/plugins/engine/components/NumberField.test.ts +0 -723
  333. package/src/server/plugins/engine/components/OsGridRefField.test.ts +0 -460
  334. package/src/server/plugins/engine/components/PaymentField.test.ts +0 -745
  335. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -297
  336. package/src/server/plugins/engine/components/SelectField.test.ts +0 -289
  337. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -384
  338. package/src/server/plugins/engine/components/TextField.test.ts +0 -521
  339. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -806
  340. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -256
  341. package/src/server/plugins/engine/components/helpers/components.test.ts +0 -399
  342. package/src/server/plugins/engine/components/helpers/geospatial.test.js +0 -55
  343. package/src/server/plugins/engine/components/helpers/helpers.test.ts +0 -219
  344. package/src/server/plugins/engine/date-helper.test.ts +0 -47
  345. package/src/server/plugins/engine/helpers.test.ts +0 -868
  346. package/src/server/plugins/engine/models/FormModel.test.ts +0 -725
  347. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -472
  348. package/src/server/plugins/engine/options.test.js +0 -63
  349. package/src/server/plugins/engine/outputFormatters/adapter/v1.location.test.ts +0 -356
  350. package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +0 -871
  351. package/src/server/plugins/engine/outputFormatters/human/v1.payment.test.ts +0 -147
  352. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -145
  353. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  354. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -268
  355. package/src/server/plugins/engine/outputFormatters/machine/v2.location.test.ts +0 -341
  356. package/src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts +0 -115
  357. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -311
  358. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1372
  359. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -246
  360. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1686
  361. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -279
  362. package/src/server/plugins/engine/pageControllers/StartPageController.test.ts +0 -32
  363. package/src/server/plugins/engine/pageControllers/StatusPageController.test.ts +0 -32
  364. package/src/server/plugins/engine/pageControllers/SummaryPageController.test.ts +0 -89
  365. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -37
  366. package/src/server/plugins/engine/pageControllers/errors.test.ts +0 -78
  367. package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +0 -182
  368. package/src/server/plugins/engine/pageControllers/helpers/state.test.ts +0 -359
  369. package/src/server/plugins/engine/pageControllers/helpers/submission.test.ts +0 -373
  370. package/src/server/plugins/engine/referenceNumbers.test.ts +0 -74
  371. package/src/server/plugins/engine/routes/index.test.ts +0 -332
  372. package/src/server/plugins/engine/routes/payment-helper.test.js +0 -136
  373. package/src/server/plugins/engine/routes/payment.test.js +0 -180
  374. package/src/server/plugins/engine/routes/questions.test.ts +0 -502
  375. package/src/server/plugins/engine/routes/repeaters/item-delete.test.ts +0 -83
  376. package/src/server/plugins/engine/routes/repeaters/summary.test.ts +0 -75
  377. package/src/server/plugins/engine/services/formsService.test.js +0 -26
  378. package/src/server/plugins/engine/services/notifyService.test.ts +0 -310
  379. package/src/server/plugins/engine/types/schema.test.ts +0 -234
  380. package/src/server/plugins/engine/views/components/service-banner/template.test.js +0 -43
  381. package/src/server/plugins/engine/views/components/tag-env/template.test.js +0 -28
  382. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  383. package/src/server/plugins/map/routes/get-os-token.test.js +0 -55
  384. package/src/server/plugins/map/service.test.js +0 -144
  385. package/src/server/plugins/nunjucks/context.test.js +0 -109
  386. package/src/server/plugins/nunjucks/enviroment.test.js +0 -207
  387. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -92
  388. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  389. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  390. package/src/server/plugins/nunjucks/filters/merge.test.js +0 -15
  391. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  392. package/src/server/plugins/payment/helper.test.js +0 -29
  393. package/src/server/plugins/payment/service.test.js +0 -218
  394. package/src/server/plugins/postcode-lookup/service.test.js +0 -177
  395. package/src/server/postcode-lookup.test.ts +0 -64
  396. package/src/server/routes/dummy-api.test.ts +0 -97
  397. package/src/server/services/cacheService.test.ts +0 -308
  398. package/src/server/services/httpService.test.js +0 -491
  399. package/src/server/utils/file-form-service.test.js +0 -127
  400. package/src/server/utils/notify.test.ts +0 -37
  401. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  402. package/src/server/utils/utils.test.js +0 -69
@@ -1,4 +1,4 @@
1
- import { post } from '~/src/server/services/httpService.js'
1
+ import { post } from '../../../services/httpService.js'
2
2
 
3
3
  /**
4
4
  * @type {string}
@@ -19,7 +19,9 @@ export async function getAccessToken(options) {
19
19
  }
20
20
 
21
21
  const creds = `${key}:${secret}`
22
- const result = await post('https://api.os.uk/oauth2/token/v1', {
22
+ const postByType = /** @type {typeof post<OsTokenResponse>} */ (post)
23
+
24
+ const result = await postByType('https://api.os.uk/oauth2/token/v1', {
23
25
  headers: {
24
26
  Authorization: `Basic ${btoa(creds)}`,
25
27
  'Content-Type': 'application/x-www-form-urlencoded'
@@ -30,6 +32,10 @@ export async function getAccessToken(options) {
30
32
 
31
33
  const data = result.payload
32
34
 
35
+ if (!data) {
36
+ throw new Error('Failed to obtain OS API token')
37
+ }
38
+
33
39
  cachedToken = data.access_token
34
40
  tokenExpiry = now + (data.expires_in - 60) * 1000 // refresh early
35
41
 
@@ -37,5 +43,11 @@ export async function getAccessToken(options) {
37
43
  }
38
44
 
39
45
  /**
40
- * @import { MapConfiguration } from '~/src/server/plugins/map/types.js'
46
+ * @typedef {object} OsTokenResponse
47
+ * @property {string} access_token - The access token
48
+ * @property {number} expires_in - The expiry in seconds
49
+ */
50
+
51
+ /**
52
+ * @import { MapConfiguration } from '../types.js'
41
53
  */
@@ -3,12 +3,12 @@ import { resolve } from 'node:path'
3
3
  import { StatusCodes } from 'http-status-codes'
4
4
  import Joi from 'joi'
5
5
 
6
- import { getAccessToken } from '~/src/server/plugins/map/routes/get-os-token.js'
7
- import { find, nearest } from '~/src/server/plugins/map/service.js'
6
+ import { getAccessToken } from './get-os-token.js'
7
+ import { find, nearest } from '../service.js'
8
8
  import {
9
9
  get,
10
10
  request as httpRequest
11
- } from '~/src/server/services/httpService.js'
11
+ } from '../../../services/httpService.js'
12
12
 
13
13
  /**
14
14
  * Gets the map support routes
@@ -85,7 +85,9 @@ function tileProxyRoute(options) {
85
85
 
86
86
  const url = `https://api.os.uk/maps/vector/v1/vts/tile/${z}/${y}/${x}.pbf?srs=3857`
87
87
 
88
- const { payload, res } = await get(url, {
88
+ const getBuffer = /** @type {typeof get<Buffer>} */ (get)
89
+
90
+ const { payload, res } = await getBuffer(url, {
89
91
  headers: {
90
92
  Authorization: `Bearer ${token}`,
91
93
  Accept: 'application/x-protobuf'
@@ -188,5 +190,5 @@ function mapStyleResourceRoutes() {
188
190
 
189
191
  /**
190
192
  * @import { ServerRoute } from '@hapi/hapi'
191
- * @import { MapConfiguration, MapProxyGetRequestRefs, MapGeocodeGetRequestRefs, MapReverseGeocodeGetRequestRefs } from '~/src/server/plugins/map/types.js'
193
+ * @import { MapConfiguration, MapProxyGetRequestRefs, MapGeocodeGetRequestRefs, MapReverseGeocodeGetRequestRefs } from '../types.js'
192
194
  */
@@ -1,8 +1,8 @@
1
1
  import { getErrorMessage } from '@defra/forms-model'
2
2
  import Boom from '@hapi/boom'
3
3
 
4
- import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
5
- import { getJson } from '~/src/server/services/httpService.js'
4
+ import { createLogger } from '../../common/helpers/logging/logger.js'
5
+ import { getJson } from '../../services/httpService.js'
6
6
 
7
7
  const logger = createLogger()
8
8
 
@@ -22,7 +22,10 @@ function empty() {
22
22
  * @param {string} endpoint - the OS api endpoint
23
23
  */
24
24
  function logErrorAndReturnEmpty(err, endpoint) {
25
- const msg = `${getErrorMessage(err)} ${(Boom.isBoom(err) && err.data?.payload?.error?.message) ?? ''}`
25
+ /** @type {{ payload?: { error?: { message?: string } } } | false} */
26
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
27
+ const boomData = Boom.isBoom(err) && err.data
28
+ const msg = `${getErrorMessage(err)} ${(boomData && boomData.payload?.error?.message) ?? ''}`
26
29
 
27
30
  logger.error(err, `Exception occured calling OS names ${endpoint} - ${msg}}`)
28
31
 
@@ -80,5 +83,5 @@ export async function nearest(easting, northing, apiKey) {
80
83
  }
81
84
 
82
85
  /**
83
- * @import { OsNamesFindResponse, OsNamesFindResult } from '~/src/server/plugins/map/types.js'
86
+ * @import { OsNamesFindResponse, OsNamesFindResult } from './types.js'
84
87
  */
@@ -267,5 +267,5 @@ export const result = {
267
267
  }
268
268
 
269
269
  /**
270
- * @import { OsNamesFindResponse } from '~/src/server/plugins/map/types.js'
270
+ * @import { OsNamesFindResponse } from '../../types.js'
271
271
  */
@@ -4,12 +4,12 @@ import { basename, join } from 'node:path'
4
4
  import Boom from '@hapi/boom'
5
5
  import { StatusCodes } from 'http-status-codes'
6
6
 
7
- import { config } from '~/src/config/index.js'
8
- import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
7
+ import { config } from '../../../config/index.js'
8
+ import { createLogger } from '../../common/helpers/logging/logger.js'
9
9
  import {
10
10
  checkFormStatus,
11
11
  encodeUrl
12
- } from '~/src/server/plugins/engine/helpers.js'
12
+ } from '../engine/helpers.js'
13
13
 
14
14
  const logger = createLogger()
15
15
 
@@ -94,6 +94,6 @@ export function devtoolContext(_request) {
94
94
  }
95
95
 
96
96
  /**
97
- * @import { ViewContext } from '~/src/server/plugins/nunjucks/types.js'
98
- * @import { AnyFormRequest } from '~/src/server/plugins/engine/types.js'
97
+ * @import { ViewContext } from './types.js'
98
+ * @import { AnyFormRequest } from '../engine/types.js'
99
99
  */
@@ -4,9 +4,9 @@ import { ComponentType } from '@defra/forms-model'
4
4
  import nunjucks from 'nunjucks'
5
5
  import resolvePkg from 'resolve'
6
6
 
7
- import { config } from '~/src/config/index.js'
8
- import { evaluateTemplate } from '~/src/server/plugins/engine/helpers.js'
9
- import * as filters from '~/src/server/plugins/nunjucks/filters/index.js'
7
+ import { config } from '../../../config/index.js'
8
+ import { evaluateTemplate } from '../engine/helpers.js'
9
+ import * as filters from './filters/index.js'
10
10
 
11
11
  const govukFrontendPath = dirname(
12
12
  resolvePkg.sync('govuk-frontend/package.json')
@@ -116,7 +116,7 @@ export function govukRebrand() {
116
116
  environment.addGlobal('govukRebrand', govukRebrand())
117
117
 
118
118
  /**
119
- * @import { NunjucksContext } from '~/src/server/plugins/nunjucks/types.js'
120
- * @import { FormSubmissionError } from '~/src/server/plugins/engine/types.js'
121
- * @import { ComponentViewModel } from '~/src/server/plugins/engine/components/types.js'
119
+ * @import { NunjucksContext } from './types.js'
120
+ * @import { FormSubmissionError } from '../engine/types.js'
121
+ * @import { ComponentViewModel } from '../engine/components/types.js'
122
122
  */
@@ -1,4 +1,4 @@
1
- import { getAnswer } from '~/src/server/plugins/engine/components/helpers/components.js'
1
+ import { getAnswer } from '../../engine/components/helpers/components.js'
2
2
 
3
3
  /**
4
4
  * Nunjucks filter to get the answer for a component
@@ -22,6 +22,6 @@ export function answer(name) {
22
22
  }
23
23
 
24
24
  /**
25
- * @import { NunjucksContext } from '~/src/server/plugins/nunjucks/types.js'
26
- * @import { Field } from '~/src/server/plugins/engine/components/helpers/components.js'
25
+ * @import { NunjucksContext } from '../types.js'
26
+ * @import { Field } from '../../engine/components/helpers/components.js'
27
27
  */
@@ -1,4 +1,4 @@
1
- import { evaluateTemplate } from '~/src/server/plugins/engine/helpers.js'
1
+ import { evaluateTemplate } from '../../engine/helpers.js'
2
2
 
3
3
  /**
4
4
  * Nunjucks filter to evaluate a liquid template.
@@ -17,5 +17,5 @@ export function evaluate(template) {
17
17
  }
18
18
 
19
19
  /**
20
- * @import { NunjucksContext } from '~/src/server/plugins/nunjucks/types.js'
20
+ * @import { NunjucksContext } from '../types.js'
21
21
  */
@@ -24,5 +24,5 @@ export function field(name) {
24
24
  }
25
25
 
26
26
  /**
27
- * @import { NunjucksContext } from '~/src/server/plugins/nunjucks/types.js'
27
+ * @import { NunjucksContext } from '../types.js'
28
28
  */
@@ -1,4 +1,4 @@
1
- import { getPageHref } from '~/src/server/plugins/engine/index.js'
1
+ import { getPageHref } from '../../engine/index.js'
2
2
 
3
3
  /**
4
4
  * Nunjucks filter to get the answer for a component
@@ -26,5 +26,5 @@ export function href(path) {
26
26
  }
27
27
 
28
28
  /**
29
- * @import { NunjucksContext } from '~/src/server/plugins/nunjucks/types.js'
29
+ * @import { NunjucksContext } from '../types.js'
30
30
  */
@@ -1,8 +1,8 @@
1
- export { highlight } from '~/src/server/plugins/nunjucks/filters/highlight.js'
2
- export { inspect } from '~/src/server/plugins/nunjucks/filters/inspect.js'
3
- export { evaluate } from '~/src/server/plugins/nunjucks/filters/evaluate.js'
4
- export { answer } from '~/src/server/plugins/nunjucks/filters/answer.js'
5
- export { href } from '~/src/server/plugins/nunjucks/filters/href.js'
6
- export { field } from '~/src/server/plugins/nunjucks/filters/field.js'
7
- export { page } from '~/src/server/plugins/nunjucks/filters/page.js'
8
- export { merge } from '~/src/server/plugins/nunjucks/filters/merge.js'
1
+ export { highlight } from './highlight.js'
2
+ export { inspect } from './inspect.js'
3
+ export { evaluate } from './evaluate.js'
4
+ export { answer } from './answer.js'
5
+ export { href } from './href.js'
6
+ export { field } from './field.js'
7
+ export { page } from './page.js'
8
+ export { merge } from './merge.js'
@@ -20,5 +20,5 @@ export function page(path) {
20
20
  }
21
21
 
22
22
  /**
23
- * @import { NunjucksContext } from '~/src/server/plugins/nunjucks/types.js'
23
+ * @import { NunjucksContext } from '../types.js'
24
24
  */
@@ -1,3 +1,3 @@
1
- export * as render from '~/src/server/plugins/nunjucks/render.js'
2
- export { environment } from '~/src/server/plugins/nunjucks/environment.js'
3
- export { plugin } from '~/src/server/plugins/nunjucks/plugin.js'
1
+ export * as render from './render.js'
2
+ export { environment } from './environment.js'
3
+ export { plugin } from './plugin.js'
@@ -1,12 +1,12 @@
1
1
  import vision from '@hapi/vision'
2
2
  import nunjucks from 'nunjucks'
3
3
 
4
- import { config } from '~/src/config/index.js'
5
- import { context } from '~/src/server/plugins/nunjucks/context.js'
4
+ import { config } from '../../../config/index.js'
5
+ import { context } from './context.js'
6
6
  import {
7
7
  environment,
8
8
  paths
9
- } from '~/src/server/plugins/nunjucks/environment.js'
9
+ } from './environment.js'
10
10
 
11
11
  /**
12
12
  * @type {ServerRegisterPluginObject<ServerViewsConfiguration>}
@@ -1,4 +1,4 @@
1
- import { environment } from '~/src/server/plugins/nunjucks/environment.js'
1
+ import { environment } from './environment.js'
2
2
 
3
3
  /**
4
4
  * Render Nunjucks macro
@@ -38,5 +38,5 @@ export function view(viewPath, options) {
38
38
  }
39
39
 
40
40
  /**
41
- * @import { MacroOptions, RenderOptions } from '~/src/server/plugins/nunjucks/types.js'
41
+ * @import { MacroOptions, RenderOptions } from './types.js'
42
42
  */
@@ -27,5 +27,5 @@
27
27
  */
28
28
 
29
29
  /**
30
- * @import { FormContext } from '~/src/server/plugins/engine/types.js'
30
+ * @import { FormContext } from '../engine/types.js'
31
31
  */
@@ -1,6 +1,6 @@
1
1
  import { format } from 'date-fns'
2
2
 
3
- import { PaymentService } from '~/src/server/plugins/payment/service.js'
3
+ import { PaymentService } from './service.js'
4
4
 
5
5
  export const DEFAULT_PAYMENT_HELP_URL =
6
6
  'https://www.gov.uk/government/organisations/department-for-environment-food-rural-affairs'
@@ -51,5 +51,5 @@ export function formatCurrency(amount, locale = 'en-GB', currency = 'GBP') {
51
51
  }
52
52
 
53
53
  /**
54
- * @import { FormsService } from '~/src/server/types.js'
54
+ * @import { FormsService } from '../../types.js'
55
55
  */
@@ -1,11 +1,11 @@
1
1
  import { StatusCodes } from 'http-status-codes'
2
2
 
3
- import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
3
+ import { createLogger } from '../../common/helpers/logging/logger.js'
4
4
  import {
5
5
  buildPaymentInfo,
6
6
  convertPenceToPounds
7
- } from '~/src/server/plugins/engine/routes/payment-helper.js'
8
- import { get, post, postJson } from '~/src/server/services/httpService.js'
7
+ } from '../engine/routes/payment-helper.js'
8
+ import { get, post, postJson } from '../../services/httpService.js'
9
9
 
10
10
  const PAYMENT_BASE_URL = 'https://publicapi.payments.service.gov.uk'
11
11
  const PAYMENT_ENDPOINT = '/v1/payments'
@@ -231,5 +231,5 @@ export class PaymentService {
231
231
  }
232
232
 
233
233
  /**
234
- * @import { CreatePaymentRequest, CreatePaymentResponse, GetPaymentApiResponse, GetPaymentResponse } from '~/src/server/plugins/payment/types.js'
234
+ * @import { CreatePaymentRequest, CreatePaymentResponse, GetPaymentApiResponse, GetPaymentResponse } from './types.js'
235
235
  */
@@ -1,4 +1,4 @@
1
- import { getRoutes } from '~/src/server/plugins/postcode-lookup/routes/index.js'
1
+ import { getRoutes } from './routes/index.js'
2
2
 
3
3
  export const VIEW_PATH = 'src/server/plugins/postcode-lookup/views'
4
4
 
@@ -17,5 +17,5 @@ export const postcodeLookupPlugin = {
17
17
 
18
18
  /**
19
19
  * @import { NamedPlugin } from '@hapi/hapi'
20
- * @import { PostcodeLookupConfiguration } from '~/src/server/plugins/postcode-lookup/types.js'
20
+ * @import { PostcodeLookupConfiguration } from './types.js'
21
21
  */
@@ -1,7 +1,7 @@
1
1
  import Joi from 'joi'
2
2
 
3
- import * as service from '~/src/server/plugins/postcode-lookup/service.js'
4
- import { crumbSchema } from '~/src/server/schemas/index.js'
3
+ import * as service from '../service.js'
4
+ import { crumbSchema } from '../../../schemas/index.js'
5
5
 
6
6
  // Field names/ids
7
7
  const postcodeQueryFieldName = 'postcodeQuery'
@@ -550,5 +550,5 @@ export function manualViewModel(data, payload, err) {
550
550
 
551
551
  /**
552
552
  * @import { ObjectSchema, ValidationErrorItem } from 'joi'
553
- * @import { Address, PostcodeLookupDetailsData, PostcodeLookupDetailsPayload, PostcodeLookupManualPayload, PostcodeLookupSelectPayload, PostcodeLookupSessionData } from '~/src/server/plugins/postcode-lookup/types.js'
553
+ * @import { Address, PostcodeLookupDetailsData, PostcodeLookupDetailsPayload, PostcodeLookupManualPayload, PostcodeLookupSelectPayload, PostcodeLookupSessionData } from '../types.js'
554
554
  */
@@ -2,7 +2,7 @@ import Boom from '@hapi/boom'
2
2
  import { StatusCodes } from 'http-status-codes'
3
3
  import Joi from 'joi'
4
4
 
5
- import { EXTERNAL_STATE_APPENDAGE } from '~/src/server/constants.js'
5
+ import { EXTERNAL_STATE_APPENDAGE } from '../../../constants.js'
6
6
  import {
7
7
  JOURNEY_BASE_URL,
8
8
  detailsPayloadSchema,
@@ -13,8 +13,8 @@ import {
13
13
  selectViewModel,
14
14
  stepSchema,
15
15
  steps
16
- } from '~/src/server/plugins/postcode-lookup/models/index.js'
17
- import * as service from '~/src/server/plugins/postcode-lookup/service.js'
16
+ } from '../models/index.js'
17
+ import * as service from '../service.js'
18
18
 
19
19
  const viewName = 'postcode-lookup-details'
20
20
 
@@ -170,10 +170,14 @@ function postRoute(options) {
170
170
  * @param {PostcodeLookupConfiguration} options
171
171
  */
172
172
  async function detailsPostHandler(request, h, options) {
173
- const { payload } = request
174
173
  const session = getSessionState(request)
175
174
  const { ordnanceSurveyApiKey: apiKey } = options
176
- const { value: details, error } = detailsPayloadSchema.validate(payload)
175
+
176
+ /** @type {{ value: PostcodeLookupDetailsPayload, error?: import('joi').ValidationError }} */
177
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
178
+ const { value: details, error } = detailsPayloadSchema.validate(
179
+ request.payload
180
+ )
177
181
 
178
182
  let model
179
183
 
@@ -201,10 +205,12 @@ async function detailsPostHandler(request, h, options) {
201
205
  * @param {PostcodeLookupConfiguration} options
202
206
  */
203
207
  async function selectPostHandler(request, h, options) {
204
- const { payload } = request
205
208
  const session = getSessionState(request)
206
209
  const { ordnanceSurveyApiKey: apiKey } = options
207
- const { value: select, error } = selectPayloadSchema.validate(payload)
210
+
211
+ /** @type {{ value: PostcodeLookupSelectPayload, error?: import('joi').ValidationError }} */
212
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
213
+ const { value: select, error } = selectPayloadSchema.validate(request.payload)
208
214
 
209
215
  if (error) {
210
216
  const model = await selectViewModel({ session, apiKey }, select, error)
@@ -232,12 +238,16 @@ async function selectPostHandler(request, h, options) {
232
238
  * @param {ResponseToolkit<PostcodeLookupPostRequestRefs>} h
233
239
  */
234
240
  function manualPostHandler(request, h) {
235
- const { payload } = request
236
241
  const session = getSessionState(request)
237
242
 
238
- const { value: manual, error } = manualPayloadSchema.validate(payload, {
239
- abortEarly: false
240
- })
243
+ /** @type {{ value: PostcodeLookupManualPayload, error?: import('joi').ValidationError }} */
244
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
245
+ const { value: manual, error } = manualPayloadSchema.validate(
246
+ request.payload,
247
+ {
248
+ abortEarly: false
249
+ }
250
+ )
241
251
 
242
252
  if (error) {
243
253
  const model = manualViewModel(session, manual, error)
@@ -254,7 +264,7 @@ function manualPostHandler(request, h) {
254
264
 
255
265
  /**
256
266
  * @import { ResponseToolkit, ServerRoute } from '@hapi/hapi'
257
- * @import { PostcodeLookupManualPayload, Address, PostcodeLookupGetRequestRefs, PostcodeLookupPostRequestRefs, PostcodeLookupRequest, PostcodeLookupPostRequest, PostcodeLookupConfiguration, PostcodeLookupDispatchData, PostcodeLookupSessionData } from '~/src/server/plugins/postcode-lookup/types.js'
258
- * @import { FormRequestPayload, FormResponseToolkit } from '~/src/server/routes/types.js'
259
- * @import { ExternalStateAppendage } from '~/src/server/plugins/engine/types.js'
267
+ * @import { PostcodeLookupManualPayload, PostcodeLookupDetailsPayload, PostcodeLookupSelectPayload, Address, PostcodeLookupGetRequestRefs, PostcodeLookupPostRequestRefs, PostcodeLookupRequest, PostcodeLookupPostRequest, PostcodeLookupConfiguration, PostcodeLookupDispatchData, PostcodeLookupSessionData } from '../types.js'
268
+ * @import { FormRequestPayload, FormResponseToolkit } from '../../../routes/types.js'
269
+ * @import { ExternalStateAppendage } from '../../engine/types.js'
260
270
  */
@@ -1,8 +1,8 @@
1
1
  import { getErrorMessage } from '@defra/forms-model'
2
2
  import Boom from '@hapi/boom'
3
3
 
4
- import { createLogger } from '~/src/server/common/helpers/logging/logger.js'
5
- import { getJson } from '~/src/server/services/httpService.js'
4
+ import { createLogger } from '../../common/helpers/logging/logger.js'
5
+ import { getJson } from '../../services/httpService.js'
6
6
 
7
7
  const logger = createLogger()
8
8
 
@@ -19,7 +19,10 @@ function empty() {
19
19
  * @param {string} endpoint - the OS api endpoint
20
20
  */
21
21
  function logErrorAndReturnEmpty(err, endpoint) {
22
- const msg = `${getErrorMessage(err)} ${(Boom.isBoom(err) && err.data?.payload?.error?.message) ?? ''}`
22
+ /** @type {{ payload?: { error?: { message?: string } } } | false} */
23
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
24
+ const boomData = Boom.isBoom(err) && err.data
25
+ const msg = `${getErrorMessage(err)} ${(boomData && boomData.payload?.error?.message) ?? ''}`
23
26
 
24
27
  logger.error(err, `Exception occured calling OS places ${endpoint} - ${msg}}`)
25
28
 
@@ -184,5 +187,5 @@ function titleCase(address) {
184
187
  }
185
188
 
186
189
  /**
187
- * @import { Address, DeliveryPointAddress, DeliveryPointAddressResult } from '~/src/server/plugins/postcode-lookup/types.js'
190
+ * @import { Address, DeliveryPointAddress, DeliveryPointAddressResult } from './types.js'
188
191
  */
@@ -139,5 +139,5 @@
139
139
 
140
140
  /**
141
141
  * @import { Request } from '@hapi/hapi'
142
- * @import { FormPayload } from '~/src/server/plugins/engine/types.js'
142
+ * @import { FormPayload } from '../engine/types.js'
143
143
  */
@@ -1,7 +1,7 @@
1
1
  import { type ServerRegisterPluginObject } from '@hapi/hapi'
2
2
  import yar, { type YarOptions } from '@hapi/yar'
3
3
 
4
- import { config } from '~/src/config/index.js'
4
+ import { config } from '../../config/index.js'
5
5
 
6
6
  /**
7
7
  * Yar is used for temporary session data but not form submissions, e.g. UI helpers, session flags.
@@ -1,2 +1,2 @@
1
- export { default as publicRoutes } from '~/src/server/routes/public.js'
2
- export { default as dummyApiRoutes } from '~/src/server/routes/dummy-api.js'
1
+ export { default as publicRoutes } from './public.js'
2
+ export { default as dummyApiRoutes } from './dummy-api.js'
@@ -2,7 +2,7 @@ import { join } from 'node:path'
2
2
 
3
3
  import { type HandlerDecorations, type ServerRoute } from '@hapi/hapi'
4
4
 
5
- import { config } from '~/src/config/index.js'
5
+ import { config } from '../../config/index.js'
6
6
 
7
7
  export default [
8
8
  {
@@ -4,7 +4,7 @@ import {
4
4
  type ResponseToolkit
5
5
  } from '@hapi/hapi'
6
6
 
7
- import { type FormPayload } from '~/src/server/plugins/engine/types.js'
7
+ import { type FormPayload } from '../plugins/engine/types.js'
8
8
 
9
9
  export interface FormQuery extends Partial<Record<string, string>> {
10
10
  /**
@@ -1,7 +1,7 @@
1
1
  import Joi from 'joi'
2
2
 
3
- import { type FormPayloadParams } from '~/src/server/plugins/engine/types.js'
4
- import { FormAction, FormStatus } from '~/src/server/routes/types.js'
3
+ import { type FormPayloadParams } from '../plugins/engine/types.js'
4
+ import { FormAction, FormStatus } from '../routes/types.js'
5
5
 
6
6
  export const stateSchema = Joi.string<FormStatus>()
7
7
  .valid(FormStatus.Draft, FormStatus.Live)
@@ -1,6 +1,6 @@
1
1
  import tls from 'node:tls'
2
2
 
3
- import { getTrustStoreCerts } from '~/src/server/utils/secure-context/get-trust-store-certs.js'
3
+ import { getTrustStoreCerts } from './utils/secure-context/get-trust-store-certs.js'
4
4
 
5
5
  /**
6
6
  * @type {SecureContext}
@@ -2,17 +2,17 @@ import { type Server } from '@hapi/hapi'
2
2
  import * as Hoek from '@hapi/hoek'
3
3
  import unset from 'lodash/unset.js'
4
4
 
5
- import { config } from '~/src/config/index.js'
6
- import { type createServer } from '~/src/server/index.js'
5
+ import { config } from '../../config/index.js'
6
+ import { type createServer } from '../index.js'
7
7
  import {
8
8
  type AnyFormRequest,
9
- type AnyRequest,
9
+ type CacheRequest,
10
10
  type FormConfirmationState,
11
11
  type FormPayload,
12
12
  type FormState,
13
13
  type FormSubmissionError,
14
14
  type FormSubmissionState
15
- } from '~/src/server/plugins/engine/types.js'
15
+ } from '../plugins/engine/types.js'
16
16
 
17
17
  const partition = 'cache'
18
18
 
@@ -39,14 +39,14 @@ export class CacheService {
39
39
  this.logger = server.logger
40
40
  }
41
41
 
42
- async getState(request: AnyRequest): Promise<FormSubmissionState> {
42
+ async getState(request: CacheRequest): Promise<FormSubmissionState> {
43
43
  const key = this.Key(request)
44
44
  const cached = await this.cache.get(key)
45
45
 
46
46
  return cached ?? {}
47
47
  }
48
48
 
49
- async setState(request: AnyFormRequest, state: FormSubmissionState) {
49
+ async setState(request: CacheRequest, state: FormSubmissionState) {
50
50
  const key = this.Key(request)
51
51
  const ttl = config.get('sessionTimeout')
52
52
 
@@ -56,7 +56,7 @@ export class CacheService {
56
56
  }
57
57
 
58
58
  async getConfirmationState(
59
- request: AnyFormRequest
59
+ request: CacheRequest
60
60
  ): Promise<FormConfirmationState> {
61
61
  const key = this.Key(request, ADDITIONAL_IDENTIFIER.Confirmation)
62
62
  const value = await this.cache.get(key)
@@ -65,7 +65,7 @@ export class CacheService {
65
65
  }
66
66
 
67
67
  async setConfirmationState(
68
- request: AnyFormRequest,
68
+ request: CacheRequest,
69
69
  confirmationState: FormConfirmationState
70
70
  ) {
71
71
  const key = this.Key(request, ADDITIONAL_IDENTIFIER.Confirmation)
@@ -74,7 +74,7 @@ export class CacheService {
74
74
  return this.cache.set(key, confirmationState, ttl)
75
75
  }
76
76
 
77
- async clearState(request: AnyFormRequest) {
77
+ async clearState(request: CacheRequest) {
78
78
  if (request.yar.id) {
79
79
  await this.cache.drop(this.Key(request))
80
80
  }
@@ -123,10 +123,7 @@ export class CacheService {
123
123
  * ```
124
124
  * @returns The updated state after removal
125
125
  */
126
- async resetComponentStates(
127
- request: AnyFormRequest,
128
- componentNames: string[]
129
- ) {
126
+ async resetComponentStates(request: CacheRequest, componentNames: string[]) {
130
127
  const state = await this.getState(request)
131
128
 
132
129
  for (const componentName of componentNames) {
@@ -142,15 +139,13 @@ export class CacheService {
142
139
  * @param request - hapi request object
143
140
  * @param additionalIdentifier - appended to the id
144
141
  */
145
- Key(request: AnyRequest, additionalIdentifier?: ADDITIONAL_IDENTIFIER) {
142
+ Key(request: CacheRequest, additionalIdentifier?: ADDITIONAL_IDENTIFIER) {
146
143
  if (!request.yar.id) {
147
144
  throw new Error('No session ID found')
148
145
  }
149
146
 
150
- // eslint-disable-next-line @typescript-eslint/non-nullable-type-assertion-style
151
- const state = (request.params.state as string) || ''
152
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
153
- const slug = (request.params.slug as string) || ''
147
+ const state = request.params.state ?? ''
148
+ const slug = request.params.slug ?? ''
154
149
  const key = `${request.yar.id}:${state}:${slug}:`
155
150
 
156
151
  return {
@@ -1,6 +1,6 @@
1
1
  import Wreck from '@hapi/wreck'
2
2
 
3
- import { applyTraceHeaders } from '~/src/server/utils/utils.js'
3
+ import { applyTraceHeaders } from '../utils/utils.js'
4
4
 
5
5
  export type Method = keyof Pick<typeof Wreck, 'get' | 'post' | 'put' | 'delete'>
6
6
  export type RequestOptions = Parameters<typeof Wreck.defaults>[0]